【译】虚幻引擎初学者教程:2D卷轴游戏
发表于2016-02-01
声明:原文作者未做权利声明,视为共享知识产权进入公共领域,自动获得授权;
原文:https://www.raywenderlich.com/97058/unreal-engine-tutorial-for-beginners-part-1
虚幻引擎(也称为虚幻开发工具包,或UDK)是3A级的游戏工作室最喜欢的平台,如PC机上的虚幻竞技场(Unreal Tournament),主机上的战争机器(Gears of War ),以及在移动设备上无尽之剑(Infinity Blade) 和幽浮:内部敌人(XCom: Enemy Within)这些大作的背后有着虚幻引擎的强大魔法的支持。
假如你花过时间玩过上面的游戏,你会知道,Unity引擎能够帮助创建游戏,看起来很惊人,是一个愉快的体吗。但是你知道嘛,你可以使用虚幻的可视化脚本系统创建一个完整的游戏,而无需编写任何代码?最重要的是,Unreal改变了虚幻引擎它的许可使用模式,现在可以免费使用,并不再需要任何前期费用,您只需支付每使用虚幻引擎创建的产品总收入的5%,且仅当该产品收入$ 3,000以上。
人气,力量,易用性,以及成本低这些特性的结合使得虚幻引擎成为独立开发者的最佳选择; 使得它与Unity 5引擎和即将到来的Source 2引擎同样的优秀。
接下来到raywenderlich.com虚幻引擎教程的时间了!在本教程中,您将创建一个横向卷轴2D平台游戏名为BlueprintMan,以标志性《Running Man》中的施瓦辛格为范本。
新手入门
虚幻引擎是建立在三个主要模块:
Epic Games启动器(Epic Games Launcher):这可以让你在虚幻登录,搜索和查看内容和教程,下载引擎。
虚幻引擎(Unreal Engine):这是实际的游戏引擎。您将无法正常使用此代码的工作直接,因为它是背后的幕后SDK代码。
虚幻编辑器(Unreal Editor ):这你就用它来 开发虚幻引擎游戏的IDE编辑器; 它就像使用Xcode开发的iOS和Mac应用程序。
下载Epic Games的启动位置为了下载引擎,你需要注册一个免费的Epic Games的第一个帐户。创建一个帐户,然后下载使用,当你登录给出的链接的引擎。下载并安装虚幻引擎,然后当你准备好后往下继续。
创建一个新项目
现在,您已经安装了虚幻引擎,打开它,会出现如下窗口:
输入您用来注册虚幻引擎的电子邮件和密码。点击登录和发射器将在您登录并打开一个更大的窗口,如下所示:
花一点时间来滚动内容你就会发现Epic Games公司提供了相当丰富的目录:教程,视频等东西。要下载虚幻引擎和虚幻编辑器,单击黄色启动虚幻引擎4.7.2按钮,在顶部左侧; 您的版本可能会略有不同,但不会影响本教程中你的进程。编辑器将打开一旦下载完成弹出以下画面:
但编辑器打开,你会看到一个类似下图的一个项目的组织者,虽然你的项目清单将是最初为空:
点击上的New Project选项卡在顶部显示以下内容:
关于蓝图
使用虚幻引擎开发时,可以采取以下两种方法之一:
C ++:选择C++为您提供了C++的原始性能和功耗,而且还承担内存管理的责任- 没有ARC或垃圾收集,补充一下——C++是会带来其的复杂语法的管理开销。
蓝图:选择蓝图为您提供了一个功能强大的可视化编程编辑; 简单地拖放游戏元素到一个图,将它们连接在一起来控制你的游戏逻辑和行动。
蓝图是虚幻引擎是什么接口生成器是为iOS; 它支持游戏逻辑的所见即所得的建设就像界面生成器支持用户界面的所见即所得的建设一样。然而,了解蓝图的最好办法是看它们在上下文中。例如,下面的蓝图,可以让角色在你的游戏中跳跃:
蓝图来控制角色的跳跃
蓝图看起来很像的流程图。不是一个枯燥的业务流程,请注意,但一个强大流程图,可以绘制流程中的怪物,爆炸流和战利品滴在你的游戏。作为额外的奖励,如果你和游戏设计师或艺术家一起工作,蓝图的视觉上的简洁,使你的游戏逻辑访问,并让没有任何编程知识设计师直接调整你的游戏。
现在我知道你可能会想:“这太容易了; 我想使用C++这种硬核的方式来做点事情”,因此,在本教程中,你会发现整个游戏将会用蓝图去制作。到上手的时间了。
创建第一个项目
有两个标签,让你确定哪些语言在新项目中使用:BluePrint(蓝图)和C ++。选择蓝图选项卡,然后单击2D SliderScroller(横版卷轴类游戏)图标:
选择虚幻编辑器2D Slide Scroller的自带脚本帮助你创建一个2D side scroller game,其中可以包含你自己的美术资源, 音效和逻辑。这很像Xcode的“新建项目”模板。请确保该设置部分设置为 桌面/控制台,最大质量和无入门内容(Desktop/Console,Maximum Quality 和No Starter Content) 如上图所示; 确保你的游戏项目没有那些数百兆的贴图 ,资源和任何与你构建游戏不相干的东西。这可以在你的Mac上播放具有清晰的图像,剩下的工作就是来为新的史诗般的项目命名。在文本框底部名称(Name)一栏中输入BlueprintMan:
然后点击创建项目 ; 您可能会看到下面的启动画面的一小段时间,因为虚幻编辑器将会开始忙于创建项目。
一旦您的项目已准备就绪,虚幻编辑器将打开如下所示:
这是主要的编辑窗口; 去熟悉它会是一个好主意,因为你会花大部分的虚幻引擎开发的时间在这个窗口的各个选项卡和试图。
了解虚幻编辑器
注意:当您启动虚幻编辑器的第一次,你会看到一个提示,启动一个教程在窗口的右上角。花点时间通过虚幻编辑器用户界面的向导工作,那么本教程继续一旦你完成。
虚幻编辑器有以下几个视图:
1、模式视图(Modes View):这是你选择的对象拖放到你的场景和访问工具,如笔刷(brushes)去修改场景。
2、世界大纲(World Outliner):这将列出所有的蓝图在你的游戏。点击World Outliner中的 Ledge_12行的,标记出来的Ledge_12行在详细视图(Detail View)中可填入相应的对象的详细信息。
3、详情视图(Details View):这将显示出你从World Outliner选中Ledge_12各个列表项的细节。您可以在Detail View中设置。通过变换壁架的信息来控制它在场景中的几何形状和位置; 以控制对象的精灵在场景中的出现; 以及无数其他的属性。
4、内容浏览器(Content Browser):这将列出在你的游戏中的所有内容,根据内容类型有序地整理到文件夹中。
5、工具栏(Toolbar):您可以访问各种功能在游戏,如玩游戏或构建它。
6、视口(Viewport):这是对游戏你的观察处;如果可以拖放元素融入到场景和周围或者当你需要时去移动它们。
好吧,足够的背景信息-到享受点乐趣的时间了!点击工具栏上方播放(Play)的按钮,现在开始进入你的游戏。
Play Your Game
您的游戏配置为使用通常的操控习惯:
A:向左移动
D:向右移动
空格:跳跃
按住A键向左移动,打空格跳下当前的平台跳下,落在下面的平台:
将鼠标移动到停止按钮,单击它以停止游戏:
注意:您也可以退出游戏,按Esc键。
编辑您的游戏的蓝图
好了,你已经看到了正在运行的基本游戏了。现在你去看看蓝图在幕后是如何推动游戏。蓝图是通常都比较精短,达到将游戏逻辑整合一个独立的模组。例如,您可以创建一个角色蓝图代表你玩家的角色或怪物蓝图代表在你的游戏中的敌人。选择蓝图中的文件夹内容浏览器,像这样:
双击它打开该文件夹:
选择2DSideScrollerCharacter蓝图如下:
这是您的玩家,蓝色的人型角色在你的游戏中移动。你看:它是一只鸟,它是一个平面,它是BlueprintMan!
双击2DSideScrollerCharacter蓝图启动蓝图编辑器:
注意到编辑器的以下主要观点:
1、Components View:这是你组件添加到您的蓝图。虚幻引擎,像许多游戏引擎,采用实体组件系统(ECS)有利于成分在继承的一种形式。例如,一个球员的“有一个精灵”,而不是“是一个精灵”。
2、MyBlueprint:这是蓝图中的“类视图”,您可以添加变量,函数和其他元素。
3、Detials:在这里您可以查看和编辑您的蓝图的细节。
4、EventGraph:这个是蓝图的实质; 其中显示的图形可以构建你的游戏逻辑中的对象,事件,动作。
5、ToolBar:提供的各种工具在你蓝图的执行操作。
6、EventGraph:是你的蓝图核心部分,所以花一点时间来研究它的细节:
蓝图来控制角色的跳跃
你在这里看到的是,当你按下空格键您的角色会跳跃起来的逻辑。两个红色矩形和两个蓝色的矩形是在图表的节点。在你的游戏节点可以代表实体(对象),如其他蓝图,事件(在哪发生了什么)或函数(在哪你了做什么)。仔细思考下InputActionJump。节点的红色顶部部分表示这是一个事件; 这是一个“跳跃动作输入操作”的事件的占位符。
那么,但因为当您按下空格键,您的角色跳跃起来,如果这个节点被命名为“SpacebarPressed”那岂不是更清楚吗?那么,虚幻引擎使用抽象输入映射:事件InputActionJump代表了“跳发生”的通用事件——独立的按键(或操纵杆)来触发跳跃。
起初这似乎有点不那么直接,它却解决了问题:无论控制跳跃动作的输入映射如何改变-都无需更改您的节点图。EventGraph节点是由被称为链接的白色曲线将他们连接在一起,链接到指定点节点的引脚上。看看InputActionJump节点上指向右侧白色三角形:
这些是执行引脚(exec pins)。对于事件,它们是占位符,当事件发生时采取行动。输出执行引脚(output exec pins)在一个节点的右侧,而输入执行引脚(intput exec pins)在左侧。执行引脚不会真正做任何事情除非你将他们连接倒其他的节点上。在本例中,InputActionJump节点的输出执行引脚Pressed被链接到的Junmp的输入执行引脚。这个输入执行引脚的函数节点如Jump意味着“调用这个函数”。因此,当InputActionJump处于Pressed状态,上述连接会调用跳跃函数。
同样,让我们看看如何InputActionJump节点的Release输出执行引脚连接到StopJumping节点的输入执行引脚:
在您的游戏体验中这说明了了什么??你猜对了:当您松开InputActionJump,玩家将停止跳动。最后,来看看在InputTouch节点,看看你能找出它执行哪些任务:
这代表如iPhone的触摸设备上的输入映射。它Pressed(按下)和Pressed(松开)输出执行引脚就像在MacInputActionJump的输入映射。在您的iPhone或iPad,InputTouch表示事件“玩家想要跳”。
更进一步:缩放
将鼠标光标在中间的视图(2DSideScrollerCharacter> EventGraph),按住鼠标右键并拖动以滚动 EventGraph:
你会看到有图中的其他节点的映射,但很难一次看到他们。幸运的是,我们很容易放大将他们尽收眼底,左键点击顶部的菜单中ViewZoom to Graph Extents(查看缩放图像最大化)
然后松开鼠标按钮缩小至图像的整个视角范围:
现在,你可以看到大图!但是,等等,你怎么放大到图表的特定区域?向上滚动到Event Begin Play node和左键单击选中它:
然后左键单击ViewZoom to Selection的菜单项:
这将放大之前你选择的Event Begin Play node:
你已经放大的事件开始播放的面积EventGraph在这个特殊的例子,但可以使用该技术的任何节点上的放大。
废话少说:往你的游戏添加操作
你已经对这一点非常有耐心,你的耐心将会在你的游戏中实现一些行动时候得到回报。此刻,你的游戏角色是强壮沉默类型; 他没有说太多话,你的任务是让脱离这种状况开始说话。
使用鼠标滚动到图形区域,如下图所示,并左键单击Event Begin Play node外取消选择:
右键点击 EventGraph中的Event Begin Play右侧空白网格。然后会弹出添加节点的上下文菜单。在白色的搜索框输入t; 上下文菜单将高亮显示T行并且旁边有类似键盘的形状。在标记出的选项中按左键点击或者输入回车键到T键事件加入节点图如下所示:
注:有时,上下文菜单是有点挑剔。如果T键并没有出现由于某些原因,
试着关闭上下文菜单的右上角Context Sensitive的选项。如果你不能滚动鼠标在选择菜单的列表,你可以随时使用您的向上和向下箭头键来使用你的键盘,而不是滚动。如果你将T键事件节点与其他邻近节点在一起而没太过分散开,事情会更容易一点。使用鼠标左右滚动的EventGraph,直到它看起来大致像下面的截图:
现在你有一些的工作空间!将鼠标悬停在T键事件的Pressed的执行针脚。这时你按下T键,一条提示会在出现Press Exec来告诉你这个执行针脚被激活。
在左侧点击按下 Pressd 执行针脚,拖动到外面的T键事件节点,释放鼠标左键。你会看到一个白色的链接线,并弹出快捷菜单。虚幻编辑器会将从节点拖到节点外的释放的动作识别为“嘿,我想这个引脚连接到一个新的节点”,于是它会弹出右键菜单以帮助您的行动。
键入print string在白色的搜索框; 用斜体f标注了; 这代表了Print String(打印字符串)函数(f代表函数)。按返回键或回车,或者在Print String单击鼠标左键来创建Print String函数节点,如下所示:
将鼠标悬停在Print String节点上的In String粉红色引脚上。
在Print String(打印字符串)函数打印上输入引脚的值; 注意,该引脚是一个圆型,以表明它是一个数据管脚。exec pin(执行引脚)被“填充白色三角形”和表示操作,而数据引脚是圆形来表示数据,比如通过函数或操作,被消耗的(经由输入数据管脚)或生产的(通过数据输出引脚)字符串或数字。您可以填写在字符串输入数据引脚的其他功能或变量的输出,但现在你只需使用一个常量字符串。单击在In String旁边的文本框输入Say hello to my little friend!
决方案里面:对于影迷:哪部电影是这一行的?
Scarface - from 1983!你几乎可以释放你的阿尔·帕西诺,引用字符在你的游戏,但还有最后一件事需要注意。请注意为何编译按钮有一个问号在上面:
这表示您的节点图是“脏”; 换句话说,它具有未编译的变化。你需要编译这些更改之前,你可以玩。左键单击编译来编译你的图形,并经过一两秒钟,你会看到以下内容:
绿色勾号表示编译成功。作为一个增加的方便,你可以直接从目前的蓝图编辑器运行蓝图:左键点击播放,如下图所示:
当你的游戏启动,你会看到你的场景如下:
按T,以使你的角色的谈话:
该文本将在屏幕上几秒钟后消失。使用打印字符串函数与你的角色交互,或在打印log消息到您的游戏画面都是一种很好的方式。按Esc键键退出游戏。虽然你的角色可能会有一些说出可疑的电影台词,他仍然是礼貌。作为一个挑战,使你的角色说Goodbye......当T被释放。您应该按照如下图所示的结束:
如果您遇到问题,尝试重复你所使用的步骤顺序T键按下事件。左键单击编译 ; 一旦该图被编译的编译按钮,将显示一个绿色的对勾。左键单击播放玩你的游戏。一旦你的游戏运行时,按下T然后松开。您应该看到以下内容:
不仅你做你的性格多一点礼貌,你已经学到有价值的东西:事件和动作通常成对出现。在上述T键的例子中,有相应T键的按下和释放行为。在其他情况下,你可能会遇到对的事件,如“碰撞开始”和“碰撞结束”。
保持你的事件图干净整洁
就像用牙线清洁,良好的EventGraph卫生是良好的开始所需的健康习惯。你要清理你的新对话节点,使他们更容易归纳成一组相关的功能。
用鼠标选中刚刚添加的三个节点:一是左键单击T节点,然后按住Command键并单击鼠标左键两个Print Node节点; Command键,可以选择多个节点(windos是ctrl键)。右键单击某个地方在画布内,弹出快捷菜单,然后单击从选择Create Comment from Selection(创建注释)选项。这将组的三个节点为一个注释组。左键单击包含文本字段注释,并替换文本为Talk: Hello and Goodbye。按回车键或回车,看看你的注释良好,整齐地成组的节点:
EventGraph注释这样的类似于Objective-C编译期注释,或Swift的区块注释。他们没有添加计算机运算的值,但他们都是优秀的组织工具,帮助你保持 EventGraph 清洁和可读,就像你保持你的代码类干净整洁。相信我,几个月后从当你再回来看 EventGraph的时候,你会感谢注释的存在。