Hacker News 中文摘要

RSS订阅

《Valorant》128-Tick服务器 -- Valorant's 128-Tick Servers

文章摘要

《VALORANT》团队通过代码优化、硬件调整和系统调优,将服务器帧处理时间从50毫秒降至2毫秒以内,显著提升了游戏性能。工程师Brent Randall分享了实现128-tick服务器的技术历程,旨在减少网络延迟和"先手优势",确保玩家在战术对战中保持公平竞技体验。

文章总结

《VALORANT》128-Tick服务器的技术攻坚之路

作者:Brent "Brentmeister" Randall(《VALORANT》游戏完整性团队工程师)

核心挑战
《VALORANT》作为一款战术射击游戏,需通过高Tick率服务器减少网络延迟对公平性的影响。团队确立128-Tick为目标(即每秒处理128帧,每帧时限7.8125ms),但初期单帧耗时高达50ms,需优化至2.34ms才能实现单核托管3场游戏的经济性目标。

优化策略
1. 代码分层剖析
- 开发ValSubsystemTelemetry系统,将服务器逻辑划分为10类(如动画、物理、网络同步等),通过宏标记代码行并实时追踪耗时。
- 结合Riot内部数据分析平台,可视化各子系统性能趋势(例如某次更新导致网络同步耗时激增),快速定位问题代码。

  1. 关键子系统优化案例

    • 网络同步:将Unreal Engine的“属性复制”机制改为RPC(远程过程调用),减少无效内存扫描,性能提升达100-10000倍。
    • 动画系统:通过每4帧计算一次动画、购买阶段禁用服务器动画等技巧,总成本降低75%+33%。
  2. 硬件与OS级调优

    • CPU架构:升级至Intel至强可扩展处理器,利用非包容性缓存减少核心间干扰,性能提升30%。
    • NUMA优化:绑定进程到特定CPU节点,内存本地访问率从50%提升至99%,性能增益5%。
    • Linux调度器:将迁移成本阈值从0.5ms降至0,避免核心闲置,利用率提升4%。
    • 其他调整:限制CPU深度休眠状态(C-State)、启用超线程、切换时钟源等,累计带来额外10%+性能提升。

经验总结
- 数据驱动:建立全链路性能监控,确保每次改动可量化。
- 环境匹配:测试环境需完全模拟生产环境(如发现Mesos调度器冲突导致性能骤降)。
- 全局视角:代码优化需与硬件、OS调优协同,最终实现单帧耗时从50ms降至2ms以内,服务器硬件需求预测误差仅1%。

致谢
特别鸣谢Intel团队在硬件分析方面的技术支持。

(注:原文中部分技术细节及配图说明已浓缩,完整内容可参考原文链接。)

评论总结

以下是评论内容的总结,平衡呈现不同观点并保留关键引用:

  1. 对VALORANT架构的质疑

    • 作者jauntywundrkind认为当前独立服务器架构可能不是最优选择,建议采用共享内存或线程架构提升缓存效率:"Sounds like each game server is independent... Have things like levels and hit boxes in immutable memfd"
    • 同时指出多线程架构可能更适合现代缓存机制:"you might need a multi-threaded not multi-process architecture"
  2. 关于高tick率服务器的讨论

    • deathanatos强调128tick/s的高性能:"128 ticks per second servers... That's a high number",并对比其他游戏(如Factorio 60tick)
    • holoduke提出插值可能影响精度:"animations are now lerped after each 4 frames... Not sure if sudden direction changes now might result in ghost hits"
  3. 对游戏体验的批评

    • greatgib批评现代游戏过多非游戏时间:"For 10 minutes of play, you have to wait for 10 minutes of lobby time",以BO6为例说明对短时间玩家的不友好
    • mmanfrin用反讽吐槽服务器问题:"Great irony of finishing a league game just now where the whole game lagged"
  4. 对技术实现的赞赏

    • Liquix肯定团队协作和精细化优化:"management/engineering/vendors were all willing to get on the same page",引用原文强调针对性优化的重要性
    • syspec则质疑文章过度宣传Intel技术:"reads less like an engineering deep dive and more like a Xeon product brochure"
  5. 其他技术探讨

    • whalesalad提出Erlang的可能性:"I wonder if any game servers are implemented in Erlang?"
    • xmprt建议更新文章时间信息:"We should add 2020 to this"

(注:部分评论如mmmeff的"Take notes, Valve"因无实质内容未纳入总结)