» VR開発メモトップへ

Bevy Engineメモ

最終更新日:2022年04月23日
記事作成日:2022年04月23日

オープンソースのゲームエンジンBevyの特徴やTipsをメモしていく場所です。

更新履歴

(2022年4月23日)とりあえずページ下書き


Bevyとは

BevyはオープンソースのRust製ゲームエンジンです。元マイクロソフトのCarter Anderson氏が中心になって開発されています。

現時点ではUnityやUnreal Engineのようなエディタはなく、ゲームエンジンというよりはゲーム用ライブラリに近いです(検討はされているようです)。Rustやwgpuでゼロから作られていること、ECSベースなこと等が特徴です。

開発環境について

[dependencies]
bevy = { version = "0.7.0" }

Windowsでは現在ダイナミックリンクができないので、features = [“dynamic”]をはずしておきます。

IDEについて

Visual Studio Codeを使うのが簡単です。

調査:tasks.jsonとlaunch.jsonがよく分からないので調べる

$ rustup install stable
$ rustc --version
$ git checkout https://github.com/bevyengine/bevy.git
$ cargo run --example breakout

ブラウザ向けにビルドする方法

Unofficial Bevy Cheat Bookに説明があります。試した結果、最適化した最終的なwasmのサイズがだいたい2MB程度に収まるようです。

以下、手順のメモです。

Rustにターゲットアーキテクチャを追加します。

$ rustup target add wasm32-unknown-unknown

必要なcrateを追加します。

$ cargo install wasm-server-runner
$ cargo install cargo-make
$ cargo install wasm-bindgen-cli
$ cargo install basic-http-server

.cargo/config.tomlに以下を追加します。

[target.wasm32-unknown-unknown]
runner = "wasm-server-runner"

wasm32-unknown-unknownターゲットでビルドします。–releaseで最適化バイナリを出力します。

$ cargo build --target=wasm32-unknown-unknown --release

ウェブページから読み込み

wasm-bindgenでテンプレートを作成します。build.wasmの名前は適宜変更します。

$ wasm-bindgen --out-dir out --target web target/wasm32-unknown-unknown/release/build.wasm

ウェブページから以下の要領でロードします。build.jsの名前は適宜変更します。

<script type="module">
    import init from "./build.js";
    init();
</script>

調査:全画面表示する方法

WebAssemblyのサイズを小さくする

調査:wasm-pack

wasm-optを通して、さらにウェブサーバーで圧縮配信するためにbrotliで圧縮します。

$ wasm-opt input.wasm -o output.wasm -O --intrinsic-lowering -O
$ brotli output.wasm

その他のメモ

cargo buildすると1.5GBほどの中間ファイルが生成されます。Bevy本体ごとビルドしているので当然なのですが、エンジンの挙動を試すのはcargoのexamplesを活用すると容量の節約になりそうだと思いました。

参考リンク

書いた人:こりん(@korinVR
» VR開発メモトップへ