Bevy 0.6 に対応2022/01/13

Rust + Bevyで作成したゲーム「くるんくる~ぱ」を、Bevy 0.6に対応させました。

ブラウザ等、環境によっては動かないかもしれません。

開発プロジェクト(GitHub

ガイドに従えば0.6への移行自体はそんなに難しくはありませんが、0.5で作成した前回の記事で挙げられた点が結構改修されていますので、その辺りを主に並べてみます。


スプライトを半透明にする

SpriteSheetBundleと同じような感じで、SpriteBundleでもカラーのパラメータがSpriteに含まれるようになった。
これで透明度を変えるときでも、Assets<ColorMaterial>を持ち歩かなくて済む。

スプライトの加算合成

AlphaModeなんてのがあったから、これは?と思って見てみたが、どうも2Dのスプライトに使うものでもないらしい。そもそも、ブレンドモードに加算合成が無い……

需要はありそうなもんだが、何か見落としているのだろうか?

テキスト描画

Text2dBundleTransformが、テキストの拡大率や回転角に影響するように変更された。
紹介ページでは、サイズを変えたきゃ「フォントサイズ」を変えることを勧められているけど。

Web対応

標準でWeb対応されて、特にプラグインを入れることなくコマンドオプションだけでWeb用にコンパイルできる。
そのためなのか、それとは別の話なのかはわからないが、Web版のテストにはwasm-server-runnerを使うようになっている。

いくつか注意点があって、wasm-server-runnerではこちらの用意したhtmlを介さないからなのかWindowDescriptorでcanvasを設定すると動かなかった。少なくともデバッグビルドでは設定を外す必要がある。

また同様に、小細工ができないので音が鳴らない。

wasm-server-runnerの設定かなんかでやりようがあるのかもしれないが、致命的な問題でもなかったのでほっといている。

最後に

コンパイル・デバッグの方法の変更でちょっと手間取ったりもしましたが、プログラム自体のBeby0.6への対応は難しくありませんでした。カプセル化されたクラスで変更点を吸収してしまうようなオブジェクト指向型のエンジンに比べると、修正箇所が多いような気もしますが。

スプライトの半透明(カラー)設定なんかは、0.6ですっきりした形になって扱いやすくなりました。むしろ、0.6を待ってからゲームを作り始めていればあんな苦労は……