游戏花絮
报道 / 6月5日,由Epic Games和GameLook共同主办的第三届“游戏观看”开放日——虚幻引擎活动在上海正式举行。
动作游戏一直以令人耳目一新的打击感和强烈的操作感受到玩家的喜爱,但一些高质量的3D动作游戏设计其实相当困难,国内市场上常见的大多是水平2D游戏。在本次活动中,Megafun创始人张汉荣分享了他使用UE4引擎制作3D横向卷轴动作游戏的经验。
张汉荣从规划的角度分析了动作游戏的制作过程,“先制作2D草图,通过这些草图来检验动作的合理性,再转换成3D模型,最后把这些动作变成动作。张随后强调了UE4通知系统的强大功能,“游戏中的输入决策、声音、声音效果、特效、伤害、传递给敌人的状态、取消机制、相机抖动、取景,以及其他一切都可以通过通知来完成。
“损伤面积判定是难点”张汉荣介绍了损伤判定设计的方法,
通过编辑角色面前的各种碰撞方框,并通过通知状态控制这些方框的切换和变换“此外,张汉荣还分享了动作游戏中缓冲和取消机制的设计,”一个是简单的连击连击,二是角色的具体能力,包括角色的跳跃, 还有刚才我看到的绳子,那种能把自己钩回来的钩爪,还有一些技巧“,然后设计这三者的整体逻辑。
在
在演讲中,Megafun程序员演示了通知状态的使用并介绍了其优点,包括确保两个功能配对以方便设计人员的管理。
以下为演讲实录:
张汉荣:大家好!我们公司正在使用虚幻引擎4制作一款3D横向卷轴动作游戏,目前代号为“Project TTW”,团队在深圳。目前,计划中的平台只有两台PC和游戏机,手机游戏也没有得到太多考虑。然后,演示版也计划在7月底发布中国欢乐。
首先,观看视频,
因为我们的游戏太大了,有二十多个G横版动作游戏制作,所以视频也是我整晚剪辑的,还有很多bug,也比较粗糙,大家可以关注我们下个月的版本。
制作2D草图,然后将其转换为3D模型
这次分享主要是我们如何使用虚幻引擎4制作动作游戏。有很多经典的动作游戏,比如战神系列、魔泣系列,以及国内的雨血等,都是在动作打击上做得更好的游戏。但很多人在制作动作游戏时发现特别困难,他们无法触及它的门口。
动作游戏从我的策划角度主要分为三个方面:视觉、听觉、触觉,而触觉就是组合操作的感觉。我们的工作流程就是这样,先制作2D动作草图,通过这些草图的设计可以看出动作是否合理或不合理。基于这些草图,在UE4中制作3D模型动作,并使用UE4附带的Cascade等工具制作特殊效果。最后,要将这些动作变成一个动作,你需要在蒙太奇中配置事件,这是非常多和乏味的,并在动画序列中配置特殊效果和声音效果。
这是一个简单的生产流程图,将工作任务分成不同的人,而这一切的主题是“通知”。蒙太奇和动画序列都在以下位置使用UE4的独特设置,称为通知。
强大的“通知”系统 控制组合决策 插入移动效果
通知的用途是什么?通知是在特定位置、特定区域执行特定操作的动画。具体包括哪些内容?包括输入确定,声音,声音效果,特殊效果,伤害,传递给敌人的状态,取消机制,相机抖动,取景,以及其他一切都可以通过通知来完成。
感觉的来源其实是组合输入的第一判断,当你打出一招连接下一招的时候,判断时间是否合理。对于像我这样的残疾人团体,我会要求更长的审判时间。但对于大师来说,它可能更喜欢更硬核一点。
缓冲我们的感觉分为两个通知,包括一些即时响应和缓冲机制。缓冲机制是接受玩家输入并等待动画播放到某个帧,然后再跳到下一个组合。即时响应是从玩家那里获得输入并立即跳到下一个组合。
那么我们如何在内部和外部配置它呢?你可以看到,下面这个叫做攻击动画的通知状态就是我们做出的缓冲区机制的确定,然后下面的停止延迟通知代表不接受按键输入。也就是说,在这个长度的帧中横版动作游戏制作,动作被允许跳到下一步,但前两帧已经开始接收决策输入。
特效非常简单,它们是在特定框架下执行动作的特效,包括挥刀的一些声音效果。声音格式为 WAV(16 位)。
损坏区域确定是一个难点 编辑各种碰撞框
另一个重要的事情是伤害区域的确定,这是动作游戏中最困难和最核心的。这张图片是《街头霸王4》中盒子的艺术截图,它们被分成了各种盒子。我们实际需要的游戏盒并不那么复杂。
我们只需要确定特定帧段中的攻击,之后不会确定攻击。通过自动调整决策框的大小和调整决策框的数量,输出传递给每个受害者的攻击状态。例如,此移动需要通过,无论它是浮动状态,击倒状态还是普通刚性状态。
这是之前的 Slnow 配置表,
我们使用Slnow的配置表来配置这一系列损坏框中的一些信息,这个开始之翼是损坏通知。然后在UE4编辑器中调整这些碰撞框的属性,框的位置就是角色前面的位置。
我们还可以利用通知系统为角色本身添加一系列条件,比如在特定帧中给角色添加霸权状态,或者忽略所有碰撞检测,相当于无敌,充电、飞、延时动作等一些状态可以通过通知来实现。我们这里有Charge,这是一个充电通知,表示角色需要在充电时重复动画。
设置缓冲和取消机制
动作游戏中也有缓冲和取消机制。缓冲意味着此移动可以取消吗?相信大家玩过DNF都有一个后跳,就是强制取消所有的动作和状态,也就是动作游戏的动作,你能取消一招吗?您是立即取消它还是等到移动完成并且无法取消任何新兵,或者您的移动是否因特定类型的移动而取消?这一系列设置非常核心,非常详细,但都可以通过通知来完成。
我们的游戏中有三种招式,一种是简单的连击连击,二种是角色的具体能力,包括角色的跳跃,以及我刚刚看到的绳子的钩爪,那种可以把自己勾回去的,还有一些技能。整体逻辑是连击本身不能被打断,但技能可以打断你的连击,能力也可以打断连击UI界面,技能不能被任何东西打断,能力就是在移动不开始的时候忽略帧率,打断当前的移动。
我们这里有一个技能跳跃通知,就是技能取消机制,而组合招式的取消机制刚刚提到,可以在这两个区域内取消。
我刚才谈到的通知是如何从规划的角度配置这一系列事件,然后程序员将讨论通知的工作原理。
“开始”、“结束”、“滴答”和“获取通知名称”这四种方法将覆盖“通知”状态
兆趣程序员:大家好!让我告诉你如何编写通知的逻辑。在UE4中,尤其是在做动作游戏的时候3D交通工具,角色挥刀,需要在特定帧处执行一系列动作,而这一系列动作会有很多功能。现在让我们看一个我们如何编写它的示例。
例如,如果一把刀向这边摆动,应该打开损坏的碰撞网格,并且在打开的过程中,例如,如果他击中了那一边,他需要关闭盒子。我们使用 Notify 状态来控制碰撞箱的打开、关闭和更改。
具体操作非常简单,只需单击打开完整蓝图编辑器以打开 NotifyState 编辑界面即可。它有4个可以覆盖的方法,即开始,结束,勾选和获取通知名称。当我开始时,这意味着我收到了这个事件,生成的事件。末日也是如此。价格变动是开始和结束之间的价格变动事件,它具有参数增量时间。获取通知是,我想看看哪个通知现在正在工作,但我们通常不使用它。
详细的逻辑是,当Begin时,在角色上挂上很多碰撞框,并在Begin时打开盒子。在 Tick 中,我们有一条曲线,它根据传入的曲线(可能是位置、大小或旋转)调整碰撞框的状态。在“结束”中查找碰撞框,然后将其关闭。其实代码比较麻烦,但实际上伪代码就是这样一点点,一条非常简单的信息。
配置是这样的,有一个 Begin,中间会生成一个 Tick 事件,然后我们将使用一个逻辑来编写动作游戏中碰撞框的打开和关闭。我们看到这里有三张图片,这里有一个测试框来演示这个,你可以看到这是在第一帧,发现第一帧很小,然后到那边是一个Tick,然后逐渐变大,这是我们当时实现的碰撞框, 这是与碰撞框对应的对象。
通知状态的好处:保证对,易于管理
为什么我们使用通知状态而不是两个通知+玩家刻度函数?第一种说法是说我们有 Begin,我们必须有 End,这被称为对调用。不可能把它切下来,这个盒子打开了,或者在这段时间里我被怪物打败了,我不得不说这个盒子的这一端将永远打开,然后会发生一些事情。
因此,我们需要将其成对调用。在通知状态中,被动画中断的事件保证调用通知状态的 End 函数,该函数保证与 Begin 成对调用。此外,开始,结束和滴答都在同一个BP中,供我们管理。因此,建议在动作游戏中使用通知状态打开和关闭玩家的碰撞框。
我使用过一个基于碰撞盒的武器攻击点,我实际上已经研究过了,但是我想到了另一种选择,一个基于线性光线检查的选项。例如,对于我手中任何长柄武器,我在武器上设置两个点,检测每一帧,一旦发生碰撞,攻击就被认为是成功的。
张汉荣:我考虑过一些,比如将一个盒子直接绑在武器上,或者通过一种特殊的方法做一些测试,但是考虑到因为我们的动作非常快,所以每次移动的时间都很短。在这个过程中,如果你在武器上挂一个盒子,它会很短,也许只有一帧,但我希望我们的打击帧数超过3帧。
还有一点是,我们的特效会比动作本身更夸张。比如说,我其实一个角色没有位移,刚才视频中有一个镜头,就是当这么大的弧线向前走的时候,没有角色位移,角色还在原地,但是瞬间又回来了。这只能通过在角色前面放置一个框来完成。
如转载,请注明出处: