Open1
Godotの記事にしたいめも

GodotEngine バージョン4の概要メモを書きました。
GodotEngine以外のゲームエンジンを触ったことがある人向けの想定です。
良いところと悪いところを書いています。
このメモからチュートリアル記事のような何かを作る予定です。
ゲーム内(ゲーム実行中)のしくみ
- シーンツリー SceneTree
1つのみあるゲームのメインループです。
シーンツリーにはノードがぶらさがっています。 - ノード Node
- 組み込みNode
- GodotEngineで用意されているNodeです。
- C++でGodotのエンジン機能へアクセスしています。
- 様々なタイミングで発行されるシグナルがあります。
- カスタムノード
- 組み込みのNodeに自分でスクリプト拡張してつくるカスタムノード
- ノードにアタッチできるスクリプトは1つです。
- スクリプトからシグナルを発行・監視できます。
- スクリプト
- スクリプトは、GDScriptとGDExtention、C#があります。
- GDScript
- Godotを操作するための言語です。
- なんらかのプログラムの経験があれば、すぐ使えるぐらいのとっつきやすさです。
- GDScriptはGodotユーザーのメイン言語です。
- Unityの(故)UnityScriptとは立ち位置が違います。
- Pythonのように、インデントです。
- Pythonとは関係なく、互換性もありません。構文が似てるだけです。
- 動的型ですが、型をつけることもできます。
- Godot4では型をつけると大きく速度上昇するようになりました。
- 複雑な条件下だと自動補完が効かないこともあります。
- アップデートで直ったりもする、がんばって!
- Godot3からGodot4になり、GDScriptが大きく変わって、かなり使いやすくなりました。
- シグナルが型になった
- 文字列指定の引数の関数がなくなった
- yieldがawaitになった(これは賛否ある)
- 関数が第一級オブジェクトになった、無名関数もできるようになった
- いまからGodot3のGDScript触るのはきびし~~。
- interfaceやabstruct、traitがありませんが、相当のなにかを現在検討中のようです。
- とても欲しい!たのみます!
- Godotを操作するための言語です。
- GDExtentionという仕組みを使えば、他の言語も使用できます。
- C++が公式です。
- とても速い。
- C++はエンジンでも使われているので、エンジン機能へアクセスできます。
- GDExtentionはGodot4からの仕組みなので非公式言語は作成中のものが多いです。
- Godot3ではGDNativeという仕組みでした。(GDExtentionに置き換え)
- 使用できる言語
- C++(Godot公式)
- Rust(非公式)
- その他(非公式、いろいろ)
- C++が公式です。
- C#はC#対応版のエディタでのみ使用できる公式言語です。
- .NET6か7
- Godot公式としての優先はGDScriptなので不安定なところもあります。
- 実行速度はGDScript以上、C++以下と言われています。
- 開発速度、快適さはGDScriptにかなり劣ります。(個人的な意見!)
- C#対応版のエディタでは、GDScriptも使用できます。
- C#の資産を使用できるのでツール系アプリでは便利!
- Unityの資産流用は……どうでしょうね?(個人的にはいまいちかな?)
- デコンパイルすると全部丸見えなのなんとかしてほしい
- 関数名とC#メソッド名で紐づけてるみたいなので難読化もしにくいし~
- GDScript
- スクリプトは、GDScriptとGDExtention、C#があります。
- 組み込みNode
- シグナル
- ノード間でメッセージを受け渡すしくみです。
- データ付きシグナル、データのないシグナルがあります。
- 組み込みノードでは、様々なタイミングで発行されます。
- スクリプトから以下のことができます。
- シグナルが発行されたときに実行される関数をセットする(connect)
- シグナルの定義
- シグナルを発行する。(emit)
- リソース
- スクリプトや画像音楽3Dモデルなどのバイナリはリソースとして扱います
- ゲームをエクスポートすると、リソースはパックされて内蔵されます。
- DisplayServer, PhysicsServer、RenderingServer、ResourceLoader、TextServerなど
- Godotのエンジン機能に直接アクセスできるシングルトンです。
- GDScriptからアクセスできる関数も用意されています。
- C++からだとさらに深くアクセスできます。
- 大量のオブジェクトなど、Nodeだとパフォーマンスが落ちる場合に有効です。
- Nodeの機能を使わずに直接描画・物理を操作できます。
ゲーム外(ゲーム制作中)のしくみ
- エディタ
- エディタはGodotでできています。
- スクリプトをエディタ上で動かすことができます。
- 大量のリソースをGDScriptのバッチで作成したりできて便利!
- エディタ上で動くアドオンをとても簡単につくることができます。
- GDScript、GDExtenstionが使用できます。
- C#はC#対応版エディタのみで使用できます。
- アドオン沼 たのしい
- リソース
- リソースは、テキスト方式でエディタで保存読み込みされます。
- 保存、読み込み、実行時にバイナリに変換され、ゲーム内で読み込み・使用されます。
- シーン
- エディタで作って保存したシーンは、PackedSceneというリソースファイルで保存されます。