Repo ↗ · 原始 README ↗ · 文件包(Markdown/授權)

封面參考(原作): Call of Duty: Black Ops II · 原作宣傳圖,由 IGDB 提供。圖片版權屬原權利人,供辨識原作使用,不代表此重寫/模組專案的實際畫面。

來源維護者: DaffyDabz · 版本: 2f8f4d86d0ef · 整理日期: 2026-10-12

文件授權: Apache-2.0 · LICENSE · 本文形式: README 翻譯

下文為來源 README 的繁中翻譯,由 Kirikirin 使用 AI 輔助整理;功能、完成度與測試結果均為原作者描述,本站未逐項實機驗證。圖片改為來源連結,指令與技術識別保留原文。


BO2 多人遊戲重建

一款粉絲自製重建專案,讓你使用自己 PC 上的遊戲副本,在一個以 Rust 撰寫的引擎中遊玩《決勝時刻:黑色行動 II》多人遊戲。它是 IW4L 的分支,後者是一個開源的《決勝時刻》執行階段,建構於 Bevy 與 wgpu 之上。在這個分支中,執行《黑色行動 II》核彈鎮殭屍模式的同一份程式碼,也執行《黑色行動 II》本身的多人遊戲腳本、選單與機器人,因此對戰會遵循遊戲的真實規則,且完全不需要啟動原始執行檔。

不包含任何遊戲檔案。 本儲存庫不包含任何《黑色行動 II》(或任何其他《決勝時刻》)檔案:沒有地圖、模型、材質、音效、腳本或執行檔。你需要自己合法擁有的 PC 版《黑色行動 II》,並已安裝多人遊戲。引擎在執行階段以唯讀方式讀取該安裝,且絕不修補、複製或重新散布它。非官方粉絲專案,與 Activision、Treyarch 或 Infinity Ward 無隸屬關係,亦未獲其背書。

目錄

地圖完成度

每張多人遊戲地圖在機制上(載入、出生點、各模式、機器人、連續得分獎勵、擊殺鏡頭、對戰結束)與視覺上(在原始遊戲中拍攝的固定地點,與此處從同一地點拍攝的畫面並排比較)的完成程度。每個數字都來自 docs/maps.json,其中每個通過的項目都會註明證明它的測試執行或螢幕截圖;docs/make_bars.py 會繪製此表格。視覺項目只有在擁有來自原始遊戲的同地點比較截圖後才會被計入,因此在拍攝那些截圖之前,視覺部分會顯示為 0%。

                Mechanics         Visuals
Aftermath       ████░░░░░░  38%   not compared yet
Cargo           ██░░░░░░░░  25%   not compared yet
Carrier         ██░░░░░░░░  25%   not compared yet
Drone           ██░░░░░░░░  25%   not compared yet
Express         ██░░░░░░░░  25%   not compared yet
Hijacked        ██░░░░░░░░  25%   not compared yet
Meltdown        ██░░░░░░░░  25%   not compared yet
Overflow        ██░░░░░░░░  25%   not compared yet
Plaza           ██░░░░░░░░  25%   not compared yet
Raid            ██░░░░░░░░  25%   not compared yet
Slums           ██░░░░░░░░  25%   not compared yet
Standoff        ██░░░░░░░░  25%   not compared yet
Turbine         ██░░░░░░░░  25%   not compared yet
Yemen           ██░░░░░░░░  25%   not compared yet
Nuketown 2025   ███████░░░  72%   not compared yet
Downhill        ██░░░░░░░░  25%   not compared yet
Mirage          ██░░░░░░░░  25%   not compared yet
Hydro           ██░░░░░░░░  25%   not compared yet
Grind           ██░░░░░░░░  25%   not compared yet
Encore          ██░░░░░░░░  25%   not compared yet
Magma           ██░░░░░░░░  25%   not compared yet
Vertigo         ██░░░░░░░░  25%   not compared yet
Studio          ██░░░░░░░░  25%   not compared yet
Uplink          ██░░░░░░░░  25%   not compared yet
Detour          ██░░░░░░░░  25%   not compared yet
Cove            ██░░░░░░░░  25%   not compared yet
Rush            ██░░░░░░░░  25%   not compared yet
Dig             ██░░░░░░░░  25%   not compared yet
Frost           ██░░░░░░░░  25%   not compared yet
Pod             ██░░░░░░░░  25%   not compared yet
Takeoff         ██░░░░░░░░  25%   not compared yet
All maps        ███░░░░░░░  27%   not compared yet

機制:每張地圖的系統與模式依照《黑色行動 II》的規則運作。視覺:固定地點與《黑色行動 II》並排比較。評分於 docs/maps.json(通過或相符為 1,部分或接近為 0.5,尚未為 0),最後更新於 2026-10-08;由 docs/make_bars.py 繪製。

功能

  • 《黑色行動 II》本身的前端。 frontend t6mp 會開啟由遊戲 UI 腳本建構的多人遊戲主選單:自訂遊戲大廳、設定遊戲、設定機器人、建立兵種、連續得分獎勵,然後開始對戰。兵種會儲存在執行檔旁邊。
  • 每一張多人遊戲地圖。 你光碟中以及你所擁有 DLC 包中的所有地圖都能載入並遊玩,每張都有各自的陣營、光照、色彩分級、天空、水面與植被。
  • 遊戲本身的對戰規則。 《黑色行動 II》編譯後的多人遊戲腳本會執行對戰:出生點、計分、分數與時間限制、回合、對戰結束。唯一一個沒有任何 PC 檔案攜帶的腳本(_globallogic,對戰流程)是根據其他腳本所呼叫的內容為引擎撰寫,並由引擎自身的腳本編譯器(crates/sim/src/t6/scripts/mp_globallogic.gsc)編譯。
  • 機器人。 遊戲的機器人腳本會選擇目標、兵種與目標對象;引擎會讓它們沿著地圖的路徑節點行走、瞄準、跳躍、爬梯子並開火。機器人可遊玩團隊死鬥、自由混戰、佔領、擊殺確認、據點、搶旗、爆破與總部。
  • 對戰中。 出生時的兵種選單、帶有旋轉小地圖的 HUD、羅盤、時鐘、分數條、擊殺訊息與計分板、暫停選單、選單音效、擊殺鏡頭、掉落的槍枝與拾荒者包,以及返回主選單的對戰結束畫面。
  • 連續得分獎勵。 分數會透過遊戲自身的動能程式碼獲得連續獎勵;機器人會呼叫軌道 VSAT、反 UAV、EMP、死亡機器、戰爭機器、蜂群、護航無人機與 K9 單位。

螢幕截圖

由本引擎繪製;美術是《黑色行動 II》本身的,於執行階段從玩家的安裝讀取。

瞄準器瞄準(已於 2026-10-10 修正):以前當你瞄準時槍枝會模糊;現在瞄準器與槍枝會保持清晰,如同原始遊戲。

README 圖片:修正前的瞄準:槍枝模糊 README 圖片:現在的瞄準:槍枝保持清晰
之前:MP7 在瞄準時模糊 現在:清晰,如同原始遊戲

每一張地圖(31 張),從出生點拍攝並隱藏 HUD,拍攝於 2026-10-11(組建 r129)。核彈鎮 2025 是目前為止可從選單遊玩的地圖;其他每張地圖在直接開始時都會檢查載入、出生以及與機器人遊玩團隊死鬥,而從選單中選擇它們仍待完成。

README 圖片:Aftermath README 圖片:Cargo README 圖片:Carrier
Aftermath Cargo Carrier
README 圖片:Cove README 圖片:Detour README 圖片:Dig
Cove Detour Dig
README 圖片:Downhill README 圖片:Drone README 圖片:Encore
Downhill Drone Encore
README 圖片:Express README 圖片:Frost README 圖片:Grind
Express Frost Grind
README 圖片:Hijacked README 圖片:Hydro README 圖片:Magma
Hijacked Hydro Magma
README 圖片:Meltdown README 圖片:Mirage README 圖片:Nuketown 2025
Meltdown Mirage Nuketown 2025
README 圖片:Overflow README 圖片:Plaza README 圖片:Pod
Overflow Plaza Pod
README 圖片:Raid README 圖片:Rush README 圖片:Slums
Raid Rush Slums
README 圖片:Standoff README 圖片:Studio README 圖片:Takeoff
Standoff Studio Takeoff
README 圖片:Turbine README 圖片:Uplink README 圖片:Vertigo
Turbine Uplink Vertigo
README 圖片:Yemen
Yemen

需求

  • 你自己擁有的 PC 版《決勝時刻:黑色行動 II》(Steam),並已安裝多人遊戲。
  • Windows x64(目前僅在 Windows 11 上建置與遊玩)。
  • Rust(穩定版,透過 rustup;程式碼使用 2024 版次)以及含 C++ 工作負載的 Visual Studio 2022 Build Tools(MSVC)。
  • 支援 DirectX 12 或 Vulkan 的 GPU。
  • 數十 GB 的可用磁碟空間,用於 Rust 建置輸出。

建置與執行

沒有發布版下載:你必須從此原始碼樹自行建置。這些步驟僅在作者的 PC 上執行過,尚未由其他人在全新電腦上執行。

  1. 安裝 Rust 與 Visual Studio 2022 Build Tools(C++ 工作負載)。

  2. 複製或下載此儲存庫。

  3. 選用:將 CARGO_TARGET_DIR 設為空間充足之磁碟機上的資料夾(預設為儲存庫內的 target\)。

  4. 建置遊戲:

    cargo build -p launcher --profile play
    

    執行檔為 <target-dir>\play\iw4l.exe。

  5. 在任何位置建立一個遊玩資料夾,將 iw4l.exe 複製到其中,並在旁邊建立一個 .env 檔案,指向存放你《黑色行動 II》安裝的資料夾(加引號,使用正斜線),例如:

    IW4L_GAMES="C:/Program Files (x86)/Steam/steamapps/common/Call of Duty Black Ops II"
    
  6. 從遊玩資料夾啟動多人遊戲前端:

    .\iw4l.exe frontend t6mp
    

    在自訂遊戲大廳中選擇模式、地圖與機器人,然後按下開始對戰。使用該目標並將「開始位置」設為遊玩資料夾的 Windows 捷徑也有相同效果。按鍵遵循《黑色行動 II》的 PC 預設值;Esc 會開啟暫停選單。

設定、已儲存兵種、快取與日誌會存放在 iw4l.exe 旁邊的 iw4l-artifacts\。

其他工具:cargo build -p bo2zm_tools --profile play 會建置 docs/BO2ZM.md 中所述的區域讀取器。測試:cargo test -p gsc_t6(其他則使用 cargo test -p <crate>)。更多文件索引於 docs/INDEX.md。

設定

  • 執行檔旁邊的 .env:IW4L_GAMES(必要)。
  • iw4l-artifacts\settings.cfg:已儲存設定;iw4l-artifacts\bo2mp_stats.txt:已儲存兵種。
  • 用於腳本化測試對戰的測試開關(BO2MP_SCRIPTS、BO2MP_BOTS、BO2MP_GAMETYPE、BO2MP_AUTOCLASS、…)列於 docs/BO2ZM.md。

運作方式

在 IW4L 的引擎之上,此分支加入了讀取《黑色行動 II》的 crate(fastfile_t6、asset_t6、gsc_t6、hks_t6、bo2zm_tools)以及 sim 中的多人遊戲模組:

部分 功能
fastfile_t6、asset_t6 從你的安裝讀取《黑色行動 II》的區域檔案
gsc_t6::compile 用於《黑色行動 II》腳本原始碼的編譯器,供引擎必須提供的腳本使用(_globallogic)
sim t6::mp、natives_mp 多人遊戲執行階段:遊戲類型、團隊分數、對戰時鐘、出生點選擇、目標
sim t6::bots 遊戲機器人腳本的引擎部分:測試用戶端、目標、路徑、視野、按鈕、威脅
sim t6::loadout、t6::items 來自遊戲統計表的兵種;地面上的槍枝與拾荒者包
hks_t6::mp、bo2_profile 遊戲的多人遊戲選單、兵種與統計

狀態

開發中,首個可遊玩組建。與《黑色行動 II》自身機器人的對戰可在每張多人遊戲地圖上進行,並從遊戲自身的選單開始。許多選單與 HUD 元件已接近原始版本,但並非一對一,且部分連續得分獎勵與效果仍然缺失。目前僅在一台 Windows 11 PC(RTX 4070 Ti 等級 GPU,1920x1080)上執行過。如同上游 IW4L,此程式碼大部分由 LLM(Claude)撰寫,並由作者指導與遊玩測試。

近期變更

  • 2026-10-11 (r129):子彈會穿透玩家和薄表面,方式與原作相同,使用它自己的穿透表(子彈能深入每種表面類型多深),並且在穿過每個目標後傷害會降低;狙擊槍射擊現在可以殺死被擊中者後方的玩家(一發雙殺),已針對 DSR 50、Ballista、SVU-AS 和 XPR-50 對照原作的數值進行檢查;Create a Class:槍枝下方的武器類別清單不再將名稱繪製在彼此之上或重複一列,且每個類別畫面都按原作的順序列出其他類別。
  • 2026-10-11 (r128):最終擊殺鏡頭在對戰結束時為所有人播放,包括仍然存活的玩家(原作讓每位玩家都坐在上面);暫停選單中的 End Game 會離開對戰,而從 Combat Training 進入時會返回 Public Match 選單,如同原作在公開大廳解散時所做的那樣;每條生命執行的腳本現在會在玩家死亡時結束,因此它們不再在對戰過程中堆積(對戰後期變慢的一部分原因);開啟垂直同步時,畫面的排隊方式與原作留下的方式相同(圖形預設值為 3)。
  • 2026-10-10 (r127):防暴盾命中使用原作中盾牌自身的模型,而非猜測的角度,因此現在會計算在盾牌之前到達身體或腿部的射擊,而背在背上的盾牌仍然會阻擋它們;擊殺重播在正確的兩個快照之間繪製玩家,如同原作所做的那樣,因此他們會平滑移動而不是跳來跳去。
  • 2026-10-10:分數獎勵再次可透過 Hardline 獲得(這些技能的自身數值從未設定,因此 Hardline 擊殺毫無價值;現在每個技能都有原作的值),播報員會說話(對戰開始、取得領先和失去領先、剩下一分鐘、時間到、勝利或失敗)以及對戰結束倒數,敵方名稱是紅色的,隊友的是綠色的,使用原作自身的顏色,對戰中的類別選單顯示與大廳相同的類別,且屍體在擊殺重播後不再彈回。機器人、命中標記、臥倒、防暴盾、死亡鏡頭、擊殺重播和屍體旋轉仍在下方清單中。
  • 2026-10-10:瞄準覘孔不再模糊整把槍(每把槍,無論有無瞄準鏡):模糊現在使用繪製槍枝時所用的同一近平面來計算每個槍枝像素的距離,因此只有槍的遠端會柔化,依據每把武器自身的數值(已用 M27 + 反射式瞄準鏡和 MTAR 的機械瞄具與原作並排檢查)。
  • 2026-10-10:當 PC 忙碌超過一秒時,遊戲不再以「顯示卡遺失」結束:圖形庫將完成畫面的緩慢交接計為顯示卡遺失,因此它現在會再次等待(該庫的修正副本在 third_party/wgpu-hal 中)。
  • 2026-10-10:渲染執行緒每幀花費的時間減少約 30%(在快速設定下的 Nuketown 對戰中從 12.8 毫秒降至 9.2 毫秒):共享模型的道具會一起繪製(約 1,500 個道具約 540 次繪製),已擺姿勢身體的索引清單僅在變更時重新傳送,光照相同的彈孔共用一次繪製,且身體擺姿勢的階段與幀的其餘部分一起送出。
  • 2026-10-10:身體在顯示卡上擺姿勢,而非在處理器上,因此每個遊戲視窗需要約一半的處理器時間。現在一台 PC 上可同時執行 8 個遊戲視窗,每個以每秒 27 到 29 幀執行(bo2_quality=fast),每個使用約 2.1 GB 的 RAM 和 0.9 GB 的圖形記憶體。
  • 2026-10-10:機器人按原作自身的規則移動和瞄準(它們轉向和穩定瞄準的速度、行走時看哪裡、何時衝刺、半自動槍枝開火的速度、何時用刀),並像原作的機器人那樣繞過隊友;它們從地圖自身的烘焙節點表判斷自己能看見和到達什麼。遊戲執行緒不再停滯:HUD 和選單只重繪會變更的值,設定只在選單變更它們時儲存,且已靜止的身體停止重新擺姿勢。目標標記會在目標模式中顯示。
  • 2026-10-10:視野外部的身體、掉落的槍枝和道具不再繪製,因此每個遊戲視窗準備一幀的時間減少約六分之一;每個視窗需要的記憶體大幅減少(全品質的 Nuketown:RAM 從 3.1 降至 2.2 GB,顯示卡上從 1.6 降至 1.4 GB),沒有焦點的視窗以每秒 30 次繪製,且彈孔只查詢一次光照而非每幀。
  • 2026-10-10:來自空投包的分數獎勵會在庫存欄中等待,並以原作的方式取出:按住切換武器鍵(控制器 Y)四分之一秒;輕按仍然會交換槍枝,現在如原作一樣在放開時交換。主機的 give killstreak 透過 Black Ops II 自身的腳本將其交出。太陽陰影像原作放置它們那樣圍繞玩家,延伸到你看的方向更前方,且在你轉向時不再爬動。
  • 2026-10-10:Nuketown 的人體模型以原作破壞它們的方式破壞,對戰以 Black Ops II 的方式設置重生點,名稱顯示在隊友頭上,被射擊不再在你自己的鏡頭懸掛血霧(只有紅色螢幕邊緣),且太陽投射為每張地圖調整大小的即時陰影。
  • 2026-10-10:移動更接近 Black Ops II:被擊中會按擊中力度震動你的視角,傷害箭頭指向射擊者,Lightweight 的速度和原作的衝刺恢復,停止滑行的臥倒會立即結束,控制器臥倒需要按住姿態按鈕,趴下需要原作的 600 毫秒,遊戲的腳本可以開啟和關閉衝刺、姿態、刀和瞄準,且第二台 PC 用對戰自身的移動規則預測其動作。
  • 2026-10-10:無圖形測試模式(IW4L_HEADLESS=1):沒有視窗、顯示卡或音效裝置的測試對戰。有機器人的 Nuketown 對戰使用約三分之一的 CPU、不到一半的記憶體和七分之一的磁碟讀取,因此一台 PC 上可同時執行許多測試對戰。
  • 2026-10-09:移動來自原作遊戲自身的數值:臥倒需要先短暫衝刺,在上一次之後等待約 1.5 秒,彈得更高且可以稍微操控;墜落從原作高度造成傷害,且墜落傷害技能會阻止它;震盪會按震盪自身的量減慢你的行走。Lodestar 的視角在你瞄準時會跳到其縮放,且當分數獎勵的視角開啟時你的槍保持安靜。
  • 2026-10-09:Lodestar 將你的視角放在無人機上,使用遊戲自身的 Lodestar 畫面(開始時為熱成像,滑鼠滾輪向上切換熱成像和普通,滑鼠左鍵向你的雷射發射飛彈,按住 F 離開),Killed By 卡片會顯示並在你死亡期間保持顯示,身體以布娃娃物理倒下(擊殺鏡頭重播它們),世界在你的覘孔後方和死亡時模糊,頭上的名稱使用遊戲的字型,且 Nuketown 的汽車被射擊時會破壞。
  • 2026-10-09:移動和槍枝更接近 Black Ops II:向任何方向衝刺和臥倒,在臥倒中瞄準和射擊,更快的起身,遊戲自身的槍枝動畫用於臥倒、爬行、空彈匣衝刺和攀爬,快速攀爬技能,且 HAMR、AN-94 和 B23R 更快發射它們的第一槍。
  • 2026-10-09:玩家背上的發射器像 Black Ops II 攜帶它的方式懸掛,SMG 和手槍擊殺計為正確的子彈類型(火箭的直接命中不再被 Flak Jacket 削減),且 HUD 讀取遊戲自身的武器名稱。
  • 2026-10-08:移動、腳步聲和頭部晃動遵循 Black Ops II 自身的規則(設定 BO2_FEEL=mw2 以獲得舊手感);衝刺按每把槍的方式晃動槍枝,臥倒有其自身的節奏,且重著陸會減慢你並扣除生命值。55 級轉生(Barracks > Prestige Mode)。閃光彈和震盪彈持續並晃動你的槍,與遊戲自身檔案所說的一樣多。Hellstorm、VTOL Warship(及其熱成像視角)、Dragonfire 和 AGR 顯示它們自身的畫面;直升機和無人機播放它們的引擎聲音;雙持槍枝都會後座力。
  • 2026-10-08:其他玩家以 Black Ops II 自身的動畫速度趴下、臥倒和爬梯子,對戰結束時的 VICTORY / DEFEAT 橫幅位於原作放置它的位置,且 README 顯示每張地圖的完成條。
  • 2026-10-08:Frostbite 的開放海域不再在屋頂旁顯示暗色楔形,且 13+ 張地圖(Hydro、Cove、Drone、Castaway…)上的懸崖、岩石和山脈繪製 Black Ops II 自身的平鋪岩石細節,而非單一純色。

即將推出

  • 不再卡在轉角和道具上的機器人:原作自身的卡住救援及其對路線的前瞻檢查。
  • 從不面朝牆壁站立的機器人,且總是射擊走在它們前方的敵人。
  • Nuketown 上層的機器人:其邊緣連結沒有跳躍或墜落標記,因此機器人會走過去;比照原作如何讓其機器人越過它們。
  • 每次你擊中某人時的命中標記和原作的命中音效,其自身的爆頭標記和音效,且當別人擊中你時沒有標記。
  • 以原作的速度從臥倒起身,以及以原作的方式越過低矮物體臥倒。
  • 倒下時不旋轉的身體,如同原作的布娃娃物理拋出它們的方式。
  • 每個分數獎勵都如原作般運作(Lightning Strike 尚無法呼叫,且 UAV 幾乎不顯示敵人)。對照原作腳本檢查每個分數獎勵的修正已寫好;每個在並排證明後就會推出,首先是 Lightning Strike 的目標選擇和 UAV 的掃描。
  • 每張地圖都從選單開始:Nuketown 2025 從它們遊玩;其他地圖以直接開始進行檢查。
  • 每個配件都對照原作自身的數值和行為進行檢查。
  • FMJ:子彈穿透牆壁和玩家的效果加倍,如同原作的技能所做的那樣(子彈已經以基礎速率穿透)。
  • 防暴盾:一項測試,確認它從正面阻擋射擊與原作完全一致(從後方和周圍的射擊已檢查)。
  • 背在背上的防暴盾顯示錯誤的紋理(一張字母表),而非原作的。
  • 移動速度:行走、衝刺、蹲下、趴下和 Lightweight 已經符合原作的數值;尚待檢查水中減速和每個配件的瞄準速度。
  • 一個死亡鏡頭,停留在你的身體上直到你重生或擊殺重播開始。
  • 對戰後期不再變慢:腳本部分已修正;仍在對戰過程中增長的繪製時間尚未找到。
  • 播報員在槍聲中清晰可聞:原作在它說話時將其他聲音調低。
  • 音樂、音效和語音音量滑桿(現在只有主音量有效)。
  • End Game 按原作的方式將退出計入你的統計數據。
  • 反射式瞄準鏡的紅點與原作的亮度一樣。
  • Demolition 在擊殺時沒有腳本錯誤。
  • 玩家永遠不會在牆內開始對戰。
  • Nuketown 之後的下一張地圖。
  • Hellstorm 的轉向提示鍵。
  • 空投包的投放和拾取對照原作遊戲並排檢查。
  • 無圖形測試對戰跳過更多僅繪製的工作,因此可同時容納更多。
  • 透過 LAN 一起遊玩,以及一個為 Multiplayer 和 Zombies 兩者都帶有 Black Ops II 主選單的版本。

致謝與授權

  • IW4L 由 vladtrc 及其貢獻者:此分支所建構於的引擎,
    Apache License 2.0。
  • 對於 Black Ops II,OpenAssetTools 和
    gsc-tool(兩者皆為 GPL-3.0)僅為格式事實而閱讀;它們的程式碼
    均未被複製。開發期間閱讀的其他專案列於 NOTICE。
  • wgpu:其 wgpu-hal 29.0.4 的副本帶有一項修正,位於
    third_party/wgpu-hal(MIT 或 Apache-2.0,其授權檔案保留在該處)。
  • Black Ops II 多人遊戲重建以及 Black Ops II zone、腳本和選單工作由 DaffyDabz 完成。
  • Call of Duty、Black Ops 及其資產、商標和智慧財產權屬於其所有者
    (Activision)。未包含任何遊戲檔案。

依 Apache License 2.0 授權,與上游相同;NOTICE 載有著作權聲明及
兩套內附字型的授權條款。本授權僅涵蓋此原始碼。


授權與來源聲明

原始 README 與翻譯沿用 Apache-2.0 授權;本次修改為繁中翻譯、連結與排版調整。可修改的 Markdown、原始 README、LICENSE 與 NOTICE 收錄於頂部文件包。原作遊戲內容與商標不因此獲得授權。

LICENSE

Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

NOTICE

IW4L

Copyright 2026 vladtrc

IW4L was originally developed by vladtrc.
https://github.com/vladtrc/iw4L

IW4L is licensed under the Apache License, Version 2.0; see LICENSE.

--------------------------------------------------------------------------------
Third-party material bundled with this repository
--------------------------------------------------------------------------------

Both fonts below are compiled into the IW4L binary with `include_bytes!`, so
they are redistributed with every build. Any archive that ships an IW4L binary
ships these two licence texts with it.

Oxanium (crates/ui/assets/Oxanium-Regular.ttf)
  Copyright 2019 The Oxanium Project Authors
  https://github.com/sevmeyer/oxanium
  SIL Open Font License 1.1 — full text in crates/ui/assets/OFL-Oxanium.txt

GNU FreeFont (crates/console/assets/FreeMono.otf)
  Copyright (C) 2002-2012 Free Software Foundation, Inc.
  https://www.gnu.org/software/freefont/
  GNU General Public License v3 or later, with the GNU font exception — full
  text in crates/console/assets/COPYING-FreeFont.txt. The exception is what
  makes embedding the font in an Apache-2.0 binary possible: a document or
  program that merely uses the font is not thereby covered by the GPL. The
  font itself is unmodified and remains under the GPL.

--------------------------------------------------------------------------------
Third-party source code
--------------------------------------------------------------------------------

No third-party source code is vendored in this repository, and the build links
no third-party project named below. IW4L's own dependencies are the crates
declared in Cargo.toml, under their own licences.

--------------------------------------------------------------------------------
References consulted during development
--------------------------------------------------------------------------------

These projects were read while working out how the original games behave. They
are named here because the reading happened, not because anything of theirs is
distributed: none of them is vendored, linked, bundled or otherwise shipped.

OpenAssetTools — https://github.com/Laupetin/OpenAssetTools
  Open-source modding tools for older Call of Duty games. Its asset-structure
  headers document the on-disk layouts IW4L reads. Licensed under GPLv3.

oat (iw4x-x64 fork of OpenAssetTools) — https://github.com/iw4x-x64/oat
  The x64 fork, at revision 3a7442dee5ce040cfdb8da23fdb9fb525b5f743e, is the
  tree whose IW4MS headers were read for the 64-bit FastFile layouts.
  Licensed under GPLv3, like its upstream. No file in this repository is
  compiled against, generated from or distributed with those headers.

IW4x — https://github.com/iw4x/iw4x-client
  A custom client for Call of Duty: Modern Warfare 2 (2009), with dedicated
  servers, security fixes and modding support. Read as a cross-reference for
  asset and protocol behaviour. Licensed under GPLv3.

KisakCOD — https://github.com/SwagSoftware/KisakCOD
  A Call of Duty 4 open-source reimplementation. Read as a cross-reference for
  engine structure. IW4L targets IW4, so this is a neighbouring generation of
  the same engine family, not the same codebase.

Ghidra — https://github.com/NationalSecurityAgency/ghidra
  The software reverse engineering framework the original game binaries were
  read with. A development tool: none of it, and none of its output, is
  committed here or distributed with IW4L. Licensed under Apache 2.0.

--------------------------------------------------------------------------------
bo2zm fork
--------------------------------------------------------------------------------

This tree is bo2zm, a local fork of IW4L taken at upstream commit
11514ea37d1e80d75bf2c1ba332bbd68fac5db4e (2026-09-30) and extended to read
Call of Duty: Black Ops II (T6) PC files. Where the fork changes an upstream
file the change is marked "bo2zm"; the crates fastfile_t6 and bo2zm_tools and
the file crates/assets/src/lane/t6.rs are new. The fork stays under the Apache
License, Version 2.0.

OpenAssetTools (above) was also read for the Black Ops II zone layout: the
TAff0100 envelope and auth header, the XChunk streams, the public Salsa20 key
and its IV chain, the XFile blocks and the T6 asset list. It was read for
facts only; none of its code is copied here. Salsa20 is written from
D. J. Bernstein's specification and SHA-1 from FIPS 180-4.

The T6 zone walk (crates/fastfile_t6/src/walk_gen.rs) is generated by
crates/fastfile_t6/gen/t6gen.py, a development tool that reads layout and
load-rule facts from an OpenAssetTools checkout on the developer's machine
(the T6 structure declarations and the T6 zone-load rules) and writes Rust of
its own form. The checkout is not part of this repository, nothing from it is
vendored or linked, and the computed layouts were verified against the 32-bit
MSVC compiler.

--------------------------------------------------------------------------------
Game content
--------------------------------------------------------------------------------

No Call of Duty game data is contained in this repository or in any IW4L
release archive. IW4L reads game data from a copy of the game the user already
owns and has installed. Call of Duty, Modern Warfare, Black Ops, related
trademarks and all original game assets belong to their respective owners.
IW4L is not affiliated with, endorsed by or supported by them.