1 Reproduce
darask edited this page 2026-10-19 15:16:14 +00:00

再現環境と確認手順

コード・本体を取得する

解析資料だけ読む場合はLFSの自動取得を止めてcloneできます。リポジトリには大量の解析記録があるため、通常のコードリポジトリより時間・容量を使います。

GIT_LFS_SKIP_SMUDGE=1 git clone https://git.darask.me/revival-forge/twa-godot-port.git port
cd port
git lfs install --local
git config lfs.concurrenttransfers 2
git switch --detach 2af011781c281e006b5d2aaa8d976252c74e9dcf
# 本体を使う解析・表示を行う時
git lfs pull --include="game/original/**" --exclude=""

game/original/ が今回公開した本体、game/revival-client/ が復活版clientです。元TWAを再現する解析では原本と復活版を取り違えません。各リポジトリの全本体は683ファイル・約14.59GB。LFSキャッシュ、展開済み本体、生成物の容量を別に見積もります。公開本体の説明

依存物と旧ワークスペース配置

保存済み確認環境はLinux x86_64、Godot 4.5.1、godot-cpp godot-4.5-stable、C++20、CMake 3.20以上です。Pythonのランチャー案内は3.12以上。Ghidra/JDK/Unicornの版・取得元・ハッシュも dependencies.lock.jsonにあります。.tools/ や生成バイナリはclone後に別途用意します。

Godot実行ファイルをPATHへ置くか、lockに対応するファイルを .tools/ へ展開します。godot-cppの既定配置は .tools/godot-cpp-godot-4.5-stable/、別の場所ではCMakeの GODOT_CPP_PATH を指定します。Godot・C++ bindingの版を無条件に最新へ変えると、保存された検証環境とは異なります。

旧ツールには、リポジトリの親をワークスペースとして次の配置を参照するものがあります。

twa-workspace/
  port/                                  ← 今回のclone
  totalwar-Arena/TotalWar_Arena/           ← 原本を参照する旧パス
  totalwar-Arena-Revival/work/schema_are.ron

Linuxの新規ワークスペースなら、取得した原本への参照を次のように用意できます。既存の原本フォルダがある場所では上書きせず、その配置を使います。

cd ..
mkdir -p totalwar-Arena
ln -s ../port/game/original totalwar-Arena/TotalWar_Arena

schema_are.ron はこの公開リポジトリに収録されていません。表の再抽出には解析時と対応するschemaを別途用意する必要があります。analysis/ のDB・生成報告や godot/generated/ も完全な実行環境として揃うとは限りません。保存された原本ハッシュ・receiptと実ファイルを照合してください。

資産とビルドの基本コマンド

以下は上の twa-workspace/ で実行します。schemaが必要な工程は、そのファイルを用意してから進めます。既存の作業用解析結果を上書きしないよう、新しいcloneで行うのが確実です。

python3 -B port/tools/twa_assets.py scan --root totalwar-Arena/TotalWar_Arena --out port/analysis
python3 -B port/tools/twa_baseline.py --database port/analysis/assets.sqlite --out port/analysis/baseline-report.json
python3 -B port/tools/twa_tables.py --database port/analysis/assets.sqlite --schema totalwar-Arena-Revival/work/schema_are.ron --out port/analysis
python3 -B port/tools/twa_animation.py --database port/analysis/assets.sqlite --out port/analysis/animations-report.json
python3 -B port/tools/dev.py cmake -S port -B port/build -G Ninja -DCMAKE_BUILD_TYPE=Release
python3 -B port/tools/dev.py cmake --build port/build --parallel 2
python3 -B port/tools/twa_models.py --database port/analysis/assets.sqlite --library port/build/libtwa_native.so --out port/analysis/models-report.json
python3 -B port/tools/prepare_viewer.py --database port/analysis/assets.sqlite --library port/build/libtwa_native.so --out port/godot/generated --limit 24
python3 -B port/tools/prepare_game.py
./port/launch.sh

これは元READMEの工程を、新規cloneの配置に読み替えたものです。Wiki整備時に新規GPU実行・全生成物の再作成を完走したという記録ではありません。Windowsでの対応手順は未検証です。C++資産読込部だけを調べる場合は別のbuildフォルダへ -DTWA_BUILD_GODOT=OFF を指定してGodot依存を外せますが、それでGodot画面が起動するわけではありません。CMake設定、起動ラッパー

表示・保存・確認

格納庫で3部隊を選び、「戦場へ」で配置プレビューを開きます。1〜3で部隊選択、Ctrl+Aで3部隊選択、右クリック移動、Ctrl+S停止、WASD/中ドラッグでカメラ、ホイール拡大、Space停止、Esc格納庫です。

編成保存は user://original-preview-profile.json。ラッパー利用時は port/.cache/data/godot/app_userdata/TWA Original Port/ にあります。原作・復活版の個人プロフィールとは別ファイルです。

python3 -B -m unittest discover -s port/tests -v
ctest --test-dir port/build --output-on-failure
./port/launch.sh --headless --quit-after 1000 -- --smoke
./port/launch.sh --headless -- --flow-test

必要な生成物・依存物を揃えたうえで実行します。これらの基本確認だけでB136や全原本比較を再検証したことにはなりません。各 verify_*.py の入力・SHA・境界と、対応する資料の手順を確認して対象を選びます。

原本比較器がDLLハッシュ不一致を拒否した時は、想定版との違いを調べます。SHAチェックを消して通さないでください。結果にはsource・入力・library・検査器のハッシュ、件数、失敗・skip、実行範囲を保存します。古い合格receiptを新実行の結果として残さないようにします。