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 على الأعداد ذات الفاصلة العائمة.ينتهي كل إطار بتجزئة (hash) للحالة سيعتمد عليها اللعب متعدد اللاعبين بنظام lockstep.