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/ — ตัวเรนเดอร์ที่ใช้ wgpuapp/ — หน้าต่าง อินพุต การโหลดและการบันทึก และเชื่อม sim, render, ui, audio และ net เข้าด้วยกันui/ — เมนู กล่องโต้ตอบ หน้าจอในเกม และแถบด้านข้างaudio/ — เอฟเฟกต์เสียงและดนตรีnet/ — lockstep แบบดีเทอร์มินิสติก ยังไม่มีชั้นรับส่งข้อมูลผ่านเครือข่ายrules/ — ไฟล์ INI ของเกมต้นฉบับและลำดับชั้นของไฟล์เหล่านั้นmap/ — แผนที่ ธีมภูมิประเทศ (theater) ภูมิประเทศ ทริกเกอร์ และตัวสร้างแผนที่แบบสุ่มassets/ — ตัวแยกวิเคราะห์รูปแบบไฟล์ของเกมต้นฉบับ (.mix, .shp, .vxl, .pal, วิดีโอ Bink และอื่น ๆ)util/, asset_tools/ และ bin/ — ฟังก์ชันช่วยที่ใช้ร่วมกัน เครื่องมือตรวจดูแอสเซ็ต และโปรแกรมเสริมสถานะเกมที่เปลี่ยนแปลงได้ทั้งหมดอยู่ใน struct เดียวคือ Simulation (src/sim/world/mod.rs) และ SimRuntime::advance_frame() รันหนึ่งเฟรมตามลำดับเฟรมของเกมต้นฉบับ
แอปแปลงอินพุตของผู้เล่นเป็นคำสั่งสำหรับการจำลอง หลังแต่ละเฟรม แอปส่งสถานะใหม่ให้ตัวเรนเดอร์และเล่นเสียงที่เฟรมนั้นสร้างขึ้น การเรนเดอร์อ่านสถานะการจำลองได้อย่างเดียว และ sim/ ไม่เคยพึ่งพา render/, ui/, audio/ หรือ net/
สถานะ อินพุต และ seed สุ่มที่เหมือนกัน ต้องให้ผลลัพธ์เดียวกันบนทุกแพลตฟอร์มและทุก CPU
SimFixed ซึ่งเป็นตัวเลขแบบจุดตรึง มากกว่าเลขทศนิยมแบบจุดลอยตัวทุกเฟรมจบด้วยแฮชสถานะ ซึ่งโหมดผู้เล่นหลายคนแบบ lockstep จะต้องอาศัย