游戏介绍:
《生死轮回》是一款基于虚幻引擎4开发的Cyberpunk题材横版Roguelite动作游戏。这款游戏基于C++和Blueprints进行Gameplay与功能开发。
视频的内容由两部分构成:
结合这款游戏,介绍"战斗系统"和"无缝随机地图"的设计及实现技术细节。
作为制作人和Gameplay程序员,李伟将遵循自己在游戏开发过程中的路径展开讨论:从简单的单点功能设计到技术实现细节,到各模块的内容交汇在一起构成复杂的游戏性系统。
正文:
战斗系统
主要讲“近战武器”+“受击者反馈”这两个系统。
一、近战武器设计
技术目标
实现30多种武器的基础伤害功能,拉开不同武器的感受差异
特性分析
武器形状(精确的攻击范围)
目标角色反馈(对不同目标:机器人,人类做出不同的反馈)
表面材质反馈
击打顿感:利器和钝器
1 近战武器框架:
- GamePlay功能多用C++实现,牵扯到可视化配置时,开放给BP子类(之前有提到过如何做到这个)。
- 为每把武器建造两个插槽,可以定义武器攻击的扫描范围
2 近战武器检测实现
<1>线性检测
玩家挥动武器时,从一个端点朝另外一个端点不断的发出射线,扫描自己击中的物件的一个过程(之前坦克游戏博客篇有涉及,比如DrawDebugLine函数等)。
<2>由角色驱动的检测通知
角色在挥舞武器时检测,自定义攻击检测的通知节点,在攻击动画播放时调用代码。
trace可以写在Tick中,也可以自定义Timer。
<3>受害者队列
创建了一个数组,每次击中时判断敌人是否在里面,如果不在就加进去,进行伤害处理;如果再次击中,就把他排斥在外。
但同一个敌人可能会在Trace过程中被多次检测,多次受到伤害(保证起始