Suutaの秘密基地

動く...動く...

GDevelopっていうゲームエンジンを使ってみた

きっかけ

学校の授業で行われたunity始める前の練習としてこのエンジンを知った。今まで耳にしたことが無く、”unityのための練習”というフレーズからスクラッチみたいなものを想像していた。 インストールしてみると外観はかわいらしく安っぽく見えるが、必要最低限の機能と分かりやすいUIで個人的には好印象だった。


github.com

GDevelopは、フル機能のオープンソースゲーム開発ソフトウェアであり、特定のプログラミング言語の知識がなくてもHTML5およびネイティブゲームを作成できます。すべてのゲームロジックは、直感的で強力なイベントベースのシステムを使用して構築されています。

f:id:suuta1123:20201005100811j:plain


ドキュメントが乏しい

学校の授業ではもちろん操作法についていろいろ教えてもらった。初めに何をやるのかな?画面出力かな?と思っていたが、 始めに習った機能はAddForceという関数?で、指定の角度に指定の速度(ピクセル/秒)をオブジェクトに与える関数だった。 UE4でいうAddImpules()と同じ感じだと思う。授業ではこれを使い指定のキー入力時にAddForceで玉や板を動かしてブロック崩しを作った。 で、肝心の画面出力関数はどれだろう?と機能リストを軽く調べたが、そんなモノはなかった。printfがない...

さすがにしんどいなと思いネットを調べたが全くヒットしない。それだけでなく、GDevelop自体の情報が少なかった。 unity始める前の練習なのに、情報少ないのかよ。幸いなことに先生がドキュメントを作ってくださり、ある程度の機能は把握できた。 改めてunity・UE4の情報量と記事にまとめてくださっている方々に感謝です。


ロジックの組み方

GDevelopでは各シーン(タイトル・メニュー・ステージ...)ごとにロジックを書いていくことがメインになる。 逆に各オブジェクト(キャラクター・敵...)ごとにロジックを書くことはできない。 UE4でいえば各BPクラスオブジェクトごとではなく、レベルBPにのみロジックを書くことになる。 その代わりに、どのシーンからもアクセスできる外部イベントを使うことで、コントローラー、HUD、アニメーション などをモジュール化し、必要に応じてインクルードすることで各機能を利用できる。 変数にはグローバル変数、シーン変数、オブジェクト変数がある。Javascriptベースのため、型はない。

また、At The Beginning of the Scene(BeginPlay( )) やTrigger Once ( Do Once)などの組み込みイベントやシーケンス制御機能はあるが、 UE4のようなカスタムイベントは作れない。基本的には現在読み込んでいるシーンイベントを毎フレーム(仕様上、最大60FPS)回すことになる。


f:id:suuta1123:20201005134718j:plain 左側が条件式、右側が命令を記述する。
基本はビジュアルベースだが、Javascriptを使うことで詳細なエンジン機能にアクセスできる。


パッケージ

対応プラットフォームは Windows, Linux, HTML, Android, (iosは今後対応),
ビルドはオンラインサービスで専用のサーバーにて行われる。エンジンアップデート後など、メンテナンス が行われる場合があり、パーケージできない場合もあるので注意。


触ってみて

ビジュアルベースであり、プログラミング言語を知らなくてもロジックが組める点はUE4のブループリントに似ていた。 ゲームエンジンの足掛かりとしては必要十分な機能がそろっている。情報量が少ないとはいっても 日本語・文章の情報がないだけで、YouTubeには海外ニキがたくさんの動画をアップしてくれているので、途方に暮れることは ないと思う。また、個人的にはゲームパッド対応をしてほしいと思った。やっぱりゲームはコントローラーでプレイしたい。