For those of you that have been following my game devlog where I've been working on another game, LunaX Engine, creating Hypastorm is the sole reason for the lack of updates of LunaX Engine.
Narrowing Down the Scope
When I started building LunaX I thought it would be a small project that could be made quickly, being a simple enough game to get my feet wet when it comes to game development. The perfect project for me to learn common game development patterns, problems and solutions within a manageable scope for a single developer.
As the game progressed and I learned more I discovered that was not the case. It turned out to have a lot of moving parts and more complex architecture than I first anticipated. With tons of new coding things to learn, even though I have years of professional coding background when it comes to applications.
Games are a different beast!
A bigger challenge than expected is not a problem per se, but as LunaX is the first game I develop on my own, I've learned so much on the journey from when I started on LunaX to where I was a few months back. There was just so many things I felt that I should have done differently, if I had more experience in the gamedev department from the beginning.
Anyway, instead of starting over with LunaX, which I won't do out of principle, I instead opted to make another game, where I narrowed down the scope even more and applied everything I'd learned so far to see how that would turn out.
And there we have...
The Birth of Hypastorm
Starting with a blank slate, doing things more efficiently from day one, Hypastorm was created during a month from idea to be available in the App Store. Probably half of that time went into creating graphics, music and sound effects.
Compared to LunaX, the game mechanics is much simpler and I intentionally kept the number of entities, levels and artwork down to a minimum to ensure a small scope, while at the same time have enough elements for an engaging casual game and a game with most common mechanics for me to implement.
That includes entities, components, input handling, scoring, audio, levels, gui, multi platform, enemies, bullet system, game controllers, collectables, physics, upgrades and so it goes on.
Having done many of these things with LunaX in one way or another, I took a more generic approach this time and put many common things into a framework that I can, and will, be reusing for future games. My own small little game engine, which ended up way more elegant than the first take I did with LunaX.
Things to Come
For Hypastorm, while being released and available, I still have a few additional features to add. I will use the codebase to explore some more things that I want to get experience with for future games.
First up is Game Center integration, where I'm adding achievements and leaderboards.
Then the macOS build will come.
The macOS version has been ready from day one, as that is the platform I do most of my own game testing on, but I haven't released it yet. A few things on the mac version is currently relying on Big Sur, I'm yet to decide if should keep waiting for Big Sur or disable the extras for now. Though, the Big Sur release shouldn't be that far away...
And finally I'll evaluate the possibility of building a demo version as an App Clip. The game is around 10 MB right now. That's a size you can get when not adding heavy third party frameworks or engines. Most of those 10 MB is used for the music and sound, so it should be a breeze to make a small App Clip friendly version with a playable level. That would be interesting.
And that's it, that will be end of the line for updates to Hypastorm.
Refactoring LunaX Engine
Returning back to LunaX Engine. With a released game under my belt, which has armed me with more knowledge, I'm throwing away a lot of code that could be considered boilerplate which I've now streamlined and put into my custom mini game engine framework.
On top of that I'll take a few days to refactor the remaining parts and I'll have a fresh codebase for LunaX Engine that is up to speed with everything I did with Hypastorm and can keep working from there.
I will continue on this path to make a few more small casual games to keep improving on the experience from Hypastorm, polishing my game engine and get more comfortable with shipping games.
A continuous learning ground where I build on what I learned from the previous game while adding one or two new major elements to keep raising the bar for each new game. Hypastorm is the first of that suite.
In parallel I'll keep working on LunaX Engine and get back to posting devlogs on the progress. LunaX is a more ambitious project that I'll allow to take the time it needs, and I feel that I now have got a much better foundation for completing that game, compared to where I was before I built Hypastorm.