Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >UE4 GamePlay架构学习篇

UE4 GamePlay架构学习篇

作者头像
全栈程序员站长
发布于 2022-11-09 02:15:50
发布于 2022-11-09 02:15:50
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

本帖为原创文章,转载请注明出处。

现在UE4刚免费不久,网上的资料还很少,有一些UE3的大佬出了一些学习的帖子。通过参考前辈的文章+通过查阅官方文档和官方的模板案例测试得出如下结论,供学习参考:

1>UGameInstance

游戏实例,全局只存在一份,我们自己继承一下,实现Init()和ShutDown()方法。比如不会被GC的数据可以放到这里,比如UE4的本地数据库(存档USaveGame)(因为Level切换的时候之前关卡中的数据都会被GC,代码中存的关卡的数据也就没了)。

1.1>Init():写我们自己的初始化代码,可作为程序的入口

1.2>ShutDown():写我们自己的结束程序代码,比如释放SDK资源等

2>AGameMode

游戏模式,其实是一个服务端(Server)。

2.1>服务端;游戏模式;客户端是不允许访问的。UGameEngine::LoadMap()。

2.2>GameMode在哪里初始化的?GameInstance里面的SetGameMode()

3>AGameState

游戏状态,主要用途是全局管理游戏状态和游戏数据,客户端也存在一份。客户端服务端都可以访问。

4>AGameSession

游戏会话:存在于服务端的,客户端没有。

功能:1>可以进行踢出玩家 2>玩家加入退出游戏监听 3>重新开始对局 4>获取当前对局的人数 5>获取房间的状态

5>AController

控制器,一个很重要的概念,角色有控制器,人也有控制器。在这里记录一个UE4里面的Owner还有Instigator的概念。

设置拥有者 SetOwner(InOwner); 设置谁导致的这个Actor的生成。这块比较绕。这样想就明白了了 我觉得UE4设置InOwner,InInstigator就是在射击游戏的原型上衍生出来的。 比如人拿枪,人开枪,枪发射子弹。假如子弹就是这个被Spawn的Actor 那么InOwner是谁?是抢,子弹属于枪的 那么InInstigator是谁?是人,人开枪才有了子弹。 当然怎么设置取决于我们 SetInstigator(InInstigator);

6>AAIController::public AController +CharacterMakeNoise() + UAIPerceptionComponent(AI监听组件,可有视力和听力)

AI的控制器,首先这个是客户端服务器都有的。

AI有自己的独立控制器,在Pawn上面进行设置即可。可在蓝图中选择,在这里还会衍生出AITree等一系列的AI模块的东西。

7>APlayerController::public AController

玩家控制器,首先这个是客户端服务器都有的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1>一般我们在这里面处理监听玩家的输入,当然也可以在Characer上面做,因为Pawn和Controller是一个相互持有的关系,Character又继承自Pawn。
2>当前不止第一条,还有一些射线检测;
3>GM的命令行
4>客户端的HUD和视口GameViewPortClient
5>PlayerCameraManager相机管理 用于播放相机动画, 以及ShakeCamera 屏幕震动效果等
6>作弊的管理
7>网络连接
8>旁观者
9>替换角色的功能,比如运行中我们要切换门派,将整个Pawn给换掉
10>…………功能还有很多

8>APlayerState

顾名思义:角色的数据类,当然也可以自己写。将HP、MP、攻击力、Buff等放这。

9>APawn

角色基础类,没有聚合移动组件,和Controller是一个互相持有的关系

10>ACharacter::public APawn

角色类,默认聚合了CharacterMovement组件,可用物理真实去移动等。Jump,Lunch等功能。

11>UCharacterMovementComponent

角色移动组件,最终要的是里面分了几种模式,也支持我们自己扩展,WalkMode、Fall、Fly、Swim等,摩擦力这些都在这。

12>AHUD

角色的2D视口绘制类,就是UI类,比如绘制一个FPS游戏的准心

13>UMG

可视化编辑的UI系统,就像cocos2d里面的cocosstudio编辑UI的界面的工具。里面封装了Slate。

14>UMG->Slate

它是UMG的底层实现,也是UE4编辑器界面使用的GUI的架构,也就是说UE4的编辑器界面就是用Slate写的。

15>UGameViewportClient

游戏视口管理,比如失去焦点(我们鼠标点中了视口的外面,点到了我们桌面),返回焦点(处于失去焦点状态并且鼠标点击中了我们的程序视口内)。

16>UEditorViewportClient

编辑器的视口管理

17>AGameUserSetting

游戏的默认存档设置,比如全局的抗锯齿等级等。

18>USaveGame

UE4提供的一套存档的系统,单机游戏用着不错,也可作为本地存储一些数据载体。

19>AWorldSettings

顾名思义:一个世界的设置,一个地图的设置,一个UMap的设置。里面有KillZ等信息,一直掉落,掉到什么KillZ的负数绝对值的时候角色就死亡了,被销毁了,当然我们是可以监听的。等等的功能。

UE4太牛了………………自学过程中。我只是看了个大概,很多功能还没研究完。天道酬勤,共勉

谢谢

简单画了Visio的图

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185953.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月4日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
UE4网络模块解析(一)
客户端所有的操作如击杀等都需要传到中央服务器来运算,得到的运算结果下发到各个客户端。服务器是UE4多人游戏的重要组成部分。它做出所有重要决策,包含所有权威状态,处理客户端连接,前往新地图,处理开始比赛、结束比赛等整个游戏流程。
玖柒的小窝
2021/12/14
7360
UE4新手编程之创建C++项目
 虚幻4中常用的按键和快捷键 虚幻4中有一些按键和快捷键很常用,牢记它们并运动到实际的项目开发中,将会大大地提高你的工作效率和使得工作更简便快捷。下面将列举它们出来: 按键   动作  鼠标左键   选择actor  鼠标左键+拖动   前后移动和左右旋转摄像头  鼠标右键   选择actor并打开右键菜单  鼠标右键+拖动   旋转摄像头方向  鼠标左键+鼠标右键+拖动   摄像头上下左右移动  鼠标中键+拖动   摄像头上下左右移动  滑轮向上   摄像机向
用户1198337
2018/01/19
3.1K0
UE4新手编程之创建C++项目
UE4学习笔记(一): 基本概念
UE4有很多个Module, GamePlay部分也是一个或多个Module, 每个Editor也是一个Module 搜索了一下, Module总数170+, 总共分三类: Runtime, Editor, Developer Runtime这边比较重要的是Core, UObject, Engine Core 数据类型 数据库 容器 IO/Log UObject: 所有对象的基类. UE中还有个约定是Object代表不是Actor的对象 反射 序列化 文件包 Engine Actor: 由Compo
逍遥剑客
2018/05/21
6060
UE4
类命名(基础类actor、Uobject) 派生自 Actor 的类带有 A 前缀,如AController。 派生自 Object 的类带有 U 前缀,如UComponent。 Enums 的前缀是 E,如EFortificationType。 Interface 的前缀通常是 I,如IAbilitySystemInterface。 Template 的前缀是 T,如TArray。 派生自 SWidget 的类(Slate UI)带有前缀 S,如SButton。 其他类的前缀为字母F ,
sofu456
2019/07/09
3.5K0
游戏开发之UE4添加角色到场景中
接着上次继续学习,现在我们已经有了一个场景并且运行了,我们需要添加一个角色到场景中。要这样做,我们必须从UE4的GameFramework类继承它。 一. 创建一个从Character类继承的类 从基
用户1198337
2018/01/19
2.8K0
游戏开发之UE4添加角色到场景中
UE4 Slate三 SlateUI代码讲解
点击观看上一篇《UE4 Slate二 用UMG思想去理解Slate+Slate编码》 点击观看下一篇《UE4 Slate四 SlateUI如何做UI动画》
全栈程序员站长
2022/11/09
1.9K0
UE4 Slate三 SlateUI代码讲解
个人塔防游戏Demo开发思路(UE4)
游戏为本人毕业设计,功能实现较为简陋,这里只是简要描述下开发思路,不包含深入的Gameplay框架分析,项目可无缝升级至UE4.26,素材全部来源于虚幻商城与互联网。完整项目下载,提取码:demo 游戏主体逻辑采用蓝图系统实现,支持多平台运行,包含存档功能,进入游戏后玩家可以在预先设置好的摆放位置购买和升级防御塔。游戏共有5波敌人,包括最终的BOSS关卡。在击败BOSS通关后即可进入无尽模式,此时游戏难度会不断提高,直到游戏结束。
LonelyEnderman
2023/08/09
1.2K0
个人塔防游戏Demo开发思路(UE4)
UE4新手常用C++API
//C++暴露给蓝图可编辑 UCLASS(Blueprintable) //创建FString FString::Printf(TEXT("aa bb")); //蓝图调用变量 UCLASS( ClassGroup=(Custom), meta=(BlueprintSpawnableComponent) ) //限制条件范围 meta = (ClampMin=0.1,ClampMax = 100) //蓝图识别组件 UPROPERTY(EditAnywhere, BlueprintReadWrite
Ning@
2021/11/10
3.6K0
【技术总结】UE4中的Subsystem
在游戏开发过程中我们往往需要创建一系列的工具来辅助我们开发,例如UI管理工具,各类导表工具。在UE4.22之前我们只能够自己编写单例,并且自己管理生命周期。或者直接将管理游戏的工具编写进GameInstance中。但是随着代码量的增加,GameInstance将会变得难以维护。在4.22版本发布了之后,我们可以直接将工具写在Subsystem中,让引擎帮我们自动管理工具类的生命周期,不再需要自己维护工具的生命周期或者修改引擎的类(如GameInstance)。
太阳影的社区
2021/10/15
6K0
跟我用TypeScript做一个FPS游戏
原文:How to Create a Simple FPS in Unreal Engine 4
车雄生
2021/11/10
1.7K0
跟我用TypeScript做一个FPS游戏
游戏开发之在UE4中编写C++代码控制角色
当你运行我们上次做完的项目,你可能会意识到我们移动的摄像机还是默认的那个摄像机,这个默认的摄像机可以自由飞翔。这一节,我们要使得开始的角色是我们的一个Avatar类的实例对象,并且使用键盘控制我们的角
用户1198337
2018/01/19
3.1K0
游戏开发之在UE4中编写C++代码控制角色
Unreal随笔系列2: 初始化流程&Gameplay基础类
近期排查一个问题时,将Unreal的启动的初始化流程和基础的Gameplay类又review了下。 将相关内容整理,随笔记录下来。
JohnYao
2023/03/08
1.4K0
UE4 RPG 游戏开发:简单场景创建,角色资创建,移动绑定
Hello 大家好,今天给大家分享一下如何利用 Epic 提供的免费资源来制作一款简单的 RPG 游戏,毕竟目前也是一枚 UE4 小白,从学习的路线上来说,先选择官方提供的免费素材来入门还是明智的选择,等真的以后成为高手后,免费的已经满足不了你的需求了,那就花钱买吧!毕竟对我来说,白嫖挺香的。
HelloWorld杰少
2022/08/04
1.2K0
UE4 RPG 游戏开发:简单场景创建,角色资创建,移动绑定
基于UE4/Unity绘制地图 - 确定展示区域
地图可以看成是一个巨型的开放世界游戏场景,因此为了便于数据存储和查找,传统的做法是将地球根据墨卡托投影转换为平面地图,再将地图分级分块进行切片,通过索引获取到对应的数据。
腾讯位置服务
2021/03/19
1.3K0
UE网络通信(四)RPC&移动通信
距离上一次发表《UE网络通信》系列的文章已经过去了一年多。这段时间,UE5.0在2022年4月发布;UE5.1在2022年11月发布。好在新版本,引擎在同步方面尚未做大的变更;之前立的关于RPC,底层协议的写作flag,还是可以继续进行。
JohnYao
2023/04/28
2.8K0
UE网络通信(四)RPC&移动通信
UE4:来为我们的角色制作一个血条吧
角色扮演类的游戏免不了要给角色添加一个血条来显示当前角色的生命值,所以血条对于玩家来说也是一个非常重要的提示工具,今天就让我来带大家用 UE4 的进度条制作一个简单的血条吧!
HelloWorld杰少
2022/12/17
1.1K0
UE4:来为我们的角色制作一个血条吧
ue4 插件开发(ue4性能优化)
UE4引擎和UE4项目是由各个模块组成的,其主要编程语言是C++。 插件也是一个模块,说到插件必须讲到耦合性与独立性,耦合性是对模块间关联程度的度量,模块间关联越强,则耦合性强,独立性差。 庞大的UE4引擎各模块相互参差作用,所以想要读懂并拆解并非易事,而创建UE4游戏项目实则只引入了引擎的部分模块,再想想如果很多游戏项目都需要用到这一个自定义功能时,是不是每个项目都要开发一次这个功能,个人或者一家公司内部还好,只要把项目代码复制给另一个项目即可,但是全球这么多的UE4开发者怎么办,开发者的结晶势必要发挥它最大的用处,把自己的研发成果分享出去,为了解决这类问题,就要使得模块独立起来,那么UE4插件就该闪亮登场了。
全栈程序员站长
2022/07/29
3.5K0
ue4 插件开发(ue4性能优化)
UE4->Plugin 认识UE4插件 1「建议收藏」
UE4 Engine中插件代码占很大一部分,可参考下图,里面的Editor, Developer, Runtime, Slate举例都是大家比较熟悉的几个
全栈程序员站长
2022/11/09
6620
UE4->Plugin 认识UE4插件 1「建议收藏」
UE4制作星际天空球[通俗易懂]
6张无缝连接的图片,如果没有的推荐大家下载“Spacescape” 3ds Max 2018软件 Epic Games Launcher(UE4游戏引擎) 然后就是阅读本博客了
全栈程序员站长
2022/11/10
7710
UE4制作星际天空球[通俗易懂]
UE4 ContentExamples:Network_Features
最近一直没有弄过UE4了 和同事沟通的时候,看了下 Network_Features 今天自己简单记录一下 等 微积分 复习完,再考虑别的
dodo_lihao
2018/09/12
1.1K0
UE4 ContentExamples:Network_Features
相关推荐
UE4网络模块解析(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验