2012-10-10 118 views
0

我正在創造iOS(iPhone)足球風格的遊戲(使用cocos2d和box2D)與兩名玩家實時玩球。 我很努力的與同步了很多時間,只是無法讓它足夠平滑。多人物理實時遊戲

Okey,所以我決定去客戶端/服務器模型 - 一個被選爲主機(服務器),另一個是客戶端。 服務器和客戶端必須保持物理運行。客戶端只是「鏡像」服務器的物理。 其結果是我們在服務器上獲得流暢的遊戲,並且在客戶端真的非物理遊戲 - >讓我們說:在快速命中之後,球被計算出來,但在下一次更新時,服務器仍然認爲球應該下去。 我使用時鐘同步,所以我可以在客戶端正確同步位置和速度。 我知道我不能使用客戶端預測來處理像擊球這樣的物理事件。 而我仍然希望在兩邊都有物理因素,這樣我就可以正確地檢測到碰撞。

我真的很感激,如果有人分享他的經驗與這個問題。

回答

2

需要通過網絡同步的遊戲對象中的物理是一個相當具有挑戰性的問題。最好避免它。

大多數解決此挑戰的遊戲將模擬服務器上的遊戲和物理世界,並讓客戶預測移動。是的,即使是物理對象,通常只需運行物理模擬(無衝突,或至少不會發生「阻塞」衝突),直到服務器爲物理世界發送更新狀態爲止。

當然,連接到服務器的速度越快,平滑的遊戲將會爲您服務。如果您的設備運行服務器爲,那麼除非您爲服務器播放器引入人​​工延遲並執行相同的預測,否則您將始終保持優於其他播放器的優勢。這也意味着運行兩個物理世界並在「服務器設備」上更新兩個物理世界,一次用於實際遊戲狀態,另一次用於預測世界的客戶端視圖。

+0

如何模擬服務器上的遊戲和物理世界? – TomSawyer