本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 —— 《P7 在线会话控制(Online Sessions)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。
文章目录
- P7 在线会话控制
- 7.1 在线子系统
- 7.2 会话接口
- 7.3 制定游戏计划
- 7.4 Summary
P7 在线会话控制
本节课将接着上节课《P6 在线子系统(Online Subsystem)》的内容,详细介绍虚幻引擎的在线子系统类的作用以及它涵盖的一些与(管理)多人游戏会话功能相关的接口(Interface),深入探讨 “会话” 接口,它用于处理设置和加入游戏会话。最后,从游戏计划制定中说明如何让其他玩家连接我们的多人游戏或我们如何加入其他玩家。
7.1 在线子系统
-
虚幻引擎的在线子系统提供了一种访问在线平台服务(
Steam
、Xbox Live
等)的方法,利用在线子系统可以处理任何在线平台服务的好友、成就、设置配对会话(Setting up matching sessions)等系统功能,而我们必须要做的就是为特定的平台配置我们的项目。
-
我们需要在
Engine.ini
这个配置文件下指定默认平台服务。虚化引擎的在线子系统可以通过 “IOnlineSubsystem
” 类中的静态函数 “Get
” 进行访问,该函数返回值是一个指向相应子系统的指针,具体参阅官方文档 《IOnlineSubsystem::Get》
7.2 会话接口
-
我们最关心(We’re most concerned with)的就是会话接口(Session interface),它除了可以创建、管理和销毁游戏会话,还具有会话搜索以及其他配对(Matchmaking)功能。
-
一个会话可以认为是游戏的一个实例,它运行在具有一系列属性的服务器上。会话可以是公开的,即所有玩家就能找到并加入该会话;会话也可以是私密的,这样只有接收会话邀请的人才能加入游戏。
-
一个典型的会话 生命周期(Lifetime)包括会话由需求创建、等待玩家加入、为每个加入的玩家注册、会话开始、进行多人游戏、会话结束、取消玩家注册、会话更新或销毁。我们只需要 “
CreateSession()
”、“FindSessions()
”、“JoinSession()
”、“StartSession()
”、“DestroySession
” 这些接口函数即可实现上述生命周期。
7.3 制定游戏计划
- 我们的游戏目标就是点击菜单中两个按钮—— “Host” 和 “Join” 的其中之一就能实现相应功能:点击 “Host” 时,设定会话设置、调用会话接口函数 “
CreateSession()
”,以创建并打开一个游戏大厅等待其他玩家加入;点击 “Join” 时,设定搜索设置(Search settings)接着调用会话接口函数 “FindSession()
”,这将返回一些搜索结果,因此需要进行遍历(iterate through those results)并选择一个有效的会话,紧接着调用会话接口函数 “JoinSession()
”,获得 “Client Travel
” 所需的 IP 地址,进入其他玩家(作为监听服务器)创建的游戏大厅中。
- 然后把上述逻辑功能放入一个自己设计、用于专门处理与会话相关特性(session-related feature)的简洁(neat)类中。但我们不想因为创建诸多新类而无从下手,现在我们只需要从下图右边的典型类中访问在线子系统。
7.4 Summary
本节课详细介绍虚幻引擎的在线子系统类,游戏会话典型的生命周期以及与能够完成这个生命周期所需要的接口函数。最后,从游戏计划制定中说明使用接口函数来让其他玩家连接我们的多人游戏中或者让我们连接到其他玩家的多人游戏中。