注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

眼睛想旅行

技术就是我的生命与信仰!

 
 
 

日志

 
 
关于我

精通C,C++,python,Erlang。并熟悉各种其他编程语言,用cocos2dx游戏引擎作过几个项目。会MySQL增删改查,了解OpenGL渲染原理。懂单片机,能设计数字电路系统,会画电路图和设计电路板。喜欢了解最新前沿技术,并持续关注和学习新技术。

网易考拉推荐

Unreal engine 4引擎游戏运行逻辑学习  

2015-06-29 12:14:47|  分类: UE4 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
今天用了一早上的时间细看了一下UE4引擎的游戏运行逻辑关系。觉得算是有点收获,写出来以便收藏和分享学习。
一般的游戏,或者电影,或者小说,只要是想要给别人说明一个故事的东西都会在哲学上,或者说思维逻辑上是固定的不变的东西,这些东西在那里都是适用的。细观我们所处的整个现实世界,当你要表达一件事情或者某种观点时。时间,地点,事件,这三样东西就是主要中心思想,同样我们设计游戏也不例外。
先说一下游戏到低是个什么东西。
1、时间(事情的发生顺序)
游戏中自然少不了时间,这里的时间是指游戏逻辑运行的时间顺序。比如,我们点了开始游戏之后,选是初始化游戏场景和场景中的所有物体,再初始化游戏中我们可以控制的角色,和我们不能控制的角色,再接着初始化我们控制游戏角色的控制器等等。
2、地点(不同的游戏场景,也叫不同的游戏关卡)
地点,就是整个虚拟世界中的不同场景,或者说是游戏的不同关卡
3、事件(玩家与游戏的交互事件,游戏中对象之间的交互事件)
事件是游戏中我们最关心的东西,也正如现实生活中发生的事件一样,我关心的是事件发生后的结果,比如我们点击了屏幕,按动了键盘,点击了鼠标,这些都是事件,往细了说这些事件就是我们与游戏逻辑的交互事件。还有一些比如两个物体碰到了一起,子弹打中了敌人,火焰点燃了火把等,这些是游戏中虚拟物体之间的事件。
几个类
接下来,我围绕上边我的理解学习一下我对这个引擎运行逻辑的理解。看一下引擎运行时代码中定义的几个主要类(class),这些类会在游戏运行中初始化游戏中的对象。
1)UWorld
世界类,世界对象里包含了所有的关卡,角色,角色控制器等我们可以看到的东西。
2)ULevel 
关卡类,关卡也就是我们在UEEditer中编辑的游戏地图,关卡中包含所有物体。
3)UCheatManager
虚拟管理器,他管理着碰撞,世界,角色,角色控制器,关卡,等等所有东西。
4)AActor
直译就是演员的意思,也就是世界中所有可见物体,角色,角色控制器,等等都是继承自它的。
5)UActorFactory
直译就是演员工厂,使用他可以创建你所要的物体或者角色。
6)AContorller
控制器,他继承自AActor,说白了就是所有控制角色运动的控制器的父类,玩家控制器就是他的子类。
7)APlayerController
玩家控制器,也就是手柄,或者键盘,或者多点触控控制游戏角色的类。
8)FActorSpawParameters
这是一个参数类,他的主要作用从字面上就可以看出来是角色物体创建参数,看到第一个字母是F,UE4中所有第一个字母是F的都是参数类。
9)UMovementComponent
    这个是所有移动相关类的父类
    10)AGameMode
    这个类有非常多的游戏状态控制函数,比如游戏开始,加载关卡,创建物体等等,
游戏运行逻辑
UCheatManager对象很明显是一个单例类,他会在APlayerController的结析函数中实例化。我建的是一个SideScroller示例地图的C++项目,其他项目应该也是这样初始化的。UCheatManager中有碰撞事件相关的方法,同时也有游戏时间相关的参数和方法。
AGameMode,每一个游戏都是从AGameMode开始,在这里有游戏开始,游戏重新开始,进入关卡,默认角色的创建,游戏界面的载入,游戏当前的加载或者运行状态。游戏关卡切换,关卡初始化等等都是在这里进行的。
每一个AActor对象都有一个GetWorld的方法,可以在这里得到这个物体所处的世界。UCheatManager中也有一个获取当前世界的方法。也可以获取当前关卡。
UWorld中有一个SpawnActor()方法,也就是说可以用这个方法在世界中创建新物体。同时UWorld中还有添加和移除控制器的方法。添加和移除关卡的方法等。
UActorFactory也可以创建AActor对象,这些对象是可以添加到ULevel关卡对像中去的,就像你在编辑器里作的操作一样。
UMovementComponent对象的类和他的子类有很多关于物体移动的方法。
AContorller,游戏控制器和他的子类,有所有控制角色的方法,走,跑,飞,跳,开火等等。

总的来说,有了这些,基本上就可以用代码写一些简单的逻辑了,其他更多的代码应该都是围绕这些类的细节工作的。UE4的游戏主框架是在Engine/Source/Runtime/Engine中。上边说的这些类就是在这个地方。
  评论这张
 
阅读(339)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017