UE5网络学习笔记-《网络多人游戏-构架与编程》

一.网络游戏

1.一开始是使用串口实现计算机之间的通信。但不同计算机最多两个串口,要采取菊花链,一种网络拓扑类型。(经常听到串口,原来是用于通信)

2.多用户网络游戏,用电话线进行通信调制。布告栏系统(BBS)允许多用户通过调制解调器连接到同一个系统。这个系统可以运行包括游戏在内的很多应用。

3.局域网(Local area network,LAN)字面意思。一个区域多条计算机相互连接。(串口连接也是)。许多支持支持局域网连接的多人游戏,也支持其他方式,如调制解调器连接和在线网络连接。(我也经常遇到离线工作环境)

4.在线游戏,玩家通过一些大型网络将地理位置上有一定距离的计算机彼此连接起来。与局域网不同的是延迟,数据传输时间。网络服务器就是来解决这个的。

5.大规模多人在线游戏(MMO)的构建,是有复杂有挑战的。小规模的网络游戏的基础对于MMO的构建尤为重要。移动多人网络游戏,有些是异步的。比实时网络游戏实现起来要简单。

二.《星际围攻部落》

1.将最终数据分类为,非保障数据 :可丢弃非必需。保障数据 :重要数据,需要保证准确到达以及到达顺序。最近的状态数据: 最新版本的数据才是最重要数据,如特定玩家生命值。**最快保障数据:**该类数据最有最高优先级,在可靠传输的基础场上,保障尽快到达,如玩家移动信息。

2.《星际围攻部落》使用客户端-服务器模型(client-server model,C/S),而不是点对点的对等网络模型(peer to peer model)

3.《星际围攻部落》该网络模型最底层是 平台数据包模块。这一层是标准套接字API的封装,可以构建,发送不同数据包格式。不可靠

4.连接管理器,将网络中两台计算机之间的连接抽象化,它从上层流管理器接受数据,再将数据传输给底层平台数据包模块。它可以确认到连接管理器的请求状态,它上层就可以知道指定的数据是否成功传输。

5.流管理器,将数据发送给连接管理器,决定允许数据传输的最大速率。将发送发送数据请求按照优先次序排好

6.事件管理器,维持一个由游戏模拟层产生的事件队列。这些事件可以看作是远程过程调用的一种简单形式,是可以在远程计算机上执行的程序。

7.ghost管理器,是复制被认为与指定客户端相关的动态对象。从服务器向客户端传输尽可能多的相关对象的状态。当一个对象成为相关对象时,ghost管理器将给该对象赋予一些信息,这里称为ghost记录。

8.移动管理器,尽快传输玩家的移动数据。

三.帝国时代

1.使用了一个确定性锁步网络模型。在这个模型中,所有的计算机相互连接(PToP),每个节点都同时,运行一个有保证的确定性游戏模拟。锁步是因为节点之间使用通信机制来确保游戏过程中保持同步。

2.轮班计时器,为了解决同步问题,网络质量等导致延迟问题。引入了轮班计时器,将命令存储在一个队列中。首先选择轮班的长度,如200毫秒。200毫秒内的所有命令存储在一个缓冲区中。当200毫秒结束时,这个玩家所有的命令将通过网络传输给其他所有玩家。两个轮班之间的执行延迟,这些命令直到两轮之后再执行,这给每个节点留了充足时间。如果过去减缓其他玩家可能会被退出。也有通过花更少时间来渲染,提高网络数据接受分配更多的时间。

3.同步,仅仅使用轮班计时器方法不能保证节点之间的同步。因为每台计算机都能独立地接受和处理命令,至关重要的一点。每一个节点运行一个确定性模拟,比如说需要同步伪随机数生成器。所有生成器都使用某个特定的随机种子,游戏实例调用伪随机数生成器的次数也要一样。

相关推荐
我的xiaodoujiao2 小时前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 38--Allure 测试报告
python·学习·测试工具·pytest
好奇龙猫8 小时前
【AI学习-comfyUI学习-第三十节-第三十一节-FLUX-SD放大工作流+FLUX图生图工作流-各个部分学习】
人工智能·学习
saoys8 小时前
Opencv 学习笔记:图像掩膜操作(精准提取指定区域像素)
笔记·opencv·学习
电子小白1239 小时前
第13期PCB layout工程师初级培训-1-EDA软件的通用设置
笔记·嵌入式硬件·学习·pcb·layout
sunfove9 小时前
光网络的立交桥:光开关 (Optical Switch) 原理与主流技术解析
网络
唯情于酒10 小时前
Docker学习
学习·docker·容器
zhangzhangkeji11 小时前
UE5 C++(14-1):UPROPERTY 宏、属性说明符和元数据说明符, visible,edit,Blueprint读写,Category 存储目录
ue5
charlie11451419111 小时前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++
IT=>小脑虎12 小时前
C++零基础衔接进阶知识点【详解版】
开发语言·c++·学习
#眼镜&12 小时前
嵌入式学习之路2
学习