分享

遊戲研發面面觀 ep002:淺談同步(sync)

遊戲研發面面觀這個主題是想分享我的經驗跟知識,每篇會以一個小主題切入,希望能以簡單的文字讓大家了解做遊戲的眉眉角角,還有從業人員的痛苦與掙扎。
主題 遊戲研發 遊戲企劃 分享文

Photo by Joshua Rodriguez on Unsplash

何謂同步

字面上概括的意思,維基百科都有說明(傳送門),我就不獻醜了。這個年代大家對於電腦軟體和工具的使用頻率和種類都不斷在上升,對於「同步」心中應該隱約會有個基礎的感覺,不要懷疑就是那個感覺!

遊戲的同步

遊戲中的同步,我本篇要提的不是畫面設定提到的「垂直同步」(想了解可以找Google大神),而是「遊戲過程中各物件即時反應給每個玩家的資訊」,像上面的附圖,有一顆球飛在空中,每個人「此時」看到「現在的位置」是否一致?如果實際落差很大,那玩家感受肯定很差對吧?畢竟籃球重點就在那顆球啊......。

研發上的難題

在研發上常碰到的難題,我的經驗會以下面兩個方向去思考。
  • 同步物件有多少?
  • 同步要多即時?
這兩個也是程式人員很在乎的事情,因為身為玩家覺得理所當然,老實說都是要消耗很多資源,越好的表現通常代價都很高!
我所經歷過的案子都屬於或具備「多人連線」與「競技」的要素,對同步都有相當程度的要求,所以這個議題算有點經驗可以跟大家分享分享。
主題 遊戲研發 遊戲企劃 分享文

Photo by Timothy Dykes on Unsplash

拿近年來流行的大逃殺遊戲(Battle Royale,俗稱「吃雞」)來說,動不動就是100人,那就表示不論友軍還是敵軍,只要在你畫面內出現,就必須「即時」且「正確」的顯示他們的狀況。在設計上,最極限的狀態就必須要假設有可能所有玩家都在你畫面裡,此時對於伺服器影響就很大了!更何況所有人都是動態的,無法預期什麼時候會發生這個情況,當忽然發生的時候流量是很巨大的,大家回想看看有沒有玩某個遊戲忽然角色一多就開始 lag 或者瞬間移動的經驗,很有可能就是這個原因。
主題 遊戲研發 遊戲企劃 分享文

Photo by Clint Bustrillos on Unsplash

實務上我們常要想能減少什麼才能降低資源的損耗,盡可能讓玩家避免體驗到 lag 的機會,以下我提幾個遊戲內常見的做法。
  • 降低物件的產生:上面提到的大逃殺遊戲,現在人物死亡時掉落的物品幾乎都用一個物件去包裝,把死者所有的掉落物放在裡面,就是避免一瞬間忽然爆出大量物品。
  • 降低角色的身形種類:簡單來說就是其實不論實際外觀長怎麼樣,男生、女生、胖子還是瘦子,其實他們骨子裡都是同一套骨架和動作,可以觀察看看最明顯的就是身高都不會差太多,《要塞英雄 Fortnite》和《絕地求生 PUBG》都是。
  • 控制顯示的距離:距離自己太遠的角色或物體就不要畫(render)出來,這會依照遊戲的類型做取捨,比較技術性的做法還有盡量利用場景的設計去做遮蔽,也就是不讓玩家有太多機會看到太遠的東西,室內景就是一個常見的作法,真的要室外那就是很多大山、大石頭或者樹木,甚至利用天氣和時間去合理包裝無法看太遠。
  • 會位移的物件速度不要太慢:扣掉玩家控制的角色之外,舉凡使用技能或武器射出去的物件,像火球或炮彈都盡量要保持一定的速度,因為這類物件通常一定會和角色互動,對於玩家在判斷準確的需求相對高,當位移越慢表示「更新頻率」就越高,這類物件同時存在數量一多起來對於伺服器的負擔就比較重。
  • 減少物理運算或者不同步:物理運算指的是該表現不是美術人員預先做好的,而是當發生的時候,透過運算去自然地呈現和環境的互動。比如東西落下撞到地面或牆面會反彈、角色死亡時身體會四肢癱軟倒地,這些表現都會直到動力不存在時才停止。物理運算會讓表現比較自然,但因為隨機性很高,故若每個玩家畫面裡呈現的結果要一模一樣,那就恐怖囉!再舉個例,會碎裂的物體,如石材或木頭噴出來的碎片,其實每個人看到的結果都不會一樣,不會去同步每個碎片的最終表現。

結論

對於網路連線,又需要即時互動的遊戲來說,如何審慎善用伺服器資源是非常重要的!而單機、放置或者不需要太多真實互動的遊戲對於同步的要求就會低很多。沒有正確解答,只有考量各種需求和團隊能力去決定最後做出什麼產品!
但其實,我想講的結論只有...
做遊戲好難!哭啊~
主題 遊戲研發 遊戲企劃 分享文

Photo by Tadeusz Lakota on Unsplash



P.S.1 以上許多面向還牽涉程式與美術專業,避免講錯無法講太深入,而且每個遊戲面臨的狀況都不一樣,我只是單純經驗分享(打預防針)。
P.S.2 有人反應我沒提到LOD(Level of Detail),只好附上傳送門
P.S.3 避免版權問題所以沒有附很多實際遊戲的圖,請見諒!(其實懶惰也是原因)
P.S. 4《鬥陣特攻Overwatch》雖然不是大逃殺遊戲,但我認為在很多需要同步的細節處理的很棒,不論是必要或有趣加分的設計。
主題 遊戲研發 遊戲企劃 分享文

Photo by AC De Leon on Unsplash

#主題  #遊戲研發  #遊戲企劃  #分享文 
分類:學習

遊戲設計師和專案管理師,喜歡接觸各種不同的事物,尤其是遊戲、音樂、舞蹈還有健身。來這分享工作和生活的想法,算是隨筆吧,也當記錄自己的人生和心情。

評論
上一篇
  • 遊戲研發面面觀 ep001:多語言的難題
  • 更多文章
    載入中... 沒有更多了