ue3d关于虚幻UE引擎制作网络多人游戏

关于虚幻UE引擎制作网络多人游戏

分类:
ue3d - 关于虚幻UE引擎制作网络多人游戏

虚幻UE引擎广泛支持网络多人游戏的开发,那么本教程将解释一下用UE创建网络多人游戏的各个类的设计和作用。

在本文中,无论使用Listen服务器还是Dedicated服务器,想法本身都是相同的。请记住,对于Listen服务器,服务器必须完成工作,包括客户端处理。

游戏框架(Gameplay Framework)的作用

UE引擎从一开始就有一个叫做Gameplay Framework的机制,即使不是创建网络游戏也很有用,但它本质上是为创建网络游戏准备的机制,下面是比较重要的内容。

  1. 游戏模式
  2. 游戏状态
  3. 游戏实例
  4. Pawn
  5. 玩家控制器
  6. 玩家状态
  7. UMG小部件和 HUD

UE引擎的网络采用了一种叫做Client-Server model的架构,这意味着服务器管理所有游戏信息,而客户端只显示它收到的结果。

分为以下四种

  • Server only → 顾名思义,它只存在于服务器上。
  • 服务器和客户端 → 服务器和所有客户端上存在的内容。
  • 仅服务器和拥有客户端 → 仅存在于服务器和拥有它的客户端上。
  • 仅拥有客户端 → 服务器上不存在的东西,但只存在于拥有它的客户端上。

下图是上面分配给每个类的图片说明

ue3d - 关于虚幻UE引擎制作网络多人游戏

现在可以更轻松地查看哪些类位于客户端和服务器的哪个位置,这些游戏框架中的每一个都为每个类分配了不同的角色,应该相应地使用,现在让我们来看看每个角色的作用。

游戏模式(Game Mode)

首先是游戏模式,许多人以前都使用过这个类,但是网络上的游戏模式只存在于服务器上,这是管理只有服务器需要知道的信息的地方,主要管理游戏规则和服务器驱动的游戏进度。

游戏模式是唯一可以在每个客户端登录或注销时分别使用OnPostLogin和OnLogout事件处理登录后和其他处理的模式。实际上,可以仅初始化客户端,并且可以在OnPostLogin中获取 Player Controller,因此通过将其保持在Game Mode中,可以在服务器上管理单个客户端信息。

客户端登录后还可以通过Player Controller初始化widgets等。

游戏状态(Game State)

Game State顾名思义就是管理游戏的状态,但是Game State在服务端和客户端之间共享一个东西作为一个整体,客户端通过在服务端发送一次RPC来复制,变量会被共享由所有客户。

Game State最适合管理登录游戏后游戏开始进行时的进度和总分,优点是可以全局处理,服务端和客户端都可以处理。

游戏实例(Game Instance)

ue3d - 关于虚幻UE引擎制作网络多人游戏

游戏实例在整个游戏过程中始终存在,存在于服务器和所有客户端上。但是,它不像其他类那样共享实例。换句话说,它适用于管理只想保留在本地的信息。

具体来说,在登录时使用的账户信息以及在开始游戏后希望保留的信息。另外,Game Instance是唯一可以管理登录前和退出后的信息的,所以即使出现问题,它也有非常重要的作用。

即使断网,也只有Game Instance可以跟踪信息,所以如果要处理网络错误,就要用到这个Game Instance。

Pawn

ue3d - 关于虚幻UE引擎制作网络多人游戏

Pawn是游戏中可玩的角色,很多人实际上使用继承自Pawn的Character类。Pawns与Player Controller和Player State有着密切的关系,在登录游戏后,Player Controller将对生成的Pawn使用Possess来占有角色

Pawn还可以通过在游戏中切换到另一个Pawn来控制另一个角色。或者可以通过在角色死亡或被摧毁时重生来再次更改角色。

Pawn本质上是游戏中的一个角色,所以它存在于服务器和所有客户端,但是需要记住的是Pawn的所有权和信息是由Player Controller管理的,如果角色在中间切换,信息也会消失。

玩家控制器(Player Controller)

ue3d - 关于虚幻UE引擎制作网络多人游戏

Player Controller是客户端最重要的东西,每个客户端将只有一个单独的播放器控制器,尽管它当然会存在于服务器上。换句话说,客户端A和客户端B不共享彼此的Player Controller信息。

Player Controller在客户端拥有最大的权限,因为它是客户端登录游戏后唯一可以识别的对象。如果中途切换了Pawn,那个Pawn的信息会丢失,但是Player Controller的信息不会消失。

另外,由于UMG Widget等UI是只存在于各个客户端的信息,所以基本上需要Player Controller来管理。甚至在与服务器通信时,RPCs也会从这个Player Controller发送,因此在创建客户端时会亏欠很长时间。

玩家状态(Player State)

ue3d - 关于虚幻UE引擎制作网络多人游戏

Player State管理玩家的状态,与Game State不同的是,它是为每个客户端创建的,Player Controller在一定程度上也可以被替代,但与Player Controller不同的是,它存在于服务端和所有客户端,因此可以共享。

如果Game State管理游戏的状态,那么这是管理玩家特定信息的实体,例如生命值和自己的分数。即使Pawn被摧毁或重生,玩家状态仍然存在,因此它非常适合在多场比赛中管理玩家信息。

UMG小部件和HUD

最后,来谈谈UMG Widgets和HUD,它作为UI存在于游戏中,但不存在于服务器中,因为每个客户端的外观都是独一无二的,每个客户端都需要根据Player Controller和Player State等信息创建视觉部分。

此外,它必须在服务器端为每个客户端创建,并且必须通过从所属客户端上的Player Controller执行RPC(Run on Owning Client)为每个客户端单独完成,这有点复杂。

由于该信息只存在于每个客户端中,可以说是管理起来比较困难的部分。

总结

虚幻UE引擎的联网多人游戏以不同的方式使用这些类,从而为创建联网游戏提供了极大的灵活性,下面是基本指导:

  1. 游戏模式管理服务器特定信息并围绕登录和注销流动,并且尽可能没有不必要的功能。
  2. 让Game State管理游戏的进度,同时也在这里收集游戏过程中客户端的信息。
  3. Game Instance有游戏登录前和退出后的账号信息和必要信息,也有处理断网等错误。
  4. Player Controller将成为客户端向服务器发送RPC时的枢纽,并将成为控制Pawn、Player State、UMG Widgets等的基础。
  5. 除了Player Controller之外,Pawn和Player State after Possessment也可以向服务器 发送RPC,但是个人角色的发挥比较困难,所以尽量不要这样做。

以上的基本指导做一个网络游戏在很多方面确实很复杂,但是如果在设计的时候明白了这些东西,绝对可以很顺利的做出一个网络游戏。

以上是3D天堂关于在虚幻引擎中开发网络多人游戏的全部内容,如果你有任何反馈,请随时在本页面下方留言。

相关信息

  • 类型:知识
  • 字数:1988
  • 字符:5414
  • 适用软件:Unreal Engine
  • 说明:无
  • 编号:159338

热门内容

提示:3D天堂作为服务提供者,尊重网络版权及知识产权,对某些行为的发生不具备充分的监控能力,若无意间侵犯到您的权利,请 联系我们,我们会在收到信息后尽快给予处理。

本站文章版权归本站自创作者所有,未经允许不得转载!