ue4如何恢复初始状态_UE4的Networking模块的一点思考(1)

本文探讨了UE4的Networking模块在多玩家游戏中的应用,重点关注基于状态的同步和UDP/TCP协议的选择。UE4通过属性复制和RPC调用来同步游戏状态,其中属性复制采用了可靠性和效率之间的平衡策略。文章分析了UDP和TCP的优缺点,以及UE4如何通过优化属性复制机制来减少冗余和提高效率,确保状态同步的稳定性和性能。
摘要由CSDN通过智能技术生成

networking模块对于开发multiplayer功能非常关键,目前ue4的网络同步是基于状态的,当然也可以改成lockstep,只是基于状态的同步更加的通用,大部分的游戏一般都采用这种模式。

对于开发那些需要高频同步和要求低延迟的项目,udp的传输模式显然更加的适应。当然它的弹性也很大,即便是那些不需要那么高频同步的应用,udp也能胜任。只不过udp在开发难度上会比tcp来得高一些,因为它大部分的功能是可以定制的,不像tcp那样很多协议都被固化在管线里了。尤其是对于传输数据的可靠性保证上,tcp有着天然的优势。但是话分两头,tcp在提供稳定性的同时也付出了相应的代价,最令人诟病的就是它的flow and congestion control,例如当侦测到丢包严重时它会自动采取降低流量的方式进行控制,这对于那些需要低延迟保证的游戏简直就是灾难性的。所以fps或者是赛车类型的游戏都会选择udp来进行同步数据。看起来似乎如果克服了udp的实现复杂性这一缺点就一切完美了,其实udp在传输上也存在着劣势,例如以下的情形:

"当队列已满时,路由器不必丢弃每个传入的包。相反,它可以删除以前排队的数据包。这些情形发生在当路由器确定新传入的数据包具有更高的优先级,或者比排队的数据包更重要时。路由器一般是基于网络层头段中的QoS数据进行优先级决策,有时也会基于通过检查数据包里的有效负载而收集到的信息做出对应的判断。一些路由器甚至被配置为做出贪婪的决定以减少他们必须处理的总流量:有时在TCP数据包之前丢弃UDP数据包,因为它们知道丢弃的TCP数据包自动重新发送。"

------<<Multiplayer Game Programming>>

总而言之,udp和tcp协议各有自己的优缺点,需要针对不同的项目进行选择&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值