文章摘要
视频讨论了《帝国时代》游戏25年来使用C++开发时遇到的寻路算法问题,分享了开发过程中的挑战和经验。
文章总结
《帝国时代》25年C++寻路问题解析 - Raymi Klingers - Meeting C++ 2025
主要内容: 1. 演讲者Raymi Klingers探讨了《帝国时代》等游戏25年来使用C++实现的寻路系统演进历程 2. 从1997年采用"C with classes"风格和部分内联汇编的代码库,逐步迭代为64位现代C++风格,同时保持原始游戏玩法 3. 开发过程中遇到的主要挑战包括: - 算法知识的流失 - 64位编译中不再支持的编译器标志导致扩展浮点精度被丢弃 - 浮点数精度问题(更精确反而导致更多错误) 4. 解决方案亮点: - 通过代码考古学识别问题 - 开发测试套件监控游戏稳定性 - 采用整数量化(类似定点数)方案 5. 优化成果: - 寻路性能从每帧占用70%降至20% - 建立了防止开发者破坏游戏的"拍打系统"
演讲幻灯片:https://slides.meetingcpp.com (视频发布于2026年2月6日,观看量37,284次)
注:原文中大量YouTube界面元素、推荐视频列表、用户评论及商品推广等内容已按编辑要求删减,保留核心技术内容。
评论总结
总结:
对游戏版本的肯定
- 用户认为Voobly社区版的《帝国时代2》在微软推出终极版前是最佳版本,但终极版现已接近同等水平且资源占用更低。
引用:"the community userpatch version...was and remains the best version"
引用:"DE has now reached near parity with lower resource use"
- 用户认为Voobly社区版的《帝国时代2》在微软推出终极版前是最佳版本,但终极版现已接近同等水平且资源占用更低。
游戏体验与社区评价
- 玩家重新发现游戏并享受其中,认为社区友好且乐于助人。
引用:"Rediscovered this game...absolutely loving it"
引用:"The r/aoe2 community is generally welcoming and helpful"
- 玩家重新发现游戏并享受其中,认为社区友好且乐于助人。
游戏机制与技术细节
- 《帝国时代3》的寻路系统虽逼真但骑兵单位易拥堵,可被战术利用;开发者未完全依赖教科书算法,而是自主构建了实用方案。
引用:"cavalry it got clumpy and could be used tactically"
引用:"built their own pathfinding algorithm in a pragmatic manner"
- 《帝国时代3》的寻路系统虽逼真但骑兵单位易拥堵,可被战术利用;开发者未完全依赖教科书算法,而是自主构建了实用方案。
开发幕后与修复过程
- 演讲揭示了游戏开发的实际复杂性,包括代码考古、性能优化(如简化几何算法)、通过AI对战测试算法,以及收集玩家反馈完善系统。
引用:"code archaeology of a codebase passed between many teams"
引用:"automatically fuzz-testing...by AI vs AI matches"
- 演讲揭示了游戏开发的实际复杂性,包括代码考古、性能优化(如简化几何算法)、通过AI对战测试算法,以及收集玩家反馈完善系统。
其他相关讨论
- 有用户询问源代码是否公开(未获解答),并推荐了类似主题的视频。
引用:"Wait, is the AoE source code public?"
引用:"see also: 'How Command & Conquer...Solved Pathfinding'"
- 有用户询问源代码是否公开(未获解答),并推荐了类似主题的视频。
(注:所有评论评分均为None,故未体现认可度差异)