以下是本月的更新列表。所有工作都由我自己完成,除了我明确声明由他人贡献的部分或使用了第三方资产的部分。
战斗系统更新:数值组件和简单的 UI,基于 Gameplay Tags 的状态管理
锁定系统
Locomotion 系统更新 + 动画制作,基于 Distance Matching 的停步动画
打击感更新
Boss 模型的更新(由王依宇和陈泽世贡献)
在学校发表项目
演示视频
因为本月更新内容比较多且琐碎,所以先放一段目前游戏整体的演示视频。
战斗系统更新
这次制作了单独的数值组件。目前除了基础的 HP 并未设计更多功能,这部分工作主要是为了后续战斗系统的设计提供可拓展性。
此外,之前制作的状态管理系统,使用的数据结构由原始的 Enum 类型,改为了 Gameplay Tags 的数据结构。这是教学中推荐的做法。
从个人角度来说,这种做法有好有坏。Gameplay Tags 在数据结构上具有足够的拓展性,具有良好的树状结构。但是 Gameplay Tags 本质上是一种动态的数据结构,引擎只有在 Runtime 才能获取,无法在编译期检查类型错误。例如 ActionType.Dodge 和 State.Dodging,在人工编辑数据的时候很容易选错,导致意外的无法匹配。这是 Gameplay Tags 相比静态枚举类型的弱点。我最希望能使用的是嵌套枚举类型(Nested Enum),作为静态的数据类型,但似乎在蓝图里实现并不是很简单。最终我自己编写了一个蓝图函数库的函数,在需要输入 Tag 的地方检查 Tag 是否符合特定的类型,方便在 Runtime 进行 Tag 的类型检查,作为一种妥协之计。
锁定系统
让玩家按下一个按键后,可以自动把视角注视到敌人身上,并且攻击动作都能向被锁定的敌人进行修正。这个系统我在樱花工作室的时候,曾经设计过一个非常复杂的系统,不过考虑到我的项目体量,我只是实现了其中一部分简单的功能。
关于锁定系统的详细设计可以点此阅读。
以下的视频展示了锁定系统的各种功能。
此外,针对相机的俯仰处理,我尝试了五种不同的模式:自由、常数、受限自由、永远朝向目标、根据距离自动计算(最终游戏中选择了这种)
详细的设计也可以点此阅读。
Locomotion 系统更新
这个月我学习了 Lyra 的动画系统,并且依照其思路制作了一部分功能:
- 使用 Linked Animation Interface 来复用动画蓝图逻辑,现在拔刀和收刀模式是完全一样的动画蓝图逻辑,只是更改了资产。
- 增加了针对不同速度模式的起步和停步动画。
- 停步动画采用了 Distance Matchin 的方式,并且整理了一套工作流。
- 制作了第三方资产中缺失的动画资产。
以下是当前 Locomotion 成果的视频展示:
Distance Matching 工作流:因为技术相关的内容太长了,就单独写了一篇额外的文章,点此阅读更多关于距离匹配的工作流。
除此以外,关于 Locomotion 的部分,之后还想制作左右脚同步、转身动画等功能。不过不一定有足够的资产和时间进行这些开发。也许会把这部分放到 BOSS 以后再进行制作。
打击感更新
命中反馈上,增加了攻击方的命中即停(慢动作),以及相机震动。目前和音效一样,只区分了轻攻击和重攻击两种表现。
嘛,简而言之,是制作起来并不困难,但是对实际受击反馈有巨大提升的功能。下一步是打算在受击方的方面制作更多的受击反馈功能。
BOSS 模型的更新
概念设计上,我们更新了几种新的 BOSS 手臂模式的设计。我的设计文档中也已经为这些模式设计了一些有趣的战斗动作了。这些模式的战斗设计由我提出,由角色艺术家王依宇制作了概念设计。
我们也制作了 BOSS 的高模,同样由角色艺术家王依宇在 ZBrush 中雕刻。
低模的烘焙和绑定由技术美术陈泽世制作。
在学校发表
最后,本项目也在这个月学校的课程项目评审中,第一次正式向绝大多数同学发表了。目前看来得到了很多积极的反馈,也有不少同学联系我希望参与合作。非常感谢各位对本项目的喜爱和支持!
后续计划
这个月开始,首先是完善战斗系统,例如受击动画系统,在此基础上战斗系统的开发就可以先暂告一段。之后要全力专注在 BOSS 的 AI 和招式开发上,在 BOSS 低模的绑定完成后也会进行 BOSS 动作的动作捕捉。玩家角色的概念设计和建模也在稳步推进。请各位进一步期待后续的更新!
Comments