Let's go to Godot

03/27/2019

Godot

It's a game engine I've only started hearing things about that last couple of weeks. The appealing bit is that it's MIT licensed which basically means you can do whatever you want with it. There are no accounts, no licensing, no requirements (like the less-than-ideal Unity splash screen requirement), or anything like that. The engine itself is just a single, super tiny executable file!

Anyways, I started my game I'm working on now (SpaceJet!) over in Godot and what I did in 2 weeks in Unity, I've managed in just 1 week in Godot, and that includes learning the engine! So here are my initial thoughts on learning it.

Architecture Comparison

As a computer scientist, I primarily think in terms of systems and architectures of systems. After much thought, I have concluded that Godot has a better architecture than Unity because it is simpler. Unity has Scenes, which contain GameObjects, which contain other GameObjects and Components. Godot has just one type of "thing" and that is a Node. There are scene nodes, nodes that could act like a GameObject, and nodes that could act like child game objects, and nodes that act like components. The important part is that they are all nodes. That simplicity opens up more potential for how you want to structure your game logic and objects. For example, in Unity, a Scene cannot contain another Scene, and a Component cannot have a child Component without a Game Object. With Godot's simpler and more flexible node-based architecture, those scenarios and anything else you can think of are possible.

Community

Unity has a huge community. That is definitely a benefit of using Unity. Anything you google will surely yield many relevant results. However, Godot's community is growing rapidly right now, and I've heard it's already to the point where asking questions on the community page will usually get a pretty good response. I've seen good responses on the Godot subreddit also. Compared to Unity, there are almost no Youtube tutorials for specific how-tos, or even general how-tos. That seems like a good market right now. Maybe I'll do that. I could be the Brackeys of Godot! :)

GDScript

At first I thought I would never use GDScript. To my amazement, I exclusively use it! I love c++ so I figured I'd make all my game logic in that, but GDScript is so nice! It's integrated into the engine application perfectly, even with magical auto-completions that even include file paths in string literals and child node paths! Another awesome feature is how fast you can iterate with it. You can make a change and save it and instantly run, as opposed to in Unity where it takes around 10 seconds to compile once you put ReWired and/or other plugins in your project. That small wait really adds up, at least mentally. You can also make changes to a GDScript and it will update in your running game, and it actually works! Technically, that feature is in Unity but it will never work unless you put a lot of work into making it work.

Workflow

I can't decide if this is a big deal but I love the ability in Godot to instantiate a "scene node" (which is like a Unity prefab in this context) as a child of another scene node. It seamlessly puts the instantiated node in the parent scene node as a single node, and hides all the children. I think that is so nice. It hides stuff you don't need to think about. In Unity, it puts the whole tree of game objects there in the scene, so when you click the mesh in the scene view then move it, every single time, you'll need to go into the scene hierarchy and select the top-level object instead. It's a huge pain when you are doing that to tons of objects, when you're re-arranging a scene or something. There is that [SelectionBase] attribute in Unity but in my experience it rarely actually works. In Godot, you don't even need that attribute because it only shows the top-level node. Anyways, that may seem like a small thing, but it's one of my favorite features. It just makes each system you build into your game feel more separated in a good way.

No .blend support

The one thing I miss from Unity in Godot is that I need to export my blender files into another format. It was really nice in Unity to just use the .blend files.

CSG

CSG stands for Constructive Solid Geometry. It is a pretty new feature but I'm already using it for lots of stuff and it's super easy to use and get great results. If you are thinking about making 3d games in Godot, I would definitely read about that quick. I didn't at first because it's scary that it's just an acronym, but then I decided to find out what it was and was blown away by the possibilities. In Unity, I do use a tool called Archimatix that does similar stuff to CSG, some better and some worse, but CSG in Godot is so much easier to use that I like CSG more overall.

Let me help you

I love helping people with game dev problems, so please feel free to contact me if you have any. I'm starting to think about what kinds of Youtube tutorials I could do that could help people pick up Godot, so let me know if you have ideas for that too :)

Recent Posts

  1. Website Checklist
  2. How Matt Makes a Steak
  3. git cleanup

Find a Post