《解域》jieyu-1 · 架构 · 进度 · 路线图
工作副本 D:\Godot4.7_Proj\jieyu-1(Godot 4.7.1 · 纯 2D 俯视 · 960×540)
· 实测日期 2026-10-05 · 对应 第六十五版 · 敌人按最近的可见目标选敌 · HEAD fd94c9d
(真机帧时间对照:大厅 60 fps / 20v20 对局 ≥7.6 fps)
● 已落地并验收
● 部分落地 / 有未完项
● 计划内(文档已定,工程未做)
● 待拍板
● 后续版本(已降级)
● 第六十五版为止新增
一、体检卡(全部本轮真跑 / 真数)
176
个 .gd / 31338 行 (LF 字节口径 · 不含 addons)
352
Main.gd 行数(硬线 ≤400 · 余量 48)
52 / 1876
测试脚本 / 断言(全绿 · 退出码 0)
5 + 25 + 21
几何门禁:HUD 5 + 外壳 25 + 规模接线 21
≥7.6 / 60
真机帧率:20v20 对局 / 大厅对照(fps)
口径(别用别的数) :行数一律 LF 字节数 (pwsh 的 Get-Content 在中文 UTF-8 上会少数约 6%,
历史上因此把 Main.gd 数成 911 行);测试项数一律取跑批日志的汇总行,没全绿就写「有失败 + 失败项原文」 ,不报绿。
二、整体架构(分层)
命名约定:不写 class_name 的模块,引用方必须 preload ——
新 class_name 在 --script 模式下不在全局类缓存里,裸写名字会解析失败。
① 外壳层 第四十七版新增
scenes/app/App.tscn ← 主场景 (启动进大厅)
ui/app/App.gd(240 行 · 装配 + 路由 + 起对战)
systems/ui/ScreenRouter.gd(栈 / 返回键 / layer 100)
ui/screens/:ScreenBase · Lobby · ModeSelect · Settings · Pause · Result · Info · MatchHost
ui/UiKit.gd(尺寸 / 配色 / 字号集中一处)
data/config/ModeTable.gd · systems/match/MatchRules.gd
systems/settings/GameSettings.gd(user://game_settings.cfg)
② 对局层(一局的世界)
scenes/gameplay/Main.tscn + Main.gd(352 行 · 第五十六 / 五十七版拆模块后回到余量内)
子模块:WorldSetup(652 ) · HudBuilder(622 ) · VehicleController(257) · ExplosiveController(131)
· PlayerFireController(106) · LaneController(92) · MarkController(79) · SmokeController(74)
· IndirectController(71) · SupplyController(58) · BootCheck(45)
由 MatchHost 在 add_child 之前 灌 @export(模式 / 兵种 / 载具 / 敌人数 / 种子)—— 所以 Main.gd 一行未改
③ 系统层 systems/
terrain:HeightGrid · SightSystem(地形 + 掩体 + 烟雾三层 + 感知节流)· MapGenerator · TerrainZones · MapInspector
· SpawnPicker(出生点现挑,第六十一版)
combat:BallisticsSystem · CaptureZone · SuppressionSystem · IndirectFire · Tracer
· explosives/ExplosiveSystem(炸药对人 / 对建筑两条衰减,第五十七版)
quest / marks / comm / hud / audio / effects / camera / weapons / vehicles
match:MatchFlow(胜负流程)· MatchRules(本局规则)· Organization(组 4 人 / 小队 ≥2 组)
· SquadOrders(主线 → 小队长 → 组任务) · EnemyDeployment(敌人按节点驻守 + 东侧预备队)
ai:AiAdvisor + 10 个纯逻辑模块(BYO key · 本地账本 · 默认零联网)
④ 实体层 entities/
player · enemy · ally(3 名队友)· vehicle(我方 IFV + 敌方 MBT)
cover(可摧毁 · 三段状态)· fob(工事)· lane(侧翼通路)· supply(补给车)· smoke · explosive(C4 / TNT 安放)
zone(泥泞 / 雪地 / 草丛 + RubblePatch 破坏残痕 )· effects(阴影 / 枪口火光 / 弹着)· visual(UnitFigure 上下半身)
⑤ 数据层
data/config/:GameConfig · RoleTable(4 兵种 ,新增工程兵)· ModeTable(6 模式)
· ChargeTable(炸药唯一数值出口)
data/weapons_data.txt 25 把 · vehicles_data.txt 18 辆 × 27 列 · quest_templates.txt 8 条
地图数据:第一张正式图 assets/maps/qingling_corridor/(默认对局地图)
+ 占位图 map_demo_height.png 与 grassland_demo2/(退化路径)
随包 CJK 字体 assets/fonts/JieyuCJK-Subset.otf(1.66 MB · OFL)
⑥ 核心 / 自动加载 / 门禁
core/EventBus.gd(信号总线)
autoload:EventBus · Audio · AiAdvisor · _mcp_game_helper
门禁:tools/geom_assertions.gd(HUD 5)· tools/screen_geom_check.gd(外壳 25)
· tools/scale_wiring_check.gd(规模接线 21) · 共用 tools/geom_checks.gd
跑批:run_tests_headless.gd · run_integration_headless.gd
· probe_balance.gd(20v20 平衡采样 · 桌面)
专项自检:ai_transport_check.gd(71 项)· ai_panel_check.gd(26 项)
⑦ 地图工具链 addons/jieyu_map/ 第五十版起
core 6:JieyuMapSpec(文档数字唯一出口)· JieyuMapDoc(12.8.1 / 12.8.7 读写)
· JieyuMapGen(噪声 / 布点 / 道路 / 内容层 / 出生区落脚地压平 )
· JieyuMapPainter(全部改高度的原子操作)· JieyuMapChecks(三级校验器)
· JieyuMapRender(审阅贴图)
editor 2:JieyuMapDock / JieyuMapCanvas(给鼠标用)+ plugin.gd
无头 tools/jieyu_map_cli.gd:list / info / render / snapshot / validate / generate(出 ERROR 即退出码 1)
产物约定:assets/maps/<id>/(heightmap / meta / zones / occluders / terrain / content / material + layers/)
+ 扁平 <id>_height.png
口径:高度即字节 (绘制期直接改 heightmap ⇒ 工作副本与产物零漂移);校验器把六章能机器判的指标全落成断言
界面跳转(第四十七版把「怎么进对局」正式化了)
启动 ─► 大厅(lobby) ──push──► 模式选择(modes) ──开始对局──► 对局(MatchHost + Main.tscn)
│ │ │ │
│ └─push─► 说明(info) │ ├─暂停键─► 暂停(pause)
└──push──► 设置(settings) ◄┘ │ │
(从暂停进设置时暂停留在栈底) │ └─push─► 设置(settings)
└─胜负─► 结算(result)
跳转纪律:同一时刻只有一屏可见 · 栈底不能退(返回按钮只在能退时出现)· 重复 push 被忽略 ·
返回键只有一个出口(ESC / ui_cancel / Android 实体返回)· 菜单层 layer 100(HUD 1 / 战术地图 10 / AI 参谋 90)。
三、可玩循环(验收那条线)
环节 发生什么 玩家看到的证据 状态
启动 出大厅而不是直接进对局 大厅四按钮 + 「下一局配置」面板 新
0–3 s 选完模式点开始对局,世界按模式规则建起来 玩家小人在出生区,相机已对准 ✅
3–8 s 手指在右半屏滑动 → 地图跟着走 准心=屏心=相机中心 三者恒等✅
8–15 s 走到棱线后,敌兵消失(通视断) 敌兵在通视恢复的那一帧出现 ✅
15–25 s 按开火 → 曳光 → 命中 / 脱靶 命中走弹道表,不是瞬间射线 ✅
25–40 s 占点 / 报点 / 快捷指令 / 烟雾 / 间瞄 HUD 三列按键 + 轮盘 + 地图图层 ✅
结束 胜负判定 → 结算屏 → 再来一局 / 回大厅 竞技三级判定(见下表)· 结算战报 ✅
四、三个模式:差别都接了线(22.10 第一版)
人数与编成(2026-10-03 使用者拍板 · docx 5.8):PVP 各模式 20 v 20 、PVEVP 4P v 30E ,
基本战术单位 = 4 人战斗小组 (PVP 每方 5 组)。第一版无服务器 ⇒ 两个数字都靠 AI 填充。
模式 人数 / 编成 胜负口径 时长 / 加时 友伤 AI 参谋 出处
PVP 竞技
20 v 20 4 人一战斗小组 · 每方 5 组
占领数:全占立即胜 / 重生预算(进攻方人数 ×2)耗尽即负 / 到点比点数
15 分钟 → 加时 3 分钟突然死亡 → 仍平即平局
开 关闭 5.3 / 5.7 · 20 章
PVP 休闲
20 v 20 (同竞技)
与竞技完全同表
同上
关 开放 5.3(「与竞技同表」)
PVEVP
4P v 30E 4P = 一个 4 人战斗小组
战术目标:达成=胜 / 未达成=败(本版=完成当前主线任务)
20 分钟 · 无加时、无平局
关 开放 5.3 · 22.6
PVP 装甲对抗 20 v 20(同竞技) 后续版本(22.10 降级)——界面上置灰并写明理由
困难模式 20 v 20(同竞技) 后续版本(22.10 降级)——困难项未逐条定标
兵棋模式 未定(待拍板) 后续版本(22.10 降级)——兵棋 SOP 与回合系统未做
每模式人数是 2026-10-03 使用者新拍的 (docx 5.8 + 模式表新增「人数 / 编成」列):这条**推翻**了第四十七版
「刻意不设每模式敌人数」的处置(当时的理由是 docx 没有人数口径 —— 现在口径由使用者给定)。
人数已接线(第四十九版) :模式定义人数 → MatchHost / WorldSetup 按模式建场(PVP 20+19 / PVEVP 30+3;
单跑 Main.tscn 仍回落 2+3)。队友编队已铺开(旧实现取模 3 个角度 ⇒ 19 人会叠成 3 堆)。
编成(第五十版) :systems/match/Organization.gd 算出「组 4 人 / 一小队 ≥ 2 组」并逐人发到 Ally ——
PVP 20 人 = 5 组 / 2 小队 (2+3)、PVEVP 4 人 = 1 组 / 0 小队 ;端到端已被网关断言。
编成命令层(第五十三版) :systems/match/SquadOrders.gd 把主线下发给小队长、按模板把小队内子任务派到每个组
(0 组占领 A / 1 组守住 B / 其余侦察循环),结果写回 world.squad_orders,端到端已被网关断言(9 → 18 项)。
执行层(第五十四版) :队友真的按自己组的任务行动(有组任务去自己的占领节点、组内在 4 m 上错开;
没有则逐字沿用旧的「跟在玩家后方」),HUD 任务卡多一行「[组任务] 小队长:占领 A」(只往已有 Label 里拼)。
性能 · 桌面 headless(仿真口径) :第五十一 / 五十二版两刀(感知节流 + 地形层快速排除 + 拆层节流)
把 20v20 脚本侧从 9.79 压到 1.29 ms/帧 (has_sight 282 → 195 µs,敌人一帧 137~155 → 21~32 µs);
第六十五版改「目标选择」时一度涨到 44.95 ms (整帧墙钟,7× 回归),收紧重挑闸门后回到
中位 4.58 ms / p95 20.91 ms (130 s 推进场景 · 40 单位同场)。
性能 · 真机(PCE-W30 / Android 12) :大厅 60 fps (p50 = p95 = p99 = 16.7 ms,连续 35 s 稳如磐石),
而 20v20 对局只有 ≥7.6 fps (p50 ≈ 133 ms)⇒ 瓶颈是渲染 + 我们自己的负载,不是设备限帧 。
口径提醒:headless 不渲染,所以上面那组桌面数字**测不到渲染那一半**;真机又不能用 dumpsys gfxinfo
(Godot 走原生 SurfaceView、不进 HWUI,永远报 0 帧),改用**引擎自报**逐帧 delta。详见 docs/性能预算.md 十一 / 十二节。
平衡 :第六十四版量清了「敌人 AI 只锁玩家、队友对敌方火力免疫」是单向屠杀的根因(节点 3 名守军 0.5 s 被清光、19 名队友零阵亡);
第六十五版按拍板 B 让敌人能打队友,**但实测友军仍零阵亡** ⇒ 瓶颈在队友火力密度与 AI 反应(待拍板)。
默认模式=PVP 休闲 :它是唯一「既有占领规则 + AI 参谋开放 + 关友伤」的组合,与第四十六版为止的行为最接近,回归面为零。
五、版本时间线(每一版都有真跑的验收数字)
第一版 ~ 第十八版
垂直切片闭环:地形 / 通视 / 相机 / 摇杆 / 射击 / 占领 / 胜负 / 重开
射击系统对齐 7.2;真机暴露的缺陷修复(占领 30 s 不翻蓝 / 单向通视)
候选 A~N:压制 / 兵种 / 掩体 / 间瞄 / 载具 / 任务系统深化
候选 N 把 Main 从 968 行拆到 391 行(≤400 硬线的由来)
第十九版 ~ 第二十九版
红基线归零(DSH 接手第一件事)
候选 L1~L5:T-S2 / T-S3 / T-S5 / T-S6 / T-M2 五条任务模板全部落地(模板池 3 → 8 条)
候选 P 烟雾遮蔽(SightSystem 变三层 + AI 盲射)
地图世界图层(小地图与战术地图共用 MapLayerSource)
第二十七 / 二十九版是纯文档回流 (不动代码)
第三十版 ~ 第四十一版
候选 O 五节:4.13 快捷指令 / 4.14 战斗播报 / 4.15 操作提示 / 4.16 倒地视角 / 4.17 环境互动
候选 M:Blob Shadow / 枪口火光 / 命中反馈 / 程序生成音效 / 上下半身分割 / 载具履带动画
候选 Q:5.7 完整胜负流程(计时 / 加时 / 平局 / 重生预算)
候选 R:数据表扩到官方全量(武器 25 / 载具 18)
ATGM:IFV 装炮射导弹,两发打爆主战坦克
第四十二版 ~ 第四十六版
AI 参谋(局间顾问)第一版:BYO key / 预算闸门 / 本地账本 / 游戏内面板
第四十三版:HarmonyOS 真机验证,修掉全角标点豆腐块与输入框触摸不聚焦
第四十四版:随包 CJK 字体 / 价目表订正 / 仅调试包的立刻结束本局
第四十五版:选完供应商自动填好模型名(走官方「列出模型」接口)
第四十六版:价格表不发版也能改价(静态 JSON 清单 + 严格校验 + 默认零联网)
第四十七版
主场景换成 App.tscn :启动进大厅;Main.tscn / Main.gd 一行未改
屏幕路由 + 六屏(大厅 / 模式选择 / 设置 / 暂停 / 结算 / 说明)
模式表:6 个模式按 11.4 列全,按 22.10 只有 3 个可选,三个的规则全接线
设置五项(补齐「音量界面」与「操作提示开关」两处既有欠账)
局内暂停菜单(世界冻结 + HUD 收起)
HUD 九宫格几何一个没动 ,只把「谁坐哪个格子」按用途摆正
第四十八版 ~ 第五十四版
规模化性能三刀 :感知节流 · 拆层节流 + 地形层快速排除 ⇒ 20v20 脚本侧 9.79 → 1.29 ms/帧
地图工具链(第五十版) :编辑器插件 + 无头 CLI + 三级校验器,一份 recipe 生成整张图
破坏规则三章(第四十九~五十一版):遮挡体可摧毁 / 建筑可命中体积与开口 / 结构值伤害来源
编成三层(第四十九 / 五十 / 五十三 / 五十四版):组 4 人 · 一小队 ≥2 组 / 主线 → 小队长 → 组任务 / 队友真的按组任务行动
人数接线:PVP 20 v 20 · PVEVP 4P v 30E(按模式建场,单跑 Main 回落 2+3)
第五十五版 ~ 第五十九版
第一张正式地图「青岭走廊」(第五十五版) :五节点 / 南北河谷 / 三条道路 / 235 个遮挡体,validate ERROR 0 WARN 0
Main.gd 债务:403 → 337(第五十六版拆出 PlayerFireController)
炸药 / 工程兵(第五十七版) :C4 1500 / TNT 2000 · 准心落点放置 · 遥控引爆 · 兵种 3 → 4
载具相机三档(第五十八版) :30 / 120 / 240 m + ATGM 2000 m 拖拽上限
默认地图换成正式图(第五十九版) :白旗点同时改读地图 zones.json
第六十版 ~ 第六十三版
第六十版:纯文档回流 (把第四十八~五十九版写进 docx,不动代码)
第六十一版:出生区读地图 + 出生点现挑(SpawnPicker:双尺度坡度 / 离掩体 5 m / 离节点 100 m)
第六十二版:地图工具链两个盲点(生成器压平出生区落脚地 · 校验器内部采样)
第六十三版:敌人按 RAAS 节点驻守 + 东侧预备队 (拍板 B;代价是「要拿点先清点」)
第六十四版 ~ 第六十五版 本页对应
第六十四版:20v20 平衡采样 (probe_balance.gd)⇒ 根因是敌人 AI 只锁玩家、队友对敌方火力免疫
第六十五版:敌人按最近的可见目标选敌 (拍板 B)—— 顺带量出并修掉一次 7× 性能回归 (44.95 → 4.58 ms)
真机帧时间对照 (平板 PCE-W30):大厅 60 fps 稳如磐石 / 20v20 对局 ≥7.6 fps ⇒ 瓶颈是我们的负载,不是设备限帧
口径修正:dumpsys gfxinfo 对 Godot 无效(SurfaceView 不进 HWUI)⇒ 真机改用引擎自报
下一版(未开工)
渲染 vs 仿真判别 (真机):wm size 降分辨率 vs 关 AI 两组对照,先判清 7.6 fps 的主项在哪一侧
再出一张正式地图(城镇 / 山地)· 内容层观感(正式图解出 205 片碎圆饼)
炸药三条尾巴:自伤 / 投掷 / 安放时间
地图数据仍有两项没喂进工程:rally_zones(要先有 RALLY 系统)与 flags 的压制圈
六、门禁健康度(三道,全绿才允许提交)
门禁 命令 项数 状态 它钉住什么
单元测试 --script res://tools/run_tests_headless.gd52 脚本 / 1876 项
全绿 纯逻辑:规则表 / 弹道 / 任务 / 标记 / 模式表 / 设置 / 路由栈 等
HUD 几何门禁 --script res://tools/geom_assertions.gd5 项
全绿 不出屏 / 同级不新增重叠(基线 6 组)/ 点按 ≥32 px / 层号合法
外壳几何门禁 --script res://tools/screen_geom_check.gd25 项
全绿 大厅 / 模式 / 设置 / 暂停 / 结算五屏各 5 条(零重叠)
规模接线门禁 --script res://tools/scale_wiring_check.gd21 项
全绿 人数 / 编成 / 队友组任务是否真的接到装配链上(不是「常量在那儿」就算接线)
集成冒烟 --script res://tools/run_integration_headless.gd263 项
全绿 真实例化 Main.tscn:装配关系 + 交互链(含炸药 / 相机三档 / 地图数据驱动 / 敌人驻守与支援)
解析 / 导入自检 --import— 通过 脚本能编译、场景能加载
真启动冒烟 --headless --quit-after 90— 退出码 0 真主场景 App.tscn 跑起来无 ERROR
门禁也会「空跑通过」 :App 起不来 ⇒ 一屏都没注册 ⇒ 零重叠零失败,看着像全绿。
所以外壳门禁加了两道自检:屏幕注册清单体检 + 「这一屏必须真的采集到可见控件」 。
另外跑批里「子进程没起来」按 失败 计,不再算「跳过」——历史上把跳过的红当成绿提交过。
七、未来计划(严格按文档,不自创)
7.1 22.10「第一版范围」的完成度
22.10 原文口径 工程实际 进度
2 个阵营 (泛亚 + 蓝方)
工程里没有阵营系统 ;首版大厅不列 阵营选择(列了就是空壳按钮)
🔵 未做 (待拍板:4 选 1 / 2 选 1 / 整块不做)
1 张地图 (grassland_demo 1 km × 1 km)
已落地:1000×1000 / 1 m 网格 / 最大海拔 150 m,自制灰度高度图可导入
✅ 已做
3 个模式 (PVP 竞技 + PVP 休闲 + PVEVP)
已落地并可选;三个模式的规则差别全接线;另外 3 个模式置灰写明理由
✅ 已做
人数与编成 (PVP 20 v 20 / PVEVP 4P v 30E / 4 人战斗小组)
已落地:模式定人数(PVP 20+19 / PVEVP 30+3)· Organization 组 4 人 / 一小队 ≥2 组 ·
SquadOrders 主线 → 小队长 → 组任务 · 队友按组任务行动 · 敌人按节点驻守 + 东侧预备队
✅ 已做 (第四十九~五十四 / 六十三版;单跑 Main.tscn 仍回落 2+3)
1 张地图 (第一张 正式图 )
已落地「青岭走廊」并成为默认对局地图(第五十五 / 五十九版):五节点 / 河谷 / 三条道路 / 235 遮挡体,
validate ERROR 0 / WARN 0;出生区与白旗点都读地图数据
✅ 已做
7.2 下一批建议(来自 本项目开发进度.txt 四、接下来)
优先级最高 真机「渲染 vs 仿真」判别 :已知大厅 60 fps、20v20 对局 ≥7.6 fps,
但主项在哪一侧还没判 —— wm size 降分辨率(渲染侧)与关掉 AI(仿真侧)两组对照就能定,
不做判别直接优化等于蒙。
再出一张不同地形的正式地图 (城镇 / 山地,按第五十五版那套流程)—— 也顺带验证「一张图调好的参数是否通用」。
内容层观感 (需拍板):正式图 material.png 解出 205 片碎圆饼(雪 139 / 草 61)。
炸药自己的三条尾巴 (需拍板):自伤口径 · 投掷形态 · 安放时间与起爆倒计时。
地图数据剩下两项 :rally_zones(要先有 RALLY 集结点系统)与 flags 的压制圈 / 进入通道条数
(接法与白旗点 / 出生区相同)。
编成线的下一步 :兵棋模式人数与编成(需拍板)· 22.7 的压测梯度按 20 v 20 复核。
7.3 docx 20.6「文档里有设计、工程为零」——可直接当任务清单
条目 状态
4.1 五节点 RAAS 的推进细则与单局计时 🔵 未做
4.4 剩余部分:RALLY 集结点 · 兵力续航区与预算 🔵 未做
4.8 信誉分 🔵 未做
第九章 单兵装备与资产体系 + 资产 CSV(17 个装备槽) 🔵 未做
12.7.1 人物帧动画 · 12.7.2 载具履带 / 后坐 · 12.7.6 帧规格表 🔵 未做(需美术)
8.3 载具数据存储的正式方案 🔵 未做
4.12 发烟弹 / 白磷来源 + 表现层真遮挡混合 🟡 部分
11.4 对局外界面:阵营选择 · 组队 · 好友 · 仓库 · 高光录像 · 匹配 🟡 大厅与模式选择已做,其余未做
5.3 除 PVP 竞技之外各模式的胜负表 ✅ 第四十七版划掉
4.13 / 4.14 / 4.15 / 4.16 / 4.17 五节 ✅ 第三十~三十三版落地
4.10.11 模板池剩余 5 条 · 4.4 的 FOB 与补给 · 12.3 阴影 · 10 章音频 ✅ 已落地(各自未完项见 docx 20.5)
7.4 待拍板(需要使用者定,工程不替用户决定)
编号 问题 工程当前处置
㊱ 「竞技 / 严格对抗」到底包含哪几个模式? 原文只写「只有竞技 / 严格对抗才关闭 AI 参谋」,
而休闲「与竞技同表」、困难「同竞技」、兵棋在 13.1.2 与竞技并列禁用共享皮肤
待拍板 只有 PVP 竞技关闭,休闲 / PVEVP 开放
㊲ AI 参谋在竞技模式下的可见性 :入口按钮仍可见(点开只得一句「已关闭」)
待拍板 不隐藏入口,只写提示
㊳ PVEVP 的「VP」那一半 (21.3.8 明确「无来源、待撰写」)——战术目标体系要正式定标
待拍板 占位:完成当前主线任务(本版=夺下第一个节点)
㊴ 首版大厅的阵营选择 :11.4 列 4 个,22.10 只做 2 个 —— 4 选 1 / 2 选 1 / 整块不做?
待拍板 整块不做
新增 模式差异要不要再拉大? 当前差别全在「规则层」;若要做「编成层」差异(步兵对抗 / 装甲对抗:有没有载具、坦克几辆)需在 ModeTable 加字段并接线
待拍板 未做
㊵ 「4 人战斗小组」与 4.10.8「小队 = 5 人」的关系 —— 已结清:组 = 4 人、一小队 ≥ 2 组
✅ 已结清 (第四十九 / 五十版落地;docx 4.10.8 与 21 章同步改口径)
㊶ 兵棋模式的人数与编成 :使用者只拍了 PVP(20 v 20)与 PVEVP(4P v 30E)
待拍板 模式表该行标「未定」
㊷ 22.7 / ㉑ 的旧规模口径要按 20 v 20 复核 :原文写「32v32」「压测 1 / 16 / 32 人」「1 个 16v16 房间」—— 20 v 20 的房间是 40 人
待拍板 未改(等确认)
㊹ 20 v 20 的 AI 阵营不平衡 —— 第六十四版量清了根因:Enemy 的 AI 只锁玩家、从不打队友 ,
而队友会打敌人 ⇒ 单向屠杀(节点 3 名守军 0.5 s 被清光、19 名队友零阵亡)。第六十五版按拍板 B 让敌人能打队友了,
但**实测友军仍然零阵亡** ⇒ 真正的瓶颈是队友火力密度与 AI 反应
待拍板 怎么配平:队友降火力 / 给敌人驻守姿态与掩体利用 / 缩小队友编成
㊿ 敌人要不要能打队友
✅ 已拍板 B 并落地 (第六十五版:按最近的可见目标选敌,玩家与队友同权)
㊺ ㊻ ㊼ 炸药的三条尾巴 :要不要给自己人吃爆炸伤害(第一版有意不打自己人)· 要不要投掷形态(与 4.12 投掷物同一套)· 要不要安放时间 / 起爆倒计时
待拍板 现状:只打 enemy / fob_enemy 组 · 只贴放 · 都是瞬时
㊽ 地形内容层的表达方式 :正式图 material.png 解出 205 片(泥 5 / 雪 139 / 草 61),每片画成等面积圆 ⇒ 观感像一地碎圆饼
待拍板 A 调大 MATERIAL_MIN_CELLS · B 改多边形 / 逐格查询 · C 保持现状
19 ① 逻辑分辨率与 PPU:文档 1920×1080 + 64/32/16,工程 960×540 + 32/16/8 保持工程口径
19 ⑥ 数据表规模口径:文档写全量、工程按切片(任务模板已结清) 已扩到武器 25 / 载具 18
19 ⑨ 4.8 信誉分是否进第一版 只有战力分,无信誉分
㉛ / ㉜ AI 参谋的 key 是否上 Android Keystore · 是否做流式(SSE) 混淆存放 · 非流式
— Enemy.detection_range 保留 20 m(近视)还是退回 120 m
✅ 已是 120 m (Enemy.gd 默认值,无场景覆盖;测试用例里单独设 60 m)
7.5 工程债(docx 20.5 · 已修 / 仍欠)
条目 状态
真机 20v20 只有 ≥7.6 fps (大厅对照 60 fps ⇒ 不是设备限帧)
🟡 第六十五版登记 · 待「渲染 vs 仿真」判别后再优化
内容层是等面积圆 :正式图解出 205 片(雪 139 / 草 61 是碎块),观感像一地碎圆饼
🟠 待拍板
地图的 rally_zones 与 flags 压制圈仍未读进工程
🟡 登记未做
Main.gd 破线 403 (第五十一版结构值接线后超 ≤400 硬线)✅ 第五十六版拆出 PlayerFireController 后 337
ATGM 载具 2000 m 拖拽上限 (常量在、但根本没接上,实际一直用 500 m)✅ 第五十八版已接并做出三档
地图工具链两个盲点 (不压平出生区 / 校验只看顶点)✅ 第六十二版已修
HUD 控件重叠 6 组(含 3 组「有意」、3 组「无意待修」) 🟡 已建基线,逐条定案
地图报点与准心报点的通视口径不一致 🟡 登记未修
烟雾表现层不是真遮挡(程序绘制圆饼,后生成的单位画在烟上面) 🟡 登记未修
敌方载具 AI 被烟挡住后没有盲射路径 🟡 登记未修
载具里镜头与准心不跟车 🟡 登记未修
软键盘弹出顶掉面板下半部分 🟡 登记未处理
16 辆新载具与 20 把新枪的模板值未做平衡校验 🟡 登记未做
音量设置界面(AudioSystem 头部自述「未做」) ✅ 第四十七版已修
操作提示开关(HudBuilder「设置界面后置,先给 API」) ✅ 第四十七版已修
全工程字体隐患(全角标点豆腐块) ✅ 第四十四版已修
面板翻页死区 / 「清除 key」误删 ✅ 第四十四版已修
八、这一页的数据从哪来(可复现)
数字 取证方式
176 个 .gd / 31338 行 LF 字节口径统计(不含 addons/ gdtoolkit/ .godot/),用只读检查脚本与本机实测交叉核对
52 / 1876 · 5 · 25 · 21 · 263 本轮真跑:run_tests_headless.gd + run_integration_headless.gd +
geom_assertions.gd / screen_geom_check.gd / scale_wiring_check.gd,取日志汇总行,退出码均为 0
真机 ≥7.6 / 60 fps 平板 PCE-W30:测量专用包(引导脚本按 PVP_RANKED 起对局)+ 引擎自报逐帧 delta 的 p50/p95/p99;
dumpsys gfxinfo 对 Godot 无效 (SurfaceView 不进 HWUI,永远 0 帧)—— 详见 docs/性能预算.md 十二节
版本 / git HEAD git log -1
数据表行数 直接数 data/*.txt(含表头)
同步的文档(本轮一起改的)
jieyu-1/本项目开发进度.txt —— 唯一进度入口(抬头 + 三、当前状态 + 四、接下来 + 六、其他待办 + 七、已知待拍板 + 【第四十七版】版本段)
squad-2d/解域游戏.docx —— 第二十章「工程实现现状」20.1~20.6 + 第十八章已确认决议 + 第十九章待确认决策(新增 ㊱~㊴)+ 22.10 工程落地注(改前备份 解域游戏.docx.bak102)
jieyu-1/docs/游戏外壳设计.md —— 外壳的落地规格(发布说明 / 文件清单 / 跳转图 / 模式差异 / 设置生效点 / 边界条件 / 验收数字 / 未做与待拍板)
jieyu-1/architecture.html —— 本页(第四十七版刷新;此前停在第三十五版口径:845 项 / 397 行)
《解域》jieyu-1 · 所有数字为本机实测(未实测的一律标注为「计划 / 待拍板」)·
设计口径以 squad-2d/解域游戏.docx 与 jieyu-1/本项目开发进度.txt 为准。