the rise and fall of the goblin game engine.

I have written before about making a game jam on my game library (gueepo2D) and having a bad experience with it, and how that led me to experiment with building something on top of gueepo2D and how I experimented with different architectures, structures, and how I, ultimately, had to ask myself: What am I doing? And *why* am I doing it?

These questions led me to a number of different answers, the first one being that gueepo2D should *really* be just an intermediate layer used to build engines and/or games. The second one was that I *should* make more specialized engines for the types of games I want to make, which made me think about The Machinist, an engine built for turn-based tile-based games, and The Goblin Game Engine, a general-purpose engine with ECS and Scripting, and, in the future, a full-blown editor.

This whole journey had its ups and downs and made me solve a number of problems I was having when trying to make my own video games, a big one being that now I am able to export whatever I make on these engines into an HTML5 playable. And that process left me wanting to make *something* and publish it as an HTML5 playable. And that’s how the journey of creating a videogame with The Goblin Game Engine started.

It didn’t take long for me to realize that The Goblin Game Engine shouldn’t really be a thing – It was just a side quest, just something that was cool, just something that I wanted to experiment with, and I did, and I learned a lot with it and it got me unstuck. The issue here is me insisting on making something with it when I shouldn’t have.

I don’t want to get into a Godot Game Engine tangent here, but here we go. I think Godot is a Good And Cool Engine. And I want to make little prototypes, game jams, and maybe eventually contribute to its codebase, and on a fundamental level, Godot and Goblin try to solve the same problems, so it just didn’t make sense for me to want to work on both. Let’s not forget that My Actual Thing is The Machinist – These are all little side quests!!

Anyway – The *thing* I was working on was this Ski Game using Kenney Assets.

It would essentially be a lite clone of “Subway Surfers.” There would be a main lane where coins and obstacles spawn and you move left and right to collect/avoid the things – Easy, straightforward, and boring.

There were two problems: The Gameplay and The UX.

The Gameplay Loop is just boring, it’s always the same, and there’s nothing to it. If you think about it, what makes Subway Surfers interesting? Compared to this poor Ski Game – Subway Surfers has an extra dimension you can jump/slide into, and you have enough powerups to create some form of gameplay variation. Ski Game wouldn’t have any of this, because I’m not really trying to create an *actual* video game, I’m just trying to create a simple thing that is playable, a little bit fun, so I can put it out there in HTML5. That’s the whole deal.

As for UX issues, this is a bit more complicated. User Experience problems are the bread and butter of making a game engine, it’s all about creating and optimizing workflows and making things fast, it’s not about creating video games, duh. Video Games are just the product of a workflow.

With the development of the goblin game engine, I came to dread the whole “entities composed by components” system that was standardized by Unity, there’s an extra step to absolutely everything that you are trying to do, and maintaining a scripting language can be very annoying, and when creating a general-purpose engine an editor is a *MUST* which just makes everything worse.

Well, you live, you try things out, and you learn.

So, there are two options here: Make the Ski Game into an actual video game or scratch it.

So, after scratching the Ski Game (and The Goblin Game entirely) I decided to work on my original goal: Having a simple game developed and “shipped” in HTML5, and I would use the base library, gueepo2D, no fancy abstraction layers this time.

All this was a long way to say: RIP Goblin Game Engine ๐Ÿ˜ฆ

glappy2D

Fast-forward 12 hours and the world got to know the absolute masterpiece that is glappy2D.

I know that it sounds a bit cartoonish, but right after I finished writing the section above I was dead set on developing this stupid, silly, little game, so I searched for free assets, free fonts, and easy ways to make simple sound effects, and got to work.

Making a “flappy bird” type of game is probably the most beginner-friendly task there is, and I have made it a bunch of times before, so I just created a GitHub repository, put the assets there, and started writing some poorly performant code.

The final result is a horrific main.cpp that contains five hundred and thirty-five lines.

But it is a silly cute (mostly thanks to Pixel Frog who put some amazing and cute free assets out there on itch) little game that you can play by clicking the link below.

glappy2D by gueepo

And with that, I have crossed two big things out of my list, getting rid of the goblin game engine ๐Ÿ™‚ and making *something* silly with my game library and “publishing” on itch and playable on a browser.

Now, it’s back to writing and working on The Machinist with occasional breaks for game jams on Godot and, who knows, also on gueepo2D.


Outro

bro we waited like 14 years for this

This is where I would have my Twitter profile, but that website is naught but a shadow of its former self (and it was never great), or to YouTube, but I haven’t posted anything there for almost a year, and it doesn’t help that the script I was currently working on was about making a game on The Goblin Game Engine and I just scratched that game and the engine and, as a consequence, the script, so…

maybe a movie recommendation will do

Leave a comment