My thought on different engines

bigaston

Bigaston

Posted on December 20, 2023

My thought on different engines

Article initially published on my personnal website

During my short career as a game developer, I've tried a lot of different game engines because I like to try new tech and learn new things. Some of them were feature-rich environments, fully-featured IDE, some of them were simple command-line interfaces and pure JSON data. Here I will try to make a list on the engines I've used, with pros and cons. I may update this post in the future if I try new engines or if my opinion changes on some of them.

WARNING: This list is not made to be representative of all of the game engines! I just want to share my experience with them. I will try to be objective, but I'm a programmer that come from web development, so I may be a bit biased.

Godot Engine

Godot Engine is a free and open-source game engine. The story started as an in-house engine of an Argentinian studio in 2007, and since 2014, it's been a community-driven project with a lot of contributors.

Godot Engine Editor

I've started using the engine in September 2023, so it's not a long-term experience, but I've found in Godot everything I need. A game engine is on one side very light (100 MB for the whole engine), and on the other side features complete 2D and basic 3D. The mindset is a little bit different from Unity (where I came before), with the Node system, and with every node a single script attached to it. Even the "Everything is Scene" was a little bit strange for me, but after a small moment of adaptation, it feels like home.

Speaking of script, I've used Godot only with GDScript for now. Not because I don't like C# (it smells like home and TypeScript for me, so I really like it), but because GDScript is so well integrated into the engine with an easy syntax. Even non-programmers can understand it and prototype some basic game mechanics. Before, I liked to use just a text-based game engine, but I was tired of trying to explain my shitty JSON syntax for the level or move pixel by pixel a sprite for my UI. With Godot, I found the simplicity of a text-based framework with the power of a full-featured Game Engine.

The only game I released on Godot was for a gamejam but it was a pleasure to prototype it with my game designer. The Windows and Web exports were really helpful to get feedback and ratings for the game.

Another pro for me is the Resource System (like Data Asset in Unreal Engine or Scriptable Object in Unity). You can define some custom data types, like for your NPC, your village, and even more. You can easily edit your Resource in the Editor inspector because everything relies on basic types, and Godot knows how to serialize them. And you can load resources from the code to access all the data you need.

For example, for Emilien In Paris, each level was a resource, including the needed furniture attributes and the scene of the furniture that needed to be available. My game designer can create a new level very quickly with just the editor.

Resources example

Godot is also a very light engine. It includes a dedicated 2D renderer (and don't use 3D even for 2D games, HUM HUM UNITY) with Pixel Perfect rendering and calculation. The 3D renderer is enough for 3D games, with a 3D renderer, 3D physics, and even a 3D audio engine. You can write your own shader (vertex and fragment) in a custom language derived from GLSL with all of the basic data types and include a powerful visual shader editor.

Godot is now supported by a lot of people, and with all the Unity drama, they are able to achieve 50'000€ per month to hire full-time or part-time contributors to work on the engine. I really like a quote (written from my mind; I can't find the Mastodon Post) from the Technical Director of Cassette Beast (a Godot game), "Godot is a great game engine. Maybe you will have some problems with it, but here, if you know a little C++, you can fix it and not rely on a big company to fix it for you."

The release cycle of Godot is now really fast, with a big version every 3 months, and the 4.2 will be published soon (or will maybe be published since I've started writing this post).

If you want to learn how to create Godot games, there are a ton of resources. Not like Unreal Engine, the Godot Documentation is well made, complete, and includes a lot of tutorials. From what I heard, GDQuest (on the web and on YouTube) is also a great resource for learning Godot with free and paid content. And you can just ask questions on the Godot Discord.

And if you want to see some great games made with Godot, you can check the Godot ShowCase, and maybe you will see some familiar names (Dome Keeper, Brotato, Usagi Shima).

Now, pros and cons!
PROS:
A lightweight engine with a lot of features

  • GDScript is a great language, fully included in the engine and workflow, and easy to learn even for non-programmers.
  • Work perfectly with Git because everything is text-based, so great for teamwork.
  • You can create some in-engine plugins with the fantastic Godot Control system.
  • It is easy to export some games to all platforms (computer, web, mobile, and even consoles now).
  • There is no need for an external IDE for code editing.
  • Not owned by a big corporation (can be a pro or a con, but for me, it's a pro).
  • Great documentation, with tutorials, examples, and class references. Even in engine, if you SHIFT+Click on a class name

CONS:

  • The 3D renderer is not made for big games for now.
  • The assets store does not have a lot of assets (there are some, but not much like Unity or Unreal Engine).
  • The visual shader is not as complete as Unity, according to what I heard from my tech-art classmate.
  • The WWise and FMod integration are very new and not official, so maybe there will be some problems in the future.
  • Not so much used in the game industry, so not so helpful for your resume if it's the only game engine you know.

PICO-8

PICO-8 is a fantasy console created by zep, and available on PC, Mac, and Linux for $15. The engine includes all the tools you need to create games, like a code editor, a sprite editor, a tilemap editor, an SFX editor, and a music editor.

PICO-8 Demo

It was the first game engine I really used when I didn't know a lot about code. The language that PICO-8 uses, Lua, is a really easy language to learn (as easy as Python, in my opinion). Having every tool you need to create a game in the same editor is so nice and removes all the frustration of asset importing. And the engine can export games on Windows, Mac, Linux, and HTML5!

One of the most underrated pros for me is the limitation of the engine (on code length, palette, sprites, etc.). You have to keep your game small and focus on the gameplay idea without extras, like in the NES or SNES period.

The community is one of the most welcoming I've ever seen. You have a lot of documentation; the PICO-8 BBS is very active, and you can ask questions. And even in one of the core features of the engine, the knowledge sharing. All your PICO-8 games can be exported as a cartridge, a simple PNG file with all of the data. This file is the one you share on the PICO-8 website to make it playable online, but you can download the cartridges of other games and open them in the editor to see how they're made.

You can discover some of my favorite games made with PICO-8 in my itch.io collection.

PICO-8 Collection

And if you want to learn more about PICO-8, I recommend the Lazy Devs channel on YouTube, which has a lot of tutorials and tips on the engine.

Now, pros and cons!
PROS:

  • A full-featured engine with all the tools you need to create a game
  • Great community
  • Easy to publish on Itch.io, Newgrounds, and even on Steam
  • Limitation that helps you focus on gameplay
  • Cheap ($15) and no runtime fee
  • Perfect for game jams

CONS:

  • Limitations that can be frustrating if you want to create very big games (even if you can recreate Doom with PICO-8)
  • Not so well made for teamwork
  • You have to do a lot by yourself (physics and hitbox are soooooo hard to make...) But you can find some boilerplate online.
  • Not free (but really, 15 dollars is nothing for all the features you have).
  • Not made for big projects

PlayDate

PlayDate is a game console created by Panic (the publisher of Firewatch, Untitled Goose Game, etc.). When you buy it, it includes 24 games, unlocked 2 by 2 every week. But it also includes a way to upload your own games to the console with SideLoad and even Catalog, a marketplace. And for the developers, a very nice SDK with a Lua API is available!

PlayDate Emulator

Yeah. I've got some serious buying addiction when we talk about small game consoles and random game development environments. So, of course, I've bought a PlayDate. And even more, I've created a game on it during a 48-hour game jam. I will not talk about the console and the games here, but only about the SDK and the engine.

The SDK for PlayDate comes with a bunch of tools. An emulator to test your game on your computer, the SDK/API itself in C and Lua, and Pulp, a small game engine on the web to create some narrative games (if you now use Bitsy, it works the same way). Here I will only cover the Lua API and the SDK itself, but Pulp is really great if you want to create some small narrative games.

The API comes with a helper function for almost everything. Collisions, input, UI, sound, music, sprites... It extends basic Lua behavior with a custom OOP implementation (far better than the default Lua's one). It's one of the best Lua APIs I've ever used. And the documentation is really well made, with examples and just the needed information.

You can configure almost anything about your game, like the title, cover image, and some animation during the start of the game. You can even customize how the default pause menu of the PlayDate looks to add your own buttons and actions! The SDK was really made in collaboration with the developers. I think they make the great choice to make a first batch of consoles only for developers, update the SDK with feedback, and then release the consoles for everyone.

The only "downside" of the SDK is that you will not have a GUI by default. You will need to create your sprite by code with raw JSON data, load your levels by hand,... . But you have a lot of tools, like an LDtk importer to make your life easier.

Now, pros and cons!
PROS:

  • A very well-made SDK with a lot of built-in functions (don't have to handle collisions by yourself is so nice).
  • Lua is a great language for beginners.
  • A great community, inherited from the Fantasy Console community
  • Less limitations than PICO-8
  • A great documentation! (HUM HUM UNREAL ENGINE 5)
  • Full text-based, so great with Git

CONS:

  • Really useful only if you buy a PlayDate (~200$).
  • No GUI by default
  • Your game will be only played by a few people (but a very niche community).
  • No 3D renderer (duh)

Unity

Sooo. Unity. It's a 3D game engine created by a company of the same name. It was published in 2005 and is one of the most used game engines in the world due to its simplicity, the number of documents, and the easy way to publish games on all platforms.

Unity Editor

The main project I've made was on Unity. It was a four-month-long production with a team of four people. And I think, even if I don't know everything about Unity, I think I know the engine enough to talk about it. It was a VR game, but I've also created some other smaller projects with it.

Play Solis Vi on Itch.io

It's a great engine for 3D games, with a robust 3D renderer and a lot of shader features (even if the documentation doesn't follow the engine development). The lightning system works well. The physics system, even if there are some problems, works well. For 2D games, Unity works well, but still uses the 3D renderer with just some changes in the camera settings (perspective to orthographic), but uses a dedicated 2D physics engine.

In Unity, you write the code in C#. It's a really great language, with object-oriented programming, a semicolon at the end of the lines, and a syntax not far from TypeScript (made by the same company). The language is not that hard to learn, but it remains a full programming language with a lot of features that can be hard to learn for a beginner. The con of this language is that it will need to be compiled every time you make a change (handled by Unity; you don't need to launch the compilation by yourself). And another con is that C# relies on a garbage collector, so maybe there are some performance problems (I didn't have any problems with it, but my C++ lover teachers always told me that).

Unity also has a ton of documentation. It's an engine used by the indie industry for a decade now, and you can find so many tutorials on the internet. You have a lot of starting assets, library, code, etc. Unity's Asset Store is full of plugins and assets that you can just download on your computer and use in your game.

It's easy to use for game designers and for prototyping. Game Designer can change the exposed value of your script to prototype and just playtest. You can place a lot of gray shapes on the editor to just block out your level design.

Now about the downside. Unity is a very big engine. It will take a moment to install and require Visual Studio Build Tools to be installed (at least, they're installed automatically by Unity Hub). Sometimes something will work perfectly on the editor, but during the build time, God decides that something will break. And good luck fixing it... The UI system is OK but not really great, and the Unity documentation is not always up-to-date with the engine. If you work on a team, you can use Git, but you will have to talk a lot with your fellow team members to avoid merge conflicts because Unity likes to just change the whole scene file when you just move a pixel of a sprite. And Git LFS is not cheap for huge 3D files. And like Unreal Engine, it's an old engine that drags a lot of old code and features and does the same thing but in a different way, like the Input System.

And to finish, have you heard of the Unity drama? That was the main thing at the beginning of September 2023. Unity just decided to change their pricing model from a subscription-based one to a subscriptions + install fee one. Just like that. A lot of indie studios just said that they could not afford the new price changes. Unity lost a lot of trust in the indie community. I will not enter the details of all of this garbage, but it was a mess. Do you want to place all your trust and future in a big company that wants to put ads everywhere? Not for me.

Now, pros and cons!
PROS:

  • A full-featured engine with a lot of tools
  • A lot of documentation and tutorials online.
  • A lot of assets in the Asset Store
  • Great for VR games (Auto Hands and XR Interaction Toolkits work really well).
  • A nice 3D renderer and an OK-ish 2D renderer
  • C# is a great language.
  • Cool for prototyping and game jams
  • Can be exported on all platforms

CONS:

  • A big engine that takes up a lot of space and requires a good computer
  • Can be a little overwhelming for beginners.
  • The UI system is not that great.
  • The documentation is not always up-to-date
  • Owned by a big company that doesn't care about you.
  • Not great with Git (but if you pay for PlasticSCM, maybe it's better).

Unreal Engine 5

And another big piece of software! Unreal Engine 5 is a 3D game engine developed by Epic Games, the same company that brought us Fortnite (and Unreal Tournament before). The latest main version, Unreal Engine 5, was released in May 2021 and includes a lot of tools for NPC, Light, and a lot of other things.

Unreal Engine 5

I've not used Unreal Engine 5 for a very long time (just a month), but I will try to be as complete as possible. The engine works really well for very big 3D games. With the Lumen light system, Open World loading logic, and multiplayer built-in and core features of the engine, When you use it, you can see that it's an engine really made for AAA 3D games.

The blueprint system is nice. You can create all of your logic with blueprints, have some branches, declare variables, functions, cast types, call events, etc.The system itself can finish in some big connection mess, but if you are organized, it can be really nice to use for prototyping. The interface with C++ is great! I've talked with some more experienced Unreal Engine developers, and they told me that they use C++ for big, messy calculations and the gameplay logic in blueprints. And the blueprint is not so much slower than C++.

Blueprint example

Talking about C++, the Unreal interpretation is not so bad. You have a garbage collector (like in C#) and a lot of custom attributes and data types to fit exactly your needs. With all of these, "Unreal C++" is not that far from modern C#, but you still have access to pointer and memory management. But you will need to compile every time you make some changes to your code, and it can take some time. And, oh god, the compilation errors are so cryptic. It will take so much time to figure out what is wrong with your code. And you rely on the C++ include system, which, in my opinion, must be destroyed by fire.

One of the biggest problems with Unreal Engine 5 from my point of view is the lack of documentation. You have, of course, the Epic Games documentation to help you, but it's empty, outdated, or just useless. The official tutorial for Unreal Engine takes 3 hours to explain easy stuff. And a lot of tutorials just teach you how to use Blueprints and not C++. One of the greatest pieces of advice that was given to me was "Use ChatGPT". And it's true! ChatGPT and Google Bard help me a lot with the cryptic Unreal Engine stuff.

The Unreal Engine is very heavy. It will take up a lot of space on your computer and will take a lot of time to install. You have five systems to do the same thing; everything you click on will open a new window outside of the editor. In every part of the screen, you will understand why it's well made for big games. You can build super tanks, but when you need to build a bike, it's overscoped. An empty Unreal Engine 5 project is heavier than a full Godot Engine installation!

I really see it as the "work game engine". It's not fun to use, but it's work. opposite of Godot, which is the "fun game engine" in my brain (but my brain is a bit broken). Unreal is not a bad engine, but for my personal project, I like 2D or simple 3D games, and Unreal Engine is not made for that.

Now, pros and cons!
PROS:

  • A full-featured engine with a lot of tools (again)
  • Very efficient with C++
  • Blueprints (a really big pro for me)
  • A lot of assets on the marketplace
  • Free to use (for 95% of your project)
  • Work great for collaborative work (full integration with Perforce).
  • C++ (if you like it), with a custom standard library better than the STL
  • Efficient 3D renderer
  • Lumen, MetaHuman, Nanite, MetaSound...

CONS:

  • A big engine that takes up a lot of space and requires a good computer (again too). And it's even worse than Unity because you will need to install Visual Studio if you want C++.
  • 5 systems to do the same thing
  • The f***ing documentation
  • Just forget about Git with all the proprietary binary files.
  • Still owned by a big company that doesn't care about you and that has laid off a lot of people recently.
  • The size of the exported game is huge.
  • The first game build may take maybe 1 hour to build (and it's not a joke).
  • Nothing great for the 2D renderer (but it's not the goal of the engine).

Conclusion

And here comes the conclusion! During the writing, I made the choice to only talk about the game engine I'd used not so long ago, and that was useful for game developers. I've used a lot of other game engines, like Love2D, Construct2, PuzzleScript, etc. But I don't remember them enough, and I don't know if my opinion is still relevant. I will maybe update this post in the future if I try new engines or if my opinion changes on some of them.

But for now, what engine should you use? It will depend, and I'm not the engine god to know everything. But I will try to give you some advice.

  • For small games (like gamejam games) or indie games, I will recommend Godot Engine. It's great, lightweight, free, easy to use, and capable of great things. You can export your game to all platforms, and the community is great. And if you want to learn how to use it, there are a lot of resources online.
  • For very big 3D games and big company, first, why are you here? And second, I will recommend Unreal Engine 5. It's a very powerful engine, great for collaboration, and has a lot of features. But for small games, it's overly scoped and not so great to use.
  • For full web games (yeah, I come from the web, so I try to make my family proud), I will recommend PixiJS. It has great support for TypeScript and works very well with Vite. It's lighter than other game engines, so it's better for web games. But you will need to do a lot of things by yourself.

And of course, feel free to comment about your thoughts and your favorite game engine!

💖 💪 🙅 🚩
bigaston
Bigaston

Posted on December 20, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

My thought on different engines
gamedev My thought on different engines

December 20, 2023