2020-09-05

[94] 再びGodot vs Amethyst

  最近紙の書籍でRust入門の本を読み、Rustやっぱりいいなぁ……となりまして、その流れで再びAmethystに興味が出て少し基本的な部分を勉強していました。以下は個人的なメモのような意味合いが強かったりはしますが、結局Godotを選んだ理由になります。


Amethystについて

  前の記事に書いた通りではあるのですが、やはりAmethystは使いこなすには少々専門的なことを割と多く学ばなければならない感じでした。以下が結局のところGodotがいい……となった理由です。

1. 習得がやはり大変。多くのCrate(Libraryのようなもの)を集めたもので、ゲームエンジンというよりはフレームワークに近い部分もあり、構成要素を自由にいじれる点では好きなようにできる反面、やはりそれぞれについて深く学ぶ必要がある点、負担が大きい。

2. かなりプログラマ寄り。Rustでゲーム開発……ということで、スクリプト言語や開発用エディタなどの支援があるわけでもなく、Rustのコードで直接書く分、やはりどうしても開発効率の点で難がある。ゲームのちょっとしたことに対し、多くの新たな知識/技術が要求される可能性が高く、それなりのゲームが作れるようになるまでには結構なレベルのゲームプログラマに成長していそう……くらいに要求される情報量が多そうに感じた。

3. Amethystはゲームエンジンとしての枠組みを持ち、全て自分でプログラムするよりは大分開発効率は上がるとは言え、やはり"ゲーム制作に集中"できるほど楽にプログラムを組めるわけではなく、ゲームクリエイターというよりはゲームプログラマーという位置づけになりそうなゲームエンジンであった。恐らく習得後も純粋な開発効率はGodotと比べると大分落ちることが予測される。

4. コンパイル時間が長い。ちょっとしたソフトに15分以上、GB単位のファイルが生成される(完成exe自体はGodotより抑えられているくらいには小さいが)。Crate(Library)を多く組み合わせる性質上、プログラムパーツの管理が色々と大変なことになりそう……Crateのバージョンアップや過去のゲームコードの管理など、ファイル数や容量がかなりのものになりそう……それに素材の存在も考えると、結構大掛かりなコード管理が予想される。シンプルでコンパクトなGodotとは対照的。


Amethystのメリットは

  悩むのは、やはりAmethyst自体にもRust製という大きなメリットがあるため。出来上がるゲーム(exeファイル)の容量は少なく、メモリ安全(かつ省メモリ)で実行速度も速い……Amethystを使いこなす段階にもなればゲームエンジン自体へ手をつけることもそこまで無理ではなくなっているのでは……つまりかなり細部までいじることができる。

  C++やC#を学ぶ予定はないため、Godotでは同様のことができるようになることはないだろうし(ゲーム性能面はRustで対処が可能だが、Godot自体はC++で作られているのでいじれない)、恐らくより高性能な処理(多くの並列処理)が要求されるゲームはAmethystでないと作れない……というケースもあるように思う。

  恐らく(一人ではという条件を除けば)作れないゲームはなくなるように思う。技術習得さえ乗り切れば、Amethyst(Rust)には、どこまでも自由にゲームを作れる……という期待が持てる。


Godotのデメリット

  Godotにもデメリットはある。同じ内容のものならGodot製のゲームはAmethyst製のゲームより性能(特に並列高速処理)は落ちるように思う。非常に大きなデメリットではあるが、突き詰めればそれ一つだけかも知れない。

  Amethystのメリットに自由さを挙げたが、これは決してGodotで作れるゲームデザインに制限がかかるといった類のものではなく、"Godot流が強要される"程度のもの。性能面の制限範囲内での制作というのは、ゲーム開発の常であるし、ゲームプログラマー的な細部の拘りができない分、ゲームデザイナー的な拘りをすればよい、くらいに思っている。


ちなみにUnity/UEは?

  この期に再びUnityやUnreal Engineのことも考えてみた。どちらも3D寄りで、Unityはやはり無難な選択肢かも知れない……と思う一方、無料/有料ユーザーの差、結局は無料とは違うサービスなのだということが強く実感させられたので、以前にも何度か書いた記事の通り、完全無料のGodotがやはり……となった。


Godotに期待するもの

  将来性の面はやはり大きい。AmethystもRustの将来性を考えると、今後本格的なゲームプログラマーの選ぶゲームエンジンという分野で、強力な選択肢にのし上がってくるように思うけども、Godotは非プログラマーも対象にできる点で、ユーザー数がAmethystに抜かれる未来はないように思う。

  何よりも大きなポイントが、非常にシンプルな構成(エディタ)で、ゲームデザインとの相性のよい開発スタイル(シーンやノードのシステム)、(エディタ支援による)開発効率もよく、コンパイルも速く、(Amethystと比べれば)習得も楽な点で(より自信を持って)極めていこう……という気になれる。まだまだ発展途上で、今後もよりよくなっていくことが期待できる点もよく、まだ開発中らしいがブラウザでの開発もそろそろ実現しそうな段階にある。

  総合的に見るとGodotはかなりゲームの開発効率を高めてくれるという点においてはAmethystを大きくリードしているように思う。

  色々遠回りしてしまった感はあるけども、再び1から英語版(情報量の多さより、専門用語も英語で統一したい)でGodotの学習を開始したいと思っています。