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

相关推荐
dayouziei2 小时前
java的类加载机制的学习
java·学习
热爱跑步的恒川2 小时前
【论文复现】基于图卷积网络的轻量化推荐模型
网络·人工智能·开源·aigc·ai编程
云飞云共享云桌面3 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
音徽编程5 小时前
Rust异步运行时框架tokio保姆级教程
开发语言·网络·rust
dsywws5 小时前
Linux学习笔记之vim入门
linux·笔记·学习
晨曦_子画6 小时前
3种最难学习和最容易学习的 3 种编程语言
学习
DBBH6 小时前
UE5 第三人称学习之动画 control rig
ue5
UTwelve6 小时前
【UE5】一种老派的假反射做法,可以用于移动端,或对反射的速度、清晰度有需求的地方
ue5·虚幻引擎·着色器·虚幻4
幺零九零零6 小时前
【C++】socket套接字编程
linux·服务器·网络·c++
城南vision6 小时前
Docker学习—Docker核心概念总结
java·学习·docker