1 Combat and world
darask edited this page 2026-10-19 15:15:57 +00:00

戦闘・世界処理の解析結果

原本命令との比較では、対象DLLのSHA-256、入口、許可した呼出し、入力、メモリ範囲を固定しています。関数の同値性を調べるためにgetterやOS呼出しを制御する試験もあり、Windows実ゲームの全体動作と同一の証拠ではありません。

主な原本比較対象のDLLはSHA-256 edbe4eb58480cc7286f09be174187adf73a0dce5265d8d21fec9c5dc70923ce4、32bit x86、preferred image base 0x10000000。資料中のVAを別版DLLへ適用しないでください。

数値と状態

分野 復元した内容・観測 未解明・統合の境界 原資料
士気 基礎値・目標値・1回の数値更新。整数wrap、float32/x87丸めを保持 全更新頻度・能力効果・状態生成とGodot戦闘への一体化 COMBAT_ANALYSIS
近接 命中率、乱数更新、成否などの経路 部隊・兵士・攻撃開始からの統合範囲は後続資料ごとに確認 MELEE_ANALYSIS
損害 通常/AP、高度補正、装甲・盾、4整数の結果と更新seed。初期比較23,568件 制御getterの境界がある。全死亡・表示・時間進行を含む戦闘完成ではない DAMAGE_ANALYSIS
地面 所属・属性・地面番号とstat行から倍率を検索し近接statへ接続 位置から地面を決める処理、DB名から元の内部IDへ変換、実world生成 GROUND_EFFECTS
疲労 兵士の疲労量、0〜5の段階遷移、部隊平均 元の時間間隔、行動・地形・天候の生成からGodotまでの接続 FATIGUE

損害の23,568は、同じ入力集合の軽減前・最終結果などを別々に比較した合計です。23,568種類の独立した実戦を意味しません。

移植で維持する必要がある違い

  • 士気の丸めは一般的な round() と同一ではありません。負の半整数とfloat32化の位置が結果を変えます。
  • 投射物の盾判定と装甲判定では、分岐により乱数消費回数が変わります。最終損害だけ合わせても、その後の同期が一致するとは限りません。
  • 地面効果は、完全一致なら最初の行を返し、個別一致がない時の汎用候補は最後の行になる経路があります。検索順を変えません。
  • 疲労段階は1回に隣の段階へ進む処理です。量から一度に最終段階へ分類し直す実装とは違います。
  • 近接損害には、2026年10月12日の追記でx87拡張精度の値をfloatへ落とさず使う経路が追加されています。旧C APIのfloat境界と混同しません。

これらは上表の資料で確認した例です。未確定のboolean・slotへ、それらしいゲーム用語を付けて仕様を確定しないでください。

勝敗・終了・占領

勝敗判定 10562080、全滅・全滅または潰走・本陣占領の条件、時間切れなどの限定経路を比較しています。複数allianceが条件を満たす場合の書き込み順にも意味があります。勝敗判定

後続の2026年10月13日には結果確定 10549670、外部要求の終了設定、state設定もC++へ移しています。ただし結果種別の詳細判定、下位refresh、event/log/UIの本体等は境界が残ります。10月12日資料の「終了処理未移植」を、そのまま最新全体の状態として読みません。戦闘終了

本陣型拠点の防御値更新、占領関連の状態・在圏処理にも個別の解析があります。防御数・攻撃数・速度和・浮動小数点の順序を確認したことと、全拠点種別・実マップ・Godot上の占領完成を分けます。防御値更新、占領state、在圏

部隊・兵士・AI・移動

兵士の即時配置からgroup更新、taskの構築・dispatch、descriptor取得、部隊加入などへ解析を進めています。B136の新しい内部入口は最新解析に整理しました。

locomotive、衝突、姿勢、AIのalliance/group/task/abilityにも資料がありますが、これらの文書が存在することは、AIや対戦通信をGodot戦場へ組み込んだ証明ではありません。Godotの現行表示・移動プレビューと、原本同値性を検証するC++部品を区別してください。兵士→group接続、移動解析、衝突、AI