《UE5_C++多人TPS完整教程》学习笔记6 ——《P7 在线会话控制(Online Sessions)》


本文为B站系列教学视频 《UE5_C++多人TPS完整教程》 ------ 《P7 在线会话控制(Online Sessions)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C++ Multiplayer Shooter》 的中文字幕翻译版,UP主(也是译者)为 游戏引擎能吃么。


文章目录

  • [P7 在线会话控制](#P7 在线会话控制)
  • [7.1 在线子系统](#7.1 在线子系统)
  • [7.2 会话接口](#7.2 会话接口)
  • [7.3 制定游戏计划](#7.3 制定游戏计划)
  • [7.4 Summary](#7.4 Summary)

P7 在线会话控制

本节课将接着上节课《P6 在线子系统(Online Subsystem)》的内容,详细介绍虚幻引擎的在线子系统类的作用以及它涵盖的一些与(管理)多人游戏会话功能相关的接口(Interface),深入探讨 "会话" 接口,它用于处理设置和加入游戏会话。最后,从游戏计划制定中说明如何让其他玩家连接我们的多人游戏或我们如何加入其他玩家。


7.1 在线子系统

  1. 虚幻引擎的在线子系统提供了一种访问在线平台服务(Steam、Xbox Live等)的方法,利用在线子系统可以处理任何在线平台服务的好友、成就、设置配对会话(Setting up matching sessions)等系统功能,而我们必须要做的就是为特定的平台配置我们的项目。

  2. 我们需要在 Engine.ini 这个配置文件下指定默认平台服务。虚化引擎的在线子系统可以通过 "IOnlineSubsystem" 类中的静态函数 "Get" 进行访问,该函数返回值是一个指向相应子系统的指针,具体参阅官方文档 《IOnlineSubsystem::Get》


7.2 会话接口

  1. 我们最关心(We're most concerned with)的就是会话接口(Session interface),它除了可以创建、管理和销毁游戏会话,还具有会话搜索以及其他配对(Matchmaking)功能。

  2. 一个会话可以认为是游戏的一个实例,它运行在具有一系列属性的服务器上。会话可以是公开的,即所有玩家就能找到并加入该会话;会话也可以是私密的,这样只有接收会话邀请的人才能加入游戏。

  3. 一个典型的会话 生命周期 (Lifetime )包括会话由需求创建、等待玩家加入、为每个加入的玩家注册、会话开始、进行多人游戏、会话结束、取消玩家注册、会话更新或销毁。我们只需要 "CreateSession()"、"FindSessions()"、"JoinSession()"、"StartSession()"、"DestroySession" 这些接口函数即可实现上述生命周期。


7.3 制定游戏计划

  1. 我们的游戏目标就是点击菜单中两个按钮------ "Host " 和 "Join " 的其中之一就能实现相应功能:点击 "Host " 时,设定会话设置、调用会话接口函数 "CreateSession()",以创建并打开一个游戏大厅等待其他玩家加入;点击 "Join " 时,设定搜索设置(Search settings)接着调用会话接口函数 "FindSession()",这将返回一些搜索结果,因此需要进行遍历(iterate through those results)并选择一个有效的会话,紧接着调用会话接口函数 "JoinSession()",获得 "Client Travel" 所需的 IP 地址,进入其他玩家(作为监听服务器)创建的游戏大厅中。
  2. 然后把上述逻辑功能放入一个自己设计、用于专门处理与会话相关特性(session-related feature)的简洁(neat)类中。但我们不想因为创建诸多新类而无从下手,现在我们只需要从下图右边的典型类中访问在线子系统。

7.4 Summary

本节课详细介绍虚幻引擎的在线子系统类,游戏会话典型的生命周期以及与能够完成这个生命周期所需要的接口函数。最后,从游戏计划制定中说明使用接口函数来让其他玩家连接我们的多人游戏中或者让我们连接到其他玩家的多人游戏中。


相关推荐
狂野小白兔21 分钟前
AI游戏制作04——Codex 搭配 Godot MCP 全流程教程
人工智能·游戏·godot
努力努力再努力wz34 分钟前
【CUDA入门系列】CUDA编程实战:设备选择、显存管理、Kernel、Stream 与 Event 全流程梳理
开发语言·c++
沫璃染墨1 小时前
《从零入门Linux系统篇(五十八):线程篇·十一——线程安全与死锁详解:从可重入到多锁管理》
linux·服务器·开发语言·c++·驱动开发·安全·架构
郝学胜_神的一滴1 小时前
C++ Templates 05:那些容易踩坑的技巧性基础知识
c++·visual studio
朝朝辞暮i1 小时前
C++ 第 40 章:ROS2 Publisher + Timer + Subscriber + Callback + Executor 完整闭环
开发语言·c++·算法·ros2
旖旎夜光2 小时前
LeetCode 1576: 替换所有的问号(模拟) —— 题解
c++·学习·算法·leetcode·力控
朝朝辞暮i2 小时前
C++ 第 38 课:线程、SingleThreadedExecutor、MultiThreadedExecutor、Callback Group
开发语言·c++·算法·ros2
(Charon)2 小时前
【C++面试】互斥锁与读写锁:使用场景、实现原理与写饥饿问题
c++·算法
狂野小白兔2 小时前
AI游戏制作00——AI制作游戏需要准备的前置条件
人工智能·游戏
by209993 小时前
list 的使用:把节点、位置和操作联系起来的综合叙述(上)
数据结构·c++·笔记·list