Skip to content

BTL v3+ ExtensionArea 索引 ​

v3+ BTL 可以在固定 section 后携带由 Header H54 指定字节长度的 protobuf ExtensionArea。

当前已经通过原版 Game.proto descriptor 和实际 wire 数据确认的主要顶层结构包括:

proto
message BattleExArgs {
    repeated SSecondaryConditionArgs secondaryConditions = 2;
    repeated BattleArmyExArgs armyExs = 4;
}

已确认的 BattleArmyExArgs descriptor 字段包括:

proto
int32 area = 1;
repeated SArmyBuffArgs armyBuffs = 2;
int32 bynameId = 3;
int32 tunnelFromArea = 4;
int32 steelWillValue = 5;
repeated SArmyStatArgs armyStats = 6;
int32 legendArmyId = 7;

注意:descriptor 字段名和 wire schema 已知,不等于每个字段的完整玩法 consumer 已知。

Android 1.29 -> 1.30 的 ARM64 Game.proto 对比进一步确认:BattleExArgs 可达类型树仍是 17 个 message / 78 个字段,BattleExArgs 与 BattleArmyExArgs 字段表均没有变化;79 个顶层 message 中只有与该 BTL Extension 树无关的 ArmyGroupPassArgs 发生 schema 变化。1.30 没有新增 EliteSkin Extension 字段。 新增精英皮肤磁盘正样本位于固定 Unit record +0x2F;尤其 conquest9.btl 自身虽然是 v3,但 H54 = 0。

当前 corpus ​

当前最新 Android 1.30.0 Extension corpus:

  • 非空 ExtensionArea 文件:415,415/415 按 1.30 descriptor wire 校验通过;
  • secondaryConditions:812 条;
  • armyExs:8467 条;
  • armyEx.area 与固定 Unit TileId:8409 条唯一匹配、58 条多匹配、0 条 unmatched;
  • armyBuffs / armyStats 在当前原版 disk-tail corpus 中仍没有正实例;Buff 的 country-index 分区 duration/expiry 与 Stats 的跨回合 keyed-state 重建均已恢复;
  • bynameId:8467 次出现,8014 次非零;
  • legendArmyId:8265 次出现,453 次非零;
  • steelWillValue:8405 次出现、非零 0;runtime 已闭合为 SkillSettings.Type 137 / 0x89“钢铁意志”的叠层计数;
  • tunnelFromArea:8421 次出现、非零 0;runtime 已闭合为 ArmyFeature Type 0x59 / 89“隧道挖掘”当前 link 的来源全局 TileId。

正式专章 ​

text
battle_ex_args.md       BattleExArgs 顶层 schema、loader consumer 与 corpus
secondary_condition.md  SSecondaryConditionArgs 与 Legend 次要目标
army_ex.md              BattleArmyExArgs 七字段、ArmyBuff/runtime state map、钢铁意志、area 与 Legend/显示身份
writer_gate.md           第一版 Extension writer definition gate、受控字段与变长保存合同
writer_foundation.md     lossless wire-transform、独立 transaction/preservation/Save As foundation

当前边界 ​

以下内容仍需逐字段闭合:

  • tunnelFromArea 的非零 BTL 正样本、FUN_00489A00 全部非法目标规则及与 BattleCountryExArgs.tunnels/TunnelArgs 的关系;
  • armyBuffs 完整 Id/Type authoring 合法域、异常 round/countryIdx/value,以及 armyStats.statType 全 key 的用户侧自然语义;
  • steelWillValue 的非零 BTL authoring 样本与异常值/save-load acceptance;
  • bynameId 最终 UI-facing setter 链;
  • legendArmyId 完整 membership/coordination 链;
  • secondary condition 最终结果/皇冠/奖励合成;
  • 无效引用和重复字段的异常边界;
  • duplicate singular / malformed protobuf / 跨版本 future unknown fields 的完整原版兼容行为;
  • BtlExtensionWireTransformFoundation/v1 已完成:bynameId/legendArmyId 的 lossless local wire transform、精确 inverse、独立 variable-length transaction/preservation/Save As 已通过 synthetic 与原版 corpus;production writer 与 Scenario Editor admission 继续 NoGo;
  • armyBuffs/tunnelFromArea/steelWillValue/armyStats 和其他顶层 Extension authoring 仍未开放。

主要证据:

text
reports/btl_reference/android_1300_baseline_and_elite_skin_index.json
reports/btl_reference/army_extension_runtime_semantics.json
reports/btl_reference/extension_writer_gate.json
reports/btl_reference/extension_writer_foundation.json
reports/btl_v3_tail_legend_recovery.md
reconstruction/docs/btl_editor_round39_extension_descriptor_complete_schema_recovery_report.md
reconstruction/docs/btl_editor_round40_extension_native_consumer_coverage_recovery_report.md
reconstruction/docs/btl_editor_round41_extension_reference_integrity_evidence_recovery_report.md

除另有说明外,本站有权许可的原创文档采用 CC BY-SA 4.0;第三方内容除外。