魔獸世界

World of Warcraft

最終幻想14 暗影之逆焰

ファイナルファンタジーXIV: 漆黒のヴィランズ

排隊與掉線,線上游戲的「人口災難」

作者 箱子   編輯 箱子   2019-10-24 08:00:00

為什么,我也想守護這個世界!

  最近幾天,每當我打開手機里的聊天訊息時,總會看到一大票《最終幻想14》玩家的哀嚎。隨著 5.0 新版本的開啟,這幫倒霉蛋飽受排隊和掉線之苦已長達一周,等待六、七個小時進不了游戲的大有人在,以至于 WeGame 適時亮出了“二區新服排隊少”的宣傳口號,回想起來還有幾分滑稽。

  根據以往的經驗,只要一款線上游戲還有些名號,那么初期上線的過程往往伴隨著一場“人口災難”,玩家們蜂擁而至,超過服務器負載的用戶連接,就像是持續不斷的合法 DDOS 攻擊,瞬間擊垮那些以規模著稱的公司和作品。《魔獸世界》如此,《命運2》如此,《最終幻想14》也是如此。

  2004 年,暴雪配備了 40 臺服務器迎接《魔獸世界》開服,但他們完全低估了用戶的數量級,游戲幾近崩潰。后來發展到擴充帶寬也于事無補,不得不中斷零售商的盒裝游戲供應,以免情況進一步惡化。

  再就是不久前《命運2》的資料片“暗影要塞”上線,同樣因服務器宕機而進行了一次緊急維護,期間還鬧出了“Steam 好友超過 300 就會閃退”的笑話。有人在社交媒體上調侃到:工作辭了,婚也離了,孩子放學沒去接,就為了履行“守護者”的職責,現在你居然不讓我打游戲?

  上述這些問題,對很多人來說可能早已習以為常,但當自己不止一次的遭遇時,還是會感到疑惑。那么多資源殷實的大公司,那么多富有才華的游戲制作者,為何總是一錯再錯?

搞不定的引擎

  早期的線上游戲很少會有排隊系統,因為玩家數量有限,開發商和中間件的制作者也不太關心用戶分流 —— 一個 MMO 內容比較泛用的引擎,Big World 就有類似的缺陷。

  打造該產品的 Micro Forté 公司很有意思,他們在上世紀 80 年代給 EA 開發了幾部作品后,就布局其它業務去了。直到 1994 年時重返游戲行業,從澳大利亞政府那弄了筆撥款,籌劃著制作 MMOFPS 的內容、開發引擎和工具,后來又順利被微軟看中,作為推廣 Xbox live 服務的一部分,運氣可以說相當不錯。

  但財大氣粗的微軟,當時其實投資了好幾家涉足 FPS 聯機游戲的團隊,他們最后選擇了 Bungie 做的《光環》,Micro Forté 只不過是個保底。于是在項目被終止后,這家公司因經營困難被迫裁員 70%。幸好開發引擎在資金鏈斷裂前做完了,他們為了填補家用就直接打包拿出來賣,沒想到銷路不錯。

用 Big World 創造小鎮

  這套 MMO 工具最終商業化,并得名 Big World 是在 2002 年,有很多我們熟悉的企業都購買了授權,比如網易用來開發《天下2》和《天下3》,Wargaming 拿來支持《坦克世界》的服務,臺灣的宇峻奧汀也是使用者之一。

  還有一個比較流行的說法,有人認為《魔獸世界》的一部分功能也是通過“自研 + Big World”引擎來實現的。理由很簡單,當時暴雪的母公司維旺迪想要收購 Micro Forté,最后遭到拒絕,退而求其次獲得了引擎的使用權,而 Micro Forté 的公司介紹中又有這么一段耐人尋味的話:

  2001 年底,在技術完工的最后階段,我們收到了全球領先的跨國互動娛樂公司的收購邀約。作為交易的一部分,這家跨國公司提出會將一個重要的 IP,奇幻 MMOG 項目交由我方打造,但由于董事會認為出價太低,所以交易未能完成。

  不難發現,在很長一段時間內,Big World 引擎都是線上游戲的一套設計范式。但正因為推出得太早,它在排隊系統、以及用戶分流方面是有所缺陷的。

  就拿角色建模來說,由于最初定位于 FPS 游戲,相當一部分帶寬和處理器資源都用在了 3D 空間的位置同步上。比如《坦克世界》里一炮打過去,履帶、車頭、車尾都有不同判定,對于絕大多數類型的 MMO 游戲而言,這套機制有些過于浪費性能了。

坦克世界

  在排隊系統的設計上,通常情況下可以單拿一組服務器出來當“連接服務器”,作為用戶的入口。它們把匯集起的信息送到“心跳服務器”,由此轉發到處理內容的“邏輯服務器”。當然有些小公司沒錢、沒條件,那也可以考慮利用多進程設計,把排隊系統獨立到一個進程里,負擔過高時再分配到另一臺物理機器上運轉。

  但因為 Micro Forté 最早根本沒考慮這些,導致其它公司的程序員在給 Big World 添加代碼時,只能把排隊系統放到引擎框架內,結果就是沒法提高優先級,很難和服務器的其它資源做隔離。

  再就是排隊本身的邏輯,要求服務器短時間內接納連接,并將這些連接進行分流和保持,以免玩家“重連”而增加服務器的負擔。但 Big World 全部采取了不穩定的 UDP 通訊協議,導致連接很難保持(雖然游戲內使用 UDP 是一種合適的方式,參考《無盡的任務》)。

  如果觀察最近幾年推出的線上游戲,會發現很多廠商都拋棄了老舊的 Big World 引擎,也有人在此基礎上進行了二次優化。但有些古老的排隊系統早已定型,重構需要耗費很多資源,有些設計思路也沒有革新,一時半會還來不及做轉型。

  不過,之所以 Big World 引擎能被線上游戲廣泛應用,證明它還是有兩把刷子。秘訣是它并不以地圖的形式來分擔負載,而是哪里聚集的玩家多,就給哪里分配服務器資源,比較靈活,因此理論上可以最大限度的容納角色數量。2011 年時,《坦克世界》就創造了并發在線人數 25 萬的成績 。

  相比之下,有人猜測《最終幻想14》的單區容量撐死 10 萬人,肯定是架構方面有所不同。比如 1.0 版本用的是 Square Enix 自研“Crystal tools”引擎,當時的設計非常愚蠢,幾乎所有的頁面交互都要過一道服務器,無法在本地進行,玩家們關個物品欄都要幾秒鐘,很容易導致服務器過載。

  歸根究底,這些網絡工程的技術,和制作游戲內容領域有別,也難怪那些知名的單機游戲開發團隊頻繁踩坑。反倒是現在比較流行的手游,服務器單區容量都是以幾百萬注冊用戶、幾十萬在線玩家為基準的。


下一頁:料不到的問題

| (102) 贊(104)
箱子 游戲時光編輯

關注
點贊是美意,打賞是鼓勵

評論(102

跟帖規范
您還未,不能參與發言哦~
按熱度 按時間

總貢獻榜

    2019九龙心水网高手论坛