2020-09-09

[bevy] Rust製ゲームエンジン

bevy

 日本語での情報は(今現在において)皆無だったので、日本においてはこれがbevyに関する初記事になるかと思います。

bevyとの出会いのきっかけ

 過去に随分と迷いましたが、Rust製のゲームエンジンこそ私にとっての理想のゲームエンジンであり、その一方でGodotも十分に優れたゲームエンジンであり、特に扱い安さにおいてRust製ゲームエンジンがGodotに勝てる日は来ないであろうという予想から、やはりGodotしかない・・・というところに落ち着いていました。

 一方、今後長く使っていく技術を選ぶ以上、後悔のない「これこそ」というものを求めていたのも事実で、これがGodotとRustの間で揺れていた理由であったりもします。Rust自体はものすごく気に入っているプログラミング言語(Aaria.exeもRust製)であり、それで作られたAmethystというゲームエンジンは、Rust製というだけで魅力的に映りました。

 Amethystの問題点に関しては過去記事(削除済)でも軽く触れましたが、やはり扱いづらそうな点とコンパイル時間の長さなどで、その上将来性に関してもいまいち確信が持てなかった故、気持ちはほぼGodotに向いていました。

 それでもモヤモヤが消えなかったため、Rustのゲーム開発用のページの、ゲームエンジンのページ(現在31個)にて、全てのゲームエンジンをチェックしてみることにしました。

 30以上の登録があったので、一つ一つ細かく見るのは大変かと思っていたのですが、基準として2Dと3Dの両方を扱えるもの、何年も開発が放置されているものは避け・・・とちょっとした条件でさえ、クリアしているものは意外に少ないことがわかりました。Rust自体が若いため、ゲームエンジンにおいて長年の開発を経たものがないのは当然のことです。そして(本当に)一つだけ、すごく気になるものが残りました。それがbevyです。


bevyはどんなゲームエンジンか

 初commitを調べてみると「2019年11月」とあり、最初のバージョン(0.0.1)の記録では2020年1月19日とあります。将来性どうこうを予想するにはあまりに新しいゲームエンジンです。ただ、勢いがあり、登場して間もないわりにやけに形になっている・・・というのが第一印象でした。ものすごく興味が湧いてきたので、まずはインターネットにあるできるだけ全ての情報にあたってみようと考えました。

 日本語情報は皆無・・・海外の記事もかなり少なかったため、(100%ではないにしろ)Googleでヒットした一通りの情報はチェックできたように思います。今は公式サイトのLearnを途中まで読み進めており、休憩にこの記事を書いています。その後はサンプルゲームなどのコードを読みながら学習を進めたいと考えています。

 bevyと比べればAmethystをご存知の方(かた)の方(ほう)が多いように思います。過去にも当サイトで少し触れているRust製のゲームエンジンです。実はbevyもAmethystに似たゲームエンジンであり、Rust製というだけでなく、ECSスタイルでゲームをプログラムしていくという点でも同じだったりします。

 bevyの生みの親であるCarter Andersonさんは、元Microsoftのプログラマーで、その仕事をやめてbevyのプロジェクトに専念するようになり、過去にはGodotに関わっていたり、Amethystに関しては結構(参考として)研究を重ねていたようです。Amethystと比べてより短いコンパイル時間、より開発効率が上がるように注力し、ゲーム開発者にとって実用的なゲームエンジンを目指す・・・という思想が伺えます。

 現在はまだ達成できていない要素も含みますが、bevyは全て「Rustのみで開発」できることを目指しているようで、Godotでいうスクリプト言語(GDScript)の実装はしないそうです。技術的にもその方がコンパイル効率は高く、私としてもRustのみで開発できるというのは嬉しい利点に思います。コンパイル時間をどこまでも短くすることで、スクリプト言語の利点をRustのままで得ようという試みもされています。

 加えていずれ専用のエディタも実装するようなことを言っていました。今はまだVisual Studio Codeでの開発ですし、コードの点だけを見るならVSCodeは非常に優れた開発環境のように思います。ただ、ゲーム開発は加えてグラフィカルな表示機能も求められており、それを様々なIDEで使えるプラグインとして開発するよりは、独自のエディタとして開発するほうが、より理想的なものになる・・・との考えでしょうか・・・私はもちろん専用エディタを望む派です。

 ECSのメリットに関しては少し昔のものですが、データ指向設計について解説した記事がわかりやすいように思います。ザックリ言ってしまえば並列処理性能が高い、メモリを効率的に扱える、プログラミングの複雑さを回避できる、そしてRustとの相性が良い・・・といったところです。

 まだ開発初期段階のゲームエンジンのため、逆に資料全てに目を通すのが楽、サンプルを細かく見ていく余裕もあり、じっくり研究していける・・・など利点もあります。まだbevyを知ってやっと3日目に入った・・・くらいの超超初心者なので、このゲームエンジンがどの段階まで開発されているのか確認はとれていません。ただ、簡単なブロック崩しゲームをコンパイルしてプレイできるところまでは確認しているため、シンプルなゲームであれば作れる段階にはあるようです。当サイトでも、練習で作ったゲームなどを公開していければとも思っています。


bevyに期待すること

 Rustのみで作られたゲームエンジンであり、Rustのみで開発でき、いずれ専用エディタを使っての開発・・・と期待は色々あるのですが、やはり性能重視のゲームが作れるという点が一番の期待所です。シムシティのようなゲームで、自分の作った街で多くの人が生活している姿をよりリアルに表現できたら・・・などと思うことがよくあります。そういったマシンパワーを贅沢に使いそうなゲームは、性能重視のゲームエンジンでないと思うようには作れないように思います。

 正直ゲームエンジン選びに迷いに迷い、まだbevyにも出会ったばかり・・・今後どうなるか私にも予想はつきませんが、今はこのbevyとの出会いに感謝したいと思っています。