2011-10-22 91 views
0

我有一個iphone的桌上曲棍球遊戲,現在我正在做它的多人遊戲部分。我決定啓動比賽的iphone是服務器。遊戲網絡物理與目標C和Box2d同步

物理運行在服務器和客戶端上,所以客戶端看起來保持平穩,因爲它是一個非常快的遊戲,所以不會「跳動」。

服務器向客戶端發送常量消息,客戶端可以調整其位置和速度。問題是客戶有時會因爲延遲而跳回位置。

我已經在客戶端和服務器上完成時鐘同步,所以我可以通過時鐘差異和服務器發送的速度來補償X和Y位置。問題是,它看起來有點jump。。我怎樣才能同步這個東西?我一直在嘗試各種各樣的東西,但沒有看到工作。

謝謝。

+0

在[gamedev.se]上可能找到了很好的信息。 –

+0

@JoshCaswell,不是真的,大部分答案都*真*淺。 –

回答

2

您正在描述客戶端/服務器遊戲狀態同步的一個衆所周知的問題。引用this article

客戶端預測最複雜的部分是處理來自服務器的 更正。這很難,因爲來自服務器的更正 由於客戶端/服務器通信 延遲而在過去到達。我們需要在過去應用此更正,然後計算 由此產生的當前客戶端的更正位置。

看看那篇文章,特別是標題爲「客戶端預測」的部分。