UE5多人联机游戏C++开发 游戏框架和相关引擎类

整体游戏框架和相关引擎类

在UE多人游戏开发中,我们使用一组特定的类处理事件,下面整理一下各种引擎类various engine classes,主要使用场景是射击类游戏。

各种引擎类various engine classes

GameMode 只存在于server(服务器)中,这意味着如果我们在client(客户端)上尝试访问GameMode ,我们只能得到nullptr,出于这个原因,UE有了Game State类,供client(客户端)访问。

Game State 存在于server(服务器)和所有clients(客户端),因此,来自server(服务器)的数据可以通过网络复制到client(客户端)的Game State 类。

PlayerStateGame State 类似,存在于server(服务器)和所有clients(客户端)上。

PlayerController
我们经常使用这个类,所有Character(玩家)的PlayerController都存在于服务器上,client(客户端)只拥有自己的一个PlayerController

Pawn
所有Characters(玩家)的Pawn存在于server(服务器)和所有clients(客户端)上,这样我们在客服端控制自己的角色同时,也能看到其他Simulation角色。

HUD/WIDGETS 只存在于client(客户端)上,因为其他玩家没有必要获取你的界面、UI等信息,客户端只访问自己的HUD,绘制UI、界面到游戏屏幕上。

UE5多人联机游戏C++开发 游戏框架和相关引擎类_第1张图片

下面是我们这些类的功能:

GameMode

GameMode 存在默认的PawnPlayerControllerHUD,但是GameMode也确定游戏规则,比如在多人游戏中,GameMode应该负责游戏规则,玩家如何死亡,如何重生

GameMode还有游戏状态的概念,可以有各种游戏状态,比如游戏在等待多久时间后正式开始,如果我们在游戏中运行计时器,GameMode将负责比赛时间的计算

UE5多人联机游戏C++开发 游戏框架和相关引擎类_第2张图片

GameState

GameState更多是用来存储游戏的状态,跟踪得分最高的玩家或者处于领先的队伍,GameState将存储每个队伍的分数,保存PlayerState的数组

UE5多人联机游戏C++开发 游戏框架和相关引擎类_第3张图片

PlayerState

PlayerStateGameState很像,但PlayerState只负责个人玩家的状态,如果单个玩家有分数,PlayerState将跟踪分数

PlayerState还涉及与玩家当前状态相关的其他变量,比如玩家可能有多少次Defeats失败,玩家身上可能携带多少弹药,以及玩家属于哪个队伍

UE5多人联机游戏C++开发 游戏框架和相关引擎类_第4张图片

PlayerController

PlayerController (玩家控制器)负责支配一个Pawn,也可以访问HUD,我们可以通过PlayerController来设置HUD,用于显示消息和更新HUD状态,例如玩家Health健康,Score得分,Defeats失败和Ammo弹药等

因此PlayerController访问客户端的HUD,来进行上述更新。
UE5多人联机游戏C++开发 游戏框架和相关引擎类_第5张图片

服务端和客户端拥有的各种引擎类

服务端拥有的各种引擎类various engine classes

综上所述,在Server(服务器)上,我们存在一个GameMode,一个GameState,所有的PlayerStates,所有的PlayerControllers,所有的Pawns

UE5多人联机游戏C++开发 游戏框架和相关引擎类_第6张图片

客户端拥有的各种引擎类various engine classes

我们Client(客户端),拥有一个GameState,自己和其他客户端玩家的PlayerStates,一个客户端自己的PlayerController,自己和其他客户端玩家的Pawns

UE5多人联机游戏C++开发 游戏框架和相关引擎类_第7张图片

你可能感兴趣的:(游戏,ue5,rpc,服务器)