一、前言
首先感谢B站马克镇镇长的视频讲解清晰把很多细节都照顾到了,我本来自己做的时候没有视频说的那么细,参考他的全套系列视频之后完善了很多内容。
视频指路:https://www.bilibili.com/video/BV1s5411Y7Ry
感兴趣的朋友别忘了给这个视频一键三连。
如何利用UE4制作一个2D游戏,众所周知,UE4是EPIC为了方便自己开发FPS游戏而“顺便”研发的一个引擎,后期通过不断的完善成为了现在功能强大的游戏开发引擎,并且在GITHUB上面进行开源,可以拿到源码进行魔改,然后声称“自主研发”。
后期会挖一个坑如何魔改UE4引擎源码(需要一定的C++基础),不过那是后话,本系列内容是如何使用UE4的蓝图进行制作2D游戏,主要包括以下内容:
(一)——基础篇,介绍UE4的基础操作,以及需要用到的类
(二)——资源篇,介绍如何导入基础美术资源进行场景制作与动画制作
(三)——角色篇,如何制作属于自己的角色,并且添加属于自己的操作
(四)——NPC篇,在角色制作的基础上创造一些NPC角色并且产生对话,制造故事流程
(五)——战斗篇,制作基于UE4自带AI的敌人,进行回合制战斗。
(六)——计算篇,进行战斗完毕后要对人物的奖励进行结算
(七)——数据篇,利用服务器存储角色数据,并进行在线交互(额外内容,不影响结算可以跳过)
……后续有更新再编辑这里。
二、UE4引擎奶妈级教程,如何新建自己的2D游戏项目
打开虚幻4,新建一个空白的游戏项目,如图1所示
图1 新建空白游戏项目
项目名称自己定,使用蓝图类,初学者礼包包含不包含都无所谓,如图2所示
图2
创建完毕项目之后进入UE4的主界面,如图3所示,我们这里需要用到的内容有关卡蓝图,2Dpaper图像序列,2Dpaper sprite,paperCharacter(2D角色类),PaperSpriteActor(2Dacto类),AI Controller,player controller(玩家控制器)类等蓝图内容。
以及枚举,gamemode(游戏模式),touch user interface(图形触摸界面设置),user interface(简称UI)等主要模块。
三、介绍蓝图类功能
1.level——关卡蓝图
关卡蓝图是构建一个关卡或者说一个小世界,也可以称之为小房间的基础,要让操作的角色有地方操作,就需要先创建一个基础的世界,可以说关卡是所有其他对象存在的基础,有了这个基础,其他的对象才能够存在并且进行使用。
所以一个游戏项目需要有基础的关卡进行底层支撑,关卡蓝图打开的方式在主界面上方,点击“蓝图”旁边的小三角,进行下拉,再点击“打开关卡蓝图”对关卡进行蓝图类的控制操作,如图3、4所示
图3 打开关卡蓝图
图4 关卡蓝图内容
关卡蓝图内容(图4)当中可以选择当前关卡内放置的所有actor进行操作,包括光照、水体、动植物以及其他类等等,只要它在关卡的内容中,都可以调用并且进行操作,甚至还可以在指定位置生成关卡当中没存在的但是已经编译好的其他ACTOR类
图5 世界大纲视图
如图5所示,关卡蓝图可以调用存在世界大纲视图当中所有的ACTOR并进行操作,这样在我们设计好基础场景的时候,蓝图就可以调用这一切。
下方的世界场景设置可以对蓝图的基础属性进行设置,具体的可以看虚幻引擎4官方文档——关于关卡的设置
指路:https://docs.unrealengine.com/zh-CN/Basics/Levels/index.html
2.2Dpaper图像序列
2Dpaper图像序列是承载2D美术资源的一个容器,里面可以将每一帧的2D sprite进行拼装组合成一个动画序列,它的英文名是2Dpaper sequence,简单来说就是让2D图像按照一定的序列进行播放,就是基础的动画,如图6所示
图6 2D paper图像序列
右边的关键帧(key frame)是用来存放每一帧的动作资源的,一般来源与我们导入的2D美术资源变成的sprite,然后按照顺序逐帧播放,上方的每秒帧数决定每秒钟动画的帧率,帧数值越大播放速度越快,图像序列一般用于角色产生操作的时候播放动画,后续会说到
3.2Dpaper sprite
2Dpaper sprite是基础美术资源,构成包括碰撞体,ACTOR,图像序列等内容的基础元素,任何2Dpaper的项目资源都需要有基础2Dpaper sprite进行支撑,如图7所示,可以对编译好了的2Dpaper sprite进行各种引擎参数设置,比如碰撞体,比如高度,比如纹理和阴影等级等,来达到自己需要的物理世界效果。
图7 2Dpaper sprite参数设置
4.paperCharacter(2D角色类)
同3D模式一样,创建一个角色,就有相应的character类,这个paperCharacter(2D角色类)是继承了character类和2Dpaperactor类的特性创建的单独对应2D游戏的角色类,可以在里面添加和3Dcharacter一样的各种操作,比如操作输入,AI,向量,控制方法,游戏方法等,还可以添加专属于paperCharacter的组件和通用的组件,如图8、9所示
图8 papercharacter
图9 蓝图事件图表
5.PaperSpriteActor(2Dacto类)
PaperSpriteActor(2Dacto类)与基础的Actor类一样,可以放置在场景中也可以通过指定控制器生成,一般用作角色交互或者其他交互的时候设置一个PaperSpriteActor(2Dacto类),然后再对蓝图进行各种各样的方法设置操作,后面会详细讲用到的部分,界面如图10所示
图10 PaperSpriteActor蓝图详情
6.AI Controller
人工智能控制器,控制某个actor类进行基于人工智能自动操作,在一定条件下结合黑板和行为树可以完成复杂的多样性的角色操作,具体参考官方文档:
7.player controller(玩家控制器)
玩家操作的时候,属于玩家专用的控制器,可以给玩家进行切换角色、控制场景、控制其他ACTOR等等操作,具体参考官方文档:
8.其他主要模块
其他主要模块包括枚举,gamemode(游戏模式),touch user interface(图形触摸界面设置),user interface(简称UI)等
其中枚举类似于编程语言中的数组,但是是一个可以存储多样性内容的数组,包括可以存储2D图像序列、技能动画蒙太奇、角色类等内容的枚举命名,具体界面如图11所示
图11 枚举内容设置
gamemode(游戏模式)
用于设置关卡类型的模式蓝图,决定了关卡的基础设置以及玩家操作模式,与世界场景设置有区别,具体参考官方文档:
https://docs.unrealengine.com/zh-CN/InteractiveExperiences/Framework/GameMode/index.html
touch user interface(图形触摸界面设置)
这个蓝图类是一个特殊的蓝图类,一般在项目移植于移动端设备如手机、pad等设备的时候用得到,在屏幕触摸和鼠标触摸的情况下模拟摇杆和按键操控角色,包括键盘输入的各种按钮,都可以映射到图形触摸界面设置上如图12、13所示
图12 启用移动平台按键
图13 设置移动平台按键具体映射
user interface(简称UI)
UI是图形交互界面,是玩家与系统交互的主要界面,开发人员可以在用户界面空间蓝图里面设计多种多样的UI,并且设计响应操作,如图14所示,具体参考官方文档:
https://docs.unrealengine.com/zh-CN/InteractiveExperiences/Framework/UIAndHUD/index.html
图14 UI具体设置面板
四、总结
通过前面三个部分的内容介绍了2D游戏开发需要用到的一些基础类,我们后续都将在这些基础类的基础上展开,要精通面向对象程序设计的思想,灵活变通解放思想实事求是,才会在后续的项目开发中减少失误,节约开发时间,做到质量与速度并重。
下一次文档将会讲述如何导入基础资源与制作动画序列,制作关卡序列以及Actor类的进一步操作。