I tested 3 Open Source Game engines. Here’s what I learned from the fastest option to the best graphics.
In Armory3d, UPBGE, and GODOT, I created roughly the same 3d game based on the gameplay of Balder2d. Balder2d is a simple Zero-G game where you can grab walls, jump off walls, and shoot. Ironically, balder was originally going to be 3D before the dev scaled it down to a 2d game.
Armory3d was the first game engine that I really took the time to learn. As a developer who mostly writes Python code, the node-based logic was a big turn-off for me. I always considered any graphical language less powerful or not worth my time. After learning Armory, I was proved wrong. It is actually a very powerful, if a bit clumsy, programming format. Once you understand what the nodes do, wiping out a bit of game logic with just a few nodes can be very fun. What drove me away from Armory was the bugs.
A big bug is I can’t seem to get sound without resorting to building a full release of the game. But when you do build the game, the performance is excellent. I mean, just look at this gameplay.
Here are 100 enemies, and Armory has no issue with all those AIs and laser balls.
200 is too much for it, but I bet you could get even more with some tuning.
The graphics are okay but not as good as the other engines I played with. Models inside Blender tended to look very different in-game, resulting in a lot of tuning.
Armory3d has the best set of exportable platforms. From the web to consoles to mobile, this has you set up.
Next, I gave the UPBGE a go. I decided to use the logic nodes inside UPBGE because they were similar to Armory, with one massive advantage. The nodes can execute Python scripts that can do anything within your game. They make it really easy to call a function in any script. One downside to the UPBGE nodes is logic seems forced to be handled per frame rather than at a trigger. Compared to Armory3d, the nodes are clumsy and a bit harder to use, but they are still effective. Another big advantage to UPBGE is the ability to use geometry nodes. You can use them for terrain generation, for example.
Performance seems completely usable for smaller numbers. But at around 30 AIs the game really starts to struggle. Though bits could be redone in a more efficient way, the performance is what drove me to look for something else.
Because this is built directly into Blender and utilizes Blender’s rendering framework, the games look how you made them modeling. The graphics in UPBGE are the best of all 3 engines I tested. The big downside is the complete lack of 2D tools like basic buttons, menus, etc. In other words, you have to use 3d assets to build your menus.
Exporting is limited; you can run your games on Mac, Windows, and Linux.
Next, I tried Godot. My main reason for avoiding Godot was because of the use of GDscirpt. I wanted to write in Python or no deal; fortunately, working with the other game engines broke me of my stubbornness. So I swallowed the GDscript-shaped pill. After getting used to GDscript, I realized why the developers of Godot made it instead of using a pre-built option like Python or Lua. GDscript is built for games; vectors, Colors, and game objects are first class. While everything is an object, the keyword self is nowhere to be seen as it’s implied by being attached to a game object. GDscript is just like Python if Python were rewritten for game dev.
Godot was the fastest of the engines I tested. Buttery smooth gameplay with normal numbers of AIs. It can even handle 100 AIs just fine. Like with Armory, 200 was about the limit. I already have a few ideas to limit the number of active scripts, which could increase the AI count a lot, but even as it is, it’s excellent.
Graphics are on par with UPBGE, but with the disadvantage of things looking slightly different when importing from other tools like Blender.
Godot lets you export to Mac/Windows/Linux, mobile, and the web. Better than UPBGE but not as good as Armory3d
Overall, I had a lot of fun learning all the game engines. Armory is a good starting place and has excellent node logic. Perfect for someone hesitant to dive into programming but still wanting to learn game dev. Armory also has a very good set of export platforms. UPBGE has all the power of Blender and Python at your fingertips. Perfect for a Python fanatic like I used to be. Godot is well-rounded, with decent performance. Perfect for making bigger games. Godot also has a lot of community plugins, some of which are crazy amazing.
Like always, these games I made are Free Software.
Armory3d Balder3d: bitbucket.org/hackersgame/balder3d_armsdk/src/master
UPBGE Balder3d: bitbucket.org/hackersgame/balder3d_upbge/src/master
Godot Balder3d: bitbucket.org/hackersgame/balder3d/src/master
Griselda (Space game): bitbucket.org/hackersgame/griselda/src/master