作者:Jake @ Antalpha Ventures, Blake @ Akedo Games, Jawker @ Cipherwave Capital
由于不同研發公司采用的架構(采用項目+中臺組織架構)不一樣,對項目和中臺組織的側重點不同,有些是強項目,弱中臺,有些是強中臺,弱項目。因此本系列文章主要按照游戲研發涉及的職能與流程分析。基于此,本系列的第二篇文章主要針對 Web3 Gaming 的工業化生產與制作(美術與技術)方面分析。在游戲立項后,游戲的策劃人員已確定核心玩法與可玩性等細節,包括角色成長、玩家行為引導、地圖與劇情等。因此,游戲策劃需與美術與技術溝通,將 Web3 游戲開發推進到設計與開發階段。


當策劃明確需求后,游戲的前端和后端技術等技術程序團隊需實現策劃部門提出的游戲設計,編寫游戲代碼,確保游戲的技術實現。在具體的執行過程中,可以分為前端程序和后端程序。主程需要管理技術的全流程,包括但不限于確定主要技術執行方案、各類性能的優化及指導底層框架的搭建等。
前端程序:覆蓋顯示、優化與邏輯相關等,包括聲音文件、圖像文件及文本文件的處理。
后端程序:覆蓋服務器端,包括但不限于數據庫結構、數據傳輸、校驗、存儲和通訊方式等等
下圖為 Web3 Gaming 在前端程序和后端程序各部分的展示。后文會詳細對兩部分詳細分析。

游戲的前端程序開發關注游戲界面、交互和用戶體驗。在交互性與用戶體驗方面,需要重點關注游戲的交互性和用戶體驗,這包括游戲界面(UI)的設計與實現、用戶交互(UI)系統的開發以及動畫和視覺效果的創造。此外,前端工程師還要確保游戲在不同平臺上擁有一致的用戶體驗,包括桌面和移動設備等。而在實現游戲邏輯方面,開發者需關注游戲中角色的行為、游戲規則的執行、分數與進度的管理以及游戲內的事件響應機制。開發者需要編寫高效、無縫的代碼,保證游戲玩法順暢、公平且具備挑戰性。
因此,根據以上目標,前端開發者需要利用相關的編程語言(如 C#、C++ 等),使用游戲引擎(如 Unreal、Unity、Source 和 CryEngine 等)創建游戲界面,調整動畫實現效果與音效表達效果等。市場上有許多游戲引擎工具供開發者使用,需根據開發人員的具體需求選擇具體的游戲引擎工具。不同游戲引擎對于開發者社區的支持側重點不同,以下為游戲技術研發對游戲引擎選擇的偏好與需求:
項目需求:不同類型的游戲對引擎的選擇要求各異。例如,對于強調視覺效果的 AAA 級游戲,Unreal Engine 或 CryEngine 可能更加合適;而針對移動平臺的小型游戲,Unity 可能是更優的選擇。
學習曲線與社區支持:一個易于掌握和使用的引擎能顯著降低開發難度。此外,活躍的社區能夠提供豐富的資源和支持,使開發者在遇到問題時能迅速找到解決方案。
性能與優化:引擎的性能和優化能力對游戲的運行效果至關重要。
成本與授權:某些引擎可能需要付費使用或有特定的授權要求。開發者需根據預算和項目需求進行權衡取舍。
擴展性與定制性:隨著游戲行業的持續發展,游戲引擎必須能夠適應新的技術趨勢和需求。了解引擎的擴展性和定制能力能幫助開發者更好地應對未來的變化。
基于以上需求分析,以下便針對兩款代表性的游戲引擎 Unity 和 Unreal Engine 淺要介紹和分析。
Unity 是一款支持多個主流平臺的游戲引擎,如 Windows、Mac、iOS、Android 等。Unity 具有高度的可定制性,允許開發者使用 C# 或 JavaScript 編寫腳本。并且,Unity 提供豐富的資源商店,開發者可以在其中購買和下載各種插件、模型和音效。Unity 的主要優點包括社群活躍、優秀的跨平臺兼容性、相對容易上手的開發環境及大量第三方包。開發者們可以自己創立功能包放到 Unity 的官方商店去銷售。目前每月超過 150 萬開發者瀏覽商店,共有超過 56,000 個包可以使用。在商業化與變現的角度看,Unity 會更多元化,商業化路徑渠道包括 Monetization SDK、Unity 游戲云一站式聯網游戲服務、Vivox 游戲語音服務、Multiplay 海外服務器托管服務、Unity 內容分發平臺(UDP)、Unity 云構建等多樣化的服務。其中,Monetization SDK 供開發者接入,由 Unity 直接擔任廣告分發門戶去分發廣告,目前這項服務已經代替引擎商業授權變成了 Unity 的主要收入來源。《逃離塔克夫》《Temtem》《使命召喚》手游以及《爐石傳說》等全球知名游戲均證明 Unity 是市面上最優秀游戲引擎之一。然而,Unity 的性能優化相對較差,對于大規模場景和高精度模型的處理能力較為有限。Unity 在 UI 上體驗遜于 Unreal,所以開發者必須加入許多第三方包去完善引擎的功能。并且在編程上,Unity 采用了 C# 和 JavaScript 導致了在 Unity 開發過程中會產生部分適應性問題。在 2020 年 3 月,Unity 正式推出了其最新的 2019.3 版本,包括了高清渲染管線 HDRP(High Definition Render Pipeline)和通用渲染管線 URP(Universal Render Pipeline)這兩個功能,增強了視覺效果和優化能力。同時增加了特效視圖編輯器,實時光纖追蹤系統等,讓其能夠更加適應現在市場的需求并且應用于大型游戲的制作中。
Unreal Engine 是一款全開源高性能的游戲引擎,以其出色的畫面效果和物理引擎而聞名。它支持 C++ 和藍圖可視化編程,提供了強大的材質編輯器和光照系統,可以實現逼真的游戲畫面。針對開發者,Unreal 不僅可以免費使用,也可以讓其研究代碼進一步提升開發效率。并且,Unreal 引擎自帶藍圖,所以即使不是技術開發人員,也可以通過點對點的可視化界面完成對游戲的設計。此外,Unreal Engine 具備跨平臺兼容性和高度可定制的 UI 系統。在收費上,Unreal 采取了傳統的引擎商業模式。第一種收費模式是針對游戲總收入超過 100 萬美元的部分收取 5% 的固定提成;而另一種收費模式是在商城售賣官方素材或第三方素材,從中抽取 12% 的收益。在游戲產出與知名度方面,《無主之地》《蝙蝠俠:阿卡姆瘋人院》和《最終幻想7重制版》等全球知名游戲均采用了 Unreal 引擎。然而,Unreal Engine 的學習曲線較陡峭,容易上手卻不易精通,需要一定的時間和經驗方能熟練掌握。
據 Medium 與競核的數據分析,2021 年 Unity 全球市占率達 49.5%,Unreal 全球市占率 9.7%,二者形成雙寡頭壟斷競爭格局。另外一份市場研究報告顯示,在 2023 年,Unity 和 Unreal Engine 二者的市占率分別為 48% 和 13%。下表為二者在圖形、特征、代碼和表現等方面的對比分析。

在視覺與圖像效果層面上,Unreal Engine 能夠實現的效果會略優于 Unity,但差距十分微小。從上手角度而言,Unity 對于初學者更易上手,且 Unity 需要的 C# 通常可以實現更快的編譯速度和較短的迭代時間;而 Unreal Engine 在動畫與圖形處理而言,對初學者難度較大。在實際使用過程中,在 Unreal Engine 希望可以實現和達成的效果,同樣可以通過 Unity 實現。兩款軟件均可以通過調用 API 或工具以實現更優質與更高效的圖形表現效果。根據統計,在實際操作中,代碼工程人員會更偏好 Unity,而對圖形與表達要求更高的技術美術師更偏好使用 Unreal Engine。


同樣,針對前端技術開發人員,除 Unity 和 Unreal 外,有其他的游戲引擎可以選擇,以下為幾款常用的游戲引擎供前端技術人員參考:
CryEngine 以高質量的畫面效果和強大的物理引擎為人所熟知。它提供了實時全局光照和高質量的模型與材質,為開發者提供了創建真實世界級游戲的可能性。然而, CryEngine 的文檔和社區資源相對較少,對于新手來說,可能會有一定的學習難度。
GameMaker Studio 2 是一個游戲開發工具, 可用于制作 2D 或 3D 游戲。有許多工具和編輯器能幫助實現開發者的游戲想法,將最終項目從同樣的初始基礎資源移植到多個平臺上。GameMaker Studio 2 提供了一個直觀且易用的拖放(Drag and Drop,簡稱DnD?) 動作界面圖標,允使使用虛擬的代碼邏輯創建游戲。同時可以使用腳本語言 GML 創建游戲,甚至可以結合兩者,使用 DnD? 動作調用函數。
Godot Engine 是一款多功能、跨平臺的 2D 與 3D 開源游戲引擎,可運行于Windows、macOS、Linux等多種操作系統。而其創建的游戲可運行于 PC、Android、iOS、HTML5 等平臺。通過基于節點的架構來設計游戲,3D 渲染器設計可以增強 3D 游戲的畫面。具有內置工具的 2D 游戲功能以像素坐標工作,可以掌控 2D 游戲效果。
不管選用哪一款游戲引擎,前端游戲技術開發人員均需考慮在實際操作中的使用情況。由于 Web3 游戲是消費品,多樣的玩法機制(如專注、共情和想象)和沉浸式情感交互體驗(如愉悅、恐懼、渴望、成長,悠閑、輕松和驚喜等)是讓消費者持續消費的重要前提。下面以游戲過程中的物理模擬與繪制系統(渲染系統/渲染器)為例,分析前端技術人員在使用游戲引擎時需要考慮的技術細節與用戶體驗問題等。
如果沒有精準的物理效果模擬,即使再華麗的游戲也會顯得靜態而沉悶呆板。游戲中的多樣化場景均涉及物理原理和物理引擎。物理引擎是一個組件,將游戲世界對象賦予現實世界物理屬性(如重量和形狀等),并抽象為剛體模型(包括滑輪和繩索等),使得游戲物體在力的作用下,仿真現實世界的運動及其之間的碰撞過程。即在牛頓經典力學模型基礎之上,通過簡單的 API 計算游戲物體的運動、旋轉和碰撞,現實的運動與碰撞的效果。在計算過程中,應用到運動學和動力學等多個學科的理論和計算。
運動學:從幾何的角度(指不涉及物體本身的物理性質和加在物體上的力) 描述和研究物體位置隨時間的變化規律的力學分支。點的運動學研究點的運動方程、軌跡、位移、速度、加速度等運動特征,以及在不同空間中的變換。運動學是理論力學的一個分支學科,它是運用幾何學的方法來研究物體的運動。在工作過程中,前端技術需考慮增加假設前提,盡可能貼近實際物理規則的同時,可以降低計算復雜度。常見的假設前提包括:不考慮外部力作用下的運動、將一個物體作為幾何部件,抽象為質點運動模型、僅考慮物體的屬性(如位置、速度、角度等)。
動力學:主要研究作用于物體的力與物體運動的關系。動力學的研究對象是運動速度遠小于光速的宏觀物體。在游戲物理引擎中,主要是涉及剛體動力學方面,包括質點系動力學的基本定理,由動量定理、動量矩定理、動能定理以及由這三個基本定理推導出來的其他一些定理。其中,動量、動量矩和動能是描述質點、質點系和剛體運動的基本物理量。在工作和計算工程中,需要考慮到的因素與假設前提包括:外部力對物體運動的影響、力的作用(重力、阻力和摩擦力等力作用在物體的重量和形狀,甚至包括彈性物體)、剛體物體的假設前提及游戲中的物體貼近其在現實世界中的運動等。
使用物理引擎,游戲開發者僅需考慮給游戲物體賦予形狀(假設為均勻分布)和力,在游戲引擎驅動下自動完成運動與碰撞的計算。并且基于以上對物理引擎的分析,前端技術團隊無需探究復雜的運動學知識和碰撞計算與優化,只需在物理引擎輸入參數即可。但需要注意的是,為能夠高效利用物理引擎,前端技術團隊不僅需理解物理運動的基本知識,而且需要洞悉游戲離散仿真產生的特殊現象,以避免游戲失真。有經驗的前端技術人員還需要考慮游戲流暢性,思考游戲運行性能等方面問題。
在構建游戲內剛體運動模型前,需考慮如下諸多因素:
其設置的模型是否為剛體,其受力后的彈性形變程度;
其在運動中或受力作用后,形狀與大小是否會發生改變;
其在運動中或受力作用后,物體內部各點的相對位置是否有改變;
因此,基于以上的分析,技術前端團隊需設置物體的中心、形狀、質量與初始運動方向及軌跡。而且,針對物體重力與運動的情況,物體需重點設置其質心,假設物體模型是勻質且中心與質心重合。在設置物體運動時,需考慮將作用于物體上的力分解為作用中心點上的力與圍繞中心點旋轉的力矩。其參數設置需符合玩家對物體及運動的認知,以產生沉浸感,否則玩家在游戲過程中會出戲,難以產生沉浸的情緒。下圖為力與力矩的分解示意圖:

為了實現逼真的物理行為,游戲中的物體需要正確地加速(即符合人類的認知),并受到碰撞、重力等力的作用。首先要注意的是,在設置3D物體模型運動時,必須判斷物體模型是否為凸物體,即在其任意兩個頂點間繪制的線不會離開該物體的表面。盡管大多數現實中的物體并非凸的,但在物理模擬中,凸物體常常是理想的近似。物理引擎在計算和模擬碰撞時,凸物體可以更精確地生成被動行為,如碰撞和跌落等。凸碰撞形狀在原始碰撞形狀和凹碰撞形狀之間取得了平衡,能夠表示任何復雜形狀。通過腳本控制物理,可以為對象提供車輛、機器甚至布料的動態特性。當然,輸入的網格可以是凹的,物理引擎會計算其凸部分。根據對象的復雜性,使用多個凸面形狀通常比使用凹面碰撞形狀能獲得更好的性能。Godot 引擎允許通過凸分解生成與空心對象大致匹配的凸形狀,但此性能優勢在凸面形狀數量過多時會減弱。對于大型復雜對象,如整個關卡,建議使用凹形。在建模物體形狀時,常用的引用類型有球(SPHERE)、立方體(BOX)、膠囊型(CAPSULE)、圓柱體(CYLINDER)和凸包(CONVEX_HULL)等,可以加入中心點、旋轉角度、尺寸等參數,供技術前端使用。
在模擬物體運動時,需要額外的計算過程。導入模型時添加物理引擎可能會失效,因此可以給物體包一個簡單的 Mesh,讓物體的姿態跟隨 Mesh。使用 Babylon 創建的 Mesh 可以直接添加物理屬性,也可以自定義 Shader 來創建。盡管自定義 Shader 較為復雜,但實現效果更好。在編輯器的實際操作中,選擇網格實例并使用 3D 視口頂部的 Mesh 菜單,可以生成一個或多個凸面碰撞形狀。編輯器提供了兩種生成模式:
創建單凸面碰撞使用 Quickhull 算法,使用自動生成的凸碰撞形狀創建一個 ColisionShape 節點。由于只生成單一形狀,因此性能較好,適合小型物體模型。
Create Multiple Convex Collision Siblings 使用 V-HACD 算法,可以創建了幾個 ColisionShape 節點,每個節點都有一個凸面形狀。由于生成多種形狀,因此以性能為代價對凹面物體更準確。對于中等復雜度的對象,可能比使用單個凹面碰撞形狀更快。
而對于凹面碰撞形狀,凹形是最慢的選項,但在 Godot 中也是最準確的。只能在 StaticBodies 中使用凹面形狀。除非剛體的模式為靜態,否則它們不能與KinematicBodies 或 RigidBody 一起使用。當不使用 GridMaps 進行關卡設計時,凹形是關卡碰撞的最佳方法。同時可以在 3D 建模器中構建一個簡化的碰撞網格,并讓 Godot 自動為其生成碰撞形狀。可以通過選擇 Meshlnstance 并使用 3D 視口頂部的 Mesh 菜單從編輯器生成凹面碰撞形狀。編輯器公開了兩個選項:
Create Trimesh Static Body 創建一個包含與網格幾何體相匹配的凹形的 StaticBody。
Create Trimesh Collision Sibling 創建一個 CollisionShape 節點,其凹面形狀與網格的幾何形狀相匹配。
需要提醒的是,建議保持盡可能少的形狀數量以提高性能,尤其是對于 RigidBodies 和 KinematicBodies 等動態對象;避免平移、旋轉或縮放 CollisionShapes 以從物理引擎的內部優化中受益。在 StaticBody 中使用單個未轉換的碰撞形狀時,引擎的寬相位算法可以丟棄不活動的 PhysicsBodies。如果遇到性能問題,必須在準確性方面進行權衡。大多數游戲都沒有 100% 準確的碰撞,游戲均找到了創造性的方法來隱藏它或以其他方式使其在正常游戲過程中不顯眼。


以上內容是以物理模擬部分為案例分析了前端開發者需完成和注意的內容;而下面將以繪制系統(渲染系統/渲染器)為例,分析前端開發者需要完成的事項。繪制系統也是整個游戲引擎中最高和最難的部分之一。在理論上,渲染需要解決兩個方面的問題,分別為數學(數學、物理和算法上的正確性)和繪制效果(光照、立體角度、散射、折射和反射等)的準確性,以此讓用戶產生對游戲的沉浸感。在執行和實踐的過程中,需要解決以下四方面的實際問題:
場景復雜:單一場景的多物體在多角度方面的渲染,并在生成每一幀游戲畫面時,均需重復多次運算;而多個場景下,多物體在多角度下的渲染會更為復雜;
硬件深度適配:PC、手機等硬件的能力影響了算法的運行及輸出。針對硬件,需處理各種耗時的紋理采樣工作及較為復雜的數學計算,如正弦、余弦、指數和對數等超越函數運算等。此外,底層執行運算的硬件單元對混合精度運算的支持也是硬件深度適配重點的考慮問題之一;
性能預算:不管游戲畫面要求有多高,游戲引擎均需確保游戲畫面在 33 毫秒(即 1/30 秒)內完成計算。對于大型深度沉浸的游戲,在較短時間內,游戲畫面可能變化較大,但計算時間要求不能縮短。并且,隨著游戲產業的發展,游戲在精細程度的要求越來越高,對游戲畫面的幀率要求和畫幅要求越來越高。每幀的時間預算越來越少,但同時對畫質的要求卻越來越高;
每幀游戲畫面的時間預算分配:在顯卡性能的占比方面,GPU 可以比 CPU 的占比更多。圖形的渲染算法不能占用超額的 CPU 計算資源,計算資源需分配給系統內其他模塊。

Source:不鳴科技根據以上分析,計算是繪制與渲染系統的最重要的核心職能之一,即在數以千萬計的頂點與像素、邏輯運算單元及紋理執行運算操作。簡單來講,在具體操作中,三角形構建的多個平面進過投影矩陣后,被投影到屏幕空間上;通過光柵化將頂點數據轉換為片元,片元中的每一個元素對應于幀緩沖區中的一個像素,此過程將圖轉化為柵格組成的二維圖像。在著色與繪制過程中,在每個小像素點上,去計算像素點對應的材質和紋理,將像素點渲染成對應的顏色。并且,為了增加沉浸感與真實感,需根據實際情況調整光照及物體的花紋等信息,并渲染出最終的效果,之后將頂點緩沖區和索引緩沖區構建好,再將網格數據傳入顯卡。以上「投影-光柵化-著色與繪制-后處理與光照運算」的過程即為繪制的過程。
Source:不鳴科技詳細來講,需渲染的物體與場景具備多樣的幾何形體、材質、花紋和應用場景等,因此物體與場景在實際渲染的操作中需要具體情況具體分析。一般情況下,模型文件中需保存多個頂點,包含頂點位置、頂點處的法線朝向、頂點的 UV 坐標及其他屬性的數據。大部分情況下,計算出每個模型的三角形朝向,然后使用鄰近的幾個三角形的法向量進行平均,可以得到該頂點的法向量朝向;在實際執行過程中,用索引數據和頂點數據描述模型文件的三角形,將所有的頂點放在一個數組中,只存儲了三個頂點的索引位置信息,可以將存儲量節約至原存儲量的 1/6。
紋理是材質非常重要的一種表達方式。而對于材質類型的感知,很多時候并不是由材質的參數決定的,而是由其紋理所決定的。例如,光滑的金屬表面和生銹的非金屬表面的視覺表現的區分是通過粗糙度的紋理區分的。在著色與繪制的過程中,紋理采樣的性能消耗巨大且復雜,進行一次紋理采樣,需要采樣 2 x 4,共計 8 個像素點的數據,并且需要 7 次插值運算。值得注意的是,紋理采樣需要避免走樣等相關問題,避免視角變化導致出現的畫面抖動與錯位等現象;因此采樣時,需取四個點,并對四個點進行插值,同時兩層紋理上按照比例采樣工作也是必不可少的。
在著色與繪制時,需將各類元素拼接與組合,此時引擎生成的 Shader 代碼會被編譯成一個二進制的數據塊,即一個 Block,其會和網絡存儲在一起。多樣化的網格和 Shader 代碼組合后會形成多樣的游戲世界。針對同一模型的不同材質,可以分別在各自的子網格內使用各自的材質、紋理和 Shader 代碼。由于每個子網格只使用了部分數據,因此只需存儲索引緩沖區中的起始位置和結束位置的偏移值。而且,在著色與繪制的實際操作中,為了節約空間,可以共用同一份資源池(如網格池、紋理池等)。值得注意的是,在實例化渲染的過程中,共享一份頂點數據,極大程度上降低顯存的使用率,并降低顯存帶寬。同時,對于要求較高的游戲,實例化的使用需要做其他額外的技術處理,比如單個物體的選擇操作等。
而在后處理與光照運算的過程中,需考慮光照強度、光照角度、用戶視角、散射與折射、材質對光的吸收程度等多個維度的問題。例如,在 Unity 的 Built-in 管線下,想要完成后處理效果,可以使用后處理插件 Post Processing Stack 實現此目標,也可以使用 OnRenderlmage() 配合 Shader 的方法自定義。此種方法實現對場景使用想要的后處理效果,并且自由度很高,可以隨時修改和擴展。在游戲引擎中,光照處理的計算過程較為復雜,可以參考下圖對于光照的分析與方程表達,感興趣的讀者可以調參自行嘗試。隨著游戲產業精細化方面的發展,光照表現有一種成為游戲行業高層次表現的重要趨勢,相關渲染技術同樣可被運用于動畫、電影、虛擬現實等諸多領域。

Source:不鳴科技需要補充的是,游戲引擎繪制系統是一類計算機工程科學,需要對顯卡的架構、性能、能耗、速度與限制等方面深入理解方能完全發揮出引擎的效果。并且, GPU 擁有極強的高速并行處理能力,可以用低廉的成本形成一組遮擋物的深度圖,然后剔除掉部分模型物體,可以優化復雜場景的處理能力。
后端主要工作覆蓋服務器端邏輯與數據處理、網絡通信與同步等技術解決方案。在服務器的邏輯方面,后端開發者需要負責處理服務器端的邏輯和游戲數據的存儲,包括玩家賬戶的管理、游戲世界的狀態同步及多玩家交互的支持等。并且,開發者需設計并實現高效的數據庫架構,用于存儲游戲進度、玩家成就、虛擬物品等信息。此外,后端系統還需要處理來自游戲客戶端的請求,包括玩家之間的互動、玩家的用戶數數據、角色的升級和資源的購買等信息請求。Web3 游戲可以參考下圖的游戲后端架構。受到傳輸速度、結算時間等因素的影響,基于當前的通信和加密技術水平,目前大型的 Web3 游戲的后端架構尚未能完全搭建在鏈上。
Source:公開市場信息而在游戲的后端開發網絡通信與同步方面,后端開發者使用各類型的網絡協議,如 TCP/IP、HTTP 及 WebSocket 等,建立穩定的客戶端與服務器之間的通信鏈路。在此開發的過程中,需設計和實現網絡協議以支持高頻率的數據交換和實時的游戲狀態更新。有效的網絡通信策略和同步機制,能夠減少延遲,確保所有玩家在游戲世界中看到一致的狀態。尤其是在網絡游戲中,實時數據的傳輸和同步是保證良好用戶體驗的核心。
在后端研發時,需注意提升整體的拓展性、穩定性和表現情況。在表現情況方面,后端不僅僅需要在緩存方面做到低延遲和快速計算反饋,而且要求能夠在 HTTP 協議方面能夠和服務器盡力做到實時溝通;在穩定性和效用方面,各服務器需隔離,以避免單一服務器出現問題而影響全部服務器;而在高拓展性方面,開發者需關注計算容量和功能的拓展,用多個子服務器的單一服務器聯接,通過 TCP、IPC 等通道通信,提高服務器對于峰值期內的信息和請求處理能力。下圖為技術后端的代表性整體結構示意圖,在存儲、服務及交互等方面均可參考。
Source:公開市場信息對于多用戶多場景的 Web3 游戲,為保證游戲用戶的體驗,降低短時間內大量訪問請求的壓力,開發者可設置多服務器。在各服務器中,多個世界模可組成群,以滿足大量用戶對游戲的效用。同時,在多服務器的設置中,可以支持大量用戶的實時操作,在眾多訪問和請求的過程中,盡力降低延時。下圖為多服務器與世界的參考示意圖。
Source:公開市場信息Web3 游戲的技術前端和后端也并不是完全割裂的狀態,在很多方面均需配合才能完成整體的技術支持。例如,在針對外掛方面,前后端技術均可發揮各自擁有的優勢,協同配合檢測外掛。在前后端技術整體支持的過程中,前端可發揮 Unity 等方面的優勢,而后端可發揮數據請求與寫入等方面的優勢,總體而言在以下方面協同配合:
防加速:服務器驗證,客戶端配合;
內存數據加密:通過 Unity AssetStore 的插件對客戶端內存加密,并降低對客戶端內所有數據的依賴程度;
協議 CD:防止頻繁訪問某個協議。可以對訪問的頻率限制,如 300 毫秒至 1,000 毫秒只訪問一次;
協議加密:協議頭增加字節數;
防止 WPE 重復發包:防重復領取與進入;
監控非充值渠道:監控非充值渠道獲取貨幣與資產的情況;
移動與操作防加速:檢測邏輯可以放在玩家進程與場景進程中;
以上用外掛舉例技術前端與后端配合的情況。通過對前端和后端在游戲開發的過程深入了解,理解各自負責不同的任務,但又緊密相連,共同構成了一個完整的游戲系統。一個精彩的游戲體驗來源于前端的豐富交互與后端的強大支持。以上僅為部分 Web3 游戲的技術簡單介紹,如有讀者對更多前后端技術感興趣,可以參考以下書籍學習更多:
Web3 游戲程序的數學方面:《Foundations of Game Engine Development, Vol 1: Mathematics》《3D 游戲與計算機圖形學中的數學方法》《3D Math Primer for Graphics and Game Development》《Essential Mathematics for Games and Interactive Applications》《Geometric Algebra for Computer Science》《計算機圖形學幾何工具算法詳解》《Visualizing Quaternions》《散度、旋度、梯度釋義》、《計算幾何》
游戲編程:《Learning Unreal Engine Game Development》《Blueprints Visual Scripting for Unreal Engine》《Introduction to Game Design, Prototyping, and Development》《Unity 5 實戰》、《游戲編程算法與技巧》《游戲編程模式》《Cross-Platform Game Programming》《Android NDK Game Development Cookbook》《Building an FPS Game with Unity》《Unity Virtual Reality Projects》《Augmented Reality》《Practical Augmented Reality》《Game Programming Golden Rules》《Best Game Programming Gems》、《Advanced Game Programming》
游戲引擎:《游戲引擎架構》《3D Game Engine Architecture》《3D Game Engine Design》、《游戲腳本高級編程》《編程語言實現模式》《垃圾回收算法手冊:自動內存管理的藝術》《Video Game Optimization》《Unity 5 Game Optimization》《算法心得:高效算法的奧秘》《Modern X86 Assembly Language Programming》《GPU Programing for Games and Science》《Vector Games Math Processors》《Game Development Tools》《Designing the User Experience of Game Development Tools》
計算機圖形學與渲染:《Real-Time 3D Rendering with DirectX and HLSL》《計算機圖形學》《計算機圖形學原理與實踐:C 語言描述》《Principles of Digital Image Synthesis》《數字圖像處理》《3D 游戲編程大師技巧》、《實時陰影技術》《實時計算機圖形學》《Real-Time Volume Graphics》《光線跟蹤算法與技術》《Physically Based Rendering》《Graphics Programming Methods》《Practical Rendering and Computation with Direct3D》《圖形著色器》《OpenGL 著色語言》《OpenGL Insights》《Advanced Global Illumination》《Production Volume Rendering》《Texturing and Modeling》《Polygon Mesh Processing》《Level of Detail for 3D Graphics》、《3D Engine Design for Virtual Globes》《Non-Photorealistic Rendering》、《Isosurfaces》《The Magic of Computer Graphics》
游戲音效:《Game Audio Programming》
游戲物理與動畫:《代碼本色:用編程模擬自然系統》《Computer Animation》《游戲開發物理學》《Physics Modeling for Game Programers》《Physics Based Animation》《Real-Time Cameras》《Game Inverse Kinematics》《Fluid Engine Development》《Game Physics Pearls》《The Art 藕粉 Fluid Animation》《Fluid Simulation for Computer Graphics》《Collision Detection in Interactive 3D Environments》《實時碰撞檢測算法技術》《游戲物理引擎開發》
游戲人工智能:《Artificial Intelligence for Games》《游戲開發中的人工智能》、《游戲人工智能編程案例精粹》《Unity 人工智能游戲開發》《Behavioral Mathematics for Game AI》
多人游戲編程:《Multiplayer Game Programming》《Massively Multiplayer Game Development》《POSIX 多線程程序設計》《大型在線游戲開發》《TCP/IP 詳解卷 1-3》
受篇幅限制,本部分對 Web3 游戲部分的美術簡要分析。美術在 Web3 游戲中的地位十分重要。優秀的游戲作品不僅僅是一款供人娛樂的游戲,尤其到了 3A 水平,每個高水平的 3A 游戲都是文以載道的藝術作品。針對美術表現形式,游戲工作室會從多個方面提高 Web3 游戲的藝術展現形式,如特效、交互、動畫和渲染等多個方面。下表從多個細分方向展示出 Web3 游戲美術表現需考慮之處。由于游戲類型、游戲制作時常和游戲目標人群的不同,Web3 游戲工作室需綜合考慮如何在美術表現性方面平衡與取舍。
Source:游鯊游戲圈;Jake 整理整體而言,游戲的美術風格需符合策劃設置的主題與背景,但美術表現的評估與分析相對主觀,以下可以用八個角度為例,分析與評估游戲的美術表現:
美術風格:符合背景與主題風格、獨特的藝術表現形式與特定的時間與科技展示;
色彩運用:色彩的調和、象征與對比;
環境設計:環境中的場景細節與氛圍感、場景物件的互動性;
角色設計:角色外觀、角色動畫、角色動作及角色與環境的融合情況;
UI/UX 設計:用戶界面設計、界面與美術風格的一致性及信息呈現效果;
動畫與特效:流暢性與游戲的表現力、特效的視覺沖擊力、音效與視覺效果的融合;
技術實現:現實的物理呈現效果、畫質與性能的平衡性;
藝術表現與游戲性:美術對于游戲核心機制的支持、對于其背景與敘事的支持;
此外,Web3 游戲皮膚是用戶最愿意消費和購買的游戲組件之一。從消費品的角度來看,皮膚、飾品及特效等美術表現是吸引用戶購買和消費的核心驅動力之一。差異化的藝術表現形式能夠讓用戶體驗到不同的心理感受,游戲用戶愿意購買額外的美術產品的心理可以從以下角度分析:
游戲內額外的資產效用:游戲 NFT 資產可以在 Web3 游戲中給玩家額外的增益效果,包括但不限于攻擊、防守、速度與收益加成等方面;
游戲內經濟:在一些 Web3 游戲中,皮膚具有交易和交換的價值,用戶與套利者可以購買和交易皮膚,甚至通過這種方式獲利;
社交因素:在多人在線游戲中,擁有熱門或稀有皮膚會引起其他玩家的注意或羨慕,從而增強玩家的優越感與社交體驗;
個性化和自我表達:皮膚可以實現定制化的角色外觀,通過選擇獨特的皮膚,玩家可以表達自我個性、風格和喜好;
展示成就或地位:一些稀有或限量版皮膚往往只有在完成特定任務、活動或購買后才能獲得,擁有這些皮膚可以展示玩家的成就或游戲中的地位;
截止 2024 年 Q2 的統計分析,不同地區的用戶玩家對美術的偏好不同。美國卡通、漫畫、寫實的流行比例為 51:5:44,卡通風格流行的原因可能是美式卡通、休閑品類的流行;日本卡通、漫畫、寫實的流行比例為 35:44:20,對「二次元」的傾向程度達到了八成。
Source:公開市場信息針對音頻與音效方向,當前游戲工作室對音頻與音效表現的重視程度因多種因素而有所不同。對于預算充足的大型工作室來說,有能力和時間投入更多資源來完善音頻和音效的高質量表現,包括雇傭專業的音頻設計師、音樂作曲家和音效工程師,并使用先進的音頻技術和設備,以創建沉浸式的音頻體驗,增強游戲的氛圍和情感共鳴。然而,對于預算有限的小型工作室,在音頻和音效方面的資源可能相對不足。由于資金和人員的限制,小型工作室可能不得不依賴于現成的音效庫或簡單的音頻設計工具來完成工作。部分小型游戲工作室也采用外包音頻與音效的方式來完成。因此,可能導致音頻和音效表現的質量不如大型工作室。
同時,音頻也會和其他部門合作以提高游戲品質,例如,在音頻和文案的合作過程中,音頻設計涉及到了 VO 的工作,音頻部門會和文案接觸多次,從幫助制定角色的演出、決定對話分支的走向,甚至到 VO 階段時一起協助配音,確保配音需要如何發音以及如何正確傳達文案所寫的臺詞。而在音頻和地圖編輯、動畫及特效的配合過程中,其產出需要相互配合,如人物在地圖中移動時,需設置人物經過草叢的腳步聲,甚至觸發地圖內重要道具的特效。因此,需要多部門配合,需要大量交流以協調工作,并協商彼此對文件的訪問權限,以確保對相同的東西一起展開工作,確保產出內容的高質量。
此外,項目的規模和類型也對音頻與音效的投入產生影響。對于以視覺效果或劇情為核心的游戲,音頻與音效可能被視為次要元素,投入相對較少。而在那些需要通過音效來增強氛圍、構建沉浸感的游戲中,音頻設計的重要性則顯著提升。
本文是 Web3 游戲分析系列的第二篇工業化生產與制作(技術和美術),敬請期待 Web3 游戲分析系列的下一篇(三)測試與運營。