So for those that weren't aware, I had been participating in a game jam called the Quad Cities Arcade Jam, and last month I released my game! It's really nothing particularly special, as most of the time working on it was spent wrestling with getting parts of my engine into shape for it and probably about three weeks actually on the game itself, but here it is for anyone that wants to take a look.
Otherwise, I've provided a video below.
The theme of the jam was 1980s-1990s arcade games, so I picked Asteroids since it seemed like the easiest thing in my mind given the state of the engine at the time.
And now for a quick post-mortem...
What worked well?
Eh, not a whole lot. By the end of it, it at least felt like a somewhat reasonable demo of the versatility the engine provided.
What could've been done differently?
Well for starters, I should've forked the engine a lot sooner - instead I thought, "oh, I've got loads of time," and continued working on making radical sweeping changes to the engine. A lot of time ended up being wasted near the end quickly bandaging parts of the engine to "work" as the deadline approached closer and closer. Oh, and I should've created a design or plan for the game - a lot of ideas came in at the end, by which time it was too late, due to poor planning.
Overall it was probably a good experience though and I look forward to trying again next year.
Open Sourcing Again!
An earlier version of the source code is now available here (this is from over a year ago if you're curious.) Unlike last time where I released the code under public domain, this time it's under GPL v3 and that will probably be the case for any other releases going forward.
Some code was stripped from the release but anyone motivated enough could pretty easily get it compiled. I've not included the content required for this either, mostly because it's a mess and would take too much time to tidy it up immediately.
If you're curious what version of the engine this is, it doesn't really have a version really but I've sort of dubbed it as "1.5" - it's somewhere between the latest version (2.0) and the first version anyway. Big shrug.
I've provided a video below showing what v1.5 looked like in action.
What's Next for Yin?
Since the jam was finished, the engine has already started to radically shift and change once again. The big target immediately has been overhauling the material/shader system further to allow for more flexibility, without depending on hard-coded tricks, which has been pushed up the list given some limitations encountered when working on the game for the jam.
For starters, the material format now uses my Node format, as a material object. I'd discussed the Node format a little bit previously here. You can see an example material below, which applies toon-like shading and an outline for a character.
The program objects, which essentially outline the shader program, have been enhanced with the introduction of a default pass which basically provides a default state a material should use when using that shader program. This means if a single pass either depends on a very specific state or set of parameters being enabled, those don't always need to be provided via every material.
It's not functional just yet but the program objects will soon also be able to provide a set of "definitions" to use when compiling the shaders too.
I've provided an example of what they now look like below.
And the result of both of these is shown below (though instead using a placeholder model and texture.)
Beyond that, work on the editor has been restarted from scratch. We'll see how that goes. And I'm also killing off the interface layer between the engine, game and launcher - everything will just be statically linked into a single binary instead.
Next Game?
There's a game concept I've had going since 2017 now in various forms, sparked from a game jam, but it's still not quite made it's way into something actually playable - pretty much due to it's complexity from an implementation standpoint. I've never discussed what it is publicly because I don't think it's something done before? But I have uploaded ambiguous videos to my channel of some progress made towards it in the past.
From 2017 and up until August of this year, it's been on-and-off as a 2D game utilising Allegro (there was an interim where it was using Godot but it didn't provide what I needed at the time, so I rolled my own engine instead.)
After the recent jam was completed, I've decided that I will be using my new engine, Yin, instead of the 2D engine that was originally written for the game (it didn't make sense to be writing two separate engines anyway.)
HOWEVER
I've also decided that, because the original idea was so complex to achieve on the scale that was in mind, I'm instead simplifying the concept down into a different game which will be used as a stepping stone to prototype and prepare the technology that will be necessary for my original concept.
That said, I don't think this simplified derivative will be any less interesting! I'm just hoping it actually takes off and importantly, will be fun to play.
Given the restart though, consider these now released into the public domain. Credits would be appreciated though!
What Else?
I've been taking a partial break to work on another project of mine that modifies the Quake 2 engine to support a fantastic game called Anachronox, which is creatively called 'hosae'. You can find out more about the project here.
It's been making some pretty good progress lately, though I'm obviously biased. Models are now supported with the exception of multiple skins which I've not bothered with yet, there's support for 64-bit, progress is being made to get it compiled on Linux, support for fog and alpha textures, and more.