请教一个游戏开发 UDP 相关问题

2025 年 11 月 17 日
 cosmain

有游戏开发相关经验的朋友来回答下,

现在实时对战的游戏(比如足球、射击等),网络层面设计,应该都是 udp 包,在带宽和+cpu 资源之间的换算来看,如果想压缩这一部分流量,收益怎么样?实时对战应该是不是都是 udp 小包占大多数?

3710 次点击
所在节点    游戏开发
17 条回复
gesse
2025 年 11 月 17 日
应该都是 udp 小包。
KongLiu
2025 年 11 月 17 日
考虑 MTU 的限制,小包比较好
cosmain
2025 年 11 月 17 日
是不是压缩小包性价比不高?
drymonfidelia
2025 年 11 月 17 日
memorypack 之类的游戏用序列化工具都在尽量努力尽可能减少 CPU 占用来避免帧率抖动,你倒好还来加个压缩
sunny352787
2025 年 11 月 17 日
不要压缩,用小包,也别自己写,用 kcp
LeegoYih
2025 年 11 月 17 日
cosmain
2025 年 11 月 17 日
@drymonfidelia 主要是为了压缩节省流量,跨国快速流量非常昂贵,相对增加一点延迟可以接受。但是不知道压缩游戏的小包,对流量的压缩比例多大。
JoeJoeJoe
2025 年 11 月 18 日
用 protobuf 再压缩也压缩不了多少吧.

用小包, 可以合并关键帧或者用减小采样率这样的方式来处理, 中间缺的地方用插值补上.
pluswu1986
2025 年 11 月 18 日
@cosmain 你们没有监控指标么。。压缩试一下不久知道了么 从传输性能上来说小于 MTU 的包压缩没啥意义,足球和射击可能还不一样 足球可能是帧同步的,射击下行基于状态同步居多相对会比足球多多了
cosmain
2025 年 11 月 18 日
@pluswu1986
用 tcpdump 抓取,基本都是 udp 100 字节以内的小包
cosmain
2025 年 11 月 18 日
@sunny352787
kcp 转发,网络的情况下,因为 fec ,反而会增加流量吧? kcp 不支持压缩吧?
lysShub
2025 年 11 月 18 日
压缩它干嘛,也要不到多大的带宽吧,一般低于 50KB/s
sunny352787
2025 年 11 月 18 日
@cosmain #11 kcp 是暴力发包,流量肯定会高,你们对流量要求那么高吗?实时对战要是被流量卡了体验就会下降很多,得不偿失啊
litchinn
2025 年 11 月 18 日
消息越小压缩收益肯定越低啊,应该从业务端优化,减少消息大小,设计合理的消息结构,使用高性能编解码方案
还有可以使用 kernel bypass ,不过这个是针对 cpu 来提高吞吐量的优化
cosmain
2025 年 11 月 18 日
@lysShub
很多很多客户端,没有办法。
pluswu1986
2025 年 11 月 18 日
@cosmain 这个量级亚以下估计也也剩余 70-80 压缩比太低了 不能接受合帧降频 建议别折腾了 按照 15-20 帧每秒 这个量级的游戏流量都觉得贵。。我觉得你们游戏也别做了。。。
pluswu1986
2025 年 11 月 18 日
@cosmain 类似延迟敏感的游戏 应该就近边缘节点接入 再怎么搞专线 anycast 体验都不会太好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/1173333

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX