Unity 以外の選択肢
私はRPGツクール系もUnityも好きなので RPG Maker Unite に期待し待っているのですが、steamでの発売がなかなか始まらない。そんななかでUnityのライセンス料金の話(※)もあり、他の選択肢も検討してみようかな、と。
※ 見直され現在は落ち着いたようですが「過去に遡って条件を変更しようとした試み」は信頼を大きく損なってしまった、と思います
「Unity」の移行先の候補になるゲームエンジンまとめ 記事などを読んで、Godot(ゴドー) Engineがライセンス的にも良さげなので、ちょっと試してみます。
Godot(ゴドー) Engineとは
Wikipedia および以下の入門コンテンツを読んでみました。
- Godot入門 (量が多いので最初だけ)
- 今から始める『Godot Engine』
- さくさく理解する Godot 入門(ただし2Dに限る)基礎編 シーズン1【第1回】
- Godot(ゴドー)のスタートアップ方法。いろんな要素を見て覚える動画 (動画)
- ひょがよめさんとGodotゲーム制作チュートリアル(1/2) (動画)
以下は気になったポイントのメモ。
- クロスプラットフォームかつオープンソース(MITライセンス)の2D/3Dゲームエンジン
- 開発環境はWindows、macOS、Linux、BSD系OS、Haikuで動作
※ IDEもGodot Engine上で作られている - 開発対象はWindows、macOS、Linux、FreeBSD、Android、iOS、BlackBerry10、HTML5
※ PlayStation 3、PlayStation Vita、ニンテンドー3DS も一応対応? - 開発言語はGDScript(Python系の独自スクリプト言語)、C#(Mono)
※ GDNative 経由で C++ も呼び出せるっぽい - 2Dと3D二つのグラフィックスエンジンを「ビューポートノード」を用いて併用・統合させて用いる
- 日本語対応で steam版 もある
とりあえずインストール
Godot 公式サイト を見ると、現時点ではLTS (3.5.2)版とLatest (4.1.1)版があるみたい。とりあえずsteam版をインストールしてみました。
サイズは1.21GB、公式サイトのダウンロード版よりかなり大きいです。ざっくり見てみると、エクスポート時に使用する各種環境用のファイルを含んでいるからっぽい。
このsteam版を起動してみると、Latest (4.1.1)版でした。
steam 側の設定で「ベータ」タブからブランチ選択ができるので、LTS版が良ければ stable-3.5 を選べば良い?かもですね。
バージョン使い分けが面倒そうなのでLatest以外はダウンロード版を使うのが良いかも、です。あとダウンロード版だとC#(Mono)用のファイルが分かれているので、steam版だとMono使えないかもしれない?
とりあえずsteamデフォルトのLatest版で進めてみます。
新規プロジェクトを作成
とりあえず新規プロジェクトを作成してみます。プロジェクト名は「godot-sample01」とし、レンダラーは最も開発対象が多い「互換性」を選択。
自動的に生成されたファイルは以下でした。shader_cache 配下は省略しています。
.gitattributes
.gitignore
icon.svg
icon.svg.import
project.godot
.godot/.gdignore
.godot/global_script_class_cache.cfg
.godot/uid_cache.bin
.godot/editor/filesystem_cache8
.godot/editor/project_metadata.cfg
.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex
.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.md5
.godot/shader_cache/*
この状態のフォルダを GitHub の yamachan/godot-sample01 リポジトリに empty-project ブランチとしてあげておきます。
project.godot がプロジェクト管理用ですね。作成時のレンダリング選択が記載されています。あとアイコン指定もありますね。res://
がプロジェクト内リソース指定のようです。
.godot フォルダ
.godot フォルダは管理用と思われますが、上記リポジトリには反映されないので、簡単に中身を見てみます。
icon.svg
ファイルは以下ですね。
.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex
はこのSVG形式ファイルを描画して画像化したデータのようです。ヘッダ部分に RIFF WEBPPV8 の文字列がありますので WebP コンテナ仕様 形式かな。
あとはエディタ設定が以下のファイルにありますね。
[editor_metadata]
executable_path="D:/SteamLibrary/steamapps/common/Godot Engine/godot.windows.opt.tools.64.exe"
[debug_options]
run_live_debug=true
run_reload_scripts=true
これら以外には、まだたいした情報は格納されていないです。まあ、初期化しただけですからね。
チュートリアルを実行してみる
とりあえず簡単に動かしてみたいため、公式ドキュメントのステップ・バイ・ステップにある 初めてのスクリプト作成 を実施してみます。丁寧に説明されているので、それに従い実施するだけ。以下はメモです。
Sprite2D
をルートノードとして追加して、icon.svg
をテクスチャに指定して中央に移動させるところ。正確に中央に移動する方法が不明だったので、まずは設定メニューからデフォルトの画面サイズを確認します。
画像の中央が原点になっているようなので、上記の値の半分を、Sprite2D
のインスペクタに指定すればok。ちなみに自分で計算しなくても 1152/2
と計算式を入力すると、計算結果が設定されます。
定番の Hello World を表示するところ。ドキュメントには _init()
関数とありますが、生成されたスクリプトにある _ready()
関数に記載してみました。
ここまでの操作でファイルが2つ作成されています。
README.md
はGit用に別途追加したもので、GODOTとは関係ないです。.gdignore
ファイルなど用意してみたのですが消せなかったので、とりあえず表示したまま。。
変数を宣言するところでは、オマケで @export
を付与しておきます。
するとインスペクタで値を変更できるようになって便利。
さて、アイコンを回転させてみましょう。
うん、良い感じで回転していますね。
_process()
関数は定期的に呼び出され、delta
には前回からの時間差分(秒数)が渡されるみたい。rotation
はラジアンで、angular_speed
にはさきほどπ(3.142)をセットしました。なので画像は1秒間に180度周り、2秒間で1回転することになります。
試しにインスペクタで angular_speed
に -6.284 を指定した結果がこちら。逆回転で、1秒で1回転しているのがわかります。
さて残り2行を足してみましょう。
追加したのは1秒間に400ピクセルのスピードで前進させるコートですね。基本ベクトルをアイコンと同様に回転させ、それに速度(speed * delta
)をかけたものを、アイコンの位置情報に加えています。
画面中央から開始したので、ちょっと右に寄っていますが、まあ良しとしましょう。
この状態を script-sample1 ブランチにしておきました。差分 がわかりやすいとおもいます。
というわけで
簡単なチュートリアルを実施してみたメモは以上です。
根っこの思想や、GDScript など言語環境は異なりますが、エディタ画面などが Unity に近く、馴染みやすく使いやすい開発環境であるな、という印象です。
Unity からの移行先として、もう少し触ってみようかとおもいます。それではまた!