スクリプト言語
このレッスンではGodotで使用できるスクリプト言語の概要をお伝えします。それぞれの長所と短所も学習できます。次のパートではGDScriptを使って最初のスクリプトを書いていきます。
スクリプトはノードに接続され、ノードの振る舞いを拡張するもの です。これは接続されるノードの関数とプロパティすべてを継承することを意味します。
例えば、Camera2Dノードが船を追いかけるゲームで考えてみましょう。Camera2Dノードは、デフォルトでは親ノードについて動きます。ここで、プレイヤーがダメージを受けると、カメラが揺れるようにしたいとします。この機能はGodotに組み込まれていないので、スクリプトをアタッチしてカメラが揺れるようにコーディングする必要があります。
利用可能なスクリプト言語
Godotは、 4つのゲームプレイ用プログラミング言語 を提供します。GDScript、C#、そして、GDExtension テクノロジーを介した C と C++ です。他にもコミュニティーサポートによる言語がいくつかありますが、これらは公式なものです。
1つのプロジェクトで複数の言語を使用することができます。例えば、チーム内で、ゲームプレイのロジックはすぐに書けるGDScriptでコーディングし、C#やC++で複雑なアルゴリズムを実装してパフォーマンスを最大化するといったことが可能です。あるいは、すべてをGDScriptやC#で記述することもできます。それはあなたが決めることです。
このように、さまざまなゲームプロジェクトや開発者のニーズに応えるために、柔軟な対応を行っています。
どの言語を使うべきか?
もしあなたが初心者なら、GDScriptから始めることをお勧めします。私たちはこの言語を、Godot とゲーム開発者のニーズのために特別に作りました。軽量でわかりやすい構文を持ち、Godot との最も緊密な統合を提供します。
C# の場合は、VSCode や Visual Studio などの外部のコードエディターが必要になります。C# は十分にサポートされていますが、GDScript と比較すると学習に役立つ情報はあまり出回っていません。そのため、C#は主に、すでにこの言語を使い慣れている経験豊富なユーザーにお勧めしています。
各言語の特徴や長所・短所を見ていきましょう。
GDScript
GDScript は、オブジェクト指向および 命令型プログラミング言語であり、Godot用に開発されました。ゲーム開発者のために、ゲームコーディングの時間を短縮するために作られました。その特徴は以下の通りです。
短いファイルにつながるシンプルな構文。
コンパイルと読み込みが非常に速い。
緊密に統合されたコードエディタには、ノードやシグナルのコード補完、さらに多くの情報をシーンから確認できる機能が付属。
ベクトル型と変換型を内蔵しており、ゲームに必須の線形代数の多用に効率的です。
静的型付き言語と同じようにマルチスレッドに対応しています。
ガベージ コレクション はありません。この機能はゲーム作成時に結局は障害になります。デフォルトでは、ほとんどの場合、エンジンが参照をカウントしてメモリを管理してくれますが、必要であればメモリを制御することもできます。
Gradual typingです。変数はデフォルトで動的な型を持ちますが、型ヒントを用いて強力な型チェックを行うこともできます。
GDScript はインデントを使ってコードブロックを構成するため Python のように見えますが、実際には同じようには動きません。GDScriptは、Squirrel、Lua、Pythonなど複数の言語からヒントを得ています。
注釈
なぜ我々はPythonやLuaを直接使っていないのか?
数年前、GodotはPythonを使い、次にLuaを使いました。どちらの言語も、統合には多くの労力を要し、大きな制約がありました。例えば、Pythonではスレッドのサポートが大きな課題でした。
専用言語を開発することで手間がかからず、ゲーム開発者のニーズに合わせてカスタマイズすることができます。現在、サードパーティーの言語では提供することが難しかったパフォーマンスの最適化や機能の開発に取り組んでいます。
.NET / C#
Microsoftの C# はゲーム開発者の間で人気があるので、私たちは公式にこれをサポートしています。C# は成熟した柔軟な言語であり、そのために書かれた多くのライブラリがあります。Microsoft からの寛大な寄付のおかげで、私たちはこの言語のサポートを追加することができました。
C#は、ガベージコレクタに注意する必要がありますが、性能と使いやすさの間のトレードオフを提供します。
注釈
C#でスクリプトを書くには、Godotエディタの .NETエディションを使用する必要があります。Godotのウェブサイトの download ページでダウンロードすることができます。
Godot は .NET 8 を使用するため、理論的はサードパーティの .NET ライブラリまたはフレームワークを使用できます。また、 F#、Boo、ClojureCLRなどの Common Language Infrastructure に準拠したプログラミング言語も使用できます。ただし公式にサポートされている .NET オプションは C# のみです。
注釈
GDScriptコード自体は、コンパイルされたC#またはC++ほど高速には実行されません。ただし、ほとんどのスクリプトコードは、エンジン内のC++コードで記述された高速なアルゴリズムの関数を呼び出します。多くの場合、GDScript、C#、またはC ++でゲームプレイロジックを記述しても、パフォーマンスに大きな影響はありません。
注意
Godot 4 を使用して書かれた C# のプロジェクトは、Web プラットフォームにエクスポートできません。 WebプラットフォームでC#を使用するには、代わりにGodot 3の使用を検討してください。 Android および iOS プラットフォームのサポートは、Godot 4.2 で利用できますが実験的であり、 some limitations apply が適用されます。
参考
To learn more about C#, head to the C#/.NET section.
GDExtensionを通したC++
GDExtensionを使えば、Godotを再コンパイルすることなく、C++でゲームコードを書くことができます。
C API Bridgeの利用により、生成される共有ライブラリには、任意の言語のバージョンやコンパイラブランド、バージョンの混在が可能です。
GDExtensionは、パフォーマンスを重視する場合に最適です。他の部分はGDScript、C#で書けるので、ゲーム全体を通して使う必要はありません。
GDExtension を使用する場合、使用可能な型、関数、およびプロパティは、Godot の実際の C++ API によく似ています。
要約
スクリプトとは、機能を拡張したいノードに接続されるコードを含むファイルです。
Godotは4つの言語を公式サポートし、パフォーマンスと使用の容易さの間の柔軟性を提供しています。
必要なアルゴリズムをCやC++で実装してほとんどのゲームロジックをGDScriptやC#で書く、というような言語を混ぜて開発することも可能です。