遊戲伺服器可不可以可以只做資料中轉站
首先,其實在遠古時期,大部分的網遊都是這樣做。因為那時候伺服器機能普遍不強,大環境的網路不好(都是撥號上網),如果像現在這樣,伺服器運算完再返回結果給前端,成本就過高。伺服器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可以用來做遊戲伺服器嗎?遊戲伺服器
- Excel 可以做什麼(轉)Excel
- 雲伺服器可以做什麼用?伺服器
- 用Nginx伺服器做網站Nginx伺服器網站
- 從伺服器端呼叫EJB可不可以返回CONNECTION和RESULTSET,為什麼?伺服器
- Unirech:阿里雲國際站雲伺服器可以用來做什麼業務?阿里伺服器
- 液冷伺服器——資料中心綠色轉型正當時伺服器
- 小白可以轉行學習大資料嗎?怎麼做?大資料
- 如何選擇伺服器做網站伺服器網站
- [提問交流]可不可以講解下 RPC。RPC
- 站群伺服器做SEO的優勢伺服器
- 兩個web application的session可不可以公用WebAPPSession
- Linux伺服器可以用來做什麼?Linux伺服器
- 資料中臺|能幹啥?怎麼做?用在哪?
- 零基礎轉行做資料分析師真的可以嗎?
- 戀愛遊戲該怎麼做?戀愛遊戲+可以是什麼?遊戲
- 0617 - 只做核心業務
- 剛買的Mac蘋果電腦可不可以裝Windows?Mac蘋果Windows
- 【初探IONIC】不會Native可不可以開發APP?APP
- Singleton可不可以理解成單執行緒工作?執行緒
- SAP系統可不可以修改設定[T-CODE]
- 做網站的"伺服器"是什麼意思?網站伺服器
- 遊戲行業中的職位:你可以做什麼遊戲行業
- 做網站租用物理伺服器好還是雲伺服器好?網站伺服器
- 資料中臺的前世今生 :帶你全面瞭解阿里巴巴做資料中臺的歷史阿里
- 租用香港伺服器做下載站幾大好處伺服器
- 雲伺服器和傳統伺服器資料中心對比伺服器
- 擁有一臺RAKsmart伺服器可以做哪些很酷的事情?伺服器
- 騰訊雲學生伺服器可以用來做什麼?伺服器
- 單槍匹馬:4年只做一個iOS遊戲 收入破千萬美元iOS遊戲
- 可不可以設計出一個完美的分散式系統?分散式
- 中秋不加班!這樣做可以提高遊戲開發效率遊戲開發
- 打工不能實現財富自由,但在這裡做遊戲可以遊戲
- Kubernetes建立資料中心級apt映象站點APT
- 只會玩VR遊戲?你還可以用虛擬現實向女友求婚VR遊戲
- 選對資料中心來租用伺服器的方法伺服器