That’s my goal, to scare people away so I have Defold all to myself! Haha, sorry. Defold does a lot of things for you (I’m sure I don’t even know most of them), just don’t set your expectations at Unity level.
I took a look at the Godot website again and my own old projects. I probably exaggerated the difference between them. Here’s a list of things that Godot has out-of-the-box and Defold does not:
- A fairly extensive array of GUI widgets. (though some of them are non-customizable and don’t work very well *ahem, *scrollbox ) This is probably the largest feature that Defold does not provide.
- Spline paths & path followers. (and in-editor spline editing)
- 2D lighting & shadows.
- Pausing functionality built into nodes.
- I never missed this. It’s just a difference in organization. In Defold you use collection proxies.
- Easy in-editor check-boxes for features like render aspect ratio modes, stretching, etc.
- Defold now mostly equal with Rendercam or Defold-Orthographic.
- Easier camera setup, no worries about render depth clipping & precision (it uses integer z-order, then the hierarchy order of your nodes), built-in camera following, dead-zone, etc.
- Camera stuff in Defold now equal or better with Rendercam or Defold-Orthographic.
- Custom physics engine which doesn’t work terribly well (lots of momentary penetrations at 30fps), but has more features (CCD) and is totally dynamic. You can make any collision shape you want in-editor and change size, shape, collision masks, etc., at runtime. Defold uses Box2D which has most of this stuff, but it’s not exposed yet.
- Visual animation editor, in-editor playback.
- Animate basically every property by default.
- Some “Animation Tree” animation blending features, though they kind of stink.
- Editor plugins!
- Tons of other random useful little functions that have an 85% chance of working, but are totally undocumented.
. . . and more general things:
- Much more dynamic in general. In Defold most things are set and preallocated and can’t be easily changed at runtime (this is slowly improving I think).
- More standard API, everything synchronous. Defold advertises asynchronous stuff as a positive feature, but it does cause serious headaches for some things.
- Really nice, simple, “any-node-can-be-a-scene” system. Defold has the same capability, but splits things into “game objects” or “collections” and “components”, and it’s just . . . less simple.
- A lower quality standard. Just read Juan’s latest blog post, he actively advocates for a quick-and-dirty, low quality standard, and that philosophy permeates Godot. He adds new features amazingly fast, but never adequately documents them and rarely goes back to fix/finish old features, so the engine is in a perpetual alpha state. The Defold team takes its time and does things properly, considering all the implications. Despite their quick update cycle, Defold is always release-ready.
As for the GDScript performance, I don’t have any detailed “proof”, as far as I can tell it’s just slow in general. I don’t know anything about how scripting languages are bound, unfortunately. But, just more instances of basic math operations seemed to take more CPU time than they should. You can test it yourself with a Bunnymark (Defold, Godot Note: these don’t use quite the same methods ) or something, just disable the graphics and see how identical scripts run in Godot and Defold. Last I tested with graphics, Defold could run 41% more bunnies.
This was quite a while ago, so it’s possible things have changed. I forget the version exactly, 2.1 maybe? I have a nightly build from 10-16-2016 (they started breaking things for 3.0 soon after that.) This was before the C++ and C# plugins existed. I assume using C++ would give you better performance. I believe you can use C++ entirely if you want.
[Edit] This is testing on Windows. I did test things on Linux too, but didn’t do direct comparisons.