LoginSignup
1
3

Unity からの移行先として Godot Engineを試してみた

Posted at

Unity 以外の選択肢

私はRPGツクール系もUnityも好きなので RPG Maker Unite に期待し待っているのですが、steamでの発売がなかなか始まらない。そんななかでUnityのライセンス料金の話(※)もあり、他の選択肢も検討してみようかな、と。

※ 見直され現在は落ち着いたようですが「過去に遡って条件を変更しようとした試み」は信頼を大きく損なってしまった、と思います

「Unity」の移行先の候補になるゲームエンジンまとめ 記事などを読んで、Godot(ゴドー) Engineがライセンス的にも良さげなので、ちょっと試してみます。

Godot(ゴドー) Engineとは

Wikipedia および以下の入門コンテンツを読んでみました。

以下は気になったポイントのメモ。

  • クロスプラットフォームかつオープンソース(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版をインストールしてみました。
image.png
サイズは1.21GB、公式サイトのダウンロード版よりかなり大きいです。ざっくり見てみると、エクスポート時に使用する各種環境用のファイルを含んでいるからっぽい。
image.png
このsteam版を起動してみると、Latest (4.1.1)版でした。
image.png
steam 側の設定で「ベータ」タブからブランチ選択ができるので、LTS版が良ければ stable-3.5 を選べば良い?かもですね。
image.png
バージョン使い分けが面倒そうなのでLatest以外はダウンロード版を使うのが良いかも、です。あとダウンロード版だとC#(Mono)用のファイルが分かれているので、steam版だとMono使えないかもしれない?

とりあえずsteamデフォルトのLatest版で進めてみます。

新規プロジェクトを作成

とりあえず新規プロジェクトを作成してみます。プロジェクト名は「godot-sample01」とし、レンダラーは最も開発対象が多い「互換性」を選択。
image.png

自動的に生成されたファイルは以下でした。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 ファイルは以下ですね。
image.png
.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex はこのSVG形式ファイルを描画して画像化したデータのようです。ヘッダ部分に RIFF WEBPPV8 の文字列がありますので WebP コンテナ仕様 形式かな。

あとはエディタ設定が以下のファイルにありますね。

.godot/editor/project_metadata.cfg
[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 をテクスチャに指定して中央に移動させるところ。正確に中央に移動する方法が不明だったので、まずは設定メニューからデフォルトの画面サイズを確認します。
image.png
画像の中央が原点になっているようなので、上記の値の半分を、Sprite2D のインスペクタに指定すればok。ちなみに自分で計算しなくても 1152/2 と計算式を入力すると、計算結果が設定されます。
image.png
定番の Hello World を表示するところ。ドキュメントには _init() 関数とありますが、生成されたスクリプトにある _ready() 関数に記載してみました。
image.png
ここまでの操作でファイルが2つ作成されています。
image.png
README.md はGit用に別途追加したもので、GODOTとは関係ないです。.gdignore ファイルなど用意してみたのですが消せなかったので、とりあえず表示したまま。。
変数を宣言するところでは、オマケで @export を付与しておきます。
image.png
するとインスペクタで値を変更できるようになって便利。
image.png
さて、アイコンを回転させてみましょう。
image.png
Animation.gif
うん、良い感じで回転していますね。

_process() 関数は定期的に呼び出され、delta には前回からの時間差分(秒数)が渡されるみたい。rotation はラジアンで、angular_speed にはさきほどπ(3.142)をセットしました。なので画像は1秒間に180度周り、2秒間で1回転することになります。

試しにインスペクタで angular_speed に -6.284 を指定した結果がこちら。逆回転で、1秒で1回転しているのがわかります。Animation2.gif

さて残り2行を足してみましょう。
image.png
Animation3.gif
追加したのは1秒間に400ピクセルのスピードで前進させるコートですね。基本ベクトルをアイコンと同様に回転させ、それに速度(speed * delta)をかけたものを、アイコンの位置情報に加えています。

画面中央から開始したので、ちょっと右に寄っていますが、まあ良しとしましょう。

この状態を script-sample1 ブランチにしておきました。差分 がわかりやすいとおもいます。

というわけで

簡単なチュートリアルを実施してみたメモは以上です。

根っこの思想や、GDScript など言語環境は異なりますが、エディタ画面などが Unity に近く、馴染みやすく使いやすい開発環境であるな、という印象です。

Unity からの移行先として、もう少し触ってみようかとおもいます。それではまた!

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3