Godot's design philosophy

手が濡れたところで、Godotのデザインについて説明しましょう。

Every game engine is different and fits different needs. Not only do they offer a range of features, but the design of each engine is unique. This leads to different workflows and different ways to form your games' structures. This all stems from their respective design philosophies.

このページは、Godotがどのように機能するのかを理解するのに役立ちます。これは利用可能な機能のリストでもエンジンの比較でもありません。自分のプロジェクトに適したエンジンがあるかどうかを知るには、自分で試してみて、その設計と制限を理解する必要があります。

エンジンの機能の概要をお探しの場合は、YoutubeにあるDiscover Godot 3, the Free game engine(英語)をご覧ください。

オブジェクト指向の設計と構成

Godotは、柔軟なシーンシステムとノード階層を備えたオブジェクト指向設計をコアに採用しています。ゲームを直感的に構築する方法を提供するために、厳密なプログラミング・パターンを避けています。

一例として、Godotはあなたがシーンを構成または集約することを可能にします。これは入れ子になったプレハブのようなものです。BlinkingLight(ちらつく光) シーンと、そのBlinkingLightを使用するBrokenLantern(壊れたランタン) シーンを作成できます。その次に、BrokenLanternでいっぱいの街を作成します。それからBlinkingLightの色を変更して保存すると、街にあるすべてのBrokenLanternが即座に更新されます。

それに加えて、あらゆるシーンから継承することができます。

A Godot scene could be a Weapon, a Character, an Item, a Door, a Level, part of a level… anything you'd like. It works like a class in pure code, except you're free to design it by using the editor, using only the code, or mixing and matching the two.

It's different from prefabs you find in several 3D engines, as you can then inherit from and extend those scenes. You may create a Magician that extends your Character. Modify the Character in the editor and the Magician will update as well. It helps you build your projects so that their structure matches the game's design.

image0

Also note that Godot offers many different types of objects called nodes, each with a specific purpose. Nodes are part of a tree and always inherit from their parents up to the Node class. Although the engine does feature components like collision shapes, they're the exception, not the norm.

image1

SpriteはNode2D、CanvasItem、Nodeです。トランスフォームや、カスタムシェイプを描画してカスタムシェーダでレンダリングする機能など、3つの親クラスのすべてのプロパティと機能を備えています。

オールインワン・パッケージ

Godotは最も一般的なニーズに答えるために、備えているツールを提供しようとします。専用のスクリプトワークスペース、アニメーションエディタ、タイルマップエディタ、シェーダエディタ、デバッガ、プロファイラ、ローカルおよびリモートデバイス上でのホットリロードなどが可能です。

image2

目標は、ゲームを作成するための完全なパッケージと、途切れないユーザー エクスペリエンスを提供することです。外部プログラムからのインポート用プラグインがある場合は、外部プログラムでの作業もできます。あるいは、Tiled Map Importerのようなプラグインを作成するのもいいでしょう。

That is also partly why Godot offers its own programming languages GDscript and VisualScript, along with C#. They're designed for the needs of game developers and game designers, and they're tightly integrated in the engine and the editor.

GDScriptはPythonに似た文法で、コードがシンプルになりますが、型を検出でき、静的言語クオリティの自動補完を実現しています。さらにVectorやColorのような組み込み型により、ゲームプレイ用コードの性能は最適化されます。

GDNativeを使用すると、エンジンを再コンパイルすることなく、C、C++、Rust、またはPython(Cythonコンパイラを使用)などのコンパイル済み言語を使用して高性能コードを作成できます。

image3

VisualScriptは、エディタにうまく統合されたノードベースのプログラミング言語です。ノードまたはリソースをグラフにドラッグアンドドロップして、新しいコードブロックを作成できます。

Note that the 3D workspace doesn't feature as many tools as the 2D workspace. You'll need external programs or add-ons to edit terrains, animate complex characters, and so on. Godot provides a complete API to extend the editor's functionality using game code. See The Godot editor is a Godot game below.

image4

kubecz3k氏制作のGodot 2用プラグインであるステートマシン・エディタ。状態および遷移を視覚的に整理できます。

オープンソース

Godot offers a fully open source codebase under the MIT license. This means all the technologies that ship with it have to be Free (as in freedom) as well. For the most part, they're developed from the ground up by contributors.

Anyone can plug in proprietary tools for the needs of their projects — they just won't ship with the engine. This may include Google AdMob, or FMOD. Any of these can come as third-party plugins instead.

On the other hand, an open codebase means you can learn from and extend the engine to your heart's content. You can also debug games easily, as Godot will print errors with a stack trace, even if they come from the engine itself.

注釈

This does not affect the work you do with Godot in any way: there's no strings attached to the engine or anything you make with it.

コミュニティ主導

Godot is made by its community, for the community, and for all game creators out there. It's the needs of the users and open discussions that drive the core updates. New features from the core developers often focus on what will benefit the most users first.

That said, although a handful of core developers work on it full-time, the project has over 600 contributors at the time of writing. Benevolent programmers work on features they may need themselves, so you'll see improvements in all corners of the engine at the same time in every major release.

Godotエディタ自身がGodotのゲーム

The Godot editor runs on the game engine. It uses the engine's own UI system, it can hot-reload code and scenes when you test your projects, or run game code in the editor. This means you can use the same code and scenes for your games, or build plugins and extend the editor.

エディタ自身も使用するために、信頼性のある柔軟なUIシステムを実現しました。tool キーワードを使えば、あらゆるゲーム用コードをエディタ内で実行できます。

image5

RPG in a Box is a voxel RPG editor made with Godot 2. It uses Godot's UI tools for its node-based programming system and for the rest of the interface.

GDScriptファイルの一番上に tool キーワードを追加すれば、エディタ内で動かせます。これによりインポートおよびエクスポート用プラグインや、カスタムのレベルエディタ、組み込みノードやAPIのように使えるスクリプトなどが作れます。

2Dと3Dのエンジンを分割

Godotには2Dと3Dでそれぞれ別の描写エンジンを搭載しています。その結果、2Dシーンの基本単位はピクセルです。描写エンジンは分離していますが、3D内で2Dレンダーも、2D内で3Dレンダーも、3Dワールドの画面に2Dスプライトやインターフェースをオーバーレイすることもできます。