一字成兵在线开发文档开发交接

一字成兵工程与配置表实施方案

2026年10月27日 开发交接 v2.0/总规划 v6.0 对应实施版

沿用 OH 工程的配置生产与读取框架,在新项目仓库建立独立业务表。基础框架迁移、玩法逻辑开发和策划配数分别验收;不将现有网页原型中的 JavaScript 常量作为正式配置源。

本方案已核对 OH develop 提交 304b8ce7e2fa6ee19dc708a22491abd830d87abe(2026-10-22 17:15:23 +0800)的代码、源表及已提交导出件,并对照公司《配置表框架规范_沿用OH_20260823》。下文 YZ 前缀表名、字段及新增条件处理器均是新项目建议结构,尚未生成正式源表或接入运行。用户已确认20261027数值方案;本页更新对应字段与运算契约。OH导表、双端接入与用户实玩验收仍需分别完成。

20261027规则已确认 · 代码、发布与实玩验证分别记录

01对原开发需求的修正

原文不足 本次修正 对开发的影响
只要求提供表格导入 明确复用五行表头、ExcelOutput、双格式输出与配置读取层 不另造 CSV 导入器或让策划维护 JSON
全局规则混放经济、时钟、战斗 分为账户 Global、战斗定义、模式定义、关卡难度、奖励与广告 同一数值有唯一主责表,避免逐关覆盖全局出兵
字、开口、随机、费用混成一张 字定义、开口形状、供牌池、定向牌序和价格分开引用 12字×8形状无需手填96张牌,改概率不改属性
单位只有一张组合总表 区分单位底板、武器、字层、形态、武将技能、成长及敌军构筑 不枚举“刀×3盾×2”的所有派生兵种
敌军属性可写层数或显式值但缺模式 明确构筑型与显式教学型互斥,拒绝重复乘层数 避免敌军数值悄悄翻倍或弱化
登录、广告等看上去全部重做 优先迁移现有基础模块;业务条件、渠道账号与奖账重新适配 表里写功能名不能自动产生新功能
只提导出版本未规定全过程 补上源表检查、导出、双产物对账、读表、回归及发布快照 导出成功不等于代码已读取或正式生效
引擎完全开放选型 默认先以现有 OH Unity 工程裁剪迁移做样例验证 若改技术栈,仍沿用表契约,并单独估算运行框架移植

02已核对的 OH 工程分层

层次 OH 当前证据 一字成兵处理
启动与资源 Runtime/Boot、MiniGameResSys、资源版本与文件清单 优先复用加载、版本、失败恢复;替换项目资源地址与发布流水线
渠道接入 CopySrc 内有 ZMY_Mini_WX、ZMY_Mini_DY;启动层有 SDK 接口 复用适配模式,检查新 AppID、登录与视频回调;不能复制凭证或声称已验收
通用运行框架 Core 的页面、UI、资源池、事件、定时器;ViewModels 与 VMProperty 复用页面生命周期、UI绑定、池和事件;战斗时钟另设可暂停模拟时间
配置访问 MgrFacade.Cfg → CfgMgrProxy → CfgMgr → CfgLoader/文本资源 保持表名+ID+字段读取,项目扩展层输出有单位的类型化参数
功能与背包 FunctionMgr、ConditionUtils、BagVM、AdVM 等业务模块 复用结构与交互,剥离 OH 专有活动、复活、背包道具逻辑
玩法实现 Business/HoleGame 的黑洞、物件、场景和关卡实现 不当作造兵战斗直接复用;新做棋盘、线路、双武器、技能与模式流程
服务端配置 Lua ConfigMgr、ConfigLoader、VariantConfigLoader 保留权威账本边界;如果沿用服务器,接新业务;若更换后端,适配同一产物

配置访问不是自动生成全套业务代码。客户端以整表缓存并按字段读取,代理会处理实验后缀;新表需要登记/检查加载分类,新增字段需要玩法模块明确消费。纯客户端表必须进入客户端映射,不能因漏登记被默认当作 normal 表。

现有 ConditionUtils 此处核对到的直接注册是关卡解锁/通关/创角天数等条件。累计胜场、历史最高积分、武将拥有等新条件,必须补对应处理器和数据源;不能在 Condition 表写一个新字符串就算实现。其他旧条件如有 Lua 分支亦须逐一核实。

服务端读取器能识别带头数组与旧字典两种格式,不能把“diff_Config 一定是服务端专用”写成硬规定。新项目发布清单要指定服务端实际消费哪种产物,并保证与客户端来自同次导出。

03基础功能与基础表

下列是复用骨架并按新项目填数据,不是把 OH 全部工作簿原样搬过来。

工作簿与工作表 配置内容 需要程序补齐或适配
Global.xlsm/Global 初始金币0、将签0、体力30,恢复上限30、每点300真实秒,日界04:00 单行账户参数;不要复制 OH 当前600秒/25等旧业务值
Item.xlsm/Item 金币、体力、将签、四将专属碎片的ID、名字、图标与上限 资产账本与展示;建造点是局内状态,不接局外背包加奖
OpenFunction.xlsm/OpenFunction、PopWindow 20261027当前配置见字段字典与总规划v6.0 不继续使用历史基数、训练与奖励公式
Trigger.xlsm/Condition、Trigger 胜场、最高积分、首次招募等条件与解锁事件 新条件/事件处理器注册,未知函数导出前报错
Guide.xlsm/Guide 前4场引导步骤、目标、暂停与遮罩 指向新UI路径;第5场起无最优路线强提示
GamePopQueue.xlsm/PopQueueType、PopTask 首登、回城、解锁、奖励的队列与优先级 新弹窗任务类;不把程序类名当策划可任意发明的字段
Ads.xlsm/Ads、AdsDefine 广告位置、开关、每日限制、播放类型 复用展示与SDK流程;奖账、局内牌许可和45秒前台时钟另适配
EventTracking.xlsm/TrackingSource、TrackingButton 登录、开局、改线、供牌、广告、结算等事件来源 补新业务事件;避免沿用 OH 的关卡失败编号口径
config/client 下音频与展示表 AudioConfig、AudioSetting、CurrencyDisplay等 表名登记客户端分类;替换音频和图标引用
config/string 下业务文案与 String 总表 StringConfig_YZBattle/YZHome/YZGrow 等新业务页 沿用 Lang 收集与 FinalString;不在UI脚本中复制长文案
Schedule.xlsm/ScheduleConfig 以后有定时活动时使用 本期塔是常驻模式,日界不要求伪造一个活动日历
Activity、Shop、Charge、Task 等 本期不新增对应业务时不迁入其整套内容 不因旧工程有充值、签到、公会、任务就扩大首发范围

功能开关、解锁条件、弹窗展示分层。体力恢复上限与 Item 的持有上限是两件事,不能混用。Ads 的日次数与构筑许可也分层:卡牌视频成功不是向背包发一张免费牌。

04目录与日常配表流程

策划源表放在新项目 config/normal/main;客户端表现表在 config/client;文案走 config/string。导出保留 Config 与 diff_Config 两份产物,文件名以工作表名为准。新建玩法工作簿统一 YZ 前缀以隔离 OH 原有表名。

步骤 执行人 完成条件
1 拉取并核对 程序/策划 项目分支、源表与导表工具版本确定;不覆盖别人未提交内容
2 改源表 策划 只改批准字段,说明写单位、范围、引用、默认值;结构改动与程序共同确认
3 Excel重算保存 策划 公式结果不是空缓存;费用取整与预期一致;重复ID、悬空引用先检查
4 运行导表 程序搭好入口后由策划执行 使用固定版本 ExcelOutput;正常配置输出 -v 4 和 -v 7;产物目录互不覆盖
5 处理文案 策划/本地化 Lang变更先收集;FinalString专用流程按当前脚本 -r 4,不能套普通表行号
6 比对产物 自动校验+程序 两份产物逐记录语义相同,改动字段确实输出,非预期表无变化
7 客户端与服务端读回 程序 两端读相同配置版本,引用解析成功,错误不静默用0
8 场景与公式回归 程序+策划 单位计算、波次、价格、广告、成长、结算用例通过;再真机试玩
9 提交和发布 程序 源表、双产物、必要代码/资源、工具版本与变更说明成套提交;对局锁配置版本

本次没有运行 Windows/.NET 导表器,也未构建 OH 或新小游戏;已检查的是仓库现有源表、导出件及读表代码。首个开发里程碑必须在程序电脑用真实工具完成最小新表导出回归。

当前导表 README 明确两种输出使用 -v 4 与 -v 7(兼容别名 -v 1),手动指定路径要分开导出。仓库 ExportAllNormalConfig.bat 仍出现 -p \client\ExtAssets\Lua\ -a 的旧路径形式;不应直接复制进新项目就当可用。程序需用一张样表确认表内宏/批处理实际目标,再交付新项目固定入口。

导出器是 .NET Framework 4.6.1 成品,不能承诺在 Mac 原样双击运行;策划在 Mac 编辑可保留流程,但正式导出安排到已验证的 Windows 环境/构建任务。不要为绕过环境临时写一个不兼容的导出器。

05表头和字段约定

Excel行 新表填写规则 例子
1 英文字段;普通字段前两行纵向合并,结构体写组名横向合并 id、hp_base_fp;结构体 reward
2 结构体子字段;普通字段合并后无额外子字段 item_id、item_count
3 Normal、Array、Lang、Table或规定组合 数组用Array;结构体子字段Normal;Normal
4 int或string 小数不用自造float类型
5 中文含义、单位、范围、引用与0含义 “模拟毫秒;>0;9000=9秒;非按关覆盖”
6起 普通业务数据 id不能为空;嵌套续行例外

说明页用 __ 前缀。备注列第1和第3行留空;不能仅起名“备注不导出”。数组单元格以 ; 分隔。Table 表示同一ID多行聚合,不是外键类型;跨表ID通常为 Normal/int或Array/int,在第5行注明引用并由校验器检查。

两种分隔符不可混淆:结构体模式 Outer;Inner 用分号;Table,Array 是嵌套数组模式用逗号;数组值仍用分号。普通行ID为空忽略,但嵌套表空ID续行不能被通用脚本丢弃。

实验使用基础字段加 _编号字母 后缀;平台微信/抖音不是实验分组。新版工具仅识别第一行、最后一段“数字+小写字母”且基础字段存在的变体:整字段空继承、显式0保留、部分填写不逐单元格继承。客户端代理与服务端按玩家分组选择;实验归组、覆盖优先顺序与快照必须两端一致。首发不需要为了演示而占用任何 OH 实验编号。

数值类别 建议存法 示例与读取
时长 int毫秒,字段写明模拟/真实 spawn_ms=9000;route_step_ms=850;energy_recover_sec=300沿用Global秒单位
比例与概率 int万分比 _bp 字层增量=2000;固定减伤=3300;对兵/对城=10000;读取÷10000
属性与逻辑距离 int定点 _fp,统一1单位=10000 生命42→420000;刀16→160000;逻辑速度55→550000;无物理米含义
货币、层数、次数、ID int整数 建造25、刀3层、5阶、初始点125;不套万分比
概率池 int相对权重 同一抽样阶段内先筛资格再归一化;别把跨池权重一起加
展示和备注 string/Lang 名字与提示走Lang;程序资源地址为普通string

定点是交换格式建议,不代表每步战斗都取整。读入转换一次,战斗内部精度和计算顺序保持现有规则;伤害仅展示时取整,费用按指定floor/round取整。训练直接读取1—163级逐行实际值,不叠乘旧指数成长。新增固定精度实现如与原型有误差,必须出差异测试后再批准。

属性定点字段使用十进制整数字符串以避免32位溢出,客户端/服务端读取层转为宽数值;当前字典的string是交换契约,正式OH导表和双端读回仍需实现验证。不是把全局换成32位int。

06玩法表总目录

当前36张逻辑表、303字段,职责与引用如下;详细字段、单位和校验见配置字典。新增业务处理器必须在代码注册。

表 工作簿 职责与说明
YZBattleDefine YZBattle.xlsm 规则20261027:对兵/对城10000;基础间隔1500ms,最小500ms,最慢比例2;生产9000ms,运输850ms。
YZMode YZBattle.xlsm 教学/AI/塔/试用;共享出兵,限时与结算区别由模式配置
YZCardShape YZCard.xlsm 8形状;方向上1右2下4左8;合法mask=3,6,9,12,7,11,13,14
YZLetter YZCard.xlsm 12单字;姓名散字不加属性;成首将扣身份2层后其余姓名每层500万分点加生命近远攻;骑每层移动1800,攻速因子0.8+0.2H。
YZCardEconomy YZCard.xlsm 当前12000、10、2、30、5、6000、30、5、5;涨价计数属于运行时
YZCardPool YZCard.xlsm 抽牌类型/字类别/具体字/开口分阶段;原94%字牌、字中68%基础;三口概率模式不同
YZCardScript YZCard.xlsm 教学与试用专用;固定顺序仍从规则扣费用
YZUnitBase YZUnit.xlsm 基础属性来自训练表;裸兵生命为盾训练×0.64,徒手为刀训练×0.4;不保留旧42/8常数。
YZWeapon YZUnit.xlsm 刀/弓训练初值15/9,射程50/220;攻击用训练表,不叠旧16/14;无弓不远攻,最低武器资格例外。
YZCombo YZUnit.xlsm 刀盾C1、额外近攻+.50、33%固定减伤;骑射C1.5、攻频1、射程320。
YZHero YZHero.xlsm 四将系数与技能见v6.0;张飞生命为加法+0.80;首次身份消耗姓名各1层,额外将字才加属性。
YZSkill YZHero.xlsm 显式实现4将和精英有限技能,不开发通用脚本语言;技能副目标独立结伤
YZLevel YZLevel.xlsm 前20保留地图/路线/地形教学;1—4用原教学敌军构筑与波次,5场起用预算AI;全部普通属性/双方城血/奖励读新表,16场不固定姓名供牌。
YZDifficulty YZLevel.xlsm 塔和试用独立的城血、资源、波次预算;普通对战改用YZNumericDifficulty。
YZBoard YZLevel.xlsm 6×6;0—2石头;坐标0起;不预铺路线
YZBoardObstacle YZLevel.xlsm 不占营地;按种子生成并校验可玩性;营地和格坐标不是美术像素
YZEnemyPreset YZEnemy.xlsm 构筑模式调用同一属性计算器;字层与主形态显示规则同我方
YZEnemyExplicit YZEnemy.xlsm 仅塔精英/独立试用明确面板;普通新手不再沿历史显式面板。显式面板不重乘字层,命中目标倍率1。
YZEnemyWave YZEnemy.xlsm 用于获批的前1—4教学、塔和独立试用;普通第5场起用YZAIProfile,9秒整周期按时间段预算连续生成。
YZMatch YZMatch.xlsm 展示分数不放大敌属性;有效胜场决定内部难度,失败不退;调试独立,不推进正式记录。
YZNamePool YZMatch.xlsm 模拟对手昵称池;匹配引用pool_id;不伪造真人在线状态
YZRank YZMatch.xlsm 初始50小段;末端无双使用公式编号;首次奖励和最高分由服务器维护
YZTraining YZGrowth.xlsm 四项独立1—163级;逐级属性读取实际表值,不使用统一1.05或骑伤害成长。
YZTrainingLevel YZGrowth.xlsm J行价为J→J+1;四项费用加总,不用原K覆盖;保留十级回落。
YZHeroStar YZGrowth.xlsm 1—5星,1/1.05/1.10/1.15/1.20;10/20/40/80费用;片种由武将引用
YZRecruitDefine YZRecruit.xlsm 1签、10抽保底、重复10片;免费赵云不进普通保底计数
YZRecruitPool YZRecruit.xlsm 普通赵云85%组、稀有15%组;组内资格过滤;满材料移池;全满停抽
YZReward YZReward.xlsm 普通按本局冻结难度计奖;放弃/未完成/无造兵/前4免费败0;失败180秒满额;塔不混用。
YZAdRule YZReward.xlsm 引用Ads;新增系列/三口许可、资源补给和结算加奖分别走业务处理器
YZTowerDefine YZTower.xlsm 当前150、600、60、50、30、10600、10300、3、5;保留全局生产与移动
YZTowerFloor YZTower.xlsm 前30层固定;31后按定义计算;不重新随机破坏已铺地图
YZElite YZTower.xlsm 甲卫、冲车、旗手替换该层首人,不额外叠一队
YZTactic YZTower.xlsm 8战术;数值类型互斥;下一层生效,旧战术先算清层奖
YZView YZView.xlsm 兵种、武将、卡、塔精英复用;美术仅改表现,不覆盖攻击距离或命中时刻
YZNumericDifficulty YZNumeric.xlsm 普通163档;敌城Q(C)×F,我城Q(玩家盾训练)×F;163后复用末档。
YZAIProfile YZNumeric.xlsm 84段原表;0/10/20/30/50/80/120边界,左闭右开;首波9秒,每波多兵同时出;三个余数流独立且跨段保留。未引用组不启用。

07单位属性如何配置与计算

训练、星级、配置、随机种子与参考攻速在开局冻结。账号持久数据由服务器管理;运行状态保留真实字层、首个组合与主将、当前生命及技能计数;所有派生属性走同一入口。

2.1 基础属性与字层

K、B、S、H为兵身真实刀、弓、盾、骑层数。L(n)=0.4+0.6×min(n,1)+0.2×max(n−1,0),0/1/2层分别0.4/1/1.2。主将星级倍率Z依次为1/1.05/1.10/1.15/1.20;未成将Z=1。G为额外将字比例。

属性 已确认公式
近攻 刀训练值×身份攻击系数C×[L(有效刀层)+近攻额外加成]×(1+G)×Z
远攻 有有效弓时:弓训练值×C×[L(有效弓层)+远攻额外加成]×(1+G)×Z;没有有效弓时为0
生命 盾训练值×[(0.8+0.2S)²+身份生命额外加成]×(1+G)×Z
有效攻速指数 骑训练值×(0.8+0.2H)×身份攻频倍率;是指数,不是每秒攻击次数
每武器攻击间隔 max(0.5,1.5×min(本局参考骑训练值÷有效攻速指数,2)) 模拟秒;近远各自计时
本局参考攻速 普通对战按内部难度C列对应的骑训练值,开局冻结,敌我共用;塔/试用依自身冻结参考值
将字G 未成将时为0;首个主将消耗名字各1层作身份,其余所有姓名层每层+5%生命/近攻/远攻,不加攻速
全局目标倍率 对兵1.0、对城1.0;普攻与技能追加每目标结算一次
战场移速与运输 移速55×0.85×(1+0.18H);棋盘每格0.85模拟秒,骑训练不改变运输/产兵

黄忠有效弓=max(真实弓,1),关羽有效刀=max(真实刀,1),只提供武器资格,不赠真实层或基础组合。兵种额外攻击在首次成型即生效,不放入多层分支。不叠旧训练倍率或骑训练伤害;盾训练影响有盾与无盾生命。

正攻击命中伤害=max(0.1,面板攻击×技能倍率×目标倍率×攻击增益×目标类别战术增益×剩余承伤比)。保留精度,统计不计过量伤害;直接减伤仍按既有上限85%。刀盾固定减伤在受击时计算,不是随机免疫。

2.2 组合与武将

身份 攻击C 攻频倍率 生命额外加成 其他能力
普通 1 1 0 按字层计算
刀盾 1 1 0 近攻额外+0.50,固定减伤33%,远攻额外0
骑射 1.5 1 0 射程320;不再额外翻倍攻频
赵云 1.8 2 0 持续单体快攻
黄忠 1.65 1.65 0 射程350,贯穿最多1额外目标,原击40%
张飞 1.8 1.35 +0.80 每第4次有效近攻短控0.4秒,Boss0.2秒
关羽 1.8 1 0 每第3次有效近攻横扫最多3额外兵,各原击150%

首个完整名字锁定主将。成将替换基础组合攻击系数、额外攻击与攻频;仅继承首先成型的刀盾33%减伤或骑射射程,不复乘。先成将再补组合不追授能力。张飞生命额外+0.80加在平方项外、乘将字及星级前。

四武将技能、射程、计数、目标选择、抗眩晕与城池例外保持现行规则:黄忠副目标须在主目标后80、箭线左右20且总射程350内;关羽主目标80范围内按近者优先;副伤不递归、不伤城。张飞控制结束后4秒共享抗性;空挥、攻城、追加伤害不计有效近战次数。敌将为1星,仅保留已配置敌方技能权限,不能自动获得玩家追加技能。

2.3 计算样例

1级训练、一层对应武器/盾、无身份特性/将字/星级/减伤时,生命45、近攻15、远攻9,标准对标为3刀或5箭。无盾时生命45×0.8²=28.8,不回退旧裸兵常数。

一层刀盾近攻=15×(1+0.5)=22.5,生命45,固定减伤33%。一层弓骑远攻=9×1.5=13.5,攻频倍率1。

赵3云2共5层姓名:2层用于赵云身份,余3将,G=15%;1星、一层刀盾后成赵云近攻=15×1.8×1.15=31.05,生命45×1.15=51.75,保留33%减伤,不保留刀盾+0.50攻击。无骑、参考骑6时赵云有效攻速9.6、间隔0.9375秒。

1星一盾张飞生命=45×(1+0.8)=81;无盾张飞=45×(0.64+0.8)=64.8。5星只在最后乘一次1.20。

普通对战全部使用C列训练及新属性,不叠旧底板或成长。1—4场保留原教学敌军构筑与波次;5场起使用E列AI预算。前四场E列只留来源,双方城血和奖励仍取新表。

08最小五行表头样例

以下为YZUnitBase节选;普通字段前两行合并。正式xlsm尚待真实导表验证。

Excel行 id training_hp_id unarmed_layer_bp move_speed_fp armor_fp
1 字段 id training_hp_id unarmed_layer_bp move_speed_fp armor_fp
2 子字段 合并至上行 合并至上行 合并至上行 合并至上行 合并至上行
3 模式 Normal Normal Normal Normal Normal
4 类型 int int int string string
5 说明 身份ID 对应盾训练ID 无刀层系数万分比 万分之一逻辑距离/模拟秒;十进制整数字符串 万分之一护甲;普通0
6 数据 1 3 4000 550000 0

跨表示例:YZWeapon.training_id 为 Normal/int,第5行写“关联 YZTraining.id;0表示无训练”。它不是 Table;只有多行聚合或结构体才使用 Table 模式。

ID冻结前由程序与策划联合分配。可在新仓库重新规划ID,但从OH迁入的枚举引用需一并重映射;不能把新功能ID恰巧等于旧“签到”而接到旧行为。所有建议表名、枚举与字段在 __说明 页记录,删除/改名同时检查客户端、服务端、宏和残留JSON。

09配表校验与发布验收

检查组 必须阻止或报告的情况
表头 重名表、字段、ID;未知模式;非int/string;备注误导出;普通表与FinalString起始行混用
引用 形状/字/武器/训练/主将/技能/波次/地图/奖励/资源悬空;条件或技能处理器未注册
单位 模拟秒与真实秒混用;比率未除10000或重复除;速度被像素缩放;临界范围/概率非法
数值 裸兵生命0.64、首盾1.0;武器L(0/1/2)=0.4/1/1.2;刀盾+0.50与33%减伤;双武器;主将不复乘;AI余数预算不重算
敌军 显式与构筑两模式冲突;可见字层与真实派生不符;波次时间倒序或出城侧错误
随机 资格筛完空池;权重全0;名字池收敛;已有武将换牌/撤回后广告判断用最终盘面
经济 报价生成冻结;涨价计数、换批计数、三口免费次数分别记录;金币不流入建造点
成长与抽卡 20261027当前配置见字段字典与总规划v6.0
双格式 对相同表ID逐字段规范化比较;数组次序保留;新字段在Config和diff_Config均存在
多端与分组 微信/抖音/服务端同值;基础/实验显式0/空继承一致;旧局仍用开局快照
部署 删改表留下孤儿JSON;资源版本与配置版本不匹配;回退配置无法被当前客户端读取

最小闭环先做一张单位表、一张武器表、一条组合、一张关卡和一波敌军,完成真实Excel导出、客户端读数、服务器读数以及六种典型兵种对账。随后扩到全目录;不要先录完几千个单元格才发现导表器不认格式。

程序交付:可用的新项目导表入口、读取适配与表注册、字段字典/枚举、引用和数值校验、单元计算回归、双端发布清单、错误定位到工作簿/sheet/ID/字段。策划交付:源表、中文说明、批准初值、公式和变更记录。美术交付:资源键、字体/图标/特效清单与表现表映射;不得改战斗参数。

10事实依据与核验边界

证据 可支持的结论
公司正式规范 配置表框架规范_沿用OH_20260823.md 表头、字段模式、目录和复用原则;旧库存数字不作当前统计
OH config/outputexcel/README.md、ExcelOutput.exe.config、ExportFinalString.bat 当前工具成品、双版本输出、变体空继承、FinalString起始行特例
OH Global/OpenFunction/Trigger/Item/Level/Buff/Ads源表与同名Config JSON 本次抽查的源表结构、说明与已导出字段;不等于重新导出全量通过
OH Runtime/Game/MgrFacade.cs、CfgEx/CfgMgrProxy.cs、CoreDefine/CfgDefine.cs 读取入口、缓存、客户端分类与AB字段重映射
OH com.game.micrometa包的CfgMgr.cs 按表解析并缓存;按字段获取;新配置仍需代码消费
OH FunctionMgr/ConditionUtils/AdVM/GlobalCfgEx/ObjInfoTable 框架和玩法耦合点;新条件与新属性不可仅改表获得
OH server/script/Base/Config 下3个读取器 双格式识别、按版本目录加载与玩家字段选择;生产同步流程需项目构建验证
OH Runtime/Boot/Res/MiniGameResSys.cs 与双渠道CopySrc目录 已有小游戏资源路径和渠道集成基础;不等于新游戏真机可直接发布
本项目 prototype/public/rules.js 与完整数值规划v5.4 本次迁移初值和六种属性样本;未改动原型玩法

本版结论是“保留业务规则,修正工程落地与配表方式”。36张逻辑表是待程序评审冻结的新项目结构,非OH现成表,也非已写入正式游戏的配置。真实工具导出、小游戏构建和服务器部署验证列为下一阶段开发验收。

11当前数值与导出契约

K、B、S、H为兵身真实刀、弓、盾、骑层数。L(n)=0.4+0.6×min(n,1)+0.2×max(n−1,0),0/1/2层分别0.4/1/1.2。主将星级倍率Z依次为1/1.05/1.10/1.15/1.20;未成将Z=1。G为额外将字比例。

属性 已确认公式
近攻 刀训练值×身份攻击系数C×[L(有效刀层)+近攻额外加成]×(1+G)×Z
远攻 有有效弓时:弓训练值×C×[L(有效弓层)+远攻额外加成]×(1+G)×Z;没有有效弓时为0
生命 盾训练值×[(0.8+0.2S)²+身份生命额外加成]×(1+G)×Z
有效攻速指数 骑训练值×(0.8+0.2H)×身份攻频倍率;是指数,不是每秒攻击次数
每武器攻击间隔 max(0.5,1.5×min(本局参考骑训练值÷有效攻速指数,2)) 模拟秒;近远各自计时
本局参考攻速 普通对战按内部难度C列对应的骑训练值,开局冻结,敌我共用;塔/试用依自身冻结参考值
将字G 未成将时为0;首个主将消耗名字各1层作身份,其余所有姓名层每层+5%生命/近攻/远攻,不加攻速
全局目标倍率 对兵1.0、对城1.0;普攻与技能追加每目标结算一次
战场移速与运输 移速55×0.85×(1+0.18H);棋盘每格0.85模拟秒,骑训练不改变运输/产兵

黄忠有效弓=max(真实弓,1),关羽有效刀=max(真实刀,1),只提供武器资格,不赠真实层或基础组合。兵种额外攻击在首次成型即生效,不放入多层分支。不叠旧训练倍率或骑训练伤害;盾训练影响有盾与无盾生命。

正攻击命中伤害=max(0.1,面板攻击×技能倍率×目标倍率×攻击增益×目标类别战术增益×剩余承伤比)。保留精度,统计不计过量伤害;直接减伤仍按既有上限85%。刀盾固定减伤在受击时计算,不是随机免疫。

四项独立1—163级,刀/弓/盾/骑分别读表M/O/Q/S的实际属性。1级为15/9/45/6;骑是攻速指数。逐行使用策划表已复算缓存值,不实时用近似指数代替逐级取整。

J行费用表示J→J+1,每项取N/P/R/T实值,四项总价为四项相加。保留每十级回落:1→2每项10,10→11每项352,11→12每项150,20→21每项1424,21→22每项720。163级无下一档,升级按钮不可扣费;原表K总价仅追溯,不能覆盖四个已取整单价。

实际属性增长:2—10级×1.20、11—20级×1.15、21—50级×1.12、51—100级×1.10、101—163级×1.08,每级四舍五入。各项可以偏科。全四项1→163合计43,011,440金币,无新增金币赠送或升级补贴。

普通对战难度只由有效进度选择A行,C列决定敌方训练对标等级,E列保存源AI组,5场起按其生成预算AI;1—4场使用获批的原教学敌军构筑与波次。B列决定胜奖,F列决定城池系数。对手展示积分仍用中心=max(当前积分,历史最高−300),先抽整数偏移[−100,100]再截到0;展示段位不再额外放大敌属性,也不读取玩家训练同步抬敌。

项目 生成规则
Z 每波兵数 小数累计余数分配相邻整数;整数不额外随机
AA 每兵基础字预算 与Z独立余数;50%刀盾/50%骑射取向,预算≥2先给组合两字,1字时取组合之一,剩余刀盾弓骑各25%
AB 每兵姓名字总预算 含身份两字;目标四将各25%,1字不成将,≥2先给完整名字,其余折为将字
余数与随机 开局固定种子生成各自初始余数,跨时间段保留;先基础字再姓名字,重复种子可重放
出兵时刻 首波9秒,之后18/27/36…;一波多兵同时出场,不按兵分摊9秒
时间段 [0,10)、[10,20)、[20,30)、[30,50)、[50,80)、[80,120)、[120,结束)
跨段与暂停 不重置出兵钟、不在边界补波;暂停不推进,加速按模拟秒
敌城 盾训练表Q(C)×F,必须索引C对标等级,不能取难度同行Q
我城 玩家盾训练值×F,不吃局内字层、将字、星级

12组原表全部导入;当前163档只引用1/2/3、11/12/13、21/22/23,31/32/33保留数据但不自动启用。D说明统一0福利/1验证/3卡点;类型与成长增量分字段保存,不修改已给出的C。塔和试用不套普通AI曲线。

属性定点字段用十进制整数字符串表达,避免未经验证的32位int溢出;正式OH导出适配需验证精确解析和最终数值范围。36张逻辑表仍是工程结构契约,未凭此生成或部署正式xlsm;原34表之外新增YZNumericDifficulty与YZAIProfile。字段逐项清单、JSON字典和HTML由同一结构生成。