最近看到一些格友會玩《星海爭霸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」的玩法啦,例如裡面有個「競技場模式」與「經典模式」,就有設一個比較容易達到的等級上限,可以做到公平對戰。算是在賺錢跟公平之間有做到一點平衡。(還算是有良心)
大家感興趣的話,也可以下載來玩個幾場看看,反正不用錢(?)