> The simpler the better
> [!quote]
> True game developer writes their own game engine ©️everyone, maybe
I got the idea to try new engines when I watched one of Jonathan Blow’s [talks](https://www.youtube.com/watch?v=FeAMiBKi_EM) about software development decline.
![[why_defold_jonathan.jpg]]
The main point is that all the current systems are much bigger and more complicated than they should be. I agree with him, so I wanted to step aside and try something less AAAish.
Also, I want to widen my knowledge about different approaches in different engines. That’s why I decided to make a few simple games with various engines, ranging from niche to mainstream.
The better approach to increasing my understanding of different engines is to write my own. However, I understand that writing my engine nowadays (especially if you are solo) takes more time than I have, and my lack of knowledge will make me suffer with decisions I would make during the development. In addition, I don’t satisfy the following essential requirements to make my own engine viable in my head:
1. I need to understand why current engines don’t satisfy your vision.
2. I need to be highly competent in engine building to make the engine that will satisfy those needs.
## Why #defold?
During my career, I usually worked with big engines, either proprietary or public (like CryEngine or Unreal). Nevertheless, the temptation to try to do something with less is intriguing. For instance, in UnrealEngine, you have a game architecture and standard problem-solving approaches. That’s why it is hard not to consider any small game as a big AA+ title.
My first target became the Defold game engine:
- It’s pretty tiny yet alive.
- It’s not as famous as Godot, Unity, Unreal, etc., so I can do more research than finding a quick solution from the first link.
- I can see the source code on GitHub. I hope I won’t need it, but from my experience, it’s a great advantage to look into the engine instead of black-box experimenting.
- I have also missed Lua programming since my time with CryEngine.
The engine and some manuals on how to start development are available [here](https://defold.com/manuals/introduction/).
## Quick Overview
Below are some good and not-so-good things I’ve faced already during the development. I’ll cover them in more detail in the following chapters.
- **GameObjects vs. Collections** and overall object managing solution
- Every engine solves the problem of managing objects in its own way. During the development, you need prototypes, object grouping, levels, etc. Even though the Defold solution mostly works okay, I’m still not a big fan of how they do it. It’s a little excessive to my taste.
![[phily.gif|400]]
- **Lua**
- #Lua is a great, straightforward, yet powerful scripting language. My primary language for work is C++, so I appreciate the many cool Lua language features and the absence of a few big books about “how not to shoot in the leg during development.”
- 1-based indexing :(
![[lua.jpg]]
- **Debugging features**
- It’s a vital skill to know what and how to debug. Better debugging can save you tons of time. Luckily, Defold has a pretty robust way of developing and debugging the game. I even managed to debug the network part of the game without any significant overhead.
- **Plugins infrastructure**
- Plugins in Defold are very convenient to get and use. You only need to add a link to the Git Hub for the plugin, and the engine will handle everything by itself. This is very convenient and unusual. It’s especially very different from Unreal Marketplace, where the best approach is to have a separate “Plugin” project, so you can only add what you need to your project.
![[dependecies.png]]
- **HUD/UI development**
- Defold is mainly a 2D game engine, and UI is a big part of any game. To my disappointment, I find the UI solution very basic. Of course, you can get free plugins that provide many needed functions like buttons, scene management, etc. But without those plugins, this UI part of the engine looks abandoned.
Overall, I find Defold suitable for its purposes. Defold is like a good basic tool when you don’t need something super advanced but something that gets the job done. I am not sure if it’s the best engine to start your game development journey or the best engine for big projects. Yet, it can shine like a diamond for something tiny and code-driven.