Listing out the bad parts of it that annoy the living sh*t out of me.
GUI, What GUI? It's not really worth calling a GUI, there's no events. I personally don't understand the idea that adding simple button components which are used in every f*cking game out there is going to bloat the size of the engine. I think having to bring in third party libraries to place in an event system for GUI components is what will BLOAT the size of the game. Are there games out there without buttons without click events? It's so barebones that they talked about getting rid of that system in favor of sprites >_>. Yes, gui elements are sprites, we know that but they come with common expectations that make them a GUI element. There's so little people using Defold that damn, they can't even define GUI correctly. Think about that. Have you ever seen a GUI library without an On Click/Hover? It's stuck in version 0.1.0 so they don't see the point of it. Yikes.
GUI lives in its own scripting context. The f*ck? Why? It's the same game. What in the world was anyone thinking when they figured GUI and Sprite land were different in some miraculous way. I made a server side game engine in RUST of all languages to use and don't foresee this kind of limitation. You have to MESSAGE the GUI world and use PARTIALLY the addressing scheme. You have different methods for interacting with things like particles component for instance. Total embarrassment.
Editor. Again, bare bones. No tool tips in places. Expect elements to layout when resizing the panes but no. Expect some basic snapping. Must be the simplicity thing again (flip a f*cking table). Starts up slowly compared to y'know Godot, Visual Studio Code. The code editor is balls enough that you have to use VSCode. Lua may be the language for the engine, but supports no autocomplete for it itself. Tf? It's an editor tho, simplicity with bad performance and dev experience.
Fonts are defined in a very weird, very manual way. See, typically you'd bring in a font then create some sort of font resource. Ok, then you would be able to select a default font for the project then overriding font from a drop down per label component. What does Defold do, oh you created a GUI component? Import the font every f*cking time. No overrides. No even an ounce to help you, the user do things quickly as possible. Games, GUI especially, are about experimentation, so how about we make that as cheap as possible? Not here in Defold land. Sigh.
Sound is only defined by sound components. This is one of the things where I'm like ok, but who wants to define all their sounds in sound components especially as you could want to change the pitch and blah. Dynamically loading sound is annoying, but doable. You would think if you built a game hundreds of times that you'd know the common workflows for audio. You don't even need to have built a game hundreds of times, people are doing that for you. For f*ck sake. SINGLETON.SoundPlayer.Play("sound.ogg"). The only time I should care for sound components is when I want 2D sound. Strive for Flutter's Flame Engine when it comes to very basic simple Audio APIs, they even have one for music. Oh shocker, background music in games is common why should any game engine think about including an easy way to do it. Godot's is wonderful too since you can just pool them and play whatever sound easily and attach them to nodes for 2d positional audio. Just easy, Defold shows the wrong approach. There's no performance issue and far better developer experience with the way the other engines do it.
Collision Groups, I've written about it before. Weird. Is this more of the simplicity thing and not wanting bloat? I don't think it is asking too much to follow how every other game engine does it and define collision groups or layers really in a global project config rather than in each collision component. YIKES!
Lua without types. It's 2024, why are we still without types? PHP has types. Javascript has types with typescript. LUA has types. Defold does not have types. Why? It's 2024, they didn't foresee that building serious games would need more than a few people? Especially multiplayer games. Just use Haxe, bro or TS to Lua. Why? Because of short sighted decisions that can hardly be changed due to inertia.
Inconsistency with setting properties. More of a minor thing, but they talk about creating less garbage. You send a message to get the property like say "linear_velocity" modify it then set it again? Why not just set that velocity and not send a message? What if you just want to set one sub property like x or y? You cannot use "linear_velocity.x", but you can set "position.y" and etc. I don't get why i have to do any of that. Every call generates garbage for the collector. You call go.get, I can only assume it creates a temporary vector whose variables gets set in C-land. I just stopped caring.
Parallax, non existent. I mean, they want you to implement this manually using some tutorial. Remember guys, bloat... performance hit whatever. What's the selling point of Defold at this point? If I have to manually do things like this I will just switch.
SVG? ha, just rasterize it. Defeats the point of VECTOR GRAPHICS and all the simplicity and crispness that comes with it. Stupid.
Effects, find a shader. Must be the bloat thing. To have a pre-packaged set of common effects for a modern game these days is too much to expect from here. Crazy how much a game can look better with effects. Less effort to get there, the more inspiration. Defold examples and games I have seen are very bland. No teen's going to choose this engine over the others.
Simple rect or circle? Back to GUI or use sprites, so goes the simplicity. Not sure how that is simple compared to here is code to draw which should be one line in a game object script to which it is expected that the drawn shape will follow the game object. Where is it? Renderscript? Experimentation, ease and joy not prioritized.
Tutorials, barely there. I mean there's some videos some good some not so good. Typically want quality tutorials. Compare the number of tutorials for Defold vs Flutter Flame Engine (which is younger). That will tell you all you need. I think Defold's creators/maintainers seems to believe that tutorials are only for beginners which is far from the truth. Tutorials show techniques, some that you might have not thought of or seen before, as well as workflow. If relying on a community to do that at this point, good luck when they drop the use of the engine early. Just look at Flame Engine, just look. No editor but doing better with adoption.
Community is very small. Niche group. If you make a game in it and share it good luck breaking out of that. If you make it in Unity at least you can post it in their Discord, Reddit, Facebook and using their advertising along with anything else you would do if you had used Defold. Just a higher initial cost for engagement. Flutter Flame has their game engine community then the wider flutter audience. Same with Godot. You will have to make far more effort and money with Defold to get past the initial engagement hump.
I'm sure there are more things elsewhere, but I'm done with looking to use it!
Final Comments
I've seen some bugs relating to multi page atlases and etc. Just seems like basic stuff having bugs after all this time. I don't believe in the long term maintenance of it. Who wants to develop a game on a game engine to hit showstopping bugs like that and can't get any timely support? Tis why Unity and Unreal exist, so you don't have to worry about engine internals. If I want to worry about engine internals, I will just build the f*king engine like I did on the server side.
Due to these kinds of annoyances, I can see why King went to Unity. That should let you know, performance/bloat is not king (hue hue) when it comes to making games. There are more aspects to it and when bloat/performance hit is made as an excuse for why Defold does things the way it does, can't be surprised that more people drop it early on to use Unity or Gamemaker.
There are of course good parts of Defold, but I out shadowed by other game engines so I don't even want to list them at this point. I am switching to another Game Engine. Sure sure, bloat bloat blah blah, but developer experience matters a lot. Unity is really the only serious serious choice out there if you want multi-platform compatibility. Flutter Flame is also super good.
I don't have any belief the direction with Defold will change because these things are not viewed as a problem. They would rather wait for implosions to happen elsewhere for people to discover Defold exists, but ha there's a lack of good overall developer experience so those developers go back to their original choices. I just have no believe Defold will ever have a sizable share of studio grade production game made with it and it might be just fine with these guys to stick to that, but that also means it will die off. I mean an implosion happened already, I've discovered Defold and decided it's not worth it for my multiplayer game. Maybe I will choose it for tic tac toe, snake game or some sh*t.
In the end, this post serves as a reminder to myself about my experience with Defold. If it vastly improves in the future then can use this as reference. If it dies off well, hey noting good was lost anyway. No time sink.
Well, off to Flutter Flame and Unity at this point. Godot I'm sure will fix it's bugs at some point and hopefully can check it with my already released game, but Defold has fundamental issues beside the game engine's technical details.
Grade: D