Ambient - アンビエントは、WebAssembly、Rust、WebGPUを搭載した高性能マルチプレイヤーゲームや3Dアプリケーションを構築するためのランタイムです。

(The multiplayer game engine)

Created at: 2022-12-19 20:57:01
Language: Rust
License: MIT

アンビエント

Crates.io docs.rs マサチューセッツ工科大学 不和

アンビエントは、WebAssembly、Rust、WebGPUを搭載した高性能マルチプレイヤーゲームや3Dアプリケーションを構築するためのランタイムです。

詳細については、発表に関するブログ投稿を参照してください。

顔立ち

  • シームレスなネットワーキング:アンビエントはサーバーとクライアントの両方です。必要なのは、サーバーやクライアント側のロジックを構築することだけです:ランタイムがデータの同期を処理します。
  • 分離:アンビエント用にビルドしたプロジェクトは、WebAssemblyの力によって分離して実行されるため、何かがクラッシュしてもプログラム全体がダウンすることはありません。また、信頼されていないコードを安全に実行できることも意味します。
  • データ指向設計:アンビエントのコアデータモデルは、各WASMモジュールが操作できるエンティティコンポーネントシステムです。
  • 言語に依存しない: WebAssembly にコンパイルできる任意の言語でアンビエントモジュールをビルドできます。現在、サポートされている言語はRustのみですが、他の言語への拡張に取り組んでいます。
  • 単一の実行可能ファイル:アンビエントは、Windows、Mac、およびLinuxで実行できる単一の実行可能ファイルです。サーバーまたはクライアントとして機能できます。
  • 相互運用性: アンビエントでは、カスタム コンポーネントと "概念" (コンポーネントのコレクション) を定義できます。アンビエントプロジェクトが同じコンポーネントと概念を使用している限り、お互いを認識していなくても、データを共有して相互運用できます。
  • アセットパイプラインとストリーミング: アンビエントには、 を含む複数のアセット形式をコンパイルできるアセットパイプラインがあります。アセットは常にネットワーク経由でストリーミングされるため、クライアントは参加時に必要なものすべてを受け取ります。
    .glb
    .fbx
  • 強力なレンダラー: アンビエント レンダラーは GPU 駆動型で、カリングと詳細レベルの切り替えの両方が GPU によって完全に処理されます。デフォルトでは、PBR が使用されます。また、カスケードシャドウマップをサポートし、インスタンス化できるすべてのものをインスタンス化します。

開始方法のガイドについてはドキュメントを参照するか、を参照してください。

装着

アンビエントを入手する最も簡単な方法は、ここから最新リリースをダウンロードすることです。

代替インストール・オプションについては、インストールに関する資料を参照してください。

ロードマップ

注:アンビエントはアルファ段階にあり、APIは頻繁に反復されます。安定版リリースに向けて取り組んでいます。

特徴 地位 筆記
ティッカー シングルスレッド。
WASM API 現在サポートされているゲスト言語はRustのみであり、WASMはサーバーでのみ使用できます。私たちはクライアント側のWASMに取り組んでいます。この問題を参照してください。
マルチプレイヤー/ネットワーキング マルチプレイヤーは、予測や補正なしでサーバー権限があります。この問題を参照してください。
GPU 駆動型レンダラー
FBX & glTF の読み込み
物理学 (PhysX 経由) PhysX 4.1 を使用します。PhysX 5 のサポートは、この号で追跡されています。
アニメーション
スキンメッシュ
シャドウ マップ
デカール
GPU カリングと LoD
マルチプラットフォーム これまでのところ、Windows、Mac、およびLinux。x86-64 と ARM64 はアクティブにサポートされています。他のプラットフォームも動作する可能性がありますが、テストが必要です。
ウェブ上で実行 🚧 この問題を参照してください。
マルチスレッド API 🚧 マルチスレッドはすでに内部で使用されていますが、WASM API内でマルチスレッド機能を公開したいと考えています。これは、明示的(つまり、タスクまたはスレッド生成)または暗黙的(スレッド間でスケジュールされているWASMモジュール)である可能性があります。
UI API 🚧 ReactのようなUIライブラリはすでにリポジトリに存在しており、WASM APIを介して公開することに取り組んでいます。この問題を参照してください。
カスタムシェーダー 🚧 カスタムシェーダーはレンダラーでサポートされていますが、API ではまだ公開されていません。この問題を参照してください。
アセットのホットリロード 🚧 この問題を参照してください。
オーディオ 🚧 オーディオはサポートされていますが、現在公開されていません。この問題を参照してください。
ECS の保存/ロード 🚧 読み込みについては、この問題を参照してください

examples ディレクトリ内の各例は、クライアントとサーバーの両方として Ambient を使用して実行できます。

  • cd guest/rust/examples/tictactoe
  • ambient run

すべての例は、サーバーのみで実行することもできます。これを行うには、次の手順を実行します。

  • cd guest/rust/examples/tictactoe
  • ambient serve

これにより、自分を含む他の人が参加できるサーバーが起動します(ポート8999と9000が転送されていることを前提としています)。

  • ambient join [IP_OF_SERVER]

コンテンツは常にストリーミングされるため、参加ユーザーが必要とするのは、セッションに参加するためにアンビエント自体だけであることに注意してください。

貢献

このプロジェクトへのコミュニティの貢献を歓迎します。

より大きな作品に貢献したい場合は、事前にDiscordでご相談ください。

ライセンス (MIT)

アンビエントはMITの下でライセンスされています。ライセンスを参照してください。