ゲーム制作勉強中!あこがれだったプログラマーに今からなろう!

昔あこがれだったプログラマー。今からでもUnityを勉強してみようと思い立ち、チャレンジ開始! Unity勉強メモや、悪戦苦闘な日々の記録です。

Unity経験者によるGodot実践メモ:初期インストールと4大要素について

今日からちょっとGodotで遊んでみようと思っています。

Unityは確かに素晴らしいゲームエンジンなのですが、できたゲームがちょっと重い感じがしたので、
(まだ自分のスキルが未熟なだけですが😅)
とにかく軽いと噂のGodotをちょっと覗いてみたくなったわけです🤣

まずはとにもかくにも最初はインストールです。

噂によるとSteam版とstandardと2種類あるそうですが、Steam版は見つけられなかったので、おとなしくStandard版をインストールします。
ありがたいことにMac対応しているので、Mac用のHPからダウンロードです。
godotengine.org
Windows用はこちらです。)

最初の選択肢で、プログラムに使用する言語を選択するイメージです。

Unity経験者としては、C#を使う.NET版にしたいところでしたが、事前に調べた感じでは、GodotをやるのであればGDScriptの方がメリットがあるようですので、おとなしくGDScriptを選びます。
UnityではLTS版を選びたいものですが、Godotにおいては、それもちょっと違うようです。
しかも、どうやらGodot3.*.*とGodot4.*.*で色々と様変わりしているようで、これから学ぶのであれば、これも大人しくしGodot4を選ぶ方が良いようです。

ダウンロードもあっという間、インストールもあっという間です😳

ここからは、あまりしっかり書かれている記事が少なかったので、備忘録として記載しておきますが、
Unityであれば専用フォルダがこの時点で作成されますが、Godotはそれは作成されません。
なので今の段階で、専用フォルダを作成しておくのがお勧めです。

また、GodotはUnity HUBの様な複数のバージョンを管理するツールが存在しません。
なので、MacであればアプリケーションにそのままGodotを放り込みたいところですが、自分でフォルダ分けしてバージョン保管しておいた方が良いです。

僕の場合は、個人フォルダの直下にGodotフォルダを作成し、その中にバージョン数のフォルダを作成して、その中に保存しておくことにしました。

さて、肝心のGodotEngineですが、Unityとは設計が異なるので、何も判らないままではちょっと理解が大変です。
ざっくり調べてみると、Godotには4大要素というものがあり、これを何となくでも良いので理解しておくことが大切な様です。

Godotにおける4大要素とは、
・Nodes(ノード)
・Scenes(シーン)
・Scene Tree(シーンツリー)
・Signals(シグナル)
の4つです。

最初の1つはNodes(ノード)です。
ノードはゲームを構成する最小単位です。
こう書くと、UnityでいうGameObjectの様に思えますが、GameObjectとはちょっと違います。
簡単にいうと、Unityのコンポーネントが独立したイメージでしょうか。

たとえばUnityでCubeというGameObjectを作ると、そこにはデフォルトでTranform、Mesh Filter、Mesh Renderer、Box Colliderといったコンポーネントが搭載されています。
このそれぞれのコンポーネントがノードになります。

そして、ここからがUnityのコンポーネントとGodotのノードの違いですが、Godotはこのノードに子ノードを組み合わせて、目的の機能を作っていきます。


これは公式のチュートリアルで作成したものですが、この1つ1つがノードになります。
ノードにはそれぞれプロパティがあり、スクリプトをアタッチすることもできます。
ただ、Unityとは異なり、1つのノードには1つのスクリプトしかアタッチできない様です。


次はScenes(シーン)
Unityのシーンとはかなり意味が違う場合があります。「違う場合がある」というのは、すぐに分かります。
まず、基本的にGodotのシーンとは、ノードを複数組み合わせたものになります。
先ほどの図のMobはノードの組み合わせ、つまり、Mobシーンになります。
Unityのシーンを想像していると、ここですごく困惑しますよね😅
シーンというよりGameObjectです。

ただ、このままでは「違う場合がある」というか、全く違うものじゃないか!と言われそうですが、

この図の様なシーン。
これにはカメラというノード、Directional Lightというノード、User Interfaceというノードがあります。
こうなってくると、Unityのシーンのイメージに近くなってくるのではないでしょうか。

そして、次の要素であるScene Tree(シーンツリー)の説明にもなるのですが、
Mainシーンには、子シーンとしてPlayerシーンが追加されています。

つまりGodotのシーンとは、UnityのGameObjectであり、UnityのPrefabであり、Unityのシーンでもある様なものみたいです。
そして、このシーンのツリー構造こそが、Scene Tree(シーンツリー)です。


最後のSignals(シグナル)
シグナルとは、何か特定のイベントが起こった時、設定しておいた関数を実行するための仕組みです。
Unityにも欲しい、すごく便利な機能です。
たとえば、先ほどのMainシーンの中にMobTimerというノードがありました。
このTimer、これもUnityに欲しい機能ではありますが、まずはシグナルの説明です。

これはTimerのインスペクターです。


このTimerノードは、0.5秒毎にTimeoutというシグナルを発してくれます。

次に、このTimerのシグナルの設定で、このTimeoutで関数(_on_mob_timer_Timeout関数)に接続します。

これで0.5秒毎に、_on_mob_timer_Timeout関数が実行されます。
Godotでは、たとえば、ボタンもこのシグナルによって実行する関数を接続しています。

このシグナル、スクリプト内でオリジナルのシグナルを作成することもできますし、自分のタイミングでシグナルを発する事もできます。
もちろん、実行する関数をスクリプトを使って変更することもできます。


Godotではノードを組み合わせて目的のシーンを作成し、それらのシーンを組み合わせてゲーム世界やキャラクターを作成していき、
シグナルで各ノードのスクリプトを連動させることで、目的のゲームを完成するわけです。