Probably the hardest post I had to write in 5 years of blogging.
for the few fans and supporters of the Glitch_Heaven project, I find myself forced to give a bad news, which is also a good one, if looked from a certain perspective, I guess...
Glitch_Heaven is dead, it has been for quite a while, the project kind of outgrew its own platform.
Let me explain. For sake of code readability, which would be good on my side, I decided to use Python 3 as programming language for the game.
Now, now, before you go pry out your eyes with a blunt knife because I'm using an interpreted language, let me explain.
Python gives me the huge advantage of making an edit and seeing it in action practically real time, which makes tinkering with parameters exponentially faster than any compiled language out there, like editing physics. All of this at the cost of a bit of raw performance on the logic code, since the whole graphics/audio/controls part is done in C language (or C++, I can't really recall).
The problem lies on another piece of the game: PyGame. Sadly pygame's support for hardware rendering is just not worth it, aka brings a lot more trouble than benefits. So Glitch_Heaven, and this is the part I kind of find amazing, is done completely via software rendering. All the particles (which aren't really that great), the character, ground, they're all SDL software surfaces.
And this is where I hit a wall about 3 months ago, right when University activity started to get really "hardcore", if I used any kind of resolution higher than its standard 800x600, the game would start having frame dips that went from the normal 60fps to as low as 20fps.
I thought the main problem lied in some flaw in my logic code, or in a mix of said flaws, but no matter how many flaws I saw, no mix of them could justify such poor performance. Then I began thinking of all the things that I wanted to add: visual effects, new modes, better graphics, simple obstacle AI and who knows what else. And I realized a thing.
I took the wrong way.
I already thought that using "dirty rect updates" was useless, since the game requires to update the whole screen surface every frame, so no performance could get squeezed from there, particles couldn't be even more microscopic SDL surfaces that get created and deleted every second.
I realized that I needed the help of GPUs.
And this is where things get bad, I have absolutely zero knowledge of any non-software rendering, nor I think I'll ever have the time to take and study Unreal Engine or Unity, also because:
- It would be overkill to use a 3d Engine for a 2d game
- I want to keep the advantage of almost-realtime edits given by Python
- I want to keep the code readability that Python gives me
Also now there are JIT solutions like PyPy, which allow to get even closer to compiled language performance. So why not use them?
I would lean towards a PyGLet-based engine specifically made for 2D games: cocos2d.
Though, this would require a complete re-writing of the game itself, which I have no idea if I can do, considered University and the time it would still take to learn the engine.
Lots of miscalculation was involved in this project, never I would have thought I would have had so much material to just shove into this piece of software, nor I would have thought that a simple software-based rendering would one day be simply "not enough".
Another reason I'm taking down this project is due to another recent happening in the indipendent and the videogaming industry as a whole: Steam Greenlight is getting taken down.
As you might have seen in the Official Page, Glitch_Heaven has a concept greenlight page which sadly never had much success, on one side because there are projects that are just better: better ideas, better graphics, better sound. On the other side, which is why Greenlight is getting taken down, it's because Glitch_Heaven itself was completely submerged by the humongous load of garbage that people post on the platform just because it's free, so it's such a great idea to post meme-filled projects, or projects that are just memes without a different finality of annoy the users as much as humanly possible.
The project never really caught on, with only 392 views in 390 days on greenlight, 28 "Yes" votes and 6 "no" votes, 90% of them received within the first week from the publication on the platform.
I didn't want this project to become the n-th "brownlight product", I wanted to do something that players could enjoy, something that was done with care and not just to get a quick buck.
The idea was to spend those 100$ on the Greenlight program and put the game up at 99¢, just so I could see that my work was appreciated, kind of like a "token of appreciation" so to say. Now there are rumors about "Steam Direct", and how it could ask from 500$ to even 50k$, I barely had the money to enter Greenlight, let alone now have the money to enter Direct.
The alternative would be Itch.io, which offers free submission of the projects, but not nearly as much visibility as Steam.
Given this, the main issue stays: I took the wrong path in coding the game.
Another small issue, very minor, is the "Rage game" matter. So many people call this a "rage game", and honestly I'm kind of tired of fighting this "rage game" battle. I kind of consider Glitch_Heaven to be on the level (please, please pardon me the comparison) of Ghosts'n'Goblins for the NES (besides the whole "do all the levels twice" thing), and to my knowledge that isn't considered a rage game.
Glitch_Heaven is glitchy, yes, but that's the name of the game, each level is consistent with its glitchiness, and in the stock levels you'll never find things that will trick you more than once, or hidden death traps that pop out of nowhere or anything else purposedly made to make you scream.
Will the whole thing die horribly?
I don't really know, I have part of the story laid out, and I still want to get back to it, revise it and make it more entertaining, kind of like writing a book; and maybe one day, hopefully not too far in the future we'll see a "Glitch_Heaven Rebirth", made in cocos2d, with OpenGL support and loads of other things I really can't wait to see.
But that's another story to be written another day.
There we go, thank you everybody for reading this really long rant of mine.
I wish you the best things possible.