這是一種情況。假設我正在爲瀏覽器構建一個在線2人遊戲,其中一個目標是爲這兩個玩家產生一些東西(一個對象)在屏幕上的同一個地點並使其沿線性軌跡行進與相同的速度。最好是實施「服務器打勾」,它可以移動對象(或對象)或,使瀏覽器的作業成爲作業。我明白將它留給瀏覽器的不好的含義,但我也擔心服務器上的大負載或其他問題。關於如何通常實施的任何想法?在線多人遊戲中常見的「嘀嗒」怎麼辦?
1
A
回答
3
在概念上,有三種方法來實現這一目標:
- 純服務器端模式
- 純客戶端模式
- 混合模式
讓我們看到了幾個細節他們每個人。
將此應用於在三種不同模式的情況下,將意味着:
在純服務器端模式,您發送的軌跡的座標,實時到兩個瀏覽器。每個瀏覽器只接收座標並在接收到的位置顯示對象。你可以看到這種方法的一個實例。使用兩種不同的瀏覽器轉到http://push.lightstreamer.com/,並在右下角演示中移動角色。角色和球的所有動作由服務器決定,協調座標,並實時廣播給所有客戶。在純粹的客戶端模式中,您將共享一個初始的世界狀態,然後每個瀏覽器將計算它自己的世界進化,並有可能的分歧。
在混合模式下,瀏覽器在純客戶端模式下執行自己的計算,但是它們會定期通過低頻率服務器端廣播進行同步。所以,物理運行在服務器端和客戶端。
最簡單的解決方案是純服務器端模式,它在非複雜的情況下是完美的。爲了使其具有可擴展性並能夠容忍網絡延遲,您需要一個特定的服務器,就像這些演示中所用的服務器[完全公開:我參與了此類服務器]
要獲得更多詳細信息,可以查看一些資源我在過去準備:
- 的文章:Optimizing Multiplayer 3D Game Synchronization Over the Web
- 在HTML5DevConf談(其中包括我上面共享的幻燈片):More Than Just WebSockets for Real-Time Multiplayer Games and Collaboration
相關問題
- 1. 爲什麼圖表有嘀嗒和細線?
- 2. iPhone - 使用遊戲中心的在線多人遊戲教程
- 3. 使用WCF的在線多人遊戲
- 4. 安卓雙人遊戲,在線遊戲
- 5. 基於在線多人遊戲的遊戲服務器技術?
- 6. Ada中的嘀嗒或撇號字符是什麼?
- 7. 多人遊戲玩家2人遊戲
- 8. 實時移動多人在線遊戲
- 9. 多人在線Flash遊戲,可能嗎?
- 10. 在線多人遊戲基礎知識
- 11. 測試多人遊戲中心遊戲
- 12. Facebook中的多人遊戲
- 13. UDK多人遊戲?
- 14. MulticastSocket多人遊戲
- 15. 多人Flash遊戲
- 16. HTML5多人遊戲瀏覽器遊戲
- 17. 爲RTS遊戲實現多人遊戲
- 18. 如何在我的iphone遊戲中實現多人遊戲?
- 19. 在多人遊戲中從'guest'開車的遊戲杆?
- 20. C#瑣事遊戲:在平局的情況下該怎麼辦?
- 21. Python的多人遊戲
- 22. 在iOS遊戲中啓用多人遊戲功能
- 23. iPhone遊戲中心iOS4支持我的遊戲?怎麼樣?
- 24. 我該怎麼做(遊戲)?
- 25. RTS HTML5遊戲多人遊戲 - 開始node.js服務器遊戲
- 26. 在多人遊戲中同步AI NPCs
- 27. 在Flash中構建多人遊戲
- 28. 遊戲的常見用例圖
- 29. 多線程多球遊戲
- 30. 基於回合的多人遊戲與遊戲中心
你不能有客戶,如果這個協調你期望所有的客戶ts會看到同樣的事情。不同的連接速度和加載時間會導致它失敗。給客戶這樣的責任也可能是危險的,因爲客戶的信息可以很容易地被他們操縱。向客戶端提供來自服務器的數據副本,以便它們不能破解這些值。 – Carcigenicate
謝謝,這是我最初的想法,但是確保服務器上每個客戶端都能夠很好地滿足客戶數量的增長? 編輯:技術是使用nodejs的網絡套接字 – user6754277
我沒有寫過任何超出簡單玩具的任何服務器/客戶端遊戲,所以我不能回答這個問題。一般的規則是對客戶給你的任何數據都不信任,並且有能力改變。假設你有客戶每隔幾毫秒更新一次軌跡。任何具有任何編碼知識的人都可以打開開發人員工具,找到更新功能,並將其更改爲自己想要的任何內容。如果他們阻止對象移動,你能相信他們提供的關於他們與對象交互的任何數據嗎? – Carcigenicate