Godot (ゲームエンジン)

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 ソニック カラーズ アルティメット ^ Linietsky, Juan (2014年1月14日). “First public release!”. godotengine.org. 2020年9月21日閲覧。 ^ “Godot 4.3, a shared effort”. godotengine.org. 2024年8月15日閲覧。 ^ “Dev snapshot: Godot 4.4 dev 1”. godotengine.org. 2024年8月26日閲覧。 ^ “Godot Game Engine”. Open Hub. 2020年7月30日閲覧。 ^ “File Systems”. Godot documentation. Godot. 6 February 2016時点のオリジナルよりアーカイブ。29 January 2016閲覧。 ^ “Compiling for Universal Windows Apps”. W4 Games. 11 December 2023閲覧。 ^ “GDScript History”. Godot documentation. Godot. 6 February 2016時点のオリジナルよりアーカイブ。29 January 2016閲覧。 ^ Visual Studio CodeなどのメジャーなエディタではGodot向けの拡張機能が用意されている。 ^ “Unreal Engine ブループリント”. 2021年11月13日閲覧。 ^ “Blender Game Engine ロジックエディター”. 2021年11月13日閲覧。 ^ “Godot 4.0 will discontinue VisualScript”. godotengine.org. 2022年9月2日閲覧。 ^ "Rendering 3 rendering methods ... are available: ... Forward+, running over Vulkan 1.0 ... Forward Mobile, running over Vulkan 1.0 ... Compatibility, running over OpenGL 3.3 / OpenGL ES 3.0 / WebGL 2.0" Godot. List of features. Godot Engine 4.1 documentation. 2023-09-16閲覧. ^ "Rendering methods Forward+ This is a forward renderer that uses a clustered approach to lighting." Godot. Internal rendering architecture. Godot Engine 4.3 documentation. 2024-08-18閲覧. ^ "Godot has a more or less uniform cost per pixel thanks to the depth pre-pass." 以下より引用。Godot. 3D - Standard Material 3D and ORM Material 3D. Godot Engine 4.3 documentation. 2024-08-18閲覧. ^ "Godot provides a shading language based on the popular OpenGL Shading Language (GLSL) but simplified." 以下より引用。Godot. Shaders - Introduction to shaders. Godot Docs. 2024-08-11閲覧. ^ "A custom shader program implemented in the Godot shading language, saved with the .gdshader extension." 以下より引用。Godot. All classes - Shader. Godot Docs. 2024-08-11閲覧. ^ "VisualShaders are the visual alternative for creating shaders." 以下より引用。Godot. Shaders - Using VisualShaders. Godot Docs. 2024-08-11閲覧. ^ "shaders are made up of main functions called 'processor functions'. Processor functions are the entry point for your shader into the program." 以下より引用。Godot. Shaders - Introduction to shaders. Godot Docs. 2024-08-11閲覧. ^ "Shader types Instead of supplying a general-purpose configuration for all uses ... , you must specify the type of shader you're writing. Different types support different render modes, built-in variables, and processing functions." 以下より引用。Godot. Shaders - Introduction to shaders. Godot Docs. 2024-08-11閲覧. ^ "Here are the available types: ... spatial ... canvas_item ... particles ... sky ... fog" 以下より引用。Godot. Shaders - Introduction to shaders. Godot Docs. 2024-08-11閲覧. ^ "Render modes Shaders have optional render modes ... Render modes alter the way Godot applies the shader." 以下より引用。Godot. Shaders - Introduction to shaders. Godot Docs. 2024-08-11閲覧. ^ "Vertex processor The vertex() processing function is called once for every vertex" 以下より引用。Godot. Shaders - Introduction to shaders. Godot Docs. 2024-08-11閲覧. ^ "By default, Godot transforms your vertex information for you, which is necessary to project geometry onto the screen." 以下より引用。Godot. Shaders - Introduction to shaders. Godot Docs. 2024-08-11閲覧. ^ "Users can disable the built-in modelview transform (projection will still happen later) and do it manually ... Users can override the modelview and projection transforms using the POSITION built-in." 以下より引用。Godot. Shaders - Shading reference - Spatial shaders. Godot Docs. 2024-08-11閲覧. ^ StraToN. “SteamLUG Cast”. 18 June 2016閲覧。 ^ reduz. “Godot history in images!”. 18 June 2016閲覧。 ^ “Juan Linietsky presentation of Godot at RMLL 2015 in Beauvais, France” (7 July 2015). 2017年10月2日閲覧。 ^ liamdawe (14 February 2014). “Godot Game Engine Is Now Open Source”. 2017年10月2日閲覧。 ^ “Godot Engine Reaches 1.0, Releases First Stable” (15 December 2014). 16 December 2014時点のオリジナルよりアーカイブ。16 December 2014閲覧。 ^ “Godot 1.1 Out!!”. 24 May 2015時点のオリジナルよりアーカイブ。22 May 2015閲覧。 ^ “Godot Game Engine is Conservancy's Newest Member Project”. 13 November 2015閲覧。 ^ “Godot Engine Reaches 2.0 Stable” (23 February 2016). 1 June 2017閲覧。 ^ “Godot Reaches 2.1 Stable” (9 August 2016). 1 June 2017閲覧。 ^ “Mozilla Awards $385,000 to Open Source Projects as part of MOSS "Mission Partners" Program”. The Mozilla Blog. 17 October 2016閲覧。 ^ "1 March 2023 ... Welcome to the start of Godot 4" Godot. (2023). Godot 4.0 sets sail: All aboard for new horizons. ^ “Awesome Godot - a curated list of free/libre games, plugins, add-ons and scripts for Godot.”. GitHub. 25 July 2015閲覧。 公式ウェブサイト Godot Engine - GitHub