《UE5_C++多人TPS完整教程》学习笔记5 ——《P6 在线子系统(Online Subsystem)》

news2025/1/19 17:09:46

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


文章目录

  • P6 在线子系统
  • 6.1 IP 地址
  • 6.2 通过 Internet 连接
  • 6.3 在线子系统
  • 6.4 Summary


P6 在线子系统

本节课将介绍 IP 地址的基本概念,并对如何利用 IP 地址 进行互联网连接,最后讲解虚幻引擎的在线子系统(Online Subsystem)以及它如何提供抽象层(Abstract layer)使得同一份连接代码代码实现跨平台(Cross-platform)多人联网。
在这里插入图片描述


6.1 IP 地址

  1. 本地 IP 地址是由网络路由器分配给不同设备的内部(Internal) IP 地址,这些 IP 地址可能是根据设备的连接顺序而改变的,只有内部网络的设备之间能相互看到,而外部网络无法看到,也无法通过这些 IP 地址访问内部网络。

  2. 当路由器和外部因特网服务供应商Internet service provider,ISP)连接时,ISP 分配给路由器一个公共(Public)或外部(External)的 IP 地址,它在互联网上对其他人可见。任何信息首先通过公共或外部的 IP 地址寻路,然后再通过内网 IP 地址寻路。
    在这里插入图片描述

  3. 假如另一位玩家“朋友”内部和外部 IP 地址都不同,在我们知道他 IP 地址的情况下,我们的设备每次都可以使用 IP 地址与他的设备进行连接,但这并不理想(Ideal),除非他先将他的 IP 地址告诉我们,并且我们很多时候都没有这样的“朋友”但又想玩多人游戏。
    在这里插入图片描述


6.2 通过 Internet 连接

  1. 问题关键就是解决如何方便地“找到”别人的 IP 地址。
    在这里插入图片描述

  2. 第一种办法将就是将设备连接到专用服务器上,该服务器具有其他已经登录的玩家 IP 地址的列表,通过这个列表再与玩家朋友的设备进行连接。但是设置专用服务器成本较高,并且当玩家越多时要求服务器的数量越多、存储空间越大、处理能力越强。
    在这里插入图片描述
    在这里插入图片描述

  3. 第二种办法就是使用监听服务器,即一名玩家的设备作为监听服务器,其他玩家的设备作为客户端加入,但问题依然存在,客户端仍然需要事先知道要加入哪个 IP 地址以进行连接。
    在这里插入图片描述

  4. 因此必须要有一个中间阶段(In-between stage):您的游戏登录向某些服务器发送信号,该服务器将您连接到其他已经登陆到游戏中的玩家,他们通常会使用这些服务实现服务器托管。这些服务创建成本低、耗时少,并且通常有附加功能(Addtional features),例如安全性和好友系统。

    服务器托管是指将您的服务器部署到一个第三方提供商的数据中心,以便您可以减少自己的IT成本,更加高效地管理计算资源,并获得更强大的网络安全保护。服务器托管提供了多种技术,可以帮助企业实现灵活性和可扩展性,并有助于改善基础架构的可用性,可靠性和管理成本。


    ——《什么是服务器托管》

    在这里插入图片描述

  5. 制作一个系统用于在服务器上托管游戏以维护玩家的安全性、实现管理大量用户的规模扩展(Scale up to handle amounts of users),这需要的不仅仅是游戏编程这样的专业知识。如果还想要将游戏移植到流行的游戏平台如 Xbox LivePlayStation 就需要重写游戏系统,让它与这些平台的底层代码兼容(So it‘s compatible with their code base)。使用虚幻引擎的 在线子系统Online Subsystem),就可以让我们在实现一份 代码库Code base)的情况下,将游戏兼容到任意平台。

    在软件开发中,代码库(英语:code base或codebase)是用于构建特定软件系统、应用程序或软件组件一组的源代码。
    通常,代码库仅包含人工编写的源代码文件;代码库通常不包含由工具生成的源代码文件或二进制文件(目标文件),因为它们可以从人工编写的源代码构建生成,没有必要加入代码库。但是,代码库通常包括配置文件和属性文件,因为这些文件是构建时所必不可少的数据。


    —— 维基百科《代码库》

6.3 在线子系统

  1. 当我们使用虚幻引擎(在线子系统)制作一个多人游戏时,我们通常会连接到一个可以管理游戏会话(Manage game sessions)、连接来自世界各地的玩家的服务,该服务拥有处理连接的代码,这些服务包括 SteamXbox LivePlayStation 等。

  2. 当多人游戏运行时,虚幻引擎允许我们只处理虚幻引擎中的代码,因为它将在后台处理用于各种平台的特定细节,这意味着用于 跨平台Cross-platform)的特定代码被抽象掉了(Is abstracted away)。虚幻引擎旨在连接各种在线服务的网络抽象层(Networking abstract layer)称为 在线子系统Online Subsystem)。
    在这里插入图片描述

    在线子系统(Online Subsystem) 及其接口提供一种可访问Steam、Xbox Live、Facebook等在线服务功能的常用方法。开发一款在多平台上发行或支持多在线服务的游戏时,在线子系统可确保开发者唯一需要做的变更就是对所有支持的服务进行配置调整。


    —— 虚幻引擎官方文档《在线子系统》

  3. 本课程使用的服务为 Steam,因为它是托管多人游戏会话最流行的服务之一,并且它无需申请开发人员许可、支付相关费用即可简单上手进行学习和使用(除非在 Steam 上出售游戏)。

  4. 之后课程的目标就是创建一个系统,它能让我们启动游戏后简单按下一个按钮就可以自动地搜索任何在线并登录到我们游戏的玩家;我们还要将这个系统的代码放在一个紧凑的插件中,以便我们在以后新的多人游戏项目中都能使用这个插件。听起来不错?(Sound awesome)
    在这里插入图片描述


6.4 Summary

本节课介绍了内部和外部 IP 的基本概念,以及玩家通过 Internet 连接到多人游戏中的两种方式,它们的缺点都是需要事先知道其他玩家的 IP 地址,因此需要可以管理游戏会话、连接来自世界各地的玩家的在线平台服务来解决这个问题,如 SteamXbox LivePlayStation 等,它们创建成本低、耗时少,并且通常有安全性和好友系统等附加功能。虚幻引擎的在线子系统在后台处理和抽象掉用于跨平台的细节和特定代码。
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1447325.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为机考入门python3--(12)牛客12-字符串反转

分类:字符串 知识点: 字符串是否为空 if not my_str 字符串逆序 my_str[::-1] 题目来自【牛客】 def reverse_string(s): # 判断字符串是否为空或只包含空格 if not s.strip(): return "" # 使用Python的切片语法反转字符串 re…

【开源】基于JAVA+Vue+SpringBoot的就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

[职场] 大厂群面的基本题型 #学习方法#其他

大厂群面的基本题型 大厂群面的基本题型 群面,又叫做“无领导小组面试”。历年来是企业校招时,进行大批量刷人的有效方法。流行于互联网、快消、银行、四大等多个行业。因为难度大、情况复杂、淘汰率高,又被称为“死亡面试”。 无领导小组…

蓝牙BLE学习-GAP

1.概述 GAP层(Generic access profile-通用访问配置文件)。GAP是对LL层payload(有效数据包)如何进行解析的两种方式的一种,而且也是最简单的一种。GAP简单的对LL payload进行一些规范和定义,因此GAP能实现的…

适配器模式:接口转换的艺术,让不匹配成为过去式

适配器模式(Adapter Pattern)是一种结构型设计模式,它通过将一个类的接口转换成客户期望的另一个接口,使得原本接口不兼容的类可以一起工作。在Java中,适配器模式可以通过实现一个适配器类来实现两个不兼容接口之间的转…

第七篇:SQL语法-DML-数据操作语言

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改操作。它主要包含以下操作, 添加数据(INSERT)修改数据(UPDATE)删除数据(DELETE) 一,添加数据(INSERT) 注意: 插入数据时&#xff0c…

云原生之基石-Docker Compose

1. 前言 在上一篇文章中介绍了基本的Docker工具,我们对单个应用程序进行单机单进程部署,制作Dockerfile文件,执行docker build来生成docker镜像, 执行docker run来运行一个容器,自己指定需要的参数如-v,但是…

在Ubuntu22.04上部署FoooCUS2.1

Fooocus 是一款基于 Gradio的图像生成软件,Fooocus 是对 Stable Diffusion 和 Midjourney 设计的重新思考: 1、从 Stable Diffusion 学习,该软件是离线的、开源的和免费的。 2、从 Midjourney 中学到,不需要手动调整,…

【AI】安装ubuntu20.04教程(未完待续)

目录 1 制作ubuntu20.04系统盘1.1 下载ubuntu镜像1.2 使用ultraiso写入镜像 2 安装Ubuntu系统 1 制作ubuntu20.04系统盘 1.1 下载ubuntu镜像 在清华镜像站https://mirrors.tuna.tsinghua.edu.cn/下载ubuntu20.04镜像 路径为/ubuntu-releases/20.04/,下载ubuntu-20…

【教程】C++语言基础学习笔记(七)——Array数组

写在前面: 如果文章对你有帮助,记得点赞关注加收藏一波,利于以后需要的时候复习,多谢支持! 【C语言基础学习】系列文章 第一章 《项目与程序结构》 第二章 《数据类型》 第三章 《运算符》 第四章 《流程控制》 第五章…

Promise与async await的作用及应用场景

在Web前端开发中,处理异步操作是非常常见的需求。为了解决这个问题,ES6引入了Promise和后续的async await。本文将介绍Promise和async await的作用,以及在实际开发中的应用场景。 一、Promise的作用及应用场景 Promise是一个表示异步操作最…

【MySQL】学习约束和使用图形化界面创建表

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-iqtbME2KmWpQFQSt {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

综合例题及补充

目录 查询员工的编号、姓名、雇佣日期,以及计算出每一位员工到今天为止被雇佣的年数、月数、天数 计算出年 计算月 计算天数 Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645 查询员工的编号、姓名、雇佣日期&#xff0c…

S32 Design Studio的PE工具

S32 Design Studio软件是NXP公司专门为了方便用户开发S32K1系列芯片的IDE,跟Eclipse比较像。里面有个配套的图形工具Processor Expert,会产生一个后缀名为pe的文件,跟ST的cubemx作用类似。 双击pe文件即可打开pe界面,生成的文件将…

Codeforces Round 925 (Div. 3)

Codeforces Round 925 (Div. 3) Codeforces Round 925 (Div. 3) A. Recovering a Small String 题意:给出一个整数n,为三个26个字母的位置序号的和,输出字典序最小的三个字符的字符串。 思路:直接倒推,顺一遍&…

第6个-滚动动画

Day 6 - Scroll Animation 1. 演示效果 2. 分析思路 布局 所有的内容进行水平垂直居中,可以使用**margin:0 auto;,也可以使用flex**布局: body {background-color: #efedd6;display: flex;flex-direction: column;justify-content: center…

腾讯云幻兽帕鲁服务器配置怎么选择合适?

腾讯云幻兽帕鲁服务器配置怎么选?根据玩家数量选择CPU内存配置,4到8人选择4核16G、10到20人玩家选择8核32G、2到4人选择4核8G、32人选择16核64G配置,腾讯云百科txybk.com来详细说下腾讯云幻兽帕鲁专用服务器CPU内存带宽配置选择方法&#xff…

音视频剪辑|FFMPEG|windows10下的音视频格式转换,遮挡填充,GIF动图制作,背景音频抽取,替换

前言: 最近对于音视频和图像的处理问题比较感兴趣,但发现很多目前需要的功能要么需要付费但不会过于麻烦,要么比较麻烦,很可能某个功能实现需要安装很多软件 例如,视频转GIF动图,该功能的实现要么使用Pho…

VMware清理拖拽缓存 Ubuntu硬盘情况占用分析

这两天在尝试编译Linux源码,我在win上将源码下载下来然后复制到ubuntu上,这一步我粗略看到了三种方法:安装VM tools,就可以使文件正常的在win和ubuntu中复制剪切;使用scp命令将win和linux系统链接起来;使用…

P5440 【XR-2】奇迹 (大模拟dfs+欧拉筛板子+闰年)

传送门https://www.luogu.com.cn/problem/P5440 相信奇迹的人,本身就和奇迹一样了不起。——笛亚 《星游记》 思路历程:很离谱的一题,在理论上并不困难,只要简单dfs欧拉筛就能过。在一开始,我采用了倒着模拟的思路&am…