Repo ↗ · 原始 README ↗ · 文件包(Markdown/授權)
封面參考(原作): GunZ: The Duel · 原作封面,由 IGDB 提供。圖片版權屬原權利人,供辨識原作使用,不代表此重寫/模組專案的實際畫面。
來源維護者: OpenRsG · 版本: e927bd052244 · 整理日期: 2026-10-12
文件授權: Apache-2.0 · LICENSE · 本文形式: README 翻譯
下文為來源 README 的繁中翻譯,由 Kirikirin 使用 AI 輔助整理;功能、完成度與測試結果均為原作者描述,本站未逐項實機驗證。圖片改為來源連結,指令與技術識別保留原文。
GunZRs
一個以 Rust 淨室重實作的 GunZ: The Duel 移植版,建構於 Bevy。
它直接從你的 Steam 安裝讀取地圖、角色、武器和特效。
[README 圖片:Rust](https://www.rust-lang.org)
[README 圖片:Bevy](https://bevyengine.org)
[README 圖片:License](https://github.com/OpenRsG/GunZRs/blob/e927bd05224484725d0911876a483acb11e0f89e/LICENSE)
[README 圖片:Get the game on Steam](https://store.steampowered.com/app/3139440/GunZ_The_Duel/)
Mansion,以 <code>–shot</code> 和 <code>GUNZ_SEQ</code> 無頭錄製:衝刺、沿牆跑、三個技能 1 的機器人、擊殺鏡頭、一次擊殺、選單。
不包含任何遊戲檔案(示範動畫僅為示意擷取)。你需要自己的遊戲副本;
此移植版只讀取其 .mrs 封存檔,且從不執行 Gunz.exe。
快速開始
- 安裝 GunZ: The Duel on Steam
(或將steam://install/3139440貼到瀏覽器以開啟 Steam 用戶端)。 - 安裝 Rust。在 Linux 上,Bevy 還需要 ALSA 和 udev 開發
套件(Debian/Ubuntu 上為libasound2-dev libudev-dev,Fedora 上為alsa-lib-devel systemd-devel)。 - 建置並遊玩。
gunz-play會自行透過 Steam 的媒體庫資料夾找到遊戲;若
安裝資料夾位於不尋常的位置,請先傳入該資料夾:
git clone https://github.com/OpenRsG/GunZRs && cd GunZRs
cargo run --release --bin gunz-play # main menu, game found via Steam
cargo run --release --bin gunz-play -- "/path/to/GUNZ THE DUEL"
./start.sh # same, also tries the Flatpak install (GUNZ_GAME=DIR overrides)
| Steam 安裝 | GAME 資料夾 |
|---|---|
| Linux(原生) | ~/.steam/steam/steamapps/common/GUNZ THE DUEL |
| Linux(Flatpak) | ~/.var/app/com.valvesoftware.Steam/.local/share/Steam/steamapps/common/GUNZ THE DUEL |
| Windows | C:\Program Files (x86)\Steam\steamapps\common\GUNZ THE DUEL |
其他媒體庫資料夾?在 Steam 中,右鍵點擊遊戲,然後選擇管理、瀏覽本機檔案。
此移植版在 Linux 上開發與測試。Windows 目標的交叉檢查可編譯,且 CI
會建置 Linux、Windows 和 macOS,但尚未有人在 Windows 或 macOS 上遊玩過。
控制
預設值遵循原版遊戲的 config.xml;C、T、F5-F9、[ 和 ] 是本移植版的額外項目。
| 按鍵 | 動作 |
|---|---|
| 滑鼠 | 瞄準(游標被鎖定) |
| W A S D | 奔跑(立即全速,立即停止);連按兩次方向以衝刺 |
| C | 衝刺:朝按住的方向以 16 m/s 爆發(若無則向前) |
| Space | 跳躍;在空中靠近牆壁時:蹬牆;沿牆並按住 W 時:沿牆跑 |
| 滑鼠左鍵、左 Ctrl | 攻擊(按住以使用自動槍械,連續斬擊串成連段) |
| 滑鼠右鍵、左 Shift | 防禦(近戰) |
| R | 重新裝填 |
| 1-5、Q / E、滾輪 | 切換武器(Q 和滾輪向上:上一個;E 和滾輪向下:下一個) |
| Tab | 計分板 |
| Esc | 暫停選單(繼續、控制、選項切換、主選單、離開) |
| 數字鍵盤 1-6、T、F5-F9 | 嘲諷、表情動作(鞠躬、揮手、大笑、哭泣、跳舞) |
| [ / ] | 滑鼠靈敏度降低 / 提高 |
| F | Blitzkrieg 升級面板(上/下,Enter 購買) |
| M | Blitzkrieg 小地圖開 / 關 |
| 1-9、方向鍵、Enter | 比賽開始時的 Blitzkrieg 職業畫面(30 秒;點擊也可用) |
CONTROLS(主選單分頁,以及 Esc 選單中)可重新綁定上述每個動作,但 Esc 和
Blitzkrieg 按鍵除外,每個動作有兩個綁定:按鍵、滑鼠按鈕 1-5 或滾輪。從其他動作取用的按鍵會顯示提示。滑鼠
部分有靈敏度(以 800 和 1600 DPI 下的每 360 度公分數顯示)、垂直比例、反轉、加速
及其上限和即時速度曲線,以及在瀏覽器中的原始輸入(Chromium 瀏覽器中未加速的指標鎖定
;桌面版建置一律讀取原始滑鼠移動)。所有內容都儲存在
設定檔中。
GRAPHICS(主選單分頁,以及 Esc 選單中)有三個預設集和每個獨立設定:
ORIGINAL 完全依照遊戲向來的方式繪製影像(無色調映射、無特效、4x MSAA);
ENHANCED(預設)和 ULTRA 加入 HDR 與色調映射、泛光、SMAA、銳化、各向異性
過濾、距離霧、暗角、底片顆粒、色差和鏡頭轉向動態模糊;
每個螢幕特效都有自己的強度(OFF 不耗效能):速度特效(衝刺或墜落時的光線和徑向
模糊,以及衝刺時短暫加寬視野)、命中閃光,以及低生命值時
耗竭、搏動的畫面。來自遊戲自身特效的塵埃
環標示地面衝刺、蹬牆和重落地。LIGHTING 以地圖自身的光照貼圖顏色照亮角色
(帶有輪廓光),照亮槍口閃光和爆炸周圍的牆壁、地板和角色
,並在每個角色下方放置柔和的接觸陰影。
WORLD EFFECTS 有 Explosions 滑桿:在 0(ORIGINAL)時,火箭和手榴彈顯示遊戲自身的
火球精靈圖;高於此值時,它們變成完整爆炸(致盲閃光、冷卻成
殘留煙柱的火球、彈跳火花、碎片、沿地板的塵埃、衝擊環和
焦痕、強光和鏡頭震動),在 ULTRA 時更豐富。
還有視野、垂直同步和幀率限制(瀏覽器中沒有)。變更會立即顯示於比賽中
並儲存在設定檔中;gunz-play --gfx original|enhanced|ultra 為單次執行選擇預設集。
PLAYER(主選單分頁)顯示你的角色以大廳姿勢待機。其 EFFECTS 面板有兩個
分頁。DASH 選擇衝刺留下的痕跡(殘影、發光火花、兩者或無);SLASH
選擇你的劍揮擊留下的軌跡(弧形、能量、火焰或無,加上打擊
落點的火花)。兩者都選擇顏色(隊伍、青色、金色、紫色、餘燼、劇毒或彩虹)和數量;
角色會在預覽中衝刺或揮舞武士刀以顯示每項變更,DEMO 會重播。
你的顏色用於你自己的衝刺和揮擊;其他玩家保持隊伍顏色。這些
軌跡都不在原版遊戲中,因此 ORIGINAL 圖形預設集會隱藏它們。
連段計量表和連續擊殺(不在原版遊戲中;Combo 選項或 --no-combo 會隱藏
它們):你在上次命中的 2.5 秒內每次命中都會增長連段,其倍率從 x1 攀升至
x8(在 5、10、20、35、50、70 和 100 次命中時),傷害和擊殺會以點數乘以它計分。擊殺間隔
少於 4 秒會宣布 DOUBLE、TRIPLE、QUAD、MULTI 和 MONSTER KILL;未死亡連續擊殺會宣布
KILLING SPREE(3)、RAMPAGE(5)、DOMINATING(7)、UNSTOPPABLE(10)和 GODLIKE(15)。每個橫幅
伴隨螢幕邊緣閃光、震動和自身音效猛然出現。音效是在程式碼中合成的。
在回合模式中死亡?Space 或點擊可循環切換你觀戰的玩家。
你的設定檔(等級、XP、賞金、物品欄、已裝備物品)儲存在
$XDG_DATA_HOME/gunzrs/profile.txt(Windows 上為 %APPDATA%\gunzrs\profile.txt)。擊殺和比賽
結果會給予 XP 和賞金;在 SHOP 分頁花費賞金,並在 INVENTORY 中裝備物品。
K-style 技巧
原版遊戲源自 bug 的移動技巧作為普通功能運作,一律開啟,對你和
機器人皆然(時序為估計值,見 docs/formats.md「K-style 技巧」)。使用預設
裝備(武士刀、左輪手槍、步槍)和上述按鍵,一般指南中的每個技巧都有效;
每個輸入序列都以無頭方式遊玩並檢查其日誌(拋接的最後一擊僅由機器人完成):
| 技巧 | 方法 |
|---|---|
| 衝刺、空中衝刺 | C 或連按兩次:以 16 m/s 爆發並帶有遊戲的衝刺特效;每次跳躍可在空中使用一次;從衝刺、蹬牆或跳躍中斬擊可恢復它;墜落 1.5 秒後你可以在空中無限制衝刺(超級衝刺) |
| 衝刺取消 | 在衝刺、蹬牆或沿牆跑期間斬擊以取消它:完全控制、切換、防禦、跳躍或再次衝刺 |
| 飛行 / 爬牆 | 蹬牆、斬擊、再次跳離牆壁、重複(閃光攀爬:斬擊、切換到槍再切回、跳躍) |
| 切換取消 | 在空中斬擊期間切換武器:斬擊射擊(跳躍、斬擊、切換到槍、射擊)、閃光步(斬擊、槍、切回刀刃:無拔刀延遲) |
| 裝填射擊 | 射擊、輕按重新裝填、切換武器、射擊:重新裝填會取消下一把武器的拔刀延遲 |
| 切換射擊 | 射擊、切換到另一把槍、射擊:每把槍保持自己的射擊延遲 |
| 重力取消 | 在跳躍頂點附近(或墜落時)的空中斬擊會讓你保持高度片刻,每次跳躍一次 |
| 掛牆 | 在空中持刀刃靠牆時,按住防禦;懸掛時前進 + 跳躍可攀爬 |
| 蝴蝶、滑行 | 斬擊,然後在恢復結束前防禦:防禦舉起時你可以移動,並做表情動作(滑行);從中跳躍或衝刺 |
| 空中蝴蝶(BF、雙重 / 三重 BF) | 同樣的防禦可在空中取消空中斬擊:跳躍、衝刺、斬擊、格擋;跳躍、斬擊、格擋、衝刺、斬擊、格擋;或跳躍、斬擊、格擋三次(落地前一刻按下的跳躍會被保留) |
| 格擋取消(四重 BF) | 在斬擊期間防禦會立即命中並直接進入防禦;在下個方向按下防禦以獲得 glitch 節奏 |
| 快速起飛、拋接 | 上鉤拳(防禦 + 攻擊),以防禦取消其恢復;對被擊飛的空中敵人使用上鉤拳可讓他們保持在空中;翻轉、格擋、跳躍、衝刺、斬擊、格擋 |
| 延長翻轉 | 在上鉤拳後立即衝刺 |
| 半步、裝填半步、禁步 | 在衝刺期間射擊會開火並結束衝刺;與斬擊、切換和重新裝填混合 |
| 牆壁取消、進階牆壁取消 | 衝刺回牆壁並再次蹬離它(進階版中間加入切換取消) |
| 多重沿牆跑 | 以約 45 度角衝向牆壁並跳躍兩次:從另一面牆第二次蹬離 |
| 掛牆取消 | 靠牆防禦會以懸掛結束沿牆跑或蹬牆的飛行 |
| 瞬殺 | 上鉤拳,然後在其命中後立即切換到槍並射擊空中的敵人 |
| 輕步 | 斬擊後立即衝刺不會發出衝刺音效 |
機器人依技能使用技巧:技能 0 時不使用,從 0.2 起使用蝴蝶,最高到四重
蝴蝶和禁步從 0.85 起;機器人越強,嘗試它們的頻率越高。它們也會
以懸掛爬牆以到達平台上的敵人。
狀態
運作中
| 區域 | 內容 |
|---|---|
| 地圖 | 全部 30 張 RS v7 地圖加上任務地圖,包含光照圖、天空以及所有道具(火焰、光束、水、風扇、飄揚的旗幟與窗簾) |
| 碰撞 | 零售版 .RS.col BSP:樓梯、斜坡、牆壁、天花板 |
| 角色 | 男性與女性模型;道具資料中的每一件衣物(男性有 102 件胸部、50 件腿部、33 件頭髮/帽子……)可依部位選擇,並可在 PLAYER 頁面選用染料,即時預覽(拖曳旋轉、縮放、依身體部位取景);機器人穿著隨機服裝;帶有交叉淡入淡出的蒙皮動畫、上半身圖層與瞄準俯仰;71 個角色動畫片段中有 63 個在使用中,包括表情動作 |
| 移動 | 奔跑、跳躍、翻滾、空中衝刺、蹬牆、沿牆奔跑、攀牆與攀爬、墜落;奔跑速度、跳躍、重力、墜落速度與蹬牆皆從公開對戰重播中測量;火箭發射器與機槍會減慢你的速度並阻擋牆壁動作,如同其道具資料所述 |
| 近戰 | 斬擊連段、上鉤拳、強力攻擊、防禦與格擋、蝴蝶、滑行、連擊,以及 K-style 取消(見「K-style 技巧」) |
| 槍械 | 手槍、左輪手槍、衝鋒槍、霰彈槍、步槍、機槍、火箭發射器;彈匣、換彈、武器切換、護甲穿透(從怪物的攻擊資料估算) |
| 投擲物與道具 | 破片、閃光、煙霧與震撼彈、地雷、醫療包、修理包;來自地圖道具生成點的生命、護甲與彈藥拾取物 |
| 戰鬥 | HP / AP 傷害、受擊反應、擊退與爆炸狀態、減速 / 暈眩 / 定身 / 燃燒效果、死亡攝影機;可選固定(非隨機)子彈擴散 |
| 擊殺攝影機 | 當有人殺死你時,攝影機會俯衝到你的殺手並環繞它(滑鼠轉向、滾輪縮放),在漂浮的「名字 殺死了你」血跡標籤下,並在你的屍體上爆出血花 |
| 模式 | 死鬥、團隊死鬥、角鬥士、團隊角鬥士、殲滅、刺殺、決鬥、決鬥錦標賽、狂戰士、槍手、間諜(帶有追蹤器 ping 與間諜道具)、閃電戰(九個職業、升級、小地圖、播報員、獎勵)、公會戰、訓練 |
| 額外模式(非零售版) | 此移植版對社群伺服器發揚光大的模式之自有詮釋,以零售道具與地圖打造:感染者(每回合隨機一名玩家變成殭屍:僅限刀刃、更快、更耐打、擊退命中;被殭屍殺死的人加入他們;倖存者在回合計時結束時獲勝)、槍械遊戲(自由混戰,沿著 12 階武器階梯前進,擊殺可升級你的武器,近戰擊殺會降級受害者,從最後一階擊殺即獲勝)、動態決鬥(同一張地圖上同時進行數場 1 對 1 決鬥,每場處於各自的競技場階段;勝者留下,敗者排隊觀戰,按 Space 切換觀看的競技場) |
| 公會 | 在 CLAN 分頁建立、重新命名與離開公會(等級 10、20,000 懸賞金),從 52 個零售徽章與 9 個背景中挑選,機器人成員,對抗 13 個生成的敵對公會排名;公會戰模式(4 對 4、殲滅回合)顯示雙方公會徽章並移動公會點數 |
| 任務 | 任務、挑戰任務與生存情境:區域、怪物波次、首領、傳送門、掉落物與獎勵;獻祭道具解鎖特殊情境,隨機擲骰決定路線,任務道具留在你的物品欄中,等級限制與挑戰時間獎勵 |
| 怪物 | 來自資料的 76 隻任務怪物與 48 個腳本演員,帶有其技能(飛彈、範圍攻擊、治療、召喚、爆擊、鏡頭震動)與狀態機 AI |
| 機器人 | 隨機玩家標籤(同一場對戰中不重複);地圖上的尋路(樓梯、跳躍、墜落、攀爬、側牆奔跑、精準蹬牆到達原本無法抵達的樓層,例如宅邸頂部,適用於攜帶刀刃的機器人)、依距離選擇武器、防禦、蝴蝶、隨技能調整的 K-style 技巧(跳躍衝刺、斬擊射擊、換彈射擊、切換射擊、擊飛與連擊、攀牆攀爬)、手榴彈與煙霧投擲、拾取物、撤退、技能等級 |
| 個人檔案與商店 | 離線個人檔案,包含等級、XP 與懸賞金;商店有 215 件道具、其圖示與數值;物品欄與裝備 |
| 選單與 HUD | 整體一致的外觀(src/ui.rs,規則見 DESIGN.md):Barlow 字體、琥珀色點綴、銳利面板。主選單(MATCH、PLAYER、SHOP、INVENTORY、CLAN、CONTROLS、GRAPHICS、任務選擇器)帶有分頁、玩家資訊列(等級、XP 條、懸賞金、獎章)以及帶有衝刺軌跡示範的動畫 3D 角色預覽;暫停選單為側邊面板。HUD:生命與護甲在左下(血條在受傷後延遲追趕)、武器與彈藥在右下並帶有低彈藥與 RELOAD 警告、時鐘與團隊分數在頂部中央、KILLS / DEATHS 在左上、準心會隨奔跑、跳躍與射擊而張開、命中與擊殺標記、傷害方向弧線、狀態效果計時器、帶有 K/D 的排名記分板;右上角有滑動的擊殺訊息列,帶有零售擊殺記錄武器圖示、HEADSHOT 標籤以及公會戰中的公會徽章;當你擊殺時,準心下方顯示 ELIMINATED 與受害者名字;左側有連擊計量條及其倍率、分數與「+N」彈出提示,以及多殺與連殺橫幅;KILLED BY 畫面顯示每位攻擊者造成的傷害與重生條;回合橫幅;對戰結束畫面顯示賺得的 XP 與懸賞金 |
| 音效與音樂 | 武器音效、表面腳步聲、語音、怪物音效、地圖環境音、帶有交叉淡入淡出的背景音樂;合成的連擊、擊殺與連殺音效以及你自己的受擊音效(custom/hitsound.wav 在個人檔案旁) |
| 選項 | 暫停選單切換項目:擊殺攝影機、擊殺音效、受擊音效、固定擴散、隊友血條、螢幕血跡、寫實血跡與連擊計量條;儲存在個人檔案中,且 --NAME / --no-NAME 旗標會針對單次執行覆寫它們 |
| 血跡 | 模擬的血腥效果(預設開啟,--no-realistic-blood / 暫停選單可切換為零售精靈與痕跡):依傷害縮放的水滴噴濺,受重力飛行,依撞擊角度在牆壁與地板濺灑,沿牆流下成滴,在屍體下積成血泊,從受傷機器人拖出痕跡,並在你的螢幕上濺上水滴與暗角 |
| LAN 多人遊戲 | 選單中的 HOST LAN / JOIN LAN(或 --host / --join ADDR,--join lan 透過廣播尋找主機):死鬥、團隊死鬥、角鬥士與團隊角鬥士,帶有主機的機器人。主機決定命中、死亡與分數;每位玩家移動自己的角色。主機上必須開放 TCP 與 UDP 連接埠 7790 |
尚未完成
| 區域 | 狀態 |
|---|---|
| 線上多人遊戲 | 僅限 LAN(見上方),我們自己的協定;回合、任務與閃電戰模式尚未透過 LAN 進行,且不與零售伺服器通訊 |
| 線上公會 | 公會聊天、邀請、戰爭大廳與配對需要伺服器;敵對公會是生成的機器人,彼此從不對戰 |
| 閃電戰額外內容 | 九個職業可玩(其中三個沒有職業手冊,因此零售版是否提供它們未知);資料與公開來源皆未提供職業美術或裝備配置,因此卡片顯示武器圖示,且職業槍械是此移植版的猜測;資料中沒有獎章商店庫存或價格(其訊息暗示由伺服器傳送),因此獎章會被儲存與顯示但無法花費 |
| 任務額外內容 | 挑戰任務的轉蛋獎勵道具(3000xxx)不在道具資料中,因此無法給予;任務 .nav 網格缺少多達 43% 的生成點,因此怪物使用此移植版自有的地板圖;生存地城的骷髏遵循資料的 id 方案與公開 wiki,但其 XP、懸賞金與掉落物不在資料中 |
| 音樂選擇 | 資料與公開來源皆未說明哪首曲目屬於哪張地圖;此移植版為每張地圖從九首遊戲內曲目中挑選一首(固定、依名稱) |
| 僅有韓文的名稱 | 22 個怪物名稱在每個語系中都只有韓文;此移植版顯示其自有的英文翻譯(在 docs/formats.md 中標記為 inferred) |
| 精確手感 | 移動常數來自較舊用戶端的重播,因此與 Steam 用戶端的一致性未經證實;衝刺速度、取消窗口與攀牆高度是估計值(在 docs/formats.md 中列為 inferred) |
在瀏覽器中(WebGPU)
web/build.sh # wasm client + data packs from your install into web/dist
python3 web/dist/serve.py 8090 # http://localhost:8090 (WebGPU needs localhost or HTTPS)
sudo tailscale serve --bg --https=10000 http://127.0.0.1:8090 # HTTPS on your tailnet
web/ 為瀏覽器建置相同的遊戲。gunz-pack 在每張地圖上遊玩一場簡短的追蹤對戰(並開啟遊戲選單),且只保留那些執行所讀取的檔案。結果是一個共享包(角色、武器、效果、音效;gzip 壓縮後約 40 MB,而非 1.6 GB 的安裝檔)加上每張地圖一個包(3-14 MB,預先計算機器人的路徑圖,因此對戰開始時不需花數秒建立路徑)。頁面會立即取得共享包與 wasm 模組(brotli 壓縮後 7 MB),並僅在你選擇某張地圖時取得該地圖的包。包會依其 CRC 永久快取,引擎則依其內容雜湊快取,因此對戰開始時不會再次下載任何東西。衣物太多無法打包(數百 MB):model/ 下的其他每個檔案都從 data/files/ 個別提供,並在遊戲讀取時下載(對戰開始時機器人的服裝、你瀏覽到的某件衣物)。頁面會在載入畫面後開啟遊戲自有的主選單(MATCH、PLAYER、SHOP、INVENTORY、CLAN、CONTROLS、GRAPHICS),載入畫面顯示每個下載項目(大小及其專屬進度條)、整體進度條、速度與剩餘時間,然後是啟動步驟。個人檔案存放在瀏覽器的本機儲存空間;START 會下載該地圖的包並遊玩,對戰中的 MAIN MENU 會回到這裡。在觸控螢幕上,對戰有螢幕控制項(一個搖桿、在其他任何地方拖曳以環顧、開火、跳躍、衝刺、防禦、換彈、切換武器、分數、暫停),且第一次觸控會進入全螢幕;雙指縮放與雙擊縮放已關閉。齒輪按鈕會開啟其設定,保存在瀏覽器中:視角靈敏度與反轉、瞄準輔助強度(在你轉向、移動或射擊時,它會將瞄準傾向於準心附近可見的最近敵人,絕不會自行作用;0 = 關閉)、浮動或固定搖桿及其死區、按鈕大小與不透明度、左手配置、震動,以及可將每個控制項拖曳到任何位置並調整大小的配置編輯器。選單與對戰 HUD 會縮小以適應小於 1280 x 720 的視窗(手機),且使用觸控控制項時,武器與彈藥面板會移到下方中央,避開 FIRE。帶有鍵盤或滑鼠的平板會在第一個按鍵或滑鼠使用時切換到它們(控制項隱藏、指標鎖定以瞄準),並在下次觸控時切回。如果瀏覽器的 WebGPU 拒絕 GRAPHICS 設定使用的某些東西(Safari 僅向頁面回報此類錯誤,頁面再轉交),對戰會降級為 ORIGINAL 並如此顯示;serve.py 會列印頁面回報的錯誤與裝置 GPU 資訊(POST /log),因此手機的問題會顯示在其記錄中。瀏覽器中沒有 LAN。web/dist 含有零售位元組,因此僅將其提供給你自己的裝置(僅限 tailnet 的 tailscale serve,絕不用 tailscale funnel)。
更多工具
cargo run --release --bin gunz-play -- "$GAME" Mansion --bots 3 # straight into a match
cargo run --release -- "$GAME" Castle # fly through any map
cargo run --release --bin gunz-char -- "$GAME" man # assembled character, bind pose
cargo run --release --bin gunz-anim -- "$GAME" man run # one animation
cargo run --release --bin gunz-weapon -- "$GAME" "Raptor 50 RP" --on man --idle
cargo run --release --bin gunz-fx -- "$GAME" flame_rifle # one effect; --list
cargo run --release --bin mrs -- extract "$GAME" .local/extract # CRC-checked dump of every archive
<details>
<summary>所有 <code>gunz-play</code> 選項</summary>
--char man|woman、--look LOOK(個人檔案的 look 文字)、--loadout ID,..、--bots N、--skill 0..1、
--mode dm|tdm|gladiator|team-gladiator|elimination|assassinate|duel|tournament|berserker|gunman|spy|blitzkrieg|clanwar|infected|gungame|dynduel|training、
--mode quest --scenario NAME [--dice N] [--sacrifice A,B](例如 "Quest Mansion QL0"、"Goblin King"、
"Challenge 101"、"Survival Prison";沒有 --dice 時會擲骰)、--time-limit S、--kill-limit N(0 = 無)、
--respawn S、--protect S、--round-time S、--ready S、--host 或 --join ADDR|lan(LAN)。對戰會在時間或擊殺/回合限制時結束(各模式預設值來自 gametypecfg.xml),並以勝利、失敗或平手作結。
無視窗測試:每個檢視器都接受 --shot OUT.png 以無介面渲染一個 1280x720 畫面格
。gunz-play 新增 --script、--time、--hp、--ap、--at、--die-at、
--npc NAME,..(生成任務怪物)、--menu-page match|player|shop|inventory|clan|controls|graphics
以及 --pause-at S [--pause-page controls|graphics] 以進行
可重現的執行(語法在 src/bin/gunz-play.rs)。搭配 GUNZ_SEQ=SECS 與拍攝
路徑中的 %,它也會以 20 fps 儲存最後 SECS 秒,這就是上方示範的製作方式(這些
片段加上字幕並以 Pillow 合併,然後用 ffmpeg 編碼為動畫 WebP)。
GUNZ_PROFILE=PATH 使用另一個設定檔。RUST_LOG=gunz::bot=debug 記錄機器人決策;
GUNZ_FRAMETIMES=1 記錄畫面時間(加上 GUNZ_NOVSYNC=1 以獲得無上限畫面格)。
</details>
運作方式
GunZ 的 .mrs 封存檔是帶有 XOR 混淆標頭的 ZIP 檔案;地圖、模型與動畫
是原始二進位格式。Gunz.exe 以 Themida 加殼,因此這裡的每種格式都是從
資料檔案本身復原而來。相關筆記在 docs/formats.md,而
CREDITS.md 列出了外部來源。
逆向工程框架
使用 OMP、REA 與 Ghidra 進行本機、與目標無關的調查。
開始
bash scripts/setup-tools.sh
bash scripts/agent.sh
隔離的 OMP 設定檔是 reverse-engineering。其現有設定檔資料在
遷移期間已保留。僅註冊 REA;AISandbox 被拒絕。
其他設定檔與目標安裝維持不變。
單一函式
bash scripts/query.sh /absolute/path/to/program function_name
bash scripts/query.sh /absolute/path/to/library.dll 0x180001000
此程序是所選二進位檔中的符號或位址。這些是使用
範例,並非聲稱那些檔案或位址存在。
此命令會雜湊實際輸入、記錄問題,並在 .local/re/<sha256>/function-<question-hash>/ 下選取快照
。相同的輸入/問題可以
重播已儲存的證據;變更的位元組會選取不同的命名空間。REA 會驗證
實際的提供者/設定檔/查詢快取鍵。調查中未內建任何目標名稱或安裝路徑。
輸出是精簡的 JSON:輸入身分、提供者、程序、虛擬碼、
參數可用性、限制與證據路徑。完整的原始回應、
日誌、請求與快照會保留在私有的執行目錄中。超過
16 MiB 顯示限制的結果會明顯失敗;原始檔案會保留,不會被截斷。
分析失敗會傳回 ok: false 與非零結束碼,即使上游
CLI 封套顯示 ok: true。失敗的執行會保留其證據且不會被快取。
需要時強制進行新的觀察:
bash scripts/query.sh /absolute/path/to/program function_name --fresh
全新執行會保留先前的證據。無效的快照/設定檔變更不會
被靜默重試;明確的全新執行可以取代作用中的快取參照。
原始目標維持唯讀,且絕不會由此命令執行。
數個相關問題
使用 OMP 代理並保持一個 REA MCP 工作階段開啟:開啟一個選取的輸入,
沿著有界的字串/交叉參照/函式追蹤,重複使用傳回的檔案面向,儲存
快照,然後關閉。同一工作階段的暖查詢可避免重複匯入。CLI
輔助工具用於一次性問題,不是第二個分析引擎。
檢查框架
bash scripts/check-framework.sh
檢查包括生成的 ELF 與 x86-64 PE DLL 反編譯、字串/參照、
組譯、所有權清理、無需啟動 Ghidra 的快取重播、兩個獨立的
ELF 程式、明確的全新分析、同一檔名下的變更位元組、
未變更的原始輸入,以及未知程序失敗且不提升快取。
暫存測試 fixture 會被移除;證據保留在 .local/re/engine-check/
與 .local/re/query-check/ 之下。
測量的執行與涵蓋範圍限制:docs/reverse-engineering.md。
先決條件
- Node 22.19+、受支援的 Node 24,或 Node 26+。
- 解壓縮的 Ghidra 12.1.4,預設為
~/tools/ghidra_12.1.4_PUBLIC。 - 64 位元 JDK 21。安裝程式可在本機安裝以校驗和鎖定的 Temurin 21.0.12.1+1。
- 用於生成檢查的
cc、clang、lld-link、timeout;用於快取追蹤的strace。
選取現有安裝:
bash scripts/setup-tools.sh /absolute/ghidra_12.1.4_PUBLIC /absolute/jdk-21
原生路徑儲存在被忽略的 .local/ 檔案中。目前的執行器以
Linux 為主;無 root 的 strace 引導使用已簽署的 Arch 套件。未聲稱
Windows 或 macOS 主機驗證。不會變更任何系統 Java 設定。
OMP 指示
.omp/AGENTS.md 路由任務,.omp/RULES.md 提供簡短的黏著不變量,
而 .omp/rules/re-workflow.md 描述問題優先的原生調查。
僅載入與問題相關的指示。原始證據、專有輸入、
資料庫、本機路徑與憑證留在 Git 之外。關於
來源出處與授權,請參見 CREDITS.md。
靜態檢查是預設做法。執行未知目標或擷取其
執行階段需要另行授權。本機反編譯器以您的
使用者權限執行;它不是作業系統安全沙箱。
授權與來源聲明
原始 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.

評論
…