Defold game engine in the eyes of a hobbyist.(Feedback)

Hello all, my name is George and I’m studying Computer Science at a university. I’m not an experienced game developer nor I try to be one.

I just like to make games on my free time learning new languages, engines, frameworks, tools and more. I find it very easy to learn a programming language by making games.

So 2 weeks ago I started learning Lua. And I came across Love and Defold. I always prefer to start with simple frameworks rather than game engines but this time I went the other way around just for an experiment.

Even though I’m using Defold for 2 weeks only(well one and a half since I spend 3 days learning the basics of Lua by making simple terminal programs), I wanted to say my opinion on Defold.

I have used some frameworks and game engines in the past and I will be comparing them a lot with Defold but I’m not comparing them to see which game engine is the best.
I’m just trying to give feedback to the awesome Devs of Defold through my experience with other engines/frameworks.

For reference here are the game engines and frameworks I used in the past:
Frameworks: Raylib-cpp, Cocos2d-x(cpp), MonoGame, DragonRuby Game Toolkit.
Engines: Godot, CocosCreator, Unity(for 5 days).

Note: This is a long thread so if you want a TLDR just read everything that is BOLD.

So let’s start, I will have 4 sections: Engine, Website Structure, Tutorials and Community.

Section One: Engine

  1. One of the best features of Defold is that it is not locked under a certain OS. I use Linux for the University and in general for learning new things. Having the ability to have this awesome game engine on my machine feels great.
    CocosCreator for example even though fun for learning Typescript it is locked under Windows(and I think Mac) and the devs have confirmed that they will not port it to Linux.

Also I didn’t face any problems with Defold even though some people clearly had because in the FAQ there are solutions for people running Defold on Linux. Btw I use Manjaro(Arch) and in the Donwload it says that requires Ubuntu 18.04 or newer, so I was expecting problems cause Ubuntu is based on Debian.

  1. Also we can make games for a lot of different Platforms which is a huge positive for anyone that wants to experiment with all those platfroms. Defold makes cross platform extremely easy to do and that’s great in the eyes of anyone looking for a new game engine.

  2. The language that Defold uses is the Lua programming language. Lua in my opinion is easy to learn and it is well known in the Game Dev community. I mainly use C++ and trying to learn Lua even though easy it was confusing at times. But you can learn Lua in a week if you have prior knowledge of programming so I don’t find it a negative.

Godot offers a variety of different programming languages from their GDScript to C#(not ready) to C++. This way Godot attracts people that already know C# or C++ and for people that know Python they offer GDScript. I think that’s a major role into Godot’s success.
Sure learning GDScript(since that’s the main language that the Godot Community uses) is extremely easy but one great thing about Lua is that you can use it outside of Defold too. So people like me that want to learn Lua or people that already know Lua can easily benefit from Defold without being restricted to only using Defold.

  1. Not having to install Defold is also nice. You just download it and BOOM it runs perfectly fine. No installation needed aka not wait time that’s great for anyone starting out because he will not have to deal with paths etc.

  2. No account needed to use the Editor. CocosCreator forces you to have an account to use their Editor which I don’t think that it’s an ok thing to do.

  3. Editor with all its functionalities is shipped out of the box. I’m not gonna list all of the features here, you know them.

  4. Godot offers an easy to use system which help for rapid development of games. Defold offers something similar but if I compare them, Godot is more easier to understand for beginners.
    But after 2-3 times using Defold, it gets extremely familiar.

  5. The Editor is clean and well structured.

  6. It is completely Free(and Open Source). That is a huge benefit because people constantly trying to find free things to develop with.

  7. One of the best for extension support. The Asset Portal is simply amazing. Great assets and extensions can be found there and they work really easily. I will say it again amazing support for extensions.

Section Two: Website Structure

  1. Clean and super easy to navigate around. Having a nice website is a huge benefit because that’s the first thing people will have to “deal with”. So being that clean is extremely nice.

  2. One of the things that people will immediately try to find what Games are made using Defold. The website offers a list of Games but I think including more well polished Games made with Defold will be nice.

Section Three: Tutorials

  1. One of the benefits of Unity is that there are a ton of video tutorials and examples. That makes the learning experience of new developers extremely easy. Godot also have a lot of video examples (by no means the same amount of examples and tutorials as Unity), which again makes our lives easier.
    Defold on the other hand doesn’t have a lot of video tutorials. There are two problems with that: the first one is that it will be harder for someone to learn new things or how to improve on existing knowledge of the Engine. The second one is that people might think that the Engine is not popular enough.

Again I said Video tutorials cause most people immediately go to Youtube to find tutorials on what they struggle with.

  1. Defold has a very nice list of written Tutorials and Examples that people can simply find from the main Website. One really nice thing about these tutorials is that every single line of code is well explained.
    This way people will be able to understand what they type instead of just following along with the code.

One thing about the Godot documentation is that they have really nice Groups of examples. For example in 2d Movement you can find 8-way movement, mouse movement(click move) etc.
The problem is that even though they provide the code on how to do the above they don’t really explain it very well or at least with not enough depth.

I would like to see this type of documentation for Defold but with the awesome explanation that the Defold team provides in each tutorial.

The depth and how everything is explained in the Movement Tutorial is extremely nice but I would expect more types of Movement in that tutorial like Platformer Movement that is affected by gravity and so on.

  1. Beginners can easily find available video Tutorials from the main Website. This is a nice feature since it breaks the gap of people actually having to search for them on Youtube or in general. I expect that the Website will host more and more video Tutorials as they rise.

Section Four: Community

  1. Defold has an amazing community. The Devs are always listening to feedback and always trying to improve on a lot of different areas. Honestly only Defold and DragonRuby Game Toolkit have Devs that are constantly ask for feedback.
    For first comer that’s a HUGE positive and I’m really glad that this is the case.

  2. The Forum is alive and welcoming to new users. The only reason that I know that the Devs of Defold are always trying to improve is by just scrolling here on the forum.
    Everyone is helping each other over here and in general it’s a great environment for well anyone really.

  3. Devs are extremely active here. There is also a Discord server but I haven’t joined it so no info on that.

  4. There is also a subreddit that I recently joined. So yeah a wide variety of ways to find the community of Defold.

All in all my experience with Defold is smooth and I really enjoy making simple games with it in my free time. There is quite a bit of practice for me to do before I join a Game Jam for example using Defold but still I’m making progress. Unfortunately I don’t have a lot of free time because I have to study for the University but I’m trying to get better.

Thank you Defold Devs and Community!

26 Likes

Amazing feedback! Thank you for putting this together and hope you keep enjoying Defold :slight_smile: Don’t hesitate to join the Discord server, it has the same nice vibe as the forums but a bit more casual and people are equally keen on helping out. Should you need any help, feel free to reach out!

7 Likes

Brilliant feedback! Very appreciated!

This is actually a brand new addition to the learn section. We didn’t really highlight all of the great community created video tutorials in the past. I’m happy to hear that you appreciate them!

This is excellent feedback and it’s something that has been at the back of my mind for some time now. I definitely want to have more Examples and Tutorials grouped by category and focusing on common game mechanics or problems. This will definitely happen during this year.

We are expanding our Defold extension SDK to include functionality to manipulate game objects from C/C++. This will open up for entire games created in C++.

I’d also like to point out Haxe Defold: https://defold.com/assets/haxesupport/ This allows you to write your Defold game in Haxe. I know some users here are using this in serious projects and not just as a gimmick. Perhaps we should highlight this as an option more in the presentation of Defold. As a community supported alternative to Lua.

Thank you!

7 Likes

@britzl - Apologies for replying to an old thread, but I am a relative newcomer to Defold who is finding it difficult to write maintainable code in Lua (owing to lack of typing and a predisposition towards ‘stringiness’) and was interested in the above statement:

We are expanding our Defold extension SDK to include functionality to manipulate game objects from C/C++. This will open up for entire games created in C++.

What’s the current status of this development? Is it currently possible to use C++ exclusively and, if so, where would be the best place to find information? I can see from the documentation re the Defold SDK that it exposes a significant number of APIs, but what was not clear to me at this stage was whether there is anything missing that one ought to know about?

Thanks!

There is not a 1:1 mapping between exposed C SDK functions and Lua SDK. And there likely never will.

But with the current C SDK you have access to at least some of the functions needed to manipulate the scene graph. I haven’t checked closely which important functions that are missing.

I have to say that this statement is a bit misleading in terms of what we strive for.
We will always have the Lua scripting language as the main entry scripting language, and our goal will never be to able to replace all that functionality with “c++ only” code.
Our goal is to add minimal functionality to our SDK so that our users can add/remove custom components for the editor/pipeline/engine.
If that brings extra benefits, that is great but it’s not our main goal.

As for getting familiar with Lua, it usually doesn’t take very long, and if it’s small team, knowing your own code is usually not a big problem as well.

But, if you still need type safety, there are other projects such as defold-ts (TypeScript), and hxdefold (Haxe).
Perhaps there are others as well (i’m not completely up-to-date)

1 Like

@Mathias_Westerdahl Many thanks for the reply.

For me, type safety is pretty much essential for long-term maintainability in a large codebase, which is reflected in the recent rise of TypeScript in the web-dev world, as well as incremental typing in languages such as PHP. C# is my personal preference by quite some way, but I understand the reasons Lua was chosen as a scripting language for Defold (primarily its minimal size and high performance).

I had seen references to the two projects you mention (defold-ts and hxdefold), but the one thing that wasn’t clear to me was whether there is any sourcemap support for the debugging experience (i.e. to allow stepping through the original code rather than the transpiled code)?

If so, they could prove to be a suitable alternative :smiley:

I believe ts-defold generates source mappings. @thejustinwalsh can confirm.

1 Like

@britzl - Great, thanks. I found this tweet which suggests that debugging using sourcemaps should indeed be possible, so I’ll spend a bit of time looking over the ts-defold documentation and see if I can get it set up :slight_smile:

2 Likes

:wave: @zejji the best project to use right now as a starting point is tsd-tempalte-yagames
Everything is configured out of the box and it is a full game. I am in the process of backporting all of those featuresto every template.

Try npx @ts-defold/create my-game --template yagames. There are a few vscode extensions that it will reccomend to install to get it all up and running.

The debugging feature had a breaking change that is only updated in that template at the moment, but you can just take the config scripts and paste them into the main. And to answer your question, yes, source maps support to debug your typescript and no need to jump into the generated lua.

I’ve been head down working on new features so need to come up for air and document as well as fix up the rest of the templates.

Feel free to DM, hit me up on discord, or ask me questions here. Always happy to help.

4 Likes