Red Alert 2 Yuri's Revenge — rebuilt from scratch in Rust
Svenska · 简体中文 · Deutsch · العربية · Русский · ไทย · Türkçe · English
《红色警戒2:尤里的复仇》——用 Rust 从零重写。
这是一份简短的代码导览。如果它与代码不一致,以代码为准。每个模块开头的 //! 注释写明了它的用途和可以依赖的模块。
sim/ — 全部游戏状态和确定性的游戏逻辑。render/ — 基于 wgpu 的渲染器。app/ — 窗口、输入、加载和存档;把 sim、render、ui、audio 和 net 连接在一起。ui/ — 菜单、对话框、游戏内界面和侧边栏。audio/ — 音效和音乐。net/ — 确定性锁步同步。目前还没有网络传输层。rules/ — 原版 INI 文件及其分层。map/ — 地图、场景主题(theater)、地形、触发器和随机地图生成器。assets/ — 原版文件格式的解析器(.mix、.shp、.vxl、.pal、Bink 视频等)。util/、asset_tools/ 和 bin/ — 通用辅助代码、资源检查工具和其他程序。所有可变的游戏状态都放在同一个结构体 Simulation(src/sim/world/mod.rs)中。SimRuntime::advance_frame() 按原版游戏的帧顺序运行一帧。
应用层把玩家输入转换成发给模拟的命令。每帧结束后,它把新状态交给渲染器,并播放这一帧产生的声音。渲染只读取模拟状态,而 sim/ 从不依赖 render/、ui/、audio/ 或 net/。
相同的状态、输入和随机种子,在任何平台和 CPU 上都必须得到相同的结果。
SimFixed,而不是浮点数。每帧结束时都会生成一个状态哈希,今后的锁步多人对战将依赖它。