Godot(ゴドー)は、クロスプラットフォームかつオープンソース(MITライセンス)の2D/3Dゲームエンジンである。アルゼンチンのソフトウェア開発者であるJuan LinietskyとAriel Manzurが、ラテンアメリカの複数の企業向けにブエノスアイレスで開発し、2014年に一般公開された。開発環境(エディタ)はWindows、macOS、Linuxで動作し、開発対象となるプラットフォームはPC、スマートフォン、Webブラウザ (WebGL) と、多様なプラットフォーム上で動作するように設計されている。

## 概要

Godotは統合ゲーム開発環境として開発されているため、 CGアセットや音楽といった素材を除いてゲームをスクラッチで制作することを可能にしている。「シーン」による入れ子構造によって構成される独特のゲームデザインアーキテクチャを用いている。スクリプトからグラフィック素材に至るまで、ゲームの構成部品すべてが独立したファイルシステム(またはデータベース)に統合される。この管理システムはバージョン管理システムと併用することも可能である。

Godotは複数のプラットフォームへの出力をサポートしており、開発者はスマートフォン、Web、PC、ゲーム機など多くのプラットフォームに対応できる。テクスチャ圧縮や解像度をプラットフォーム毎に設定することも可能である。

現在サポートされているプラットフォームはWindows、macOS、Linux、iOS、Android、Webブラウザの他、W4 GamesがNintendo Switch、PlayStation 5、Xbox Series X/Sへのエクスポートライセンスを販売している。

### スクリプティング

ゲームの作成はPythonに近い独自のスクリプト言語であるGDScriptによって成される(C#を利用可能な版もある。またC/C++コードを呼び出すことも可能)。GDScriptはその基となったPythonよりも変数の厳格な記法が可能で、「シーン」を礎となすGodotのアーキテクチャに最適化されたものになっている。エンジン開発者は当初外部のプログラミング言語を検討していたが、結局高度な最適化とエディタへの統合が成されたカスタム言語を採用することになったと述べている。

Godotにはオートインデントやシンタックスハイライト、コード自動補完などの機能を有するスクリプトエディタが統合されている。またブレークポイントおよび プログラムステッピングを設定できるデバッガも有している。

一方で、GodotはVisual Studio Codeなどの外部エディタや統合開発環境と連携して開発を行うことも出来る。

また、バージョン3からはビジュアルスクリプトが利用可能になり、Unreal EngineのブループリントやBlender Game Engineのロジックエディターのような視覚的なプログラミングが可能である。しかし、次期メジャーアップデートであるGodot 4.0ではビジュアルスクリプトの廃止がなされることがアナウンスされた。

### 描画機能

GodotはVulkanを介した描画機能を提供する。またCompatibility(互換性)モードの形でOpenGL ESをサポートする。

エンジンは透明度、法線マッピング、スペキュラ、シャドウマップを用いた動的な影や、FXAA、ブルーム効果、被写界深度、HDR、ガンマ補正やフォグ等のフルスクリーンポストプロセッシング効果を実装している。シェーダーはマテリアルやポストプロセッシングはもちろん、2DCGレンダリングに対しても用いることができる。

Godotは独立した2Dグラフィックスエンジンを備えており、3Dのそれとは別に動かすことができる。2Dエンジンの機能の一例としてライティングやシェーディング、タイルセット、多重スクロール、2Dポリゴン、アニメーション、パーティクルに加えて物理演算エンジンを備えている。これら2Dと3D二つのグラフィックスエンジンを「ビューポートノード」を用いて併用・統合させて用いることが可能であり、エンジンの大きな特徴となっている。

レンダリングメソッドは Forward+ (Clustered lighting) をPC向けに採用しており、このため depth pre-pass を持つ。これにより光源数の制約が緩くかつピクセルシェーダーの負荷も小さく抑えられている。また ver 4.3 の段階では deferred rendering を実装していない。

#### シェーダー

GodotはGLSLに似た独自シェーディング言語 Godot shading language(拡張子: `.gdshader`)およびビジュアルエディタを提供しており、これらを用いてシェーダーを制御できる。シェーダーはプログラム可能なステージにあたる processor functions を持ち、ここに各ステージの処理を記述する。Godot 4.2 では`vertex()` / `fragment()` / `light()` および `start()` / `process()` / `sky()` / `fog()` の7種類の processor functions が定義されている。またシェーダーはレンダリングの種類に応じたタイプ設定(shader\_type)を持つ。タイプに応じてレンダリング方式・ビルトイン値・対応 processor functions が変更される。Godot 4.2 では `spatial` / `canvas_item` / `particles` / `sky` / `fog` の5種類のタイプが定義されている。更にGodotが内部でおこなうシェーダー処理の振る舞いを変更するレンダーモード設定(render\_mode)をもつ。

##### 頂点シェーダー

頂点シェーダーの制御は `vertex()` processing function 内に記述される。Godot はデフォルトで暗示的なモデル・ビュー・投影変換をおこなっており、これはレンダーモードでオフ・変更できる(マニュアル実装できる)。

### その他の特徴

Godotはアニメーション作成用のGUIを備えており、スケルタルアニメーション、ブレンディング、アニメーションツリー、モーフィング、リアルタイムカットシーンを編集できる。これによって定義した任意のアニメーションで、ゲームエンティティを動かせる。3D物理エンジンにはBulletを採用している。

他にも以下のような機能を備えている:

- オクルージョンカリング
- Level of detail
- パフォーマンス統計のグラフ化
- ライティング
- マルチスレッド処理
- プラグインシステム
- レンダリングターゲット
- 動画再生機能(Theora)
- 音声再生機能(Ogg Vorbis,WAV)
- パーティクルシステム
- テクスチャ入力/出力/圧縮パイプライン
- Navmeshのサポート
- GUI
- キーボード、マウス、ゲームパッドとタッチ操作のサポート
- OpenXRプラグインを使用したVRのサポート

## 歴史

Godotの開発がJuan 'reduz' LinietskyとAriel 'punto' Manzurによって開始されたのは2007年のことである。Linietskyはプレゼンテーションにおいて、"Godot"の名は「エンジンに新しい機能を追加し、完璧なものへと近づけたい」という永遠の叶わぬ願いをサミュエル・ベケットの劇「ゴドーを待ちながら」になぞらえて取られたということを述べている。2014年2月、GodotのソースコードがMITライセンスでGitHubに公開される。

2014年12月15日、Godotはライトマッピングやナビメッシュによる経路探索のサポートを追加し、シェーダー機能を強化したバージョン1.0をリリースし、これが初の安定版となった。次いで2015年5月21日にリリースされたバージョン1.1はコードエディター上でのオートコンプリートの改善、ビジュアルシェーダーエディター、OSのウィンドウ管理のためのAPI、ダークテーマを追加し、Blender用Colladaエクスポーターの改善がなされた。また、2Dエンジンの書き直しとそれに伴い2Dナビゲーションポリゴンのサポートが追加される。新しい2Dエンジンはシェーダーやマテリアル、独立したノード毎のZオーダー、光源やポリゴンを用いたシャドウ、法線マッピングの他、Distance-fieldフォントのサポートが改善された。

2015年11月4日、GodotはSoftware Freedom Conservancyのメンバー・プロジェクトとなる。

2016年2月23日、Godotは安定版としてバージョン2.0をリリースした。シーンのインスタンス化と継承、複数シーンの編集機能やデバッガー等が改善され、新しいファイルブラウザが追加された。更に2016年8月リリースのバージョン2.1では、アセットデータベースやプロファイル、プラグインAPIの追加がなされた。

2016年6月22日、 GodotはMozilla Open Source Support (MOSS) の“Mission Partners”アワードからWebSocket、 WebAssemblyとWebGL 2.0のサポートへの支援として20,000ドルの支援を受けた。

2018年1月29日、 Godotはバージョン3.0をリリースした。3DレンダリングとVRの互換性が向上し、C#(Mono)がサポートされた。また独自の組み込み3D物理エンジンはBullet物理エンジンに置き換えられた。

2023年3月1日、Godotはバージョン4.0をリリースした。新しいVulkanレンダラーの追加、SDFベースのグローバルイルミネーションの追加、物理エンジンの刷新、GDScriptランタイムの性能向上、WebXRへの対応などが行われた。

## 採用ゲーム一覧

OKAMスタジオのゲームの多くがGodotを用いて作られている。コミュニティ製のオープンソースのゲームに用いられることもある。

- El Asombroso Show Zamba
- Dog Mendonça & Pizza Boy
- Anthill
- Running Nose
- Project Carnival
- DynaDungeons
- Minilens
- Tanks of Freedom
- ソニック カラーズ アルティメット