Rilis pertama mesin game multipemain sumber terbuka Ambient

Setelah satu tahun pengembangan, rilis pertama dari mesin game open source baru, Ambient, disajikan. Mesin ini menyediakan runtime untuk membuat game multipemain dan aplikasi 3D yang dikompilasi ke representasi WebAssembly dan menggunakan API WebGPU untuk rendering. Kode ini ditulis dalam Rust dan didistribusikan di bawah lisensi MIT.

Tujuan utama dalam pengembangan Ambient adalah menyediakan alat yang menyederhanakan pengembangan game multipemain dan membuat pembuatannya tidak lebih sulit daripada proyek pemain tunggal. Mesin ini awalnya ditujukan untuk menciptakan runtime universal yang mendukung pengembangan game dan aplikasi dalam bahasa pemrograman apa pun yang memungkinkan kompilasi ke dalam kode perantara WebAssembly. Namun, rilis pertama hanya mendukung pengembangan Rust untuk saat ini.

Fitur utama dari mesin baru:

  • Dukungan jaringan transparan. Mesin ini menggabungkan fungsi klien dan server, menyediakan semua komponen yang diperlukan untuk membuat logika klien dan server, dan secara otomatis menyinkronkan status server di seluruh klien. Model data umum digunakan di sisi klien dan server, yang menyederhanakan transfer kode antara backend dan frontend.
  • Menjalankan setiap modul di lingkungannya yang terisolasi, memungkinkan Anda membatasi pengaruh kode yang tidak dapat dipercaya. Menghancurkan suatu modul tidak membuat seluruh aplikasi menjadi crash.
  • Arsitektur berorientasi data. Menyediakan model data berdasarkan sistem komponen yang dapat dimanipulasi oleh setiap modul WASM. Menggunakan pola desain ECS (Entity Component System). Menyimpan data semua komponen dalam database terpusat di server, yang statusnya secara otomatis direplikasi ke klien, yang pada sisinya dapat memperluas data dengan mempertimbangkan status lokal.
  • Kemampuan untuk membuat modul Ambient dalam bahasa pemrograman apa pun yang dikompilasi ke WebAssembly (saat ini hanya Rust yang didukung).
  • Menghasilkan file universal yang dapat dieksekusi sebagai output yang dapat berjalan di Windows, macOS dan Linux, dan berfungsi sebagai klien dan server.
  • Kemampuan untuk mendefinisikan komponen dan β€œkonsep” Anda sendiri (kumpulan komponen). Proyek yang menggunakan komponen dan konsep yang sama memungkinkan portabilitas dan berbagi data, meskipun data tersebut tidak dirancang khusus untuk digunakan dalam proyek tertentu.
  • Dukungan untuk mengkompilasi sumber daya dalam berbagai format, termasuk .glb dan .fbx. Kemungkinan streaming pengunduhan sumber daya melalui jaringan - klien dapat menerima semua sumber daya yang diperlukan saat terhubung ke server (Anda dapat mulai bermain tanpa menunggu semua sumber daya dimuat). Mendukung format model FBX dan glTF, berbagai format audio dan gambar.
  • Sistem rendering canggih yang menggunakan GPU untuk mempercepat rendering dan mendukung kliping sisi GPU dan perubahan tingkat detail. Menggunakan rendering berbasis fisik (PBR) secara default, mendukung animasi dan peta bayangan berjenjang.
  • Dukungan untuk simulasi proses fisik berdasarkan mesin PhysX.
  • Sebuah sistem untuk membangun antarmuka pengguna yang mirip dengan React.
  • Sistem masukan terpadu yang tidak bergantung pada platform saat ini.
  • Sistem suara spasial dengan filter plug-in.

Pengembangannya masih dalam tahap versi alpha. Di antara fungsionalitas yang belum diimplementasikan, kami dapat mencatat kemampuan untuk berjalan di Web, API klien, API untuk mengelola multithreading, perpustakaan untuk membuat antarmuka pengguna, API untuk menggunakan shader Anda sendiri, dukungan suara, memuat dan menyimpan Komponen ECS (Entity Component System), memuat ulang sumber daya dengan cepat, penskalaan server otomatis, editor untuk pembuatan peta game dan adegan game secara kolaboratif.



Sumber: opennet.ru

Tambah komentar