開発の XNUMX 年後、seは最初のリリースを発表しました 新しいオープンソース ゲーム エンジンの アンビエント。 モーター マルチプレイヤー ゲームと 3D アプリケーションを作成するためのランタイムを提供します。 これらは WebAssembly 表現にコンパイルされ、レンダリングに WebGPU API を使用します。
Ambient の開発における重要な目標は、マルチプレイヤー ゲームの開発を簡素化し、その作成をシングル プレイヤー プロジェクトよりも難しくしないツールを提供することです。
エンジンは当初、WebAssembly 中間コードへのコンパイルが可能な任意のプログラミング言語でのゲームおよびアプリケーション開発をサポートするユニバーサル ランタイムの作成を目指しています。 ただし、これまでのところ、最初のバージョンは Rust 開発のみをサポートしています。
アンビエントについて
アンビエントの特徴として挙げられるのは、 ネットワーキングの透過的なサポート. このエンジンは、クライアントとサーバーの機能を結合し、クライアントとサーバーのロジックを作成するために必要なすべてのコンポーネントを提供し、クライアントでサーバーの状態を自動的に同期します。
また、 クライアント側とサーバー側で共通のデータ モデルが使用されているこれにより、バックエンドとフロントエンドの間でコードを簡単に転送できます。 各モジュールを独自の隔離された環境で実行して、信頼できないコードの影響を制限し、XNUMX つのモジュールがクラッシュしてもアプリケーション全体がクラッシュすることはありません。
周囲、cデータ指向のアーキテクチャを採用しており、 これにより、各 WASM が操作できるコンポーネントのシステムに基づくデータ モデルが提供されます。 ECS (Entity Component System) デザイン パターンを使用します。
それに加えて、 すべてのコンポーネントのデータをサーバー上の集中型データベースに保存しますその状態は自動的にクライアントにレプリケートされ、ローカルの状態を考慮してデータを拡張できます。
WebAssembly にコンパイルされる任意のプログラミング言語 (これまでのところ Rust のみがサポートされています) でアンビエント モジュールを作成する機能は、ユニバーサル実行可能出力ファイルを生成し、Windows、macOS、および Linux で実行でき、クライアントおよびサーバーとして機能します。
一方で、次の点も強調されています。独自のコンポーネントと「コンセプト」を定義する機能があります (コンポーネントのコレクション)。 同じコンポーネントと概念を使用するプロジェクトでは、データが特定のプロジェクトで使用するために特別に設計されていない場合でも、データの移植と共有が保証されます。
アンビエントから際立っている他の機能のうち:
- 「.glb」や「.fbx」など、さまざまな形式のリソースのコンパイルのサポート。 ネットワーク経由でリソースをストリーミングする機能: クライアントは、サーバーに接続するときに必要なすべてのリソースを取得できます (すべてのリソースがロードされるのを待たずにプレイを開始できます)。
- FBX および glTF モデル形式、さまざまなサウンドおよび画像形式がサポートされています。
- GPU を使用してレンダリングを高速化し、GPU 側の LOD とクリッピングをサポートする高度なレンダリング システム。
- デフォルトでの物理ベースのレンダリング (PBR) の使用、アニメーションおよびカスケード シャドウ マップのサポート。
- PhysX エンジンに基づく物理プロセスのシミュレーションのサポート。
- React ライクな UI 構築システム。
- 現在のプラットフォームに依存しない統一されたエントリ システム。
- プラグインフィルターを備えた空間サウンドシステム。
- 開発はまだアルファ段階です。 まだ実装されていない機能のうち、Web 上で実行する機能、クライアント API、マルチスレッドを管理するための API、ユーザー インターフェイスを作成するためのライブラリ、独自のシェーダーを使用するための API、サウンド サポート、負荷に注意することができます。そして保存
- ECS (Entity Component System) コンポーネント、オンザフライでのリソースのリロード、自動サーバー スケーリング、ゲーム マップとゲーム シーンを共同作成するためのエディター。
最後に、それについてもっと知りたい人は、コードが Rust で書かれており、 MIT ライセンスで配布されています。