最近看到一些格友會玩《星海爭霸II》(我也有玩過!)

突然想到可以來介紹一下《部落衝突:皇室戰爭》這款手遊。(???)

皇室戰爭

皇室戰爭是一款結合「卡牌構築」與「即時戰略」的雙人對戰遊戲。基本上就是雙方輪流出牌、互相拆塔,五分鐘內決勝負的一款遊戲。

我自己是在 2017-2020 年左右玩得很兇,它不只好玩,背後使用的技術也讓我印象很深刻。

大家知道,這種即時對戰的遊戲最怕的就是網路延遲,正所謂「遊戲不會使人暴力,LAG 才會」。

身為一個從小玩電腦長大的電腦兒童,我當時對於電競絕對是 100% 電腦派的。手機遊戲螢幕小、操作不精準,延遲又高,到底是要玩什麼?

直到玩了皇室戰爭,才發現我大錯特錯。這款手遊可是做到全球統一伺服器、網路爛也感受不出來的程度,超級厲害。

下面來推測看看,這款遊戲是怎麼做到的。(真的只是推測的,看看就好)

皇室戰爭卡牌 皇室戰爭對戰

推測一:採用 Client-Server Lockstep 技術

一般遊戲的做法是:伺服器算好所有單位的狀態,再傳給每個玩家。但場上單位一多,傳輸量就會很大。

而 Lockstep 的做法則是:每台手機都跑一份「確定性」的遊戲程式,伺服器只需要同步玩家的「操作指令」就好。

類似這樣:「玩家 A 在第 N 秒於座標 (3, 5) 放了哥布林」,剩下的戰鬥模擬,兩台手機自己跑就好,結果保證會一模一樣。

推測二:消失的一秒鐘

但 Lockstep 有個缺點:要等所有人的指令到齊才能推進,網路卡一下全場就要等。

如果你像我一樣玩過《魔獸爭霸III》這類的遊戲,應該會很有感,只要有一個人爛線,全部的人都會卡住。(然後大家就會嘴你說是住在非洲還是在載迷片

而皇室戰爭的解法可能是:每張卡牌打出時,都會有整整一秒鐘的部署時間,用這個延遲把網路同步給藏起來

舉個簡化的例子:

  • 你在第 0.0 秒時下了哥布林。
  • 你的指令在 0.2 秒到達伺服器。
  • 伺服器在 0.4 秒把指令轉發給對手。
  • 雙方手機都在第 1.0 秒同時把哥布林打出。

那剩下的 0.6 秒在做什麼?什麼也不做,它就是緩衝,確保再爛的網路也來得及對齊。

所以,即便你的網路延遲(ping)高達 200ms,也完全感受不到卡頓,Magic!(一般遊戲 ping 超過 100ms 就很不舒服了)

也因此,皇室戰爭比較沒那麼吃手速,更多的是在比出牌順序、位置、時間點這些心理博弈。

推測三:真的卡了怎麼辦

實際玩的時候會發現,網路狀況真的很差時,遊戲偶爾會出現單位「瞬移」或畫面突然加速的情況。

這個可能是某種「追幀」機制:當客戶端落後太多時,讓遊戲計算速度跑得比平常快一點,就像是影片開兩倍速一樣,把雙方拉回同一個時間點。


畢竟還是手遊

話說回來,這款遊戲雖然很好玩,但本質上是一個「Pay to Win」的遊戲(或很肝)。

不過還是有「Free to Play」的玩法啦,例如裡面有個「競技場模式」與「經典模式」,就有設一個比較容易達到的等級上限,可以做到公平對戰。算是在賺錢跟公平之間有做到一點平衡。(還算是有良心

大家感興趣的話,也可以下載來玩個幾場看看,反正不用錢(?)