why I don't use Godot, Unity, Unreal or Game Maker?
I've been using a different game engine lately and guess what? I just won a GameJam against games
made with Unity, Unreal, GDevelop and a few others. I even walked away with a cash prize. Now with
all the ongoing debate about game engines lately I decided to make a video to talk about my engine
of choice and the whole reasoning behind it. I mean I want to make this useful if you are thinking
about picking a game engine for your next game especially if you want to boost your productivity
without sacrificing the ability to make the kind of game you want and have it run on multiple
platforms and yes even consoles but before diving in all that let me give you a bit of background
from where I'm coming from. I've been working with programming for quite a while now I dabbed
into all sorts of language from C plus plus, Go, Rust, Ruby, Python, C-sharp, PHP, JavaScript and even
some obscure languages like Dark Basic and Blitz3d back in the day I had this whole other life where
I worked in game development using good old C plus and let me tell you at the time game engines
were really rough and clunky nothing compared to what we have now. They were not user friendly
at all and for example Unity didn't even had a Windows version. It was just for Mac. A lot has
changed since but one thing that hasn't changed is that to this day I still like diving into the
nitty-gritty low level stuff like writing coding C and Rust and just for fun. I guess some people
may find this a bit masochistic but it's something that they really like and there's something
oddly satisfying about working at this low level . oh and speaking of programming adventures,
I have had my fair share of web front-end development too. The web fontend world can
be a bit crazy with a new framework popping up practically every week but you know it's pretty
impressive what you can do with good old HTML5 and JavaScript and I generally believe that the web
browser is a powerhouse for running applications so when I got back to game development I decided
to take a different route: Instead of jumping straight to a game engine I decided to work with
a Game Developement Framework. And Game Developement Frameworks are things like libGDX with Java,
Monogame using c-sharp, PyGame using Python, SDLand raylib using C plus plus and Phaser
with JavaScript. The thing about this Frameworks is that they don't come with fancy editors and
it's all about dealing with pure code. You might even find yourself building your own editor and
ways to inspect and debug what is going on in your game. These Frameworks are ideal for games
that are system heavy, super optimized and that just don't rely on most of the standard features
of game engines. Think about games like: Stardew Valley, Slay the Spire, They are billions,
Tooth and tail and FTL they all got something in common: Top-notch optimization in heavy reliance
on their own systems. But don't get me wrong here it's not that you couldn't build these games
in something like Unity or unreal it's just that this game engines might not bring that much to
the table for this sort of games since they march on their own way when it comes to systems plus
using one of those engines might lead to worse performance since they come with many abstractions
and features that these games simply don't need. So when I got back into game development I was
really drawn to the flexibility that these Frameworks offered. Considering that it was knee-deep in TypeScript for my daily job I decided to roll with Phaser. Phaser is a game framework
tailor made for creating HTML5 based games and Phaser is awesome it's fine tuned to
make things run like a charm on the web and on pretty much any platform you can think of
take this example for instance you can throw hundreds of thousands of Sprites bouncing around
the screen with physics and it runs super smooth but there's more to it with Phaser you get a fair
amount of low level control over the graphics and they've got a ton of helpful examples to boot
to play with and to see what you can do with it. I use phaser to create a game called Solus Sector Tactics, it's the turn-based strategy game and for this one I had to build my own level editor. It was a
ton of work but I also had to dig deep into the nuts and bolts of the hex grid, pathfinding, and all
the details. The end result is quite decent I think and things are proved to be a really solid choice.
Especially for the performance side of things and for the since this was a very system heavy game
and it was a wonderful experience to work with it however here's the twist: I've come to realize that
not every project should go the game framework route in fact I'd go as far as to say that it's
an overkill for most projects. Because if your game systems aren't particularly unique and if
you're not chasing that level of optimization that games like They Are Billions requires then you'd
essentially be reventing the wheel and I mean; Why reinvent all this stuff that the game engines
already have neatly packaged and ready to go? So that's when I thought maybe I should
go with a game engine for my next project. you know I'm a firmly believer that the web is
an incredible platform it is probably the closest thing that we got to write ones Run Anywhere.
HTML5 is great when it comes to portability you can effortlessly create games for desktop
mobile and the web. CrossCode and Mighty Goose are some examples of HTML5 games that were brought
to consoles. [Let's let's me tell you something! Let me tell you something!] I know what you're
thinking browser games they are always crappy simple but in this case I invite you to take a
look at what PlayCanvas and Babylon.js can do Babylon.js is a framework to make 3D games while
playing canvas is a fully fledged game engine for 3D games on the browser. These examples kind
of prove that the web is a playground where you can do a lot of stuff. The graphics that you
can achieve with this engine and framework in the case of Babylon.js are really impressive/
and Babylon.js even allow you to do VR stuff. but frankly speaking from the perspective
of an indie game developer like myself not exactly what I'm aiming to create: games
with High Fidelity Graphics. I mean, sure on Unreal and Unity offers some of the best
lightning for ultra-realistic Graphics especially unreal but that's not the kind
of game that I'm going to build anyway my focus is on creating games that triple A
Studios probably wouldn't besides if you look at the best Indie titles, you're gonna find out that
they don't rely on High-Fidelity Graphics either: DeadCells, Stardew Valley, Cult of the Lamb, Celeste , Vampire Survivors, Spelunky, Loop Hero, Undertale, Hyper Light Drifter, Hollow Knight, Will You
Snail, Pizza Tower, Terraria, Coffee Talk, Hades, Eastward, Little Miss Fortune, Baba is You, Binding
of Isaac. And this is where Indie developers shine: games with non-realistic Graphics that can have
a well-designed, systems, hooks, stories, art styles, that are unique, stylized, artsy or retro. But one
thing that we don't necessarily need is to chase High-Fidelity graphics. I genuinely believe
that Indies, the best thing we can do is to let the Triple A handle the High-Fidelity stuff
while we focus on building experiences that are unique. My experience with phaser was great but
it wasn't always smooth sailing. When it comes to prototyping and iterating on the game, things
weren't exactly ideal. I couldn't just toss ideas around and quickly see if they were fun and
if they serve their purpose. Instead I had to write a ton of code even for the tiniest features.
The editor I built was far from great. In fact it sucked and I had to split my time between making
the actual game and working on the editor and plus I was involved in my debugging process because I
had to build all the tools myself and it was a lot of work and demanded too much time for every
small thing that I wanted to add to the game. So for my next game I decided to see if there
was a game engine out there that could help me be more productive while not causing me too much
headache. By headache I mean things like: inability to make decent web HTML5 builds, having to deal
with long loading times, sluggish game performance, and slow build times, bloat with no benefits,
bad performance and the biggest headache for me is being forced to use a programming language
that I don't enjoy. So the engine I set on was: Construct 3 and here is why: First off it should
be obvious by now that I don't plan on creating High-Fidelity graphics and Construct 3 offers
more than enough for 2D. Construct also have basic 3D capabilities that suit
the kind of games that I have in mind. What is even cooler is that I can code with
TypeScript, so I can tap into the vast collection of JavaScript libraries and third part code that
exists in NPM. if you don't know what NPM is: it's basically a registry of Open Source packages in
libraries for JavaScript and TypeScript there are plenty of useful packages there that can seriously
speed up development. You can use the package there, you can study the package there, so that you can
write your own code. For example you can find stuff like voronoi, pathfinding, multiplayer,
procedural generation, and much much more now TypeScript is a language that I genuinely
enjoy. And it's also something that I use in my daily work. So there is less of context switching
when I'm coding my game versus when I'm writing applications in my daily job. If I were using
Game maker or Godot, for example, that wouldn't be the case as they use their own limited programming
languages. That's even the case with Unreal, because to be honest, I've done my fair share of C plus
plus, and I can tell you that the code you write in something like Unreal is very different from what
you would write for a non-gaming C plus plus project. Construct comes loaded with a bunch of ready
to use behaviors and features and it lets you take the no code approach if that's your thing. It
doesn't force you to write code but you can choose to write code whenever you want. It is great how
you can mix the two by simply inserting a chunk of code within the visual programming events but
you can also have your code outside the visual programming and open it in an external editor
like VSCode and do all your game logic there. Also, with construct my exports aren't necessarily
heavier than when I was coding with Phaser directly, so it's a lightweight engine in that
sense as well, Plus it's got some really nice features like the ability to preview your games
on any device right from the editor. it's a game changer for wrapped iteration for my last game I
could test the GamePad support on my Windows PC in the living room and test the touchpad controls on
my phone all with just click in the remote preview button and scanning the QR code or getting
the URL from that how cool is that. Unity and Unreal have their Asset Store and Marketplace
and yeah these are great. Construct doesn't have the same level of assets store. It does exist but it's
quite not as rich and there's not so much stuff you can find in there. However Construct really
shines in another area: it's library of examples really uh comprehensive you find lots of examples
that almost feels like complete games; And these examples are great research to study, reuse,
mix and match with the game you are building. Since it runs on the web, you play with tje examples
right now. I promise you you're gonna be impressed with a few of then and on
how simple they are to put together if you look on the source code; And
you have access to the search code. What I find interesting about the examples
from construct is that they're all low-Fidelity Graphics which, once again, align perfectly
with the kind of games that I want to create. Now what I appreciate the idea of Godot and Game
Maker for 2D games, I still seriously doubt these engines would make me more productive than I am
right now with Construct. Plus I'm not a fan of having to code in GDscript or GML and proprietary
languages you know. GDscripts might resemble Python but it's not quite Python and Game Maker's
GML is like C, but it's not C. these are domain specific languages designed specifically for the
game engine; Meaning they are useless outside of the engine. This means that with GDscript you
don't get access to the vast collection of libraries and third-party code that python has. While in construct I do have access to NPM, in fact I used NPM to build my gaming Phaser, and I can
still use it for the games I make with Construct. With unity there's c-sharp, which is a fantastic
language and I agree with you all on this point. I don't use c-sharp in my professional work
nor do I have any plans to do so anytime soon. So switching to c-sharp would just add an extra
layer of complexity complex switching without many benefits. In my case being a web developer
already familiar with JavaScript and TypeScript Construct is a fantastic choice. I can hit the ground
running with it with everything that I already know which is great for maximizing the speed of
development. Of course speed of development is subjective it is hard to measure. We can't be
objective about it, but winning the Game Wisdom Game Jam gave me the confidence that I'm on right
track. Other games were made using Unity, Unreal and Phaser; And I was able to ship a quite polished
game with a very limited time frame. And if you want to see how the Game Jam went and what the
judges had to say about my game you can check out my other videos. One of the judges who uses
Unreal was particularly interested in knowing if I had used Unity or what and this is a strong
sign that you can't tell if a game was made with Construct necessarily. If I'm not mistaken
his first guess was that it was made with Unity Conclusion: I think construct 3 is an amazing
choice for Indie Games. In my experience it boosts my productivity without making me give up on the
flexibility. I find it great that I can code using TypeScript and JavaScript. If you're a web developer
who wants to dive into game development, and you don't plan on making realistic Graphics, I highly
recommend you check Construct. You will be able to leverage any Library you can find in NPM and
ship it to many platforms; And if you want to see what else is possible to build with Construct,
stay tuned for my next video. See you next time!