遊戲伺服器可不可以可以只做資料中轉站,把各個遊戲的使用者的遊戲資料傳送給玩家,玩家自己處理並計算資料?

時間 2021-06-08 07:37:28

1樓:發條陳

首先,其實在遠古時期,大部分的網遊都是這樣做。因為那時候伺服器機能普遍不強,大環境的網路不好(都是撥號上網),如果像現在這樣,伺服器運算完再返回結果給前端,成本就過高。伺服器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,不同系統上的浮點數運算等等。

可不可以用家用 PC 做伺服器,搭建乙個訪問量很小的部落格?

玫花露 可以,但是要安裝網域名稱解析軟體,我比較推薦金萬維寬頻通,挺好用的,安裝好以後就可以用了,介面簡潔,一看就會,執行速度也很快,穩定性也不錯,你可以試試 難得糊塗 你可以用三豐雲免費伺服器,位址https www.sanfengyun.com,來系統學習 網域名稱申請,網域名稱解析,linux...

職場新人可不可以做領導

我也成了過來人 個人認為不太合適。那種天資聰穎有大局觀的除外 我現在的領導對我們單位所做的業務一竅不通我,解釋起來太費勁了而且開會的時候總是找不到重點,就很無語。個人認為經歷了基層的鍛鍊或者對本單位工作內容培訓過有相當程度的了解後比較適合做領導,畢竟領導是領頭羊,自己都找不到方向讓下屬也很炸。 胡佳...

我們可不可以不再爭吵?我們可不可以是朋友?阿公尺和L?

雖然這個例子似乎不太恰當,但是我覺得可以模擬紅藍看一看。當初兩家撕的天昏地暗,現在不也是起碼表面化和平的親如一家嘛,等著吧,等到下乙個大勢出來了 很希望有這一天.但是目前應該不可能吧.髒事兩家都做過,可能也只有等到沒有利益衝突的時候才會停止戰爭,但是感覺朋友甚麼的還是不太可能.沒有利益衝突了就是你走...