下载 App
庇护所游戏公社的开发日志【第六篇】
修改于8 小时前97 次播放综合
开发日志 · 2026-10-20
覆盖 10.18~10.20 三个工作日的改动:数值平衡、城战 AI、武将互通、UI 体验四个方向,共 9 项落地、2 项待办。



一、武将与亲兵强度重制(10.18)
背景:玩家反馈局内武将+亲兵过强,屠戮小兵如砍瓜切菜,兵种配合失去意义。
诊断:局内武将强度由五部分构成(站撸伤害、扫击/横扫、武将互砍、血量、马速),斗将与局内数值天然隔离——斗将只读 mb_params.DUEL 表,完全不引用局内的 CHAMPION 表,这给削弱留出了安全的操作空间。唯一的共享点是局内武将互砍的伤害折算直接引用 DUEL.baseDmg。
方案:经确认采用“输出+血量都 ÷3、武将互砍也 ÷3":
- CHAMPION.hpMul 3→1(血量 3150→1050)
- 新增 CHAMPION.fieldDmgMul=1/3,在 mkHero 缩放攻击基数(站撸/扫击/城头/下马全链路一次覆盖),toField 乘同一系数处理武将互砍
- 亲兵 guardHp 1.6→0.53、guardDmg 1.5→0.5
结果:斗将零影响(DUEL 表一字未动),改动脉冲集中在调参表,后续手感微调只动数字。
二、城务任职弹窗滚动修复(10.19)
背景:玩家截图反馈“城务任职页面无法滑动选择其他人"。
诊断:两轮排查。第一轮静态推理(手势链路、输入桥、Gesture→Pan→ScrollView 全链路完好)无果;第二轮写临时测试页注入与真机完全相同的触摸序列,布局树 dump 直接暴露真相——U.modal 的“末尾导航按钮移出滚动区”逻辑会把末尾所有连续带 onClick 的节点移出滚动区,选人页的 12 个武将按钮全被移出,ScrollView 视口被挤到 20px(minHeight 兜底),内容溢出渲染但无法滚动。
修复:末尾连续 onClick 节点 ≤2 个才视为导航按钮移出;更多说明末尾就是列表项,整体留在滚动区。实测视口 20px→492px、拖动滚动正常。此修复同时惠及商队目的地、军令目标等所有复用该弹窗框架的长列表。
教训:静态推理穷尽后应尽早转向“注入式实测”——自动化触摸序列 + 布局树 dump 一次定位,比继续读代码快得多。
三、士气系统与攻城体验(10.19~10.20)
背景:玩家反馈“攻城没一会全溃了,武将打一半跑到后面去接后部"。
诊断:
- “跑后面”是既有设计(攻城攻方武将默认压阵 + 血量 <30% 强制后撤 500),血量削弱让触发频率暴涨
- “全溃”的量化链:每员武将阵亡全军 -8 士气,七将全灭把全场从 70 压到 14(溃逃线 12);叠加本营伤亡扣士、箭雨、600 内友营溃逃传染(-4/营),成片雪崩;溃兵 10 秒后脱离战场造成“人跑没了”
- 结构性错位:武将压阵后方,450 光环罩不住城墙下最需要士气的前线营
修复(用户选定两项):nearRout 4→2(传染减半,雪崩从全场引爆变局部蔓延)、escapeT 10→16(溃兵留场更久,给重整留窗口)。
四、围城 AI:解围支援(10.20)
背景:玩家反馈围 AI 城时“AI 不反击、AI 不来支援"。
诊断:城内 AI 部队在 lordThink 直接 return(零主动逻辑);解围逻辑存在但三道门卡死——城内部队不参与、个体解围只认 260 距离、军团只认 300。
修复:
- relieve 距离 260→550(P.RELIEVE_RADIUS),军团解围同步放宽
- 新增日结算驰援判定:本方邻城被围且战力达标(≥围城者 0.8)时,驻军提前结束驻留出城,出城后 AI 自然接手 chase 围城者
- RELIEVE_MAX=2:同一围城部队最多同时吸引两支驰援,防倾城而出
五、守将开城冲锋 + 守军布防调整(10.20)
背景:玩家提出的城战规则需求(云梯登墙、城外交战、远程风筝、守将战术),经可行性梳理后分期实施。
落地:
- 守将冲锋:新增 generalSortie——玩家守城点“突击”即开城率军杀出(墙上部队下墙、城内预备队穿门而出);AI 守将在守军兵力 ≥1.2 倍攻方时按概率主动冲锋。收兵条件完备(门外无敌/折损过半/90 秒),收兵后交回常规守城 AI
- 布防调整:wallShare 0.7→0.4,守军主力转向城内外陆地交战,城墙保留精锐步弓
- 远程风筝:核实后确认已有完整实现(阵型态退 180 + 散兵态 0.55~0.92 射程带),未改
六、武将互通(10.20)
背景:玩家反馈酒馆招募的武将可自行安排,招降的敌将不行。
诊断:招降敌将走 st.lords(“独立领军,不占同伴名额”的 v1 设计),而城务任职只扫 st.companions。
方案(a+b 组合):
- 任职互通:city.offices 用负数编码 -gid 表示麾下将领(正数同伴,旧档零迁移成本);将领任职时自动交回所领部队,卸任回待命池;收益计算按将领智力/统率与同伴同规则
- 指派互通:新增 S.assignLordToParty,麾下将领页待命将领可手动指定接掌哪支无主部队,系统自动分配照旧兜底
- 一致性收尾:处斩在任将领自动清空官职;麾下将领页新增“任职中”状态显示
七、AI 不攻玩家的中期真空(10.20)
背景:玩家反馈自立为王初期有人来攻,后期天下太平,游戏枯燥。
诊断:三条路径全查——AI 追猎需 1.3 倍战力(玩家变强后永不触发);月度外交宣战后未设 posture="expand",AI 只宣不打(真 Bug);coalition 门槛高(称王+16 城+80 天);攻城目标选择对玩家城无加权。
修复(A+B):宣战玩家后宣战方姿态置为扩张(宣战即真打);siegeTargets 对玩家城 score×0.75(math.min 保证负分场景也只增优先度)。C(coalition 门槛下调)与 D(追猎放宽)保留为后续选项。
八、长页面滚动位置保持(10.20)
背景:玩家反馈升级、买粮、练兵等页面点一下就跳回顶部。
修复:M.refresh 重建前后按遍历序保存/恢复所有 ScrollView 偏移,用 SetScrollDirect(免 clamp)在布局完成前写入;弹窗类(城务选人等)同样处理。连续买粮不再被拉回顶部。

九、更新公告(10.20)
新增 release_notes_20261020.lua,五个板块对应上述改动,update_notice.lua 切换引用;启动自动弹一次的机制无需改已读逻辑。


参数速查(本批新增/调整)
| 参数 | 值 | 位置 |
|---|---|---|
| CHAMPION.hpMul / fieldDmgMul | 1 / 1/3 | mb_params |
| CHAMPION.guardHp / guardDmg | 0.53 / 0.5 | mb_params |
| MORALE.nearRout / escapeT | 2 / 16 | battlecore |
| P.RELIEVE_RADIUS / RELIEVE_MAX | 550 / 2 | mb_params |
| T.SIEGE.wallShare | 0.4 | battle_tune |
| siegeTargets 玩家城偏向 | score×0.75 | mb_ai |
遗留事项
- 云梯 + 夺门(城战规则大件):固定登墙点约束攀爬、登城部队城头夺门开门放行主力。矛盾点已拍板走“夺门”折中,工程待启动
- coalition 门槛下调(16→10)与 hunt 放宽:实测中期压力不足时再启用
- AI 守将冲锋频率:当前 1.2 倍兵力+25% 概率偏保守,需玩家实测校准
- battlecore.lua 4950 行,构建工具持续警告超长——建议找时间按士气/城战/野战拆分
实测关注点
- 武将削弱后的攻城节奏(是否矫枉过正)
- AI 守将冲锋的触发观感(是否会“送人头”)
- 解围驰援的频率与规模(最大 2 支是否合适)
- 自立中期诸侯来犯的压力曲线











