遊戲伺服器可不可以可以只做資料中轉站
首先,其實在遠古時期,大部分的網遊都是這樣做。因為那時候伺服器機能普遍不強,大環境的網路不好(都是撥號上網),如果像現在這樣,伺服器運算完再返回結果給前端,成本就過高。伺服器hold不住,玩家的網費也燒得飛起。所以初期的網遊,大部分單人邏輯和運算都交給客戶端來做,伺服器只負責儲存和廣播。如果你能搞到初代的石器時代或者傳奇之類的原始碼,你就會發現基本所有單人部分的運算都是在前端完成。至於後來為什麼都交給後端來做,答案很簡單,就是外掛。如果是單機的話,你改改資料自嗨沒人管你,但是網遊就不太可能了其次,其實現在還有部分網遊也會這樣做。現在的網遊環境不比最初,火一點的遊戲都會伴隨著外掛的產生。所有網遊都會把資料的合法性和安全性放在很重要的位置。基本所以mmorpg這種都是把運算放在伺服器來做。但是其實還是一些特殊的網遊是交給前端計算的。這類網遊一般都是單局型的競技網遊。類似moba,大亂鬥,rts這種,他們會採用一種叫“幀同步”的方法,把運算交給前端,後端只負責廣播。(fps則不會用“幀同步”)當然不是所有的這類遊戲都是這樣做,但是確實是有不少這類遊戲會採用“幀同步”的演算法來實現對戰。所謂的“幀同步”就是,伺服器只負責收集玩家的操作,然後廣播給所有同一局的玩家。所有的玩家(前端)各自嚴格按順序計算。因為所有輸入的條件都是一致的,所有產生的結果也是一樣的。拿war3舉個例子:A玩家操作了小兵去攻擊了野怪,並正好能把野怪打死,B玩家操作小兵去攻擊A玩家的小兵,並正好能把A小怪打死。但是A發到伺服器的時間是1分17秒,B操作發到伺服器的時間是1分18秒。那麼所有玩家收到的廣播就是A小兵1分17秒攻擊了野怪,B小兵1分18秒攻擊了A小兵。按順序執行就是A打死了野怪然後被B打死。但是如果伺服器收到的順序是剛好相反,那麼就是A沒有打死野怪就被B打死。可以看出,如果所有的客戶端都嚴格按照伺服器給的順序執行,那麼所有的前端看到的結果都是一樣的。那麼為什麼這類遊戲會選用這種方式來做呢。原因有很多∶1.“作弊”的影響範圍很小,就算一不小心防不住你作弊。那我最差的情況也只是影響了這局玩家的體驗,並不會說搞壞整個遊戲生態。2.網路包很小,競技遊戲對於實時性要求很高,操作又很多。如果像mmo rpg一樣傳大量的狀態資料,技能資料那麼會很影響體驗。如果我只傳運算元據就能提升網路效率3.就是同步很“嚴謹”。像上面例子那樣,如果給出嚴格的操作順序(其實就相當於棋譜一樣),那麼放到任何一個客戶端,重複演算個上萬遍,得出的結果都是一樣的(好了,錄影功能也有了)當然咯,“幀同步”的優點就算再多,始終有一個問題是無法迴避的,就是像其他網遊一樣,怎麼防作弊。一般來說,像moba或者大亂鬥這類遊戲,會採取投票機制。就是這局打完,大家一起投票,少數服從多數。拿moba為例,就算你開外掛改資料,把你攻擊改成一刀999。在其他客戶端的那裡,你攻擊還是沒變。你這邊在亂殺,在別人眼裡就跟個傻子一樣亂跑。然後遊戲結束,大家把結果提交給伺服器一合計,發現就你結果不一樣。伺服器就認為你作弊了,不採用你的結果。那麼像rts大多數都是1v1的話,沒辦法少數服從多數。我猜可能伺服器自己會跑一份邏輯吧。不過rts樣本太少,需要連伺服器跑的rts,我就知道一個星際2。甚至他是不是用“幀同步”來做都不好說總的來說,現在基本大部分網遊都是交給伺服器運算。而且現在伺服器效能越來越強,網路越來越好,即使是競技網遊,很多都願意把計算放在後端來做。因為“幀同步”其實有一些很讓人頭疼的問題。像追蹤bug,不同系統上的浮點數運算等等。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69951811/viewspace-2664580/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 香港伺服器可以做網站嗎?伺服器網站
- threejs可以做遊戲嗎JS遊戲
- 華納雲香港vps可以用來做遊戲伺服器嗎?遊戲伺服器
- 戀愛遊戲該怎麼做?戀愛遊戲+可以是什麼?遊戲
- 液冷伺服器——資料中心綠色轉型正當時伺服器
- 中秋不加班!這樣做可以提高遊戲開發效率遊戲開發
- 遊戲行業中的職位:你可以做什麼遊戲行業
- 遊戲行業應該如何建設資料中臺?遊戲行業
- 遊戲網站如何做SEO優化推廣呢?遊戲網站優化
- 用Nginx伺服器做網站Nginx伺服器網站
- 打工不能實現財富自由,但在這裡做遊戲可以遊戲
- 學習Python可以做遊戲開發嗎?Python入門教程Python遊戲開發
- [提問交流]可不可以講解下 RPC。RPC
- 小白可以轉行學習大資料嗎?怎麼做?大資料
- 雲伺服器可以做什麼用?伺服器
- 只狼是潛行遊戲嗎?遊戲
- Unirech:阿里雲國際站雲伺服器可以用來做什麼業務?阿里伺服器
- Unity遊戲示例來了,用Unity開源遊戲資源做遊戲,遊戲開發不再難!Unity遊戲開發
- 坐擁180萬粉絲UP主轉行做遊戲?遊戲
- UGC遊戲浪潮(三)做一個UGC遊戲與在UGC做一個遊戲GC遊戲
- 如何選擇伺服器做網站伺服器網站
- 零基礎轉行做資料分析師真的可以嗎?
- 人氣聯機遊戲《只只大冒險》登陸WeGame遊戲GAM
- 騰訊遊戲學院專家:做一個多執行緒遊戲框架可以多簡單?遊戲執行緒框架
- 【遊戲設計】如何做弱保軟的逆轉裁判遊戲設計
- King新任掌門人:我們有2.49億月活,只做真正的免費遊戲遊戲
- 站群伺服器做SEO的優勢伺服器
- 遊戲網站搭建遊戲網站
- Linux伺服器可以用來做什麼?Linux伺服器
- 恐怖遊戲可以借鑑Roguelike遊戲哪些特色?遊戲
- 小島秀夫:想要做出好遊戲,不能只喜歡遊戲遊戲
- 在巴基斯坦做遊戲遊戲
- 如何只靠語言描述整個遊戲?遊戲
- 黃仁勳:遊戲、AI以及資料中心業務都是大生意遊戲AI
- 統計分析和智慧聚類在遊戲資料中的應用聚類遊戲
- 大型網路遊戲和大型網站需要伺服器的不同遊戲網站伺服器
- Kubernetes建立資料中心級apt映象站點APT
- 刺客信條之父:3A工作室只做能賺錢的遊戲,但我有其他想法遊戲