虚幻4引擎下载研发有感兴趣的吗

用虚幻4开发搭积木的VR游戏 - 游戏开发,移动开发技术干货分享 - 泰课在线 - 国内专业的Unity在线学习平台|Unity3d培训|Unity教程|Unity教程 Unreal 虚幻 AR|移动开发|美术CG|UI平面设计|前端开发 - Powered By EduSoho
用虚幻4开发搭积木的VR游戏
虚幻引擎作为国际顶尖水平的3D引擎,一直是很多像我这样的技术人员的向往,感谢Epic Games采取了免费、开源的政策,使得&旧时王谢堂前燕,飞入寻常百姓家&。在当前VR开发如此火热的情况下,在VR方面一直保持着技术领先。笔者有幸在虚幻3时代就有机会深入地学习了这款引擎,目前也在从事虚幻4 VR领域的开发工作,所以希望把自己的一点经验分享给更多的对虚幻4引擎技术感兴趣的同学。
虚幻4 VR开发从何入手
很多人都听说&虚幻引擎比较难学&,其实我想说&对未知的恐惧是学习新知的最大障碍&,并且虚幻4在易用性上确实已经比前一代有大幅改进。所以,希望对虚幻4引擎技术已经动心的同学,放松心情,勇敢一点,其实没那么难。
无论是VR,还是游戏开发,首先我们都需要对引擎中的概念有一个基础的理解,把基础知识掌握好。这包括基本的编辑器操作、资源管理流程、C++/Blueprint蓝图编程,以及Actor、ActorComponent等基础入门知识。由于大量的入门知识并不适合使用文字表达,所以我正在泰课在线播出虚幻4入门的系列视频教学课程(/course/417)。对于没有接触过虚幻4开发的读者,我建议先看看此视频教程,再继续阅读本文。
对引擎有了基本掌握之后,VR开发也就水到渠成了。VR开发在技术上,主要是需要对接主流的VR硬件,包括头戴式显示(HMD)、手柄等。例如Oculus和HTC Vive都提供了自己的SDK,让软件开发者可以访问他们的硬件。而整合这些SDK的工作,引擎已经做好了,我们只要开启指定的插件即可(如图1所示)。虚幻4引擎在上层,针对VR硬件提供统一的抽象接口,在下面的示例中我们详细讲解。
内置了主流VR硬件支持插件
在Gear VR上开发搭积木的小游戏
下面我们通过在Gear VR上运行一个简单的搭积木小游戏,来讲述使用虚幻4开发VR游戏的基本知识。
在这个小游戏中,我们使用视线瞄准一个积木块,然后点击Gear VR头盔右侧的Touch Pad即可拿起积木;这时,转动头盔,拿起的积木块会跟随视线移动;再次点击Touch Pad,将这块积木放下。之后,使用物理刚体模拟,来进行状态更新。你可以尝试把很多积木块堆积起来。
Gear VR项目创建
首先我们需要使用C++ Basic Code工程模板来创建一个新的工程,基本设置要选择:Mobile/Tablet,以及Scalable 2D/3D。这里要注意,必须选择C++的工程模板,使用Blueprint模板的话,在打包到Gear VR后将无法正常运行。
然后,必须向引擎中添加一个Oculus签名文件。具体的方法是:
■ 手机使用USB线连接电脑;&
■ 使用&adb devices&命令获取Device ID,例如:0b05;&
■ 打开网址/osig/,把签名的Device ID粘贴进输入框,然后点Download按钮;&
■ 将获取到的文件(例如oculussig_0b05)放入:引擎安装目录\引擎版本号\Engine\Build\Android\Java\assets(如图2所示)。&
■ 最后,需要在编辑器中打开&Project Settings&-&&Android&,修改以下选项:
Minimum SDK Version:设置为19;
Target SDK Version:设置为19;
Conf igure the AndroidMani fest for
deployment to GearVR。
OSIG文件存储路径
这样配置之后,这个UE4项目就可以打包到Gear VR上运行了。
尽管引擎中默认带了一些基本形状的几何体,不过,我还是使用3ds Max生成了一套自己的几何体FBX文件。另外,还有几个表情图标作为这些几何体的贴图,我们将使用不同的表情来标识对象的不同状态。将这些FBX、TGA文件拖入Content Browser中,即可导入。
积木的材质
接下来,我们要在引擎中创建一个材质,如图3所示。请注意,贴图的节点&TextureSampleParameter2D&是一个Parameter,这使得我们可以在运行时改变这个节点的内容。
Gear VR开发基础功能
首先,创建一个叫作VRPlayerBase的C++类,它从Pawn派生,作为我们的玩家角色。开发Gear VR游戏的话,如果每次测试都要打包到手机上去运行,实在是相当忧伤,因为每次打包的时间&&呵呵。所以,我写了一段C++代码,使用鼠标来模拟HMD头盔转动,这样就可以很方便地在编辑器中测试视线焦点相关的操作了。另外,Gear VR Touch Pad相关的操作,也封装了一下,一起放到这个类里面。关键代码如下:
void AVRPlayerBase(class UInputComponent* InputComponent)
Super(InputComponent);
UPlayerInput(FInputAxisKeyMapping(&Turn&, EKeys, 1.f));
UPlayerInput(FInputAxisKeyMapping(&LookUp&, EKeys, -1.f));
UPlayerInput(FInputActionKeyMapping(&MouseLMB&, EKeys));
InputComponent-&BindAxis(&Turn&, this, &AVRPlayerBase);
InputComponent-&BindAxis(&LookUp&, this, &AVRPlayerBase);
InputComponent-&BindAction(&MouseLMB&, IE_Pressed, this, &AVRPlayerBase);
InputComponent-&BindTouch(IE_Pressed, this, &AVRPlayerBase);
InputComponent-&BindTouch(IE_Released, this, &AVRPlayerBase);
InputComponent-&BindTouch(IE_Repeat, this, &AVRPlayerBase);
那么,在Gear VR真机运行时,如何使得摄像机跟随头显转动呢?这就简单了,因为引擎已经实现了这个功能,只不过它是实现在PlayerController上,这里设置一下VR Player的转动与Controller一致即可(见下图)。
Pawn的朝向设置
接下来我们实现视线焦点检测的功能,这部分使用Blueprint来开发,具体情况见下图。
视线检测功能
在此蓝图中,我们调用了引擎所提供的&LineTraceByChannel&来进行射线检测,下图。
LineTraceByChannel
我们需要指定这条线段的起点和终点。起点就是玩家的眼睛所在的位置:使用GetActorEyeViewPoint节点取得;终点就是沿着玩家的面朝向(GetForwardVector)一定距离的一个点。LineTraceByChannel有两个返回值,其中&Out Hit&是一个结构体,我们使用Break节点来取出结构体中我们需要的项:射线击中的最近的那个Actor;然后我们检测它是否实现了&BPI_VRObject&蓝图接口(这是我们自己定义的一个蓝图接口,后面详述);最后我们调用自定义事件:&OnFocusActorChanged&来处理具体的逻辑。
现在,可以设置一个新的GameMode,来指定这个类作为Player Pawn,然后把它设置成默认的GameMode。
创建一个新的蓝图类,用来实现积木块的相关功能,选择从Static Mesh Actor来派生。首先,为了实现动态改变积木块贴图的功能,要在Construction Script中创建Dynamic Material Instance,如下图所示。
创建Dynamic Material Instance
在上图所示Blueprint脚本中,我使用&CreateDynamicMaterialInstance&节点,为StaticMeshComponent创建了一个动态材质实例,并把它保存到一个名为&BlockMaterial&的变量之中。
另外,考虑到今后可能添加其他的对象类型,创建了一个Blueprint Interface,命名为:用来定义玩家对场景中物体的交互,主要就是下图中的四项。
Blueprint Interface
接下来,我们做一个简单的功能:当玩家注视着这个积木块时,它就向玩家眨个眼(换张贴图)。首先,要在积木块的Blueprint的Class Settings中,添加上述Blueprint Interface。然后,就可以在EventGraph中使用Add Event菜单,添加OnFocus和LostFocus事件处理了(如下图所示)。
Focus相关事件处理
在上述蓝图中,我们实现了&BPI_VRObject&的两个接口事件,分别是:OnFocus和LostFocus,在焦点获得或者焦点失去的时候,我们调用&SetTextureParameterValue&节点,来改变材质中的BaseColor所使用的贴图资源对象。&
接下来,就要实现一个有趣的功能:当积木块坠落的时候,显示一个害怕的表情;当积木块静止不动后,显示微笑表情。这个功能,通过刚体(Rigid Body)的Wake、Sleep状态来实现。从物理引擎的角度说,当物体静止不动时,物理引擎会把这个物体设置到Sleep状态,以节省运算量;当需要物理引擎计算其运动状态时,再把它叫醒。注意:要设置StaticMesh组件的&Generate WakeEvent&才能收到这两个事件,见下图。
刚体的Wake、Sleep事件处理
在这个Blueprint脚本中,我们通过响应&OnComponentWake&和&OnComponentSleep&来变更了自定义变量&IsSleeping&,然后调用自定义事件&ChangeTextureByState&来变更材质的贴图参数。
接下来,还可以做一个小功能:当玩家抓起这个积木时,它就开始哭。这个实现方法和上面的思路完全一样,在此不多赘述。
在玩家周围随机生成一些积木块OK,既然的积木已经准备好了,就可以在关卡启动时,随机地生成一些积木,供玩家玩耍。这个功能可以在Level Blueprint或Game Mode中实现。这里,我们假设这是本测试关卡的功能,所以把它放在Level Blueprint中去实现。
在Level Blueprint中随时生成积木块
图11展示的这段Blueprint代码,即是在PlayerStart对象周围随机产生了10个积木块。响应关卡的BeginPlay事件:通过ForLoop节点,调用10次SpawnActor节点,这个节点的Class参数选择成我们的积木块(BP_Block);积木块的出生点通过MakeTransform节点来生成。在MakeTransform节点中,使用了3种不同的随时方式来产生位置、旋转和缩放这三个参数。
拿起和放下积木
接下来,我们继续完善玩家类,添加拿起、放下积木块的功能,具体操作是:玩家首先要注视着某个积木,然后轻点Touch Pad可以拿起积木;转动头盔,积木会随其移动;如果再次轻点TouchPad,则放下这个积木。
首先,我们在Touch Pad的Tap事件中实现上述流程。注意,这个Tap事件是在VRPlayerBase那个C++类中触发的,见下图。
Touch Pad的Tap事件响应
在此,我们判断如果PickActor是一个有效值,则调用DropActor,否则的话,调用PickFocusActor。
其中的Pickup Focus Actor和Drop Actor是两个自定义事件。在PickupFocusActor事件中,首先我们通知了这个积木块对象:调用它的OnPickup接口;然后使用一个TimeLine驱动的动画,来控制积木块的位置,使它从当前位置,平滑地移动到玩家面前的一个位置。在DropActor事件中,则首先通知了积木块对象:调用它的OnDrop接口;然后把PickedActor对象设为空值,代码见下图。
捡起正在注视着的对象
放下正在拿着的积木
通过上述过程,一个简单,但还有点意思的积木小游戏就准备好了(见下图)。你可以通过项目打包功能生成APK包,在Gear 上进行体验。由于篇幅所限,项目中一些细节无法在此完全详述。
游戏运行效果
本文所演示的项目,只是为了讲述最基本的开发方法,并没有在画面效果上做任何修饰。实际上,现在手机上已然可以支持PBR材质效果。总之,各种酷炫的效果,还待大家去发掘。在今后的一段时间内我会持续更新关于虚幻4开发的视频教程,欢迎大家关注。
你还没有登录,请先或!
Unity3D技术交流1群
泰课Unity3D公开课
工作时间:9:00 - 18:30
北京客服:010 -
广州客服:020 -本站资源均收集整理于互联网,其著作权归原作者所有,如果有侵犯您权利的资源,请来信告知,我们将及时撤销相应资源。
Copy . All Rights Reserved.Pages: 1/5
主题 : 三年一个人使用虚幻引擎(UDK)开发的一个游戏心路
级别: 新手上路
UID: 230586
可可豆: 43 CB
威望: 32 点
在线时间: 36(时)
发自: Web Page
来源于&&分类
三年一个人使用虚幻引擎(UDK)开发的一个游戏心路&&&
本帖被 fm2010 执行加亮操作()
先上图: &&&&&&&& 目前是限免
到 这个游戏没有做任何宣传(这个帖子算是第一个吧),其实也是实在没有额外的精力了,业余时间,靠兴趣搞东西的苦逼所在吧。发这个帖子也是想能和一个人开发过游戏,和想一个人打算开发游戏的童鞋们交流一下,其中有多少坑掉里的兄弟才能体会吧。最初,源于一个梦,和一个儿时的愿望。                               对 于我个人来说,完成她的意义不仅在与完成了一个儿时的愿望,也是一次战胜自我的旅程,3年的时光,经历了种种变荡。最终,通过压榨自己的业余时光,学习新语言,新游戏平台,3D建模,3D动画,美工,音效,FLASH,各种配置。完成了一个新难度的挑战。默然回首,之前认为很难的东西,现在回首真的已经不 算什么。也理解了一个人,一个小团队,能创造出整个world都使用的APP。真的不在云端之上。《我的世界》notch十年磨一剑。Dubbo,六个阿里研发兄弟,创造了每天支撑2000多个服务,30多亿访问量。Redis,Antirez一个的开源贡献。。。屌丝有信念也是可以逆袭的。  2012年,梦境中玩了一个体感的火箭游戏,醒来后觉得很有意思,于是蓄谋已久的游戏开发计划便有了最初的主题。希望他是一个纯粹的游戏,不搞内购,不加广告,在觉得不知道玩什么的时候,能有个消磨时光的乐子。圆儿时一个愿望。关 于为什么使用虚幻引擎(UDK),源于第一次见到虚幻在移动平台上的表现,然后就被她深深的震撼了,目前来看虚幻引擎在IOS平台上的表现力仍然是最强 的,没有之一。&无尽之刃&系列就是铁证。这就是我为什么非常二的选用UDK的原因(没有考虑任何商业目,但若想用最小的成本完成最好表现力的游戏,还是真心建议想做游戏的同学们3D游戏用unity3D,2D游戏用cocos2D,虚幻引擎的表现力代价是过于复杂,太难以驾驭 了,unreal4 的表现让我们拭目以待)。对于个人开发者,额,准确点来说作为一个业余个人开发者。一个人开发一个游戏,还不知死活的选用UDK引擎来开发3D游戏。尤其是对于一个程序猿来说,3D建模,3D动画,二维贴图,FLASH...复杂的unreal script,和UDK引擎,真是应了那句话:“不会画画的厨子不是好程序猿”+ &No Zuo No Deal&。其中艰辛真的只有做过的人才能体会。我 是玩红白机长大的那一代,从最初的红白机,后来的“中型机&,再到DOS 版红警,仙剑,PC上的各种经典...到今天儿子吊在脖子上和我一起玩xbox的《山脊赛车》。几乎玩便了从FC时代开始所有经典的单机视频游戏(《坦克大战》,《超级玛丽》...到后来的《三国志》,《吞噬天地》,《重装机兵》,《幽游白书》,到《95版仙剑》,《星际》,《魔兽》,《大菠萝系列》, 《GTA系列》不胜枚举...)。随着年纪的增加,做一款真正好玩的游戏的念头便越发强烈。原本计划是完成一款自己心目中的游戏,献给30岁的自己。然后,拖拖拉拉居然搞了3年,暮然间到了大叔的年纪。很佩服那些可以放下一切,全职做游戏的牛X同学们。没有勇气全职来做,只好用业余时间来完成,牺牲了很多陪伴家人的时光,很是愧疚。这 个游戏献给已过而立之年的大叔自己和我最亲爱的家人。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
级别: 新手上路
UID: 230586
可可豆: 43 CB
威望: 32 点
在线时间: 36(时)
发自: Web Page
其实最终完成的时候,才发现想要的收获已经在不知不觉中完成了。开始时也YY过能赚些银子,到后来还是体会到了没有期望,便没有失望。一个用业余时间搞的东西,也不再期望有啥惊喜了,祈求下载的兄弟和妹子们别骂我就万福啦,可能更多的收获是战胜自我的过程。同时也有一些感慨:我想我们都生在了一个美好的年代。在我们的有生之年都有机会体验到真正的虚拟现实。带上虚拟眼镜的刹那,你可以去任何梦中之境,成就无限可能,且可以真正的感同身受...相传,华夏古代的修士们,修行大成之前,修者们都要经历“入妄境”与最终破境而出的劫数,历劫成功便成就大成真人或罗汉。而妄境之中便是一个完美的 “我的世界”,所有的感观如同亲身经历,并且随心所愿;这不就是虚拟现实技术完美的状态吗,她是一条成就普通人的妄境之路。而妄境的编织者便是我们这几代游戏,或娱乐内容的开发者。对普通人来说是否是一种完美的精神鸦片? 古人们也给了我们答案:入妄境,还是为了破妄境,在妄境中体验拿起与放下,得到与失去;做到感同身受后的知行合一,在妄境的小轮回中体验,何为与而不害,何为为而不争,何为为善去恶,何为内观其心,心无其心;外观其形,形无其形;远观其物,物无其物;何为,朝为青丝,暮为雪!
级别: 侠客
可可豆: 141 CB
威望: 141 点
在线时间: 695(时)
发自: Web Page
牛哦。画面很赞!很佩服lz的毅力,这才是真正的独立游戏!
级别: 精灵王
UID: 163803
可可豆: 1060 CB
威望: 1266 点
在线时间: 1529(时)
发自: Web Page
支持一下,实在不容易。加油!!!!!
级别: 新手上路
UID: 230586
可可豆: 43 CB
威望: 32 点
在线时间: 36(时)
发自: Web Page
感谢随我和夜雨,我想绝大多数做游戏的人心中还是有梦想的。虽然目前国内的精品还很少,感觉我们这一代人,一定能出世界级的精品,可能只是时间问题,明天的大师,就是今天在坑里各种趴的大家把
级别: 新手上路
UID: 230586
可可豆: 43 CB
威望: 32 点
在线时间: 36(时)
发自: Web Page
说一起来,我知道这是cocoa引擎的地盘,但是还是忍不住问问大家,有人研究已经免费了的虚幻4吗?确实比UDK好了很多,上手难度已经降了不少,但还是比cocoa,unite3D高了不少。不过表现力和B格也高了不少。从做手游的角度说,一定要慎重选择,因为你用虚幻做一个游戏,用cocoa或u3D都能做好几个游戏了。有兴趣的同学可以看看宣传视频:和最近很火的成品虚幻4游戏:《方舟:生存进化》话说这个《生存进化》也创造了30天内同时在线的记录。慢工出细活永远也不过时,只是现在的我们太浮躁
级别: 精灵王
可可豆: 1653 CB
威望: 1647 点
在线时间: 1169(时)
发自: Web Page
不错,虽然没卖钱,但lz本来就没打算卖钱。现在要卖钱确实太难。画面内容光多不行,要有细节布局风格色调,另外还要有出色的UI和繁复耐玩的系统。所以你还有很长路要走
级别: 风云使者
UID: 209194
发帖: 4048
可可豆: 6686 CB
威望: 6943 点
在线时间: 958(时)
发自: Web Page
以前玩游戏感觉游戏很简单,以为做游戏也很简单,只要玩的好一定能做的好,现在做过一些游戏了,发现做游戏和玩游戏完全是两回事,做出好玩的游戏实在是太难了
维多利亚没有秘密!
级别: 新手上路
UID: 230586
可可豆: 43 CB
威望: 32 点
在线时间: 36(时)
发自: Web Page
是啊,玩的游戏再多,也不等于就能做出好游戏。尤其是做出全年龄,都能接受的游戏,我这个游戏拿女同学试的结果就是,半天都没有弄明白怎么玩,所以现在想想,钻石迷城,乐克乐克真是神座了。
级别: 圣骑士
可可豆: 1557 CB
威望: 1557 点
在线时间: 291(时)
发自: Web Page
3d打飞机呀,哈哈,打飞机越来越有技术含量了
Pages: 1/5
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版}

我要回帖

更多关于 虚幻4引擎游戏 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信