原神 5.1 版本即将推出,就在国庆假期,我也是打开了一段时间没玩的 58 级原神号过了纳塔剧情。我入坑原神的时候地图还只开到了稻妻,期待看到米哈游把 7 国剧情都推出的时候。
一、原神的网络传输的特点
原神的网络传输特点是保持了 网络传输可靠性 和 网络传输效率 之间的平衡。
也就是说 米哈游 巧妙的维持了网络丢包率不要太高以至于影响游戏画面,因为影视、动画类的数据可以存在一定丢包而不影响使用,但丢包太多又会导致画质下降。
二、米哈游怎么控制丢包率 -- KCP 协议
众所周知,UDP 协议不可靠但是包头部小、传输效率高。TCP 协议可靠但是头部就较大、在操作系统内核中发送之前要两次遍历来计算校验和等,保证了可靠传输,却比较臃肿。
而 KCP 协议是在 UDP 基础上,在应用层增加了一系列机制来优化传输性能,特别是针对降低丢包率和提高传输可靠性方面。
也就是说它通过准许少量丢包来提高了网络传输效率,更适用于这种对实时性较敏感但是准许少量丢包的应用和产品上面。
KCP 在应用层上添加了这些机制来降低丢包率:
-
快速重传和快速恢复:KCP能够迅速探测到丢包情况,并立即触发重传机制,从而减少因丢包导致的延迟。这一机制与TCP的超时重传不同,KCP的重传更为迅速,有助于降低丢包对传输效率的影响。
-
前向纠错(FEC):KCP引入了前向纠错技术,通过发送冗余数据包来纠正传输过程中的丢包或错误。这种技术允许接收方根据接收到的冗余包恢复丢失的数据,进一步提高数据传输的可靠性。
-
自动确认和重传:KCP支持自动确认机制,确保数据包被正确接收。如果数据包丢失,KCP将自动触发重传,以保证数据的完整性。
此外,它还在应用层上面采取了以下优化:
-
数据分片:为了加速传输速度,KCP会将大数据包按照MTU(最大传输单元)大小分为多个小数据包,并分别进行发送和接收。这有助于减少传输延迟,提高传输效率。
-
时间戳和ACK确认:KCP发送端会对每个数据包赋予时间戳,接收端回复ACK确认。这一机制确保数据包的可靠传输,防止网络乱序。
-
自适应调整:KCP具有自适应调整的能力,可以根据网络环境的变化自动调整参数和策略。这种自适应性使得KCP能够在不同网络条件下保持稳定的传输性能。