测试演示
本项目的最终目标是制作一款稳定的、多角色的多人对战TPS游戏。本项目的角色的动画系统参照了Lyra的动画系统,并使用GAS框架完成技能系统。
本次测试,较好地完成了既定目标;游戏稳定、动画系统表现良好;本文将对在加入下一个角色前需要做的需求进行梳理。
性能相关
本地预测:子弹
客户端玩家开火时,需要等待服务器生成子弹再同步,导致客户端玩家射击体验较差,虽然GameplayCue的反馈较为及时,但客户端玩家在短距离内很难看到子弹。
所以,需要完善开火逻辑,为客户端玩家生成仅作视觉效果的子弹。
GameplayCue优化
在部分GC较多的场景下,出现了掉帧的情况,需要更合理地管理GC,在不影响视觉效果的情况下,降低GC的消耗。
场景优化
场景的光照消耗较大,需要优化。
射击逻辑
伤害细分
本次测试,玩家命中敌人造成的伤害是固定的,不会随命中部位而发生改变,后续需要区分命中部位造成的伤害。
后坐力与散射系统
本次测试,后坐力与散射系统没有随玩家移动速度与状态做灵活变化,仅在瞄准时降低散射程度。
后续应该补充随玩家移动速度变化而不断变化的散射与后坐力系统。
相机调度
本次测试,相机调度呆板,没有做特别的处理,造成了如角色完全遮挡相机、相机抖动严重等问题,需要学习相机的调度内容,以提供稳定跟手的射击体验。
另外,角色死亡时若处于瞄准状态,复活后会仍在瞄准,需要修复。
动画系统
武器与右手IK
在站立非瞄准状态与下蹲状态开火时,武器未与射击朝向一致,武器前向量与射击方向向量夹角较大,这是因为重定向开火姿态的误差导致的,需要单独计算IK.
过渡状态开火
虽然我已将开火的Montage的过渡时间设为0,即迅速进入开火状态;但是当角色下落时再开火,下落的叠加动画会导致开火表现异常,即枪抖术一般的效果。
这个问题如何解决,需要在右手IK过后再做判断,如果右手IK能较好地在此场景下调整枪械与手部动作,则不需要修改;如果不能,那么将开火montage设置一定的过渡时间,并增加一个等待开火状态,以在视觉上有更流畅的效果(这会导致玩家首次开火不跟手)。
音效
音效丢失
由于音效部分,我了解的不多,在项目中未有细化的设置,导致音效在部分状态下丢失,这部分需要学习,但并不是较高的优先级。
补充音效
优化击杀音效、命中音效的表现。
场景交互
在代码中,已经提供了根据物理材质,选择相应的脚步、子弹命中的音效,但在本测试中,该效果存在感很弱,需要更丰富的音效满足不同的物理材质的交互。
UI
UI表现较为生硬。
需要完善:命中反馈、击杀反馈、技能冷却、状态显示等多方面的表现,但这并不是较高优先级。
会话管理
本次测试,仅提供了最基本的会话流程,对于如服务器玩家直接销毁会话等情况,并没有做健壮性保证;此外,也没有做玩家中途退出游戏时,对游戏的数据进行更新。
属性管理
部分属性计算可能存在一些问题,这部分内容需要回顾重构。
总结
需要细化的内容很多,但是项目的底子还不错。
本项目的动画系统采用动画层接口管理,状态机采用模板处理,能够快速产生新的角色的基础动画效果;本项目的Character与处于PlayerState的ASC交互较为合理,能够满足多角色多技能的需求;借助于GAS框架,技能系统高度解耦,便于维护。