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 — in Rust von Grund auf neu entwickelt.

Eine kurze Übersicht über den Code. Wenn sie dem Code widerspricht, hat der Code recht. Der //!-Kommentar am Anfang jedes Moduls beschreibt, was es tut und wovon es abhängen darf.

Der Code

Wie alles zusammenpasst

Der gesamte veränderliche Spielzustand liegt in einer einzigen Struktur, Simulation (src/sim/world/mod.rs). SimRuntime::advance_frame() führt einen Frame in der Reihenfolge des Originalspiels aus.

Die App setzt Spielereingaben in Befehle für die Simulation um. Nach jedem Frame übergibt sie den neuen Zustand an den Renderer und spielt die Sounds ab, die der Frame erzeugt hat. Das Rendering liest den Simulationszustand nur, und sim/ hängt nie von render/, ui/, audio/ oder net/ ab.

Determinismus

Gleicher Zustand, gleiche Eingaben und gleicher Zufalls-Seed müssen auf jeder Plattform und jeder CPU dasselbe Ergebnis liefern.

Jeder Frame endet mit einem Zustands-Hash, auf den der Lockstep-Mehrspielermodus angewiesen sein wird.