Red Alert 2 Yuri's Revenge — rebuilt from scratch in Rust
Svenska · 简体中文 · Deutsch · العربية · Русский · ไทย · Türkçe · English
Red Alert 2: Yuri’s Revenge — переписанная с нуля на Rust.
Краткий путеводитель по коду. Если он расходится с кодом, прав код. Комментарий //! в начале каждого модуля описывает, что модуль делает и от чего может зависеть.
sim/ — всё состояние игры и детерминированная игровая логика.render/ — рендерер на wgpu.app/ — окно, ввод, загрузка и сохранение; связывает sim, render, ui, audio и net.ui/ — меню, диалоги, игровые экраны и боковая панель.audio/ — звуковые эффекты и музыка.net/ — детерминированный lockstep. Сетевого транспорта пока нет.rules/ — INI-файлы оригинальной игры и их слои.map/ — карты, наборы местности (theaters), рельеф, триггеры и генератор случайных карт.assets/ — парсеры форматов файлов оригинала (.mix, .shp, .vxl, .pal, видео Bink и другие).util/, asset_tools/ и bin/ — общие вспомогательные функции, инструменты для просмотра ресурсов и дополнительные программы.Всё изменяемое состояние игры хранится в одной структуре — Simulation (src/sim/world/mod.rs). SimRuntime::advance_frame() выполняет один кадр в том же порядке, что и оригинальная игра.
Приложение превращает ввод игрока в команды для симуляции. После каждого кадра оно передаёт новое состояние рендереру и проигрывает звуки, которые создал этот кадр. Рендеринг только читает состояние симуляции, а sim/ никогда не зависит от render/, ui/, audio/ или net/.
Одинаковые состояние, ввод и сид случайных чисел должны давать одинаковый результат на любой платформе и любом процессоре.
SimFixed, а не числам с плавающей точкой.Каждый кадр заканчивается хешем состояния, на который будет опираться многопользовательская игра по схеме lockstep.