我正在建立在線多人檯球遊戲,我正在努力想出多人物理模擬的最佳方法。我想到了三種可能的場景,每種場景都有各自的優點和缺點,我想聽聽那些已經實現了類似的東西,或者在多人在線遊戲方面有經驗的人的一些看法。多人檯球遊戲物理模擬
1號方案:在客戶端上物理模擬:在打開播放器採取了一槍發射擊和服務器電源的角度,以及服務器更新所有的客戶提供這些價值,使他們能夠模擬射擊獨立。
優點:
- 低服務器過熱
缺點:與同步
- 問題。無論客戶的幀頻如何,客戶都必須模擬精確的模擬。 (可能用一個像描述的一些巧妙的算法來解決here)
- 作弊。玩家可以通過調整物理引擎來作弊。 (可以確定使得在拍攝與其他球員的球位置結束的比較時,如果只有兩名球員都在表(即不spectaculars)的騙子是那麼誰?)
第二個場景:
對一個(即「主」)客戶端(例如,誰拍攝過的人)進行物理模擬,然後將每個物理步驟廣播給其他人。
優點:
- 沒有問題同步。
缺點:
1.Server過熱。每個時間步驟,「主」客戶端將把所有球的座標發送到服務器,服務器將不得不將它們廣播給房間中的其他人。 2.「主人」玩家的作弊仍然有可能。
3rd場景:物理將在服務器上模擬。
優勢:
- 沒有可能作爲模擬運行獨立客戶端的欺騙。
- 不同步的問題,一個模擬意味着每個人都將看到同樣的結果(事件如果不是因爲在網絡滯後的同時)
缺點:
- 巨大的服務器超載。不僅服務器必須每秒鐘爲每個桌子計算30/60次物理(可能同時有100個桌子),而且還必須將所有座標廣播到房間中的每個人。
編輯 一些類似的遊戲一個我做,萬一有人熟悉他們是如何克服這些問題:
http://apps.facebook.com/flash-pool/
http://www.thesnookerclub.com/download.php
http://gamezer.com/billiards/
想到的另一種方法是傳輸速度/矢量,並且僅在與鐵軌,另一個球等發生碰撞時重新傳輸......另外,我已經接觸到的幾個在線遊戲在最終達成一致一旦運動停止,將所有的東西都放到正確的位置。 – JimR 2012-04-01 17:58:27
感謝您的提示。從我所看到的情況來看,這種方法可以集成到方案1中,以確保兩種模擬是同步的並防止作弊。 – Alex 2012-04-01 18:32:14