基于UE4的跑酷游戏的设计与实现
作者:杨成义 梁毓伟
来源:《现代信息科技》2020年第17期
        摘 要:跑酷类电子游戏,能让玩家在感受极限运动的同时,减少身体机能的限制,降低受伤风险,并实现锻炼思维、提高行为敏捷的目的。文章借助Unreal Engine 4游戏开发引擎,通过可视化的蓝图编程的形式,从关卡、游戏模式、玩家控制器以及用户界面等四部分进行了跑酷游戏PC端的设计和实现。经过测试,游戏中关卡设置、角动作等功能运行流畅,场景跳转迅速,声音播放及参数计算均正常。
        关键词:跑酷类电子游戏;Unreal Engine4;蓝图;玩家控制器
        中图分类号:TP317 文献标识码:A 文章编号:2096-4706(2020)17-0090-03
        Abstract:Parkour video games can make players feel extreme sports,reduce the li
mitation of body function,reduce the risk of injury,and realize the purpose of exercise thinking and improving behavior agility. With the help of Unreal Engine 4 game development engine,through the form of visual blueprint programming,this paper designs and implements Parkour game in PC from four parts:level,game mode,player controller and user interface. After testing,the game level settings,role actions and other functions run smoothly,the scene jumps quickly,sound playback and parameter calculation are normal.
        Keywords:Parkour video games;Unreal Engine 4;blueprint;player controller
        0 引 言
        随着计算机产业的兴起,电子游戏逐渐走进大众家庭,正以迅猛的发展速度席卷文化产业,发挥着在和平年代提高人们精神文化生活质量的积极作用。电子游戏来源于生活,且往往能起到在潜移默化中锻炼人类生存技能的作用,跑酷电子游戏模拟的是一项极限跑步运动,在降低参与者受伤风险的同时,使其获得和极限运动同样的挑战快感。本文立足于当前新兴的单机联机游戏市场,借助美国Epic Games公司旗下的Unreal Engine 4(UE4)游戏
开发引擎,以蓝图编程为主体,说明跑酷游戏在PC端需要实现的业务逻辑。在充分展示并运用UE4完备的功能特性的前提下,设计游戏的菜单,创建选项按钮,通过视角的切换实现菜单到关卡的无缝切换,重点渲染场景和道具的生成,设置按键的映射及角动画播放逻辑,从而实现一个较为完整的游戏软件。介于此游戏的开发初衷,只是出于一定的兴趣和学习目的,同时目前完成版本的界面和美术效果一般,所以暂时不考虑游戏的推广及经济效益问题。
学习编程的单机游戏
        1 系统的需求分析
        跑酷游戏需要实现的基础业务包含两大部分:数据及逻辑运算、多媒体输出。数据及逻辑运算部分主要需要处理关卡设置、UI交互、玩家控制等。而在多媒体输出部分,需要处理的有用户界面、环境及碰撞音效、模型、角状态机等;在确立游戏的美术风格后,应为相应关卡设计合适的环境,注意使用天空球昼夜交替功能,设置合理充足的光源,保证在夜间玩家仍能有良好的视野。游戏的场景一般由重复生成的跑道、随机生成的环境和物品组成。跑道为单个或多个以矩形网格体为基础制作的可重复拼接方块,在关卡中按脚本设计顺序生成。随机生成的环境和物品则包含了玩家角所碰到的障碍物、拾取物及跑道边缘装饰物,其在关卡中以伪随机的方式在标定的坐标上生成。
        玩家在游戏过程中,角的状态是逐帧检测的,并根据检测结果播放合适的动作动画。因此,需要提前制作角在不同状态下的动作动画,并通过UE4的状态机编写缜密的逻辑,将播放及切换合理地串联起来。比如,判断角是否处于跳跃状态是一个较为特殊的部分,需要判断角的状態是否处于刚起跳、正在悬空、刚落地中的某一种状态,需根据不同状态设置合理的动画播放逻辑。刚起跳、刚落地的动画,在与跑动动画切换时只需播放一遍;而正在悬空的动画,则需要循环播放,保证角在空中时不是处于静止状态。
        2 系统设计和实现
        本游戏软件的设计由关卡、游戏模式、玩家控制器以及用户界面四部分组成,后三者将以蓝图可视化编程的方式进行。针对上述内容进行具体分析,需要完成设计的对象有:光源、跑道、障碍物和得分物、角、玩家控制器、用户界面等。相关对象均以类的形式进行封装,并按实际情况在场景中生成多个实例,这里选取主要的5类对象进行说明。
        2.1 光源
        设置恰当的光源,保证在夜间玩家仍有良好的视野。为了在配合天空球昼夜交替的条件
下,减少不必要的阴影渲染错误,以及解决夜间玩家视线问题,需要将天空球的太阳高度与天空光源的照射角度绑定,实现了天空光源跟随昼夜交替变化的效果。针对天空光源的实时变化,将角相机的自动曝光的最大值、最小值分别设定为20与-10,在此区间可以保证不会出现曝光不足及过曝情况,避免影响玩家视野,如图1所示。
        2.2 跑道
        关卡中地面就是跑道,其应该是无限延伸的,且能及时销毁。跑道上需随机生成障碍物及得分物,玩家与跑道上物品接触时需要正确的响应。将跑道封装为一个单独的蓝图类“Floor_BP”,类中除地板“LPlane”“RPlane”“Floor”外,还包含跑道销毁的逻辑、跑道上生成障碍物或得分物的坐标“Left”“Right”“Middle”,玩家到达跑道边缘后触发生成下一跑道的碰撞盒子“Box”,以及记录下一个跑道生成坐标的“SpawnPoint”,如图2所示。
        2.3 障碍物与得分物
        当玩家触碰到障碍物时,玩家角的骨骼绑定将解除,角将无法再次移动,自此游戏结束。在相同的骨架及网格体的特殊情况下,只需要加入Select节点、将不同的蒙皮放入Opt
ion引脚中,最后将Index引脚与Random Integer in Range节点相连后设置好随机数的区间,便可实现蒙皮效果的随机生成。
        得分物使用了与障碍物相似的逻辑,不同的是在条件达成后,得分物的效果是将作为积分用的整型自增。
        2.4 角
        玩家的角封装于一个名为“Hero_BP”的蓝图类中,其中相机由摄像机摇臂与玩家角相连,而光源则悬空,它们都将跟随玩家的角进行同步移动。玩家操控角时所进行的输入操作都应关联相应的业务逻辑,比如在多条跑道中临近障碍物时所做的跑道切换、跳过障碍物、角的坐标位置变换、时间的增长和移动速度之间的逻辑关系等,全都包含在“Hero_BP”类中。部分控制角移动的蓝图脚本,如图3所示。
        2.5 玩家控制器
        作为一个跑酷类游戏,玩家的控制器主要控制左移、右移、跳跃。UE4官方预置的“PlayerController”控制器还包含了蹲下、慢走等角状态,并提供对触摸板、手柄等操作
方式的支持,设置“MoveLeft”“MoveRight”“Jump”三个输入操作的映射,分别对应键盘上A键、D键、空格键,这些映射将在各个相关类中作为事件被进行触发,如图4所示。除此之外,游戏开始时并不显示鼠标指针、鼠标滚动视角的变化、界面缩放比例的调整等等,这些属于用户使用习惯的重要设置部分,都可以通过玩家控制器进行设置。
        与游戏玩法相关的逻辑设置将存储于名为“Run_Mode_BP”的蓝图类中。在游戏软件中,它主要负责两个部分的逻辑控制,分别是跑道延伸的逻辑和关卡的初始化。针对跑道的延伸,包含了一个命名为“SpawnTitle”的脚本,该脚本中会调用“Floor_BP”类中“SpawnPoint”对象的相关属性,通过变换获取世界坐标,并根据该坐标给定的参数进行延伸跑道的计算。至于关卡的初始化,是将按钮的单击事件进行监听,在关卡开始执行时,通过For Loop节点将“SpawnTitle”脚本进行循环执行。这样,在游戏初期,玩家在视觉上就有足够长的跑道。“Run_Mode_BP”也配置了与自身设置相对应的控制器,当其被执行时,系统将调用其配套的玩家控制器。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。