This guide provides an overview of Godot Engine from the viewpoint of a Unity user,
and aims to help you migrate your existing Unity experience into the world of Godot.

Note

This article talks about older versions of Unity. Nestable prefabs (‘Nested prefabs’) were added to Unity 2018.3. Nestable prefabs are analogous to Godot’s scenes, and allow a more Godot-like approach to scene organisation.

Differences

  Unity Godot
License Proprietary, closed, free license with revenue caps and usage restrictions MIT license, free and fully open source without any restriction
OS (editor) Windows, macOS, Linux (unofficial and unsupported) Windows, macOS, X11 (Linux, *BSD)
OS (export)
  • Desktop: Windows, macOS, Linux
  • Mobile: Android, iOS, Windows Phone, Tizen
  • Web: WebAssembly or asm.js
  • Consoles: PS4, PS Vita, Xbox One, Xbox 360, Wii U, Nintendo 3DS
  • VR: Oculus Rift, SteamVR, Google Cardboard, Playstation VR, Gear VR, HoloLens
  • TV: Android TV, Samsung SMART TV, tvOS
  • Desktop: Windows, macOS, X11
  • Mobile: Android, iOS
  • Web: WebAssembly
  • Console: See Console support in Godot
  • VR: Oculus Rift, SteamVR
Scene system
  • Component/Scene (GameObject > Component)
  • Prefabs
Scene tree and nodes, allowing scenes to be nested and/or inherit other scenes
Third-party tools Visual Studio or VS Code
Notable advantages
  • Huge community
  • Large assets store

The editor

Godot Engine provides a rich-featured editor that allows you to build your games.
The pictures below display the default layouts of both editors with colored blocks to indicate common functionalities.

http://docs.godotengine.org/_images/unity-gui-overlay.png
http://docs.godotengine.org/_images/godot-gui-overlay.png

While both editors may seem similar, there are many differences below the surface.
Both let you organize the project using the filesystem,
but Godot’s approach is simpler with a single configuration file, minimalist text format,
and no metadata. This makes Godot more friendly to VCS systems, such as Git, Subversion, or Mercurial.

Godot’s Scene panel is similar to Unity’s Hierarchy panel but, as each node has a specific function,
the approach used by Godot is more visually descriptive. It’s easier to understand
what a scene does at a glance.

The Inspector in Godot is more minimal, it shows only properties.
Thanks to this, objects can expose more useful parameters to the user
without having to hide functionality in language APIs. As a plus, Godot allows animating any of those properties visually.
Changing colors, textures, enumerations, or even links to resources in real-time is possible without needing to write code.

The Toolbar at the top of the screen is similar in both editors, offering control over project playback.
Projects in Godot run in a separate window, rather than inside the editor
(but the tree and objects can still be explored in the debugger window).

This approach has the disadvantage that in Godot the running game can’t be explored from different angles
(though this may be supported in the future and displaying collision gizmos in the running game is already possible),
but in exchange has several advantages:

  • Running the project and closing it is fast (Unity has to save, run the project, close the project, and then reload the previous state).
  • Live editing is a lot more useful because changes done to the editor take effect immediately in the game and are not lost (nor have to be synced) when the game is closed. This allows fantastic workflows, like creating levels while you play them.
  • The editor is more stable because the game runs in a separate process.

Finally, Godot’s top toolbar includes a menu for remote debugging.
These options allow deployment to a device (connected phone, tablet, or browser via HTML5),
and debugging/live editing on it after the game is exported.

The scene system

This is the most important difference between Unity and Godot and the favourite feature of most Godot users.

Working on a ‘level’ in Unity usually means embedding all the required assets in a scene
and linking them together with components and scripts.

Godot’s scene system is superficially similar to Unity. A ‘level’ consists of a collection of nodes, each with its own purpose: Sprite, Mesh, Light, etc. However, in Godot the nodes are arranged in a tree. Each node can have multiple children, which makes each a subscene of the main scene.
This means you can compose a whole scene with different scenes stored in different files.

For example, think of a platformer level. You would compose it with multiple elements:

  • Bricks
  • Coins
  • The player
  • The enemies

In Unity, you would put all the GameObjects in the scene: the player, multiple instances of enemies,
bricks everywhere to form the ground of the level and then multiple instances of coins all over the level.
You would then add various components