工作记录2023/8/7

本文讨论了战斗系统中deltatime与攻速匹配的问题,原有的设计限制了高攻速下的普攻频率。通过改进技能状态机,存储临时变量并优化cd计算,解决了dt浪费问题,实现了一帧内多次普攻,显著提升了游戏性能。

2023/8/7

关于delta time和高攻速平a

战斗系统中的dt会随着帧数,战斗速度而变化,而平a的攻速如果过快则会出现平a的cd比dt还小的情况。而之前的战斗系统的技能状态机的设计会让整个流程至少执行3帧 =>

准备阶段enter -> (准备阶段tick -> 攻击阶段enter) -> (攻击阶段tick -> 冷却阶段enter) -> (冷却阶段tick -> 准备阶段enter)

这会使得60帧的游戏每秒最多只能执行30次平a,多出来的攻速会被吞掉。所以对技能状态机进行改进,让所有状态的enter阶段进入后可以立即进行一次tick。这样便使得状态机可以在一帧内进行多次tick

又因为技能cd可能会少于dt,而状态机在tick时只是粗暴的将技能cd减去dt来计算剩余冷却时间,这使得当技能cd小于dt时有很大一部分的dt被浪费了 => 导致的效果就是一帧最多只能进行一次普工,30帧的游戏相对于60帧少了一半的伤害。

解决方案是在状态机中储存一个临时变量,在每次对状态机进行tick的时候将dt的值加上。在cd计算的时候选择cd和剩余dt之间最小的值。这样即可保证每次cd减少的值不会有多余的时间被浪费,通过状态机的循环,即可完成在一帧内进行多次普工的效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值