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

ภาพรวมโค้ดฉบับย่อ หากหน้านี้ขัดแย้งกับโค้ด ให้ยึดโค้ดเป็นหลัก คอมเมนต์ //! ที่ต้นแต่ละโมดูลบอกว่าโมดูลนั้นทำอะไรและพึ่งพาอะไรได้บ้าง

โค้ด

ส่วนต่าง ๆ ทำงานร่วมกันอย่างไร

สถานะเกมที่เปลี่ยนแปลงได้ทั้งหมดอยู่ใน struct เดียวคือ Simulation (src/sim/world/mod.rs) และ SimRuntime::advance_frame() รันหนึ่งเฟรมตามลำดับเฟรมของเกมต้นฉบับ

แอปแปลงอินพุตของผู้เล่นเป็นคำสั่งสำหรับการจำลอง หลังแต่ละเฟรม แอปส่งสถานะใหม่ให้ตัวเรนเดอร์และเล่นเสียงที่เฟรมนั้นสร้างขึ้น การเรนเดอร์อ่านสถานะการจำลองได้อย่างเดียว และ sim/ ไม่เคยพึ่งพา render/, ui/, audio/ หรือ net/

ความเป็นดีเทอร์มินิสติก

สถานะ อินพุต และ seed สุ่มที่เหมือนกัน ต้องให้ผลลัพธ์เดียวกันบนทุกแพลตฟอร์มและทุก CPU

ทุกเฟรมจบด้วยแฮชสถานะ ซึ่งโหมดผู้เล่นหลายคนแบบ lockstep จะต้องอาศัย