Unreal Engine 网络系统(一):网络模型及网络视角下的Gameplay框架
创始人
2025-05-31 10:27:52

个人学习记录,如有错误请及时联系我!欢迎交流!

1.客户端-服务器模型

  • 服务器:有一个客户端担当游戏状态的主控者
    • 作用:做出所有重要决定,保证公平性,包含所有主控状态,处理客户端连接,转移到新地图,处理比赛开始结束等总体游戏流程等。
    • 启动服务器指令:
      • 监听服务器:UE4Editor.exe ProjectName MapName?Listen -game
      • 专用服务器:UE4Editor.exe ProjectName MapName -server -game -log
      • 客户端:UE4Editor.exe ProjectName ServerIP -game

注:启动指令需要在控制台使用,并将虚幻编辑器路径设置在用户环境变量中。专用服务器在默认情况下并不会显示窗口。如果不使用-log,将不会看到任何呈现专用服务器的窗口。 

注:专用服务器,UE允许用户设计专用服务器,与设计客户端-服务器模型一样,专用服务器去掉客户端特性隔绝用户触及游戏数据,保证游戏公平,提升游戏稳定性(客户机运行环境复杂,如果出现崩溃,将导致所有游戏终止)。《绝地求生》使用的就是专用服务器。通过C++源码可以编译独立服务器。

  • 客户端:连接的客户端保持近似副本

2.特点

  • 前端人员(游戏客户端)必须遵循Listen-Server游戏设计原则,将核心逻辑放在“主机端”执行,保证主机端动作合理,客户端即可真正执行动作。
  • Listen-Server体系意味着服务器是权威的所有数据必须先从客户端发送到服务器,然后服务器验证数据并根据代码作出反应
  • 基于以上特点,虚幻网络系统具有高效的开发特性,开发人员可独立完成联网设计。
  • 虚幻网络系统的核心设计点是同步数据和同步行为

 3.网络视角下的Gameplay框架

先直接说结论:

  • GameMode:游戏模式,唯一一个,代表游戏规则,肯定在服务端。
  • GameState:书记员,传教士,传递游戏信息。所有终端都得有。
  • PlayerController:提线木偶的灵魂,负责牵线搭桥。所有终端都有,因为大家都得互相通过服务器传递消息。值得一提的是,Server持有所有Client的PlayerController,因为Server要和所有Client进行沟通,而Client只持有自己的PlayerController,不需要持有其他玩家的状态。

举个栗子:以前的魔兽世界就是Client持有其他Client的状态,当一个玩家掉线了,为了游戏的公平性,此时其他所有玩家都得等这个掉线的玩家;而虚幻的网络模型中Client只需要与Server进行沟通,不与其他玩家进行信息交换。

  • PlayerState:同上,所有终端都有。
  • Pawn:提线木偶,同上,所有终端都有。
  • HUD:自己有。支持有自己的UI。

综上所述,我们可以把持有状态分为以下四种:

  • Server Only
  • Server & Clients
  • Server & Owning Client
  • Owning Client Only

如下图所示

更直观的:

相关内容

热门资讯

均价500元的手机壳狂卖36亿... 订阅 快刀财经 ▲ 做您的私人商学院不是手机换不起,换壳更有性价比。作者:图数室来源:图数室(ID:...
电力产业链梳理,附企业名单 今天总结性梳理整个电力产业链,文章末尾会附上各领域的公司名单。电网设备行业在所有行业里面,算是一个比...
财经调查丨粉底印、油渍…你买的... (央视财经《财经调查》)不少消费者向总台《财经调查》反映,部分主打“大牌尾货”“孤品样衣”的直播间,...
日本政策重大转向!专家警示:危... 文/陶思阅日本央行19日宣布加息25个基点,政策利率从0.5%上调至0.75%,达30年来最高水平。...
中创智领:董事长、副总经理拟合... 新京报贝壳财经讯 12月21日,中创智领公告称,董事长焦承尧、副总经理付奇和张海斌因个人资金需求,拟...