Version 1.6 and a little postmortem.


Ok, so the submission phase of the jam is over, and I've just pushed another update. Is that cheating? I promise that it was just a teensy little bugfix.  I finally figured out what was causing player shots to occasionally get "stuck" and just hang around on the battlefield when they should have been fired.  No, honestly, for real this time.

Super Laser Arena 9,000,000,000 - or SLA9B for short - is my third GBJam attempt. In 2018 I made Jocelyn Undergoes Many Perils, a single-screen platformer that I'm still quite proud of, for all its faults.  The following year, Reactor Core was an ill-fated attempt to make a run-and-gun platform game with procedurally generated levels that was way too ambitious for the time frame.  It kinda worked but was no fun at all and I didn't bother uploading it.

I wasn't even going to enter this year. Most of my gamedev is usually done in the little cracks between real-life obligations, like between dropping the kids at school and starting work. Obviously the Covid-19 pandemic has shaken up everyone's routines, and while I'm glad to have a job that allows me work from home and keep an eye on my children while they do remote schooling, it means I have even less free, quiet time than ever. But of course my idiot brain wouldn't stop thinking "well maybe I could just squeeeeze in something really simple", and I started pondering systems that I could build really quickly to get something that was recognizably a game done in the shortest time possible, and then use any time remaining to just add variety and content.

I've always had a soft-spot for arena shooters, and it should come as no surprise that William's Robotron is an influence on SLA9B, but probably even more so is Jeff Minter's pseudo-sequel Llamatron on the Atari ST, which added diverse power-ups, legions of bizarre enemies, single-stick controls (not ideal, but necessary for a game of the time, long before twin-analog sticks were the norm) and, of course, the requisite hairy beasties.  (I'm also pretty sure that I played Llamatron before ever having a chance to play Robotron, trips to amusement arcades being rare treats, and computers with the horsepower to emulate it still being some way off. I love them both nowadays though.)

Llamatron: 2112

Jeff Minter's Llamatron

The mechanics of the arena shooter are generally pretty simple. Move your character around, keep shooting in any direction you like, and destroy all the enemies, most of whom are usually just marching towards you, intent on overwhelming you with numbers more than strategy.  I didn't want to have to design loads of levels, especially not for an arcade-style game where a skillful player could see quite a number of them, and most of Jocelyn's week of development was a mad scramble to make and test the twenty unique levels that I'd promised myself for it. I came up with a mechanism whereby each enemy in the game was assigned a "danger" level and a "first wave" that they can appear in.  As each wave of enemies spawns, the maximum amount of "danger" that can be on the level increases, as does the pool of potential enemies to choose from. The game just picks enemies from that pool at random until the current quota of danger has been met. It's a pretty unrefined system, but it gives the sense of a difficulty progression while also making each playthrough subtly different and adding some little peaks and troughs of difficulty. For example: after a couple of punishingly hard rounds, an enemy you find difficult to deal with might be completely absent in a certain wave in favour of a bunch of easy ones that you can satisfyingly blast through.

With just a couple of enemies and power-ups, I quite quickly had something that, with a little sugar on top like a title screen and game over effect, I could reasonably call a "game" and submit to the jam. Even if I was hit by a bus the next day at least I'd have the satisfaction of making it in time.

As well as using the remainder of the jam to add new enemies and power-ups, some gameplay factors got tweaked as well.  One minor problem that the arena shooter has is that it's often a good strategy for the player to just camp on one part of the screen and blast away at anything that comes close.  Robotron and Llamatron both solve this by having a number of humans/beasts wandering around the screen that you can ignore if you like, but which offer large score bonuses if you run into them. Given that extra lives are generally attached to hitting a certain score threshold, survival really depends on rescuing them and getting that score up.

The power-up tokens that some enemies release have a similar effect in SLA9B (and in Llamatron), but aren't always around. I didn't want to have beings wandering about, waiting to be rescued, partly due to the time constraint, but also because it would seem a bit too much like the -tron games that was already aping.  Instead I added the score multiplier crystals, which spawn pretty frequently but which are also the gateway to large scores and extra lives.  A bit of a lazy cop-out, perhaps, and it doesn't add to theme like Robotron's humans or the piles of cash lying around in its sequel Smash TV, but it does the job of keeping the player moving.

I had hoped to add some more diverse enemy movement behaviours, since most (though not all) of the baddies in the game just tend to track towards the player at varying speeds, but that turned out to be enough, with the few enemies that break this pattern adding just enough variety to keep a play-through somewhat interesting.

Pixel-art isn't really my forte so keeping the sprites low-rez and simple works for me.  I was never able to create a "diagonal" variant of the player ship that looked decent, which is why it only ever faces in one of the four cardinal directions.  For a while you could only fire in those directions too, but that felt too limiting. I'm not super happy with the way it looks when you fire diagonally, but you stop noticing in the heat of battle.

In terms of code-quality, SLA9B is actually pretty clean for a jam game, which tend to get hacked out at speed and with little consideration for good coding practice.  Certainly there are some rough spots, especially in stuff I did later in the week as the deadline loomed, but it's not too bad.  As a software developer who went to college in the 90s, it's sometimes hard to break the traditional object-oriented patterns that were drilled into me and think in the compositional manner that works best for games built in Unity, but I think I did a reasonable job this time around of breaking down logic into easily reused components, which made creating new enemies with subtly different parameters a breeze. 

On the whole I'm quite pleased with how SLA9B turned out.  I did feel a strange bit of guilt about doing an arena shooter, as I felt it was ground I'd covered before, but then I realized that none of those games ever got released, so I shouldn't feel too bad. They were just warm-ups.  At least one might still see the light of day, with luck.

Does it fit the theme of the jam and feel like a Gameboy-game though?  Well... ish.  It sticks to the four-colour limitation, with sickly shades of green that ape the original GB screen, and the sounds are fairly 8-bit sounding even if they don't exactly emulate the console's sound chip. I made an effort to limit the controls to d-pad, two buttons and start. I'm not sure that the original hardware would be able to easily handle that many sprites and particles on screen at once though, and the high latency of the chunky Gameboy's LCD screen wasn't great for fast-action arcade games, tending to reduce everything to a blurry mess. I should really give GBStudio a whirl one of these days, and make something that can run on real hardware.

I won't be updating this version of it SLA9B, but I'm tempted to make a quick "Deluxe" version that would break a few rules of the jam, like having full-colour graphics and twin-stick controls.  I'd like to emphasize the "quick" part though. I started an expanded remix of Jocelyn not long after finishing it two years ago and it's still not done, and I don't need another unfinished long-term project on the pile. Could be fun just to tart it up a little though.

Files

sla9b-win32.zip 18 MB
Version 7 Sep 09, 2020

Get Super Laser Arena 9,000,000,000

Download NowName your own price

Comments

Log in with itch.io to leave a comment.

Interesting post mortem! :)