Jams Jams and More Gameboy Jams

So, October has been a pretty intense month for game jamming, with two jams co-inciding with each other at the very start of the month the amazing GamesForBetter Jam hosted by the lovely SoGoodStudios and Sizeable Games, handily encompassed by GBJAM5 where developers make a game based around the general theme of the Gameboy. But, let talk about the Games For better Jam first, it was pretty eventful after all!Things started off in a fairly compromising fashion when I realised that I had packed literally everything I would need with the exception of a power cable for my laptop. Big mistake and thanks again to the lovely Jupiter Hadley for sorting me out with that one, you’re awesome!Our group constisted of 2 coders and 1 artist. What with both our coding skills coming from very different approaches I made the odd call to make a live demake of the PC game programmed by Tom who did a great job turning code and gameplay around with amazing speed onto the gameboy.

A fairly tall order for two days but I figured it would be pretty cool and unique way to tie things in for the GBJAM that was also running at the same time.

I was unable to get any code underway until ~midday on Saturday but we were able to get a really solid concept going of essentially a bullet hell shoot-em-up where you have two weapons, one is a standard peashooter, not too great but does the job, the other being a wider, more destructive shot from a slowly replenishing ammo source, which when fired can destroy bullets and most enemies. The trick being that using this too much will make more enemies indestructable, linking the game into the theme of anti-biotic resistance.

With time running out on the 2 days worth of Jam time, we had a really playable version on the PC with 10 seperate levels culminating in a boss fight which played really well but was a struggle to capture any real footage for oddly. The gameboy version lagged behind but had 10 very similar but slightly different levels and a few bugs.

It was a great Jam and the first time I’ve worked as part of a team in one of these events, it was great fun and whilst we didn’t get picked to be played at the event, I felt the game would be worth continuing development on for the rest of GBJAM5.

So, a trip back home from Plymouth, catching up on some sleep and a few play-throughs later, I’d decided what I wanted to add to the game.

  • Bosses
  • Bug-fixes
  • Pausing
  • Gratuitous Sampled Sounds
  • A pre-title screen to show off said sampled sounds as a little easter-egg.

Now being back in a home environment meant that coding time was more scarce as there are many other factors at play, not least the trips to work, awesome family times and the joys of housework. Late night is really the only option for coding @ home 😉

I had managed to write a tool in PHP in previous weeks to convert an 8-bit 8,000Hz RAW wave file into 4-bit, 4,000Hz but hadn’t really played around much with it, aside from verify that it worked. So, it really needed to be in the game in some form. Making a talking intro screen game boy announce “Game” “Boy” “Jam” “5” seemed a cool idea and fit in quite nicely with some more advanced bankswitching for me. It worked pretty well as a little novelty before the main game and I’ll work on making this play nicer (without game pauses) at some point.

Bosses were fun to play around with and got tougher as the levels progress. They use fairly simple movement patterns but fire a viscious amount of bullets on screen, some later bosses are supported with standard enemies to up the difficulty some more and all squeezed into the main ROM bank with space to spare.

There were some minor bugs with the GamesForBetter version but this was mostly just the score not resetting on replay and a couple of sound bugs due to me not resetting registers at the right point in the game loop at times.

So, August and me coding in GBDK didn’t really happen.

Yeah, yeah, I didn’t even update this blog either. For over a month!

But, that doesn’t mean I’m stopping gameboy development, far from it. There’s plenty of games I need to finish off before I move onto tackling 6502 ASM again in October / November.

There’s quite a list of them now, how does it always end up like this!

Formula Racing.
It’s nearly all done, but just needs a bit of polish and better ROM bank management.

I Shall Be Queen.
I’d really like to add that boss fight in there sometime soon. Then I’ll accept it as complete.

Shield Warrior VII.
It’s a small game I attempted to make for Ludum Dare 36 during the bank holiday weekend, but life and family fun was way more important. So, I need to finish this one off soon!

Ayasumi Todayachi.
A horizontally scrolling shmup with alternating weapons.

Space ‘splosionator 2086.
A quick Whack-a-mole type game. But in space!

They Are Everywhere.
I’ll come back to They Are Everywhere again sometime again. I feel it needs re-programming now I have a better knowledge of the system as opposed to in October last year.

Roll on September!

Bit Bit Jam 3 Post Mortem

Hiya. I’m Ryan Carson and this is a lil transcript for my video about “I Shall Be Queen” for the Gameboy and Gameboy colour, made in 1 week for the 2016 Bit Bit Jam. This is the first game jam I’ve entered which is entirely dedicated to retro console development and Has been lots of fun to take part in.

The chosen theme this time around was “Red Hot Princess Carnage” and resulted in quite a variety of games being made for systems dating as far back as 1976 / 7.

omgslimes
Early Dev Shot- Lots left to work on still here! I think this was on tuesday / wednesday…

A you can see I ended up making a double-dragon style beat-em-up where you play a princess character, out to steal control of the kingdom by yoinking the queens crown.

The game takes place over a total of 3 stages with enemies getting tougher as the game progresses, starting off with basic slimes, moving onto snakes, floating eyeballs and arrows being shot through the stage at you.As has been mentioned a few times to me now, hitting the enemies is considerably tougher than it should be, mainly down to the height of the enemies being less than your primary punch attack.

With a bit of skill, you can manipulate them to wander down into the punches and there’s always the simpler jumping kick and mana consuming ranged fireball you can throw with the select button.I started off with a simple base code consisting mainly of collision detection and fader for the monochrome gameboy and the rest of the code was written during the week.

I was really proud with the pixel work I could put into play with this game, particularly for the main character, although, using such a large sprite for her in-game meant I had to dedicate 18 tiles per animation frame. Not good when I need to consider enemies, power ups, etc.

I could have a maximum of 14 unique frames but ended up with a total of 10, comprising of:thegrid

  • 1 Standing Frame
  • 3 Walking Frames
  • 2 Punching Frames
  • 1 Jumping Frame
  • 1 Kicking Frame
  • aaand 1 Death Frame

That’s still the majority of the 256 total available to me, leaving me with only 76 tiles to put enemies into!

I wanted to have some variety to the enemies with at least some animation so opted to make the enemies fit into 4 tiles per animation frame, with a maximum of 4 animation frames per enemy.

There’s 4 different enemies in-game, so that’s adding another 64 tiles, leaving only 12 (well..okay, 16, one enemy had just 3 frames to save on space)

The remaining tiles were dedicated to power ups, shadows, visible punches and kicks leaving a paltry 8 spare tiles at the end, I was really pushing the limits to what I could use here and many other scenes went the same way, it was tough trying to cram it all in!

Somehow it managed to fit in though and with a few sneaky tricks to reduce cpu usage, not checking for certain hit detections on every frame, etc, etc. Further code reductions to allow the main game code to fit inside one 16kb bank, the game squeezed into it’s available space.

queenspritesandconvI was hoping to add a boss fight with the queen towards the end of the jam but, despite having prepared some sprites, simply ran out of time and ROM space come Monday to add this so, had to replace it with some rather odd dialogue scenes.

All in all, I’m pretty happy with the way this game turned out. I’m tempted to round out the remaining bugs and add that boss fight at a later date but yeah, a few flaws but, it plays pretty well and looks better than I thought it would!

Heck, I even managed to add some requested scenes from a guy at work’s request, but you’ll probably need to view the code to figure it out 😉

Why not give it a quick play through at Gamejolt?

Click here to Play Me I Shall Be Queen

Oops, err yeah, the video, I’ll be uploading that one shortly ;P

gbcolortitle

GGJ 16 – A Swing and a Miss

Whilst I’ve enjoyed a good streak of results from recent game jams, my first Global Game Jam didn’t go quite as planned, I felt like I was working against the Gameboy throughout the 42 hours of development time available to me, as I hadn’t done any real Gameboy development work since Ludum Dare 34 in mid December, I was going to have a rough ride of sorts in any case. Quite how rough was a bit shocking to me.

Bugs occurring at stupid hours in the morning greatly affected the amount of sleep I got in during the weekend and by Sunday morning , whilst I was determined to have something finished, there really wasn’t much of a game there, although to be fair, a clicker game isn’t much of a game anyways.
waifu
There was a lot of coding going on though, for little reward, after some issues, particularly with remembering how multi-banking worked, Waifu Clicker is a clicker game, with randomnly generated characters, password system, some sound effects, difficulty curve and sadly, not much else.

kawaaiiiAfter submitting a working initial build to the Jam site with 2 hours to go I attempted to bung the in-game shop in there but, more issues with decrementing my heart score (an unsigned 8-bit array) after the first pass and general exhaustion left me collapsed at my laptop.

Whilst it’s far from my best work, it proved to be a handy reminder for me to be prepared for game jam events and my preparations this time around were minimal to say the least.

So, 2 Gameboy Games, 2 weekends. Is this a trend for me?

Probably not, haha! I do love making games for the Gameboy though, so I’m going to continue down that line for a while now. It’s still enjoyable to code games for limited hardware for me and it’s taught me a fair amount about code optimisations, which is handy for me in general. There’s also plenty left for me to learn about it, I may have made 3 games in total for it and have one in the pipeline but there’s a lot to learn in that lil system and I’d also quite like to make myself some tools I can use better within the games I make.

I nearly ended up using my own system for the sprites for Novascape, but, sadly it had a small bug, which has now been fixed so I can make more complex backgrounds and sprites with a bit more ease than before!

I might try my hand at making a basic platformer next time around, It would be nice to get a better hang on properly mapped scrolling backgrounds. Then again, They Are Everywhere has been waiting in the wings for quite some time now and really needs completion sometime soon. Ohh decisions, decisions…

Additionally, I put some feelers out on twitter regarding making some videos to help people into Gameboy Development with GBDK as the documentation on getting started with it seems rather scarce out there. I remember searching for hours in an attempt to find a PDF that contained the actual values that converted over to notes! I made my port of Spike Dislike using an inaccurate emulator, which then showed up on actual devices and my current emulator of choice, BGB.

So, I’ll spend a lil bit of time during the Christmas break putting some videos together for the New Year, yeah!

Completed Novascape, My GBDK Gameboy Game for Ludum Dare 34

So, last weekend Ludum Dare 34 happened and I really love the Ludum Dare game jam events, my first attempt was way back in Ludum Dare 24 and since then I’ve entered almost every one.

This time around, I set myself the additional challenge of making a Gameboy game and whilst my Flash Cart had just given up the ghost, I persisted with the plan.

For the first time ever, two themes were tied for first place, so I could choose which one to go for. Either “Growth” or Two Button Controls”.

I opted for the latter and within an hour I’d roughly planned out in my mind what I was going to make, essentially a game where you have to escape from a pit, as a spaceman, before the rising lava plume consumes you.

GAMEBOY & GAME ASSETS… OH BOY!

Now, asset creation for the Gameboy isn’t a trivial thing sadly. You’re limited to 4 colours which simplifies things a lot but, GBDK only contains some basic tile editing programs, which I love by the way, thank you very much to the developer of these, they mean I can actually get my hea around things!

So, I’m limited to 8×8 groups of pixels, which is okay for smaller sprites and looping backgrounds, but not so much for creating detailed backgrounds, that becomes a lot more time consuming and error-prone when transposing from Photoshop into each 8×8 tile.

When it comes to sound, it only gets tougher, you don’t just load up a wav file and set it to play, you’re manipulating the sound channels directly and the Gameboy is armed with:

2 pulse / square wave channels
1 noise channel
1 custom channel, so, you could in theory import wav files somehow but, it’s not recommended, we have minimal RAM and ROM to play with here!

Coding in plain C isn’t too bad though, as long as you keep everything small in terms of code size and try not to use comparison operators (e.g. less than, greater than, etc) or multiplication, division, sine, etc. (At least not without look-up tables). then you’ll be okay.

No floating point variables either, those would really bog the 4Mhz Z80 down, ideally keep everything to an unsigned 8-bit integer (0-255) which again, is tough initially but a couple of 16-bit integers are allowable.

Having mentioned all of this, the game managed to get to a fairly playable state within the first day, although at this point there were a lot of gameplay issues that still needed to be fixed, for example, you could simply hold A and not much would get in your way, sometimes not at all!

Also, there was no horizontal movement, only vertical, which felt a bit boring, so the following day, whilst refining the newly added enemies and trying to generate their placements in more annoying ways I stumbled across an idea.

A FUEL METER!

Quick, get that Fuel Can!
Quick, get that Fuel Can!

Of course, why didn’t I think of this before. If the jet pack runs out of fuel, then that’s it, you’re toast. But, it needs balancing out somehow, so in went the flashing fuel cans and gun recoil, allowing for some control over horizontal movement with the B button whilst vertical motion is all handled with the main (A) button.

But how to handle giving the player fuel? It should be based on performing a task and also, as horizontal movement is slow, lava is rising up quickly under you, it could be too tough to reach!

There was only 1 solution in my mind that would bring another layer into the game at this point, shooting enemies could release homing fuel cells which the player could collect with relative ease.

This meant that not only were enemies deadly, but you had a damned good reason to hang around and aim for them, your jetpack quickly runs out of fuel on the hard mode in the game, so enemy destruction is a must!

The game was looking pretty close to it’s final form by around 4-6pm on Day 2 and with around 7 hours left it was mostly debugging, polish and ensuring all the standard trimmings such as endings, title screens, differentiating easy mode from hard mode more and, in general making sure it all run without too many bugs.

Because, there are bugs, just a couple, but I couldn’t find how they were occurring. In the scope of things though, they’re fairly minor and, in some circumstances, give a player an advantage whilst playing, sooo, yeah. I guess I’m okay with that.

All in all, I thoroughly enjoyed Ludum Dare this time around, it wasn’t as stressful as previous ones, how much of that is down to experience and how much of it is down to going for the Gameboy, I don’t know. However, you can play NOVASCAPE for your Handheld Nintendo Gameboy System here and I recommend that you do, it’s fun, you just need to learn the controls 🙂

Ready to Gameboy Jam through Ludum Dare 34

 

Well, with Ludum Dare #34 Just around the corner, under 12 hours away as I type this out, I’ve been preparing myself to put together a Gameboy Game in Under 48 Hours, based around a theme. Which I’ll discover at 2am.

So, what am I doing to prepare for this then, huh, huh?

  1. Clear some space around me in my lil home office so I’m not being distracted by clutter.
  2. Made sure I have made a gameboy game recently,in a small amount of time, so I’m not going in to this completely blind. You can play it on your Gameboy here, it’s a tough space invader clone and didn’t take too long to make, just a bit of time to debug. GBDK is funny with variables sometimes!
  3. I Managed to write myself a handy tool to make sprite creation easier, meaning I can now use photoshop, export to PNG, run it through my tool and out pops the relevant data for both GBDK and it’s Tile editor program, I can see that saving me a bunch of time and allowing me to make more complex sprites a bit easier! I’ll pop this online at some point, just not right now though, time is pressing!
  4. Probably grab a bunch of snacks later on tonight for easy eating. Not too junky though!
  5. Most shocking of all, I’ll be getting myself a decent nights rest, so I can make sure I’m not going to burn myself out over the 2 days, I love game jams and everything that goes with them, but yeah, sleep, that’s important!

Why in the hell am I making a Gameboy Game? Why Not Use Unity. Unreal / Something else?

Haha, yeah, I’d normally be a Unity bod for any Gamejam, but, what with my recent endeavours with GBDK  and Gameboy Development I wanted to see what I can make, from scratch, in 2 days. I’m not expecting my entry to fare particularly well in comparison to other games out there, but, this is just for the joy of game jams!