VERA20k

Red Alert 2 Yuri's Revenge — rebuilt from scratch in Rust

View the Project on GitHub YuriPlanet/vera20k

VERA20k

Svenska · 简体中文 · Deutsch · العربية · Русский · ไทย · Türkçe · English

Red Alert 2: Yuri’s Revenge — переписанная с нуля на Rust.

Краткий путеводитель по коду. Если он расходится с кодом, прав код. Комментарий //! в начале каждого модуля описывает, что модуль делает и от чего может зависеть.

Код

Как всё связано

Всё изменяемое состояние игры хранится в одной структуре — Simulation (src/sim/world/mod.rs). SimRuntime::advance_frame() выполняет один кадр в том же порядке, что и оригинальная игра.

Приложение превращает ввод игрока в команды для симуляции. После каждого кадра оно передаёт новое состояние рендереру и проигрывает звуки, которые создал этот кадр. Рендеринг только читает состояние симуляции, а sim/ никогда не зависит от render/, ui/, audio/ или net/.

Детерминизм

Одинаковые состояние, ввод и сид случайных чисел должны давать одинаковый результат на любой платформе и любом процессоре.

Каждый кадр заканчивается хешем состояния, на который будет опираться многопользовательская игра по схеме lockstep.