2017-03-31 45 views
0

我目前正在與客戶端和服務器的遊戲,並試圖找出一種方式來告訴從客戶端發送數據包和服務器接收它的時間量所以我可以檢查那個時候敵人的位置)。服務器上的時間,因爲客戶端發送數據包

我試圖發送

DateTime.Now.Subtract(DateTime.MinValue.AddYears(1969)).TotalMilliseconds 

與當時的客戶端,然後只需檢查服務器上相同的值時,臨危包,然後減去他們,但這樣做的問題是,時區可以完全打破這一點,如果客戶端和服務器在不同的時區。而且它似乎不是最準確的。

有沒有「適當」的方式來做到這一點?

回答

1

發送曆元時間不會佔用閏秒,但如果您使用DateTime.UtcNow並執行UTC中的所有處理,則不應影響時區更改。使用此方法將允許用戶操縱該號碼,因爲它基於計算機的時間設置。沒有真正正確的方法來處理這個問題。看看有許多延遲問題的遊戲。這發生在客戶端和服務器端處理。

該方法的另一個問題,取決於遊戲的類型,是用戶的反應實時取決於事件。所以如果你爲了計算而扭轉時間,那麼結果可能會影響到其他玩家的行動。

對於複雜的操作,I think the game 'Eve online' will slow down 'Game Time' for large fights.

+0

感謝您的鏈接,但是,只要我有一個從客戶端發送數據包到服務器接收的時候,會爲我做。我的遊戲是PvE,客戶端處理衝突。 (因此,當客戶端檢測到衝突時,它會向服務器發送衝突,然後服務器查看該敵人,查看發生衝突時的位置,並查看衝突是否有效)。由於我的比賽不是PvP,我不必處理任何與其他球員有關的事情。 – user183106

+0

@ user183106在這種情況下,您可以在客戶端和服務器上都使用'DateTime.UtcNow'。那個時間是協調的,並且不需要基於某一年。 –

相關問題