پس از یک سال توسعه، اولین نسخه از موتور بازی متن باز جدید Ambient ارائه شد. این موتور یک زمان اجرا برای ایجاد بازیهای چندنفره و برنامههای سه بعدی فراهم میکند که در یک نمایش WebAssembly کامپایل میشوند و از WebGPU API برای رندر استفاده میکنند. کد به زبان Rust نوشته شده است و تحت مجوز MIT توزیع می شود.
یک هدف کلیدی در توسعه Ambient، ارائه ابزارهایی است که توسعه بازیهای چندنفره را ساده میکند و ایجاد آنها را دشوارتر از پروژههای تک نفره نمیکند. هدف این موتور در ابتدا ایجاد یک زمان اجرا جهانی است که از توسعه بازی ها و برنامه های کاربردی در هر زبان برنامه نویسی پشتیبانی می کند که کامپایل آن در کد میانی WebAssembly امکان پذیر است. با این حال، نسخه اول در حال حاضر تنها از توسعه Rust پشتیبانی می کند.
ویژگی های کلیدی موتور جدید:
- پشتیبانی شبکه شفاف این موتور عملکردهای سرویس گیرنده و سرور را ترکیب می کند، تمام اجزای لازم را برای ایجاد منطق مشتری و سرور فراهم می کند و به طور خودکار وضعیت سرور را در بین کلاینت ها همگام می کند. یک مدل داده رایج در سمت کلاینت و سرور استفاده می شود که انتقال کد بین باطن و فرانت اند را ساده می کند.
- اجرای هر ماژول در محیط ایزوله خود، به شما امکان می دهد نفوذ کدهای غیرقابل اعتماد را محدود کنید. خرابی یک ماژول کل برنامه را خراب نمی کند.
- معماری داده گرا ارائه یک مدل داده مبتنی بر سیستمی از اجزای قابل دستکاری توسط هر ماژول WASM. با استفاده از الگوی طراحی ECS (Entity Component System). ذخیره داده های همه اجزا در یک پایگاه داده متمرکز روی سرور، که وضعیت آن به طور خودکار برای مشتری تکرار می شود، که در سمت خود می تواند داده ها را با در نظر گرفتن وضعیت محلی گسترش دهد.
- امکان ایجاد ماژول های Ambient در هر زبان برنامه نویسی که به WebAssembly کامپایل می شود (در حال حاضر فقط Rust پشتیبانی می شود).
- تولید فایلهای اجرایی جهانی به عنوان خروجی که میتوانند روی ویندوز، macOS و لینوکس اجرا شوند و هم بهعنوان کلاینت و هم بهعنوان سرور عمل کنند.
- توانایی تعریف اجزا و "مفاهیم" خود (مجموعه ای از اجزا). پروژه هایی که از اجزا و مفاهیم یکسانی استفاده می کنند، قابلیت حمل و اشتراک داده ها را امکان پذیر می کنند، حتی اگر داده ها به طور خاص برای استفاده در پروژه های خاص طراحی نشده باشند.
- پشتیبانی از کامپایل منابع در قالب های مختلف از جمله glb. و fbx. امکان دانلود جریانی منابع از طریق شبکه - مشتری می تواند هنگام اتصال به سرور تمام منابع لازم را دریافت کند (شما می توانید بدون منتظر ماندن برای بارگیری همه منابع شروع به بازی کنید). پشتیبانی از فرمت های مدل FBX و glTF، فرمت های مختلف صدا و تصویر.
- یک سیستم رندر پیشرفته که از GPU برای سرعت بخشیدن به رندر استفاده می کند و از برش در سمت GPU و تغییرات سطح جزئیات پشتیبانی می کند. به طور پیش فرض از رندر مبتنی بر فیزیکی (PBR) استفاده می کند، از انیمیشن و نقشه های سایه آبشاری پشتیبانی می کند.
- پشتیبانی از شبیه سازی فرآیندهای فیزیکی بر اساس موتور PhysX.
- سیستمی برای ساخت رابط های کاربری مشابه React.
- یک سیستم ورودی یکپارچه که مستقل از پلت فرم فعلی است.
- سیستم صوتی فضایی با فیلترهای پلاگین.
توسعه هنوز در مرحله نسخه آلفا است. از جمله قابلیتهایی که هنوز اجرا نشده است، میتوان به قابلیت اجرا در وب، API مشتری، API برای مدیریت چند رشتهای، کتابخانه برای ایجاد رابط کاربری، API برای استفاده از سایهزنهای خود، پشتیبانی صدا، بارگیری و ذخیرهسازی اشاره کرد. اجزای ECS (Entity Component System)، بارگیری مجدد منابع در حال پرواز، مقیاس پذیری خودکار سرور، ویرایشگر برای ایجاد مشترک نقشه های بازی و صحنه های بازی.
منبع: opennet.ru