手游后台PVP系统网络同步

导语
pvp系统已经现在新手游的上线标配,手游Pvp系统体验是否优秀,很大程度上决定了游戏的品质。从最近半年上线的新手游来看,越来越多的游戏把核心玩法重心已经放在pvp多人游戏中,手游朝着更重度、多人实时交互的方向发展。

同步机制的一致性

同步问题的本质是一致性的问题,在同一局多人游戏的过程中,玩家A看到玩家B的状态,应该跟玩家B自身看到自己的状态相一致。延迟是造成不一致的本质原因,假设理想情况下双方的网络时延都为0,那两者应该是同步的,但是在现实情况中,往往是不可能的。

帧同步

帧同步(Frame Synchronization)是一种在游戏开发中常用的网络同步技术,特别是在需要高精度和实时性的多人在线游戏(如格斗游戏、实时策略游戏等)中。帧同步的主要目的是确保所有玩家在同一时间看到相同的游戏状态,从而实现公平的游戏体验。以下是帧同步的概念及其工作原理的详细说明。

1. 帧同步的基本概念

帧同步是一种将游戏的状态更新与固定的时间帧(frame)进行同步的机制。在这种机制下,所有玩家的游戏客户端在每一帧上都执行相同的游戏逻辑,以确保游戏状态的一致性。

2. 工作原理

  • 固定时间步长:游戏的逻辑更新通常以固定的时间步长进行,例如每16.67毫秒(60帧每秒)。所有客户端在每一帧上都执行相同的游戏逻辑。

  • 输入同步:每个玩家的输入(如移动、攻击等)在每一帧上被收集并发送到服务器。服务器会在每一帧上处理所有玩家的输入,并计算出新的游戏状态。

  • 状态广播:服务器将计算出的游戏状态广播给所有客户端,确保每个客户端在同一时间接收到相同的状态更新。

  • 回放机制:如果某个客户端的状态与服务器的状态不一致,客户端可以根据服务器的状态进行回放,重新计算游戏状态,以确保一致性。

核心思想

对于后台开发来说,服务器主要起到控制作用,对客户端的帧信息进行输入输出管理,服务器就像是一个时间序列的驱动器,每隔一定间隔,会把在这段时间间隔收集到得客户端的输入,下发广播到所有客户端中去,从而驱动客户端执行帧同步处理,简而言之可以看作服务器在时间轴序列上,收集切片,每隔一定间隔,把这时间切片收集到的数据下发给客户端。

对于帧同步来说,数据同步的频率较高,因此一般采用udp进行数据传输,但是需要通过重传解决丢包丢帧问题。
服务器单局中数据首先对每一帧下发客户端的数据进行编号,然后并保存下来,某某客户端网络不佳,中途丢了一些包,可以跟服务器发请求,我现在播放到哪一个序列号的帧了,服务器可以把这个客户端当前序号的帧和客户端缺省的帧一并下发,这样客户端拿到数据后,便可继续通过合帧快播的方式,加速播放,赶上当前时间。这样客户端的表现就是在快放一样。

帧同步的方案的包量都是比较小的,对于客户端在这个时间间隔没有上传任何数据,服务器也得帮该客户端构造空帧出来,免得其他客户端出现没有输入的情况出现

断线重连
服务器单局可以把所有逻辑帧存储下来,当客户端断线,重新登陆的时候,服务器可以将所有的逻辑帧下发给客户端,客户端拿到所有的逻辑帧后,可以快速在后台跑完全部的逻辑帧,当跑完后,加载到画面,就重新回到游戏单局了。由于断线时,跑的是单局上所有客户端一样的逻辑帧,因此,等到恢复游戏的时候玩家的状态是一致的

AI实战-加拿大的工业产品价格指数数据集分析预测实例(含4个源代码+18.20 MB完整的数据集) 代码手工整理,无语法错误,可运行。 包括:4个代码,共38.64 KB;数据大小:1个文件共18.20 MB。 使用到的模块: numpy pandas os sklearn.model_selection.train_test_split tensorflow.keras.models.Sequential tensorflow.keras.layers.Dense sklearn.impute.KNNImputer sklearn.impute.IterativeImputer sklearn.linear_model.LinearRegression matplotlib.pyplot sklearn.datasets.make_blobs sklearn.cluster.DBSCAN sklearn.neighbors.LocalOutlierFactor sklearn.ensemble.IsolationForest sklearn.svm.OneClassSVM sklearn.preprocessing.MinMaxScaler sklearn.preprocessing.StandardScaler sklearn.preprocessing.MaxAbsScaler sklearn.preprocessing.RobustScaler sklearn.preprocessing.PowerTransformer sklearn.preprocessing.QuantileTransformer sklearn.preprocessing.OneHotEncoder sklearn.preprocessing.LabelEncoder category_encoders seaborn sklearn.cluster.KMeans sklearn.metrics.silhouette_score sklearn.decomposition.PCA sklearn.datasets.load_iris scipy.cluster.hierarchy.linkage scipy.cluster.hierarchy.dendrogram sklearn.cluster.AgglomerativeClustering sklearn.mixture.GaussianMixture matplotlib warnings sklearn.metrics.mean_squared_error sklearn.metrics.r2_score plotly.express sklearn.ensemble.RandomForestRegressor sklearn.ensemble.GradientBoostingRegressor catboost.CatBoostRegressor sklearn.metrics.mean_absolute_error sklearn.model_selection.RandomizedSearchCV statsmodels.tsa.arima.model.ARIMA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你一身傲骨怎能输

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值