QII_Tech_HERO_1920x870.pngquake_ii_box_front.jpg

Quake II

Buy Game
Quake II
2023年8月10日

了解《Quake II》強化版的完整技術介紹

quake_ii_box_front.jpg

Quake II

Buy Game

新版《Quake II》包含大量強化功能。其中許多是現代新增的功能,例如動態陰影,有些則是重製《Quake II》1997年原版使用的技術所做出的改善。

遊戲玩法仍完美保留90年代首次亮相的風格,以下概述為向新一代玩家呈現《Quake II》所涉及的主要技術強化、改善甚至是合作。無論您是資深模組創作者、老遊戲愛好者,或者只是好奇這個版本的《Quake II》運作概念,這篇文章都適合您閱讀!

地圖編譯工具

與1997年的原版類似,《Quake II》中的大部分照明都在編譯時就已合併至BSP檔案中。照明由照明工具預先計算,並將只含照明的封包紋理儲存至BSP檔案中。

我們與熱門工具ericw-tools的兩位貢獻者Eric Wasylishen和Jonathan Barkley合作,以改善對《Quake II》BSP的支援。我們還超越了原版遊戲的支援,以便在原版地圖和使用者自製地圖中提供更好的照明。

合併照明仍完全是使用CPU的流程,並且可在根本沒有任何GPU的無頭機器上執行。在1997年的電腦上為原版地圖製作照明時,最終合併通常需要幾個小時,甚至可能需要一整夜。現在有了更高的時脈效率和數十個核心可用,只需幾分鐘即可為您充滿各種現代花樣的自製地圖製作照明。

提升Luxel密度

雖然聽起來是複雜的術語,但這個地圖編譯器的改良其實很單純:原版遊戲是以16:1的比例為遊戲世界打光,遊戲中的每16個單位映射到一個照明樣本。我們重建了所有地圖並將其提升到8:1,細節增加到4倍。在具有大量漫射照明的區域效果不明顯,但具有聚光燈投射硬陰影的區域將獲益匪淺。

照明網格支援

這個地圖編譯器功能取自《Quake III Arena》。原版《Quake II》的照明難題之一是,實體的照明取決於其站在地面上的位置。這對於地面物品和敵人來說往往效果很好,但出現飛行的怪物時,系統就處理不好了。牠們在空中經常會黑暗無光,因為碰巧經過低角度陰影之類的東西。

除了儲存照明貼圖之外,我們現在也在封閉世界空間中儲存了一組體素網格,包含一份照明樣本,代表所有投射透過該區域的光線。這是一個相當簡單的系統,主要仰賴增加地圖檔案大小和記憶體用量,這可能就是直到《Quake III Arena》才採用此系統的原因。

紋理獨立照明

從《Quake III Arena》向後移植的另一個概念是照明貼圖相對於表面的儲存方式。在原版《Quake II》中,傾斜或縮放紋理也會導致照明貼圖隨之傾斜或縮放。現在,照明貼圖是根據筆刷的大小而非紋理的大小所儲存。

合併環境光遮蔽

ericw-tools中最早的強化功能之一是環境光遮蔽,也稱為污垢貼圖,使角落變暗以反映其通常接收到的反射光較少的現象,藉此增加遊戲世界的深度。

Phong著色法

《Quake II》發行後,推出了一個名為ArghRad的工具。它是強化的照明工具,支援Phong著色法。這是一種古老的技術,可追溯至1970年代,用於調整低多邊形數表面上的照明。這可以幫助呈現圓形物體的效果,而不必重建結構以增加多邊形數。我們更新的地圖在適用的情況下使用了這種技術。

半透明素材

另一個大幅增加空間照明逼真度的變更是半透明紋理,可讓入射光線穿過並將一部分紋理色彩貢獻給目的地。這表示彩色玻璃、全像投影、終端機和其他筆刷可讓其他光線穿過它們,並適當地影響穿過其中的光線。

照亮液體

這項功能在《Quake》地圖製作者社群中越來越流行,因為這在製作有任何尺寸液體的地圖時,是一項巨大的改善。在原版,水完全不會受到照明影響,總是以最大亮度顯示。現在,液體表面可以像任何其他表面一樣接收照明貼圖,而不會阻擋底下的光線。

圖形

當初《Quake II》最火熱的新功能是彩色照明。如今這種功能已過時,但我們新推出的《Quake II》進行了一些適度的升級,以提升現有功能,同時仍忠於原版美術。

動畫

Paul Steed在《Quake II》中的動畫為遊戲世界增添了濃烈的個性。從微妙的抽動和閒置動畫到誇張的翻轉和俯衝,玩家永遠算不準敵人會做什麼。對於當年許多初次玩這款遊戲的玩家來說,看到一隻守衛遭到射擊時蹲下閃避,是個令人大叫「媽呀」的時刻。然而,當時的技術有一些限制,導致這些動畫無法充分發揮其潛力。

首先最大的問題是,MD2模型格式在向量精確度方面的範圍有限。這就是導致玩家看到「扭動」效果的原因,尤其是在第一人稱視角的槍枝模型上。我們成功尋回了遊戲中大多數模型的原版動畫檔案,並使用這些高解析度動畫為改良版模型建立骨骼動畫,藉此消除扭動。

改用骨骼動畫還修正了一些線性插補失敗的情況。這在寄生犬(Parasite)的死亡動畫中最為明顯,在原版中牠會以超高速度翻轉和旋轉,以至於線性插補動畫導致寄生犬變成一團混亂的多邊形。

發光貼圖

《Quake II》的紋理中有很多螢幕和燈光,例如武器上的發光零件。然而,在基礎引擎中,它們就像其他東西一樣受到光線明暗的影響。我們這次支援發光貼圖,這是套用於紋理的遮罩,用於指定哪些區域應該發光。這表示敵人身上的燈光將在黑暗中發光,武器上的燈光也會亮起,這強化了現有外觀上的照明細節。

高度霧

我們擴展了對霧的支援,新增支援以高度為基準的霧,使地圖製作者可以指定兩種不同的色彩。這是後處理效果,而非地圖內的容積。這有一些權衡,但對地圖製作者來說,是能讓空間更具多樣性的一項好用效果。

槍口閃光

雖然嚴格來說這不是技術上的新增功能,但這項變更對遊戲玩法有非常正面的影響,因此我們還是決定列在這裡!現在玩家和敵人發射武器時,除了動態照明之外,還會有槍口閃光。這可幫助玩家快速識別誰在向您開火,尤其是在光線充足的空間裡,動態照明可能不太明顯的情況下。

音效

我們在《Quake II》強化版改良了音效。除了修復原版音訊程式碼中的錯誤,並提高限制以使用現代更快的CPU支援更多發聲數之外,我們現在還支援為每個紋理附加素材名稱。

這有兩個目的:第一是允許足跡傳回其所觸及的表面素材,進而讓每種表面能有獨特的腳步聲。第二是我們現在會粗略估計空間大小和空間中的素材,以選擇殘響預設。這使得地底的下水道與室外草地區域會有不同的音場。

人工智慧

《Quake II》中的AI在開發過程中經歷了許多變更。《Quake II》原本要使用QuakeC語言,但在開發後期決定從解譯碼改為原生程式庫。這導致必須將所有現有的QuakeC程式移植到C,在此過程中,AI被簡化為更像初代的《Quake》。在本次重新推出中,我們成功增強了原有的機器人,並將更多的內部邏輯暴露給敵方AI。

改良導航

我們向遊戲DLL公開了許多機器人導航功能,允許遊戲管理往返任意導航點的路線規劃。然而,AI仍需要手動放置導航點;雖然我們起初研究過利用Recast等解決方案產生導航網格,但我們判斷開發時程容不下這種大工程,因此決定改善現有的機器人工具。

原版《Quake II》AI有一些非常基本的功能來摸索環境。現在,AI可以設定一個目標來接近您,並利用樓梯繞過複雜的空間,或者利用跨越點跳下平台。

改良決策

相較於原版,AI決策有所改良,敵人的行動也更有深度。敵人更能掌握是否可以命中您,尤其是有多種攻擊手段的敵人。

例如,如果機槍手(Gunner)的機關槍臂被牆擋住,他會改為使用手榴彈,而不是對牆角浪費子彈。敵人有時也會選擇一邊拉近距離一邊開火,而不是等到抵達移動目標才開火。這些變更有助於防止AI做出錯誤的選擇,但又不會真的改變他們的行為或戰鬥方式。

全新飛行AI

飛行AI經過徹底改造,看起來更加自然,並且會減速滑行轉彎,而不是突然停止。成群的飛行機兵(Flyer)在調整到位時會相互碰撞並偏轉。

救回的內容

任何挖掘過原版《Quake II》檔案的人,都會發現一些初始版本中從未使用過的額外動畫。我們仔細檢查了這些動畫,將其琢磨完整,重新加入遊戲中。例如,技師(Technician)現在會伸出可怕的爪子宣告奇襲,而狂戰士(Berzerker)則能使出跳躍地面攻擊,變得更加兇猛。

寄生犬有一些變更,使戰鬥更加有趣。其長管現在改為一個可以躲避的射彈,並且會卡在牆上。我們新增這個機制,是為了讓寄生犬使用其拖曳和翻轉動畫,使得牠在攻擊落空後會露出破綻。

機器人

以下是《Quake II》強化版的一些全新機器人功能:

  • 機器人現在可以使用火箭跳躍抵達難以到達的區域,例如「The Edge」上的特大生命值包(Megahealth)
  • 可理解遊戲中的所有武器、物品和強化道具,並在適當時機使用
  • 可理解所有敵人,並攻擊有敵意的對象
  • 機器人可以跳躍、蹲下、乘坐電梯/平台、使用梯子、觸發陷阱對付敵人,且自己也能避開陷阱
  • 遊戲DLL中的高階命令允許模組創作者控制機器人的動向和行為
  • 在您的模組中新增物品、武器和敵人後,只需在簡單的文字檔中新增一個條目,即可讓機器人看到並理解 (詳情請參閱下方)

支援模組的資料驅動機器人

機器人的設計旨在透過一系列資料檔案盡可能快速且輕鬆地支援模組,這些資料檔案解釋了哪些實體值得機器人關注,以及這些實體如何運作。任何模組創作者只要為他們獨特的武器、物品、怪物等建立自己模組專屬的定義檔即可,十分簡單。

可用檔案清單和物品檔案的範例如下所示:

改良導航編輯器

《Quake II》強化版可讓您利用編輯器中提供的實用資訊和回饋,在任何地圖上快速設定導航。編輯器建立的NAV檔案會儲存為單獨檔案,可在您的模組中共用或分享給朋友。

改良偵錯工具

有多種機器人偵錯工具可供使用,能讓您偵錯特定的機器人並向其發出命令或查看其思考內容。

這些偵錯工具可供您:

  • 顯示機器人的一般狀態、目標等資訊
  • 顯示機器人行為系統的目前狀態
  • 顯示遊戲模式和機器人關心的物品/實體資訊
  • 為機器人提供遊戲世界內的移動目標以進行導航測試
  • 顯示他們可以看到哪些敵人以及他們正在攻擊誰
  • 顯示機器人武器系統的目前狀態及其可用物品欄

偵錯線條

您現在可以從遊戲程式碼中繪製簡單的幾何圖元。這些可讓您繪製實體的位置、遊戲世界中的文字,甚至是物體移動的方向等內容,全都有助於偵錯。

可用的偵錯算繪幾何圖元:

  • 界限
  • 圓球
  • 定向遊戲世界文字 (隨時朝向本機用戶端的視角)
  • 靜態遊戲世界文字
  • 圓柱
  • 光線

data.images.authors.idsoftware.jpg

id Software