2012-02-27 110 views
1

我有一個使用TCP套接字連接到C/Linux服務器的Flash遊戲。這場比賽是非常基本的。幾乎沒有辦法讓客戶作弊,因爲遊戲主要是一些基於文本的遊戲和一些圖形。保持客戶端計時器同步 - TCP

的同步定時器的問題:

遊戲中有一個需要是爲每個客戶端相同的計時器(例如開始於60秒,並遞減計數到0)。我想到了一些基本的技術,其中服務器爲每個客戶端強制執行定時器,例如每秒向每個客戶端發送一次服務器時間,但這可能會導致服務器耗盡大量帶寬並佔用大量帶寬。我希望有人能夠給我一些指向同步技術的指導,這些技術在帶寬和服務器處理時間上都是最小的。

我在想這個解決方案可能與使用客戶端的時鐘有關。我不認爲延遲峯值會影響用戶時鐘,但我可能在這裏忽略了一些可能危及遊戲完整性的內容。

任何幫助表示讚賞。

回答

0

你考慮過NTP嗎?這就是「Windows,網絡時間」和Linux所使用的。

+0

NTP對我來說是一個新概念。我要檢查一下。謝謝你的提示! – 2012-02-27 05:38:43

+0

從我讀的NTP可能對我來說是矯枉過正的。它似乎只是UDP並且需要它自己的服務器。我只需要一個實現,它可以讓所有用戶用自己的時鐘開始倒計時,並確保它們不會超過一秒鐘不同步。 – 2012-02-27 06:04:19

+0

事實上,flash只是TCP,所以我甚至不確定NTP是否可能。 – 2012-02-27 06:20:30

0

您必須考慮哪些會影響監視結果,如網絡延遲。 通常,您需要在客戶端和服務器上進行仿真。客戶端被稱爲客戶端預測,並同步服務器的模擬,修復客戶端。 您需要通過輸入和瞬間機會碰撞來記錄您的遊戲對象的狀態。 發送這些消息並添加延遲時間來運行您的遊戲邏輯,「延遲時間」可以保證 其他玩家通過運行遊戲邏輯在同一時間同步。

很難走到box2d在TCP上的同步。我建議你使用P2P。