hrbattle
v1.3.14
Published
一个基于回合制战斗引擎,支持技能脚本、buff系统和效果解析。
Maintainers
Readme
勇者再就业战斗系统(hrbattle)
项目简介
这是《勇者再就业》的核心战斗系统项目。
战斗采用回合制框架,并结合“走条”机制驱动行动顺序,整体体验参考阴阳师式速度条战斗:
- 角色并非严格按固定回合轮流出手
- 行动顺序由速度与行动条推进共同决定
- 战斗节奏可通过技能、增益、减益进行动态干预
战斗机制概览
1) 走条与行动顺序
- 每个单位拥有独立行动条进度
- 行动条随时间推进,推进速度与单位速度属性相关
- 当行动条达到阈值后,单位获得行动权
- 行动结束后清空或回退行动条,并重新进入推进循环
2) 回合与单位行动
- 系统层面以“单位行动”为最小回合单位
- 单位行动通常包含:选择技能 → 目标判定 → 结算伤害/治疗/状态 → 触发被动
- 支持普通攻击、主动技能、被动技能、连击、反击等战斗行为扩展
3) 状态与效果系统
- 支持增益、减益、控制、护盾、持续伤害、持续治疗等常见效果
- 支持按时机触发:行动前、受击时、行动后、回合结束时
- 支持持续回合数与叠层管理
4) 胜负判定
- 一方全灭判负
- 支持拓展特殊条件:回合上限、守护目标存活、指定单位击杀等
设计目标
- 高可扩展:便于新增角色、技能、效果类型
- 高可配置:尽量通过配置驱动战斗内容,而非硬编码
- 易调试:关键流程可追踪、可回放、可复现
- 易平衡:参数结构清晰,方便数值迭代
推荐模块划分
BattleCore:战斗主循环与状态机TurnBarSystem:行动条推进与行动权分配TurnBarSystem:行动条推进与行动权分配SkillSystem:技能释放流程与目标选择EffectSystem:Buff/Debuff 生命周期与触发DamageSystem:伤害、治疗、护盾等数值结算VictorySystem:胜负条件判定与战斗结束流程BattleLogger:战斗日志、事件流、回放数据输出
开发建议
配置驱动
- 角色基础属性、技能参数、效果模板建议数据化
- 战斗逻辑与表现层解耦,便于前后端或客户端模块协作
测试与验证
- 为关键流程建立最小可复现战斗样例
- 覆盖关键场景:先手争夺、控制链、反击链、DOT 结算、死亡触发
- 用固定随机种子验证战斗可复现性
快速开始
当前仓库为战斗系统项目骨架,后续可按以下步骤完善:
- 定义角色属性与战斗单位数据结构
- 实现行动条推进与行动权分配
- 接入技能与效果结算流程
- 完成胜负判定与战斗日志输出
- 建立自动化测试与关键战斗样例
技能模板逐级数值配置
- 支持在模板 step 上按等级配置独立数值:
ratioByLevel: number[]flatByLevel: number[]fixedProbByLevel: number[]
- 优先级:
*ByLevel高于单值字段(ratio、flat、fixedProb)。 - 等级越界策略:当技能等级超过数组长度时,使用最后一个数组值。
{
"id": "example.skill",
"steps": [
{
"kind": "damage",
"ratio": 0.5,
"ratioByLevel": [0.5, 0.62, 0.74, 0.86, 0.98],
"scaleStat": "Att"
},
{
"kind": "buff",
"ratio": 0,
"buffId": "slow",
"fixedProb": 6000,
"fixedProbByLevel": [6000, 7000, 8000, 9000, 10000]
}
]
}共鸣 type=2 开场 Buff 接入
- 推荐将“进入战斗生效”的共鸣效果建模为被动脚本技能。
- 约定脚本 ID:
echo.passive.<buffId>.script(示例:echo.passive.300101.script) - 技能定义要求:
type: "passive"mode: "script"activateOnBattleStart: truescriptId: "echo.passive.<buffId>.script"
- 生效规则:挂载到谁的技能列表,就在开场给谁自己加 Buff。
- 依赖约束:
bundle.buffs必须包含对应buffId,否则会在配置校验阶段报错。
{
"id": "echo.passive.3001",
"type": "passive",
"mode": "script",
"targetRule": "self",
"element": "fire",
"energyCost": 0,
"energyGain": 0,
"cooldown": 0,
"activateOnBattleStart": true,
"scriptId": "echo.passive.300101.script"
}贡献指南
- Fork 本仓库
- 新建分支(例如
feature/turn-bar) - 提交改动并补充必要说明
- 发起 Pull Request
版本规划建议
v0.1:最小可运行战斗闭环(走条 + 普攻 + 胜负判定)v0.2:技能系统与常规状态效果v0.3:复杂触发链、日志回放与测试体系完善
