More and more developers are embracing Godot as their game engine of choice. Unity still holds the largest market share, but Godot is catching up fast. With that in mind, I want to share my experience with migrating to Godot after using Unity for years.
As a game developer, you should make yourself familiar with more than one game engine. Doing so will give you more insight into the strengths and weaknesses of each and help you make the best decision for your game. It’s also good to have a fallback — having all your eggs in one basket won’t do you any favors. Especially if one of those eggs starts to smell a bit… off.
Godot is a great choice for game development because it’s easy to learn and use while being free and open source. The game engine has a rich feature set and is constantly evolving. With Godot 4, the game engine’s 3D capabilities were massively improved. The scripting language, GDScript, also got an overhaul and is now more performant than ever.
The biggest strength and weakness of Godot is that its development is fully community-driven. This means that the engine has daily improvements and bug fixes made possible by developers from around the world. However, it also means that there’s no company steering it; you can request features and bug fixes via GitHub, but there’s no guarantee that they’ll be implemented. On the flip side, if you’re a developer looking to be part of the Godot community, you’ll have a lot of opportunities to do so by contributing code. You can also recompile the engine yourself to get features that aren’t available in the official release yet.
In terms of maturity, Unity is the clear winner. Unity has been around for almost ten years longer than Godot and comes packed with tons of bells and whistles. Godot is still in its infancy, but it’s already making waves in the game development community. If you’re an indie game developer, part of a small studio or simply prefer a free and open ecosystem, you should give Godot a chance.
Alright, time to get started! In the sections below, I want to make you more familiar with Godot by comparing it to Unity.
User Interface and Files
Both Godot and Unity have an editor to work with the objects and files to create your game. I’ll start off with an overview of where they are alike and how they differ.
Compared to Unity, Godot’s editor is a lot more lightweight and portable. It weighs in at around 100MB and doesn’t need any extra dependencies. You can even run the editor on mobile devices and the web. Unity’s editor with the minimal features is around 5GB in size, so around 50 times larger. This is because Unity comes with a ton of packages pre-installed so you don’t have to download those later on.
Creating a new project in Unity and Godot is similar, in both cases you get presented with a wizard to choose between some presets. A big difference between the two engines is that Godot creates and opens the project in mere seconds, while Unity takes quite a bit longer.
Both game engines also come with a way of starting with a template project. Unity provides templates in the form of learning templates while Godot has demos to choose from via the Asset Library. If you’re the kind of person who likes to dig around projects to learn how they work, this is a great feature.
Once you have a project open, both editors share some similarities.
Here’s an overview of Unity’s views and Godot’s panels and docks:
- Hierarchy window vs. Scene dock: In Unity, the Hierarchy provides an overview of the GameObjects in the opened scene. Conversely, Godot uses a node system to present a tree of nodes in its Scene dock. I’ll explain the difference between GameObjects and nodes further down.
- Scene view vs. Viewport: The Scene view serves as a visual representation of your scene, allowing interaction with GameObjects. In Godot, the Viewport fulfills a similar role by visualizing nodes. In both engines, gizmos are available to manipulate the selected GameObject or node, enabling actions like movement, rotation, and scaling.
- Project view vs. FileSystem dock: Unity uses its Project view to show project files and folders, while Godot uses the File System dock for the same purpose.
- Inspector vs. Inspector: Both game engines have an Inspector window to view and edit the properties of the selected GameObject/Node. Unity does this by showing the components, while Godot presents the properties of a single node.
- Play buttons vs. Playtest buttons: Both Unity and Godot use buttons to start, pause, and halt game execution.
With a better understanding of the editor similarities in broad strokes, you can move on to the asset management.
Both Unity and Godot offer support for a wide range of popular file formats for images, audio, and 3D models, making them versatile choices for game development.
In Unity, it’s important to organize all your files and folders within the designated Assets folder. In contrast, Godot provides greater flexibility by allowing you to place files anywhere within the project folder. To maintain a well-organized project in both engines, I recommend creating a structured folder hierarchy that groups similar file types together.
When dealing with images, sprites, and textures, both Unity and Godot support widely-used formats such as BMP, PNG, JPG, and TGA. Unity goes a step further, accommodating formats like PSD, GIF, and TIFF, whereas Godot includes native support for SVG and WEBP. Furthermore, both engines offer the capability to extend their format support through plugins.
Regarding audio files, Godot offers compatibility with WAV, Ogg Vorbis, and MP3. Unity shares these formats with Godot and expands the list to include AIF, MOD, IT, S3M, and XM. Unity employs format conversion during audio file import, whereas Godot typically loads audio files in their original format. For optimal performance, Godot’s documentation recommends using WAV for short sound effects and Ogg Vorbis for longer audio, noting that MP3 may result in higher CPU usage during playback. If you have audio files in less common formats, you may need to convert them to a supported format for use in Godot.
Both Unity and Godot offer support for various 3D model formats, including OBJ and DAE. While Unity often favors FBX as a recommended format in its documentation, Godot leans towards the glTF 2.0 format for 3D models. Both engines also accept Blender’s .blend files, although exporting to other compatible formats is generally recommended. While Godot can work with FBX files, it’s best to convert them to glTF 2.0 for improved compatibility.
The Godot team has plans to introduce a store for paid assets in the future. If your revenue depends on the Unity Asset Store, sticking with Unity may be preferable for now. However, if you’re creating free assets, contributing to Godot’s community will surely be appreciated.
Next up, I’ll dive into more details about the core systems of each engine.