Introduction
I’ve been thinking about this game set in a desert on a distant planet for years now. I know that sometimes ideas need time to mature, and every so often we lack the skills or time to bring them to life. But I’m determined to see this one through, and I hope this blog will record my progress. My objective is to release the game on Steam, but the road ahead will be full of challenges. This is my first big project, and while I’ve dabbled in game development, I’ve never tackled anything like this. Even if it means making a few mistakes, I am excited to learn new skills and grow as a developer. I am confident that I can turn this idea into a reality with dedication and persistence.
To fill the introduction with some helpful material, let’s discuss two crucial decisions a game developer has to make. First is to decide whether the game will be 2D or 3D, and second is to choose the engine. The perspective question to me is a matter of what skills I possess. Since this is a one-person project, I must make all assets myself. And while 2D might look cheaper and more accessible than 3D, it’s the opposite. I am not an artist. I draw very poorly. But the 3D models I’ve tried to make looked okay even to my high standards, and I understand the modeling pipeline quite well. Moreover, making good-looking FX in 3D is more straightforward than in 2D. The choice is rather obvious. I’ll make a 3D game.
Picking the engine is not that obvious. Several game engines are available on the market, plus there’s always an option of writing my own. I’m a professional programmer with some experience in graphics programming. However, looking into the future, if I ever need my game to be ported to other platforms, the amount of work required will be enormous. There are better choices than writing the engine from scratch. Since the game will be in 3D, some choices like Construct or Game Maker are out of the question. I have only three options: Unreal Engine, Unity, and Godot.
I’d choose Unreal Engine if not for one simple thing: I only have a MacBook Pro as my development hardware. While UE games can be well-optimized to run on a broad spectrum of hardware platforms and PC configurations, development requires a beefy PC. Which I don’t have and won’t have for at least a year. So, unfortunately, Unreal Engine won’t do for me. Moreover, it has a problem with Mac and Linux compatibility, and I want my game to work on as many desktop platforms as possible.
Now the real battle is between Unity and Godot. Godot recently was updated to a new major release — 4.0. It includes many improvements, especially to its scripting language, GDScript. Previously, the language was quite rudimentary, and the built-in editor was atrocious. In 4.0, it’s improved quite nicely to become a real and expressive language, and its editor support improved significantly, both built-in and external (in VS Code). New Godot also features better 3D renderer and platform support. I also like how compact the engine and games it produces are. Small both in disk size and runtime footprint. The editor is also very lenient on hardware resources and works great on my MacBook Pro. The biggest downside is console support. There’s none. Despite what Godot developers say, you must ask a third-party studio to help port the game.
I’ve tried Unity several times in the past. I both like and dislike the engine. It’s a genuine love-hate relationship. I like platform support, various learning materials, and many assets on the asset store. But the quality of every aspect of the engine and ecosystem could be better. Learning materials are often too simple and need more details and edge cases. They usually don’t teach about complex topics. Assets do not always follow the engine development and may quickly become obsolete. The engine is ridden with bugs and problems, sometimes ancient. Its development process could be more transparent and feel like a more stable and mature product. It is also a closed-source engine, and extending it is challenging (when you manage to obtain source access). Management decisions in the past two years were controversial at best and harmful at most. However, Unity is a highly successful engine, with hundreds of games produced by both small teams and large studios. Recent versions are stable and feature-rich enough to be used safely, and various tools’ usability progress is excellent. Console support is first-class. I will only need to obtain a license from the console manufacturer. The Unity Editor is more taxing on hardware than Godot, but it still works well on my laptop. The games made in Unity are also good enough to work well on simple hardware. And I like that Unity uses C# and .NET as its primary programming environment.
I decided to evaluate Godot and Unity thoroughly to understand what would work better for me. The key points I am keen to explore are:
- Prototyping speed and quality. How rapidly can I test ideas?
- Tools. How convenient and fast is working with assets outside and inside the engine?
- Programming. How easy is it to implement things in code?
- Layout. How well does organizing stuff in the game works?
- Performance. How well the prototype will work on various hardware and platforms?
So, this task is for a couple of weeks, and I will post the updates here. See you soon!