Friday 24 December 2010

The making of Crimbo - Part 2: What went wrong


Whilst Crimbo - A Gloop Troops Tale has been a roaring success for us, and is something we are all immensely proud of, it still has a few tiny things we would of liked to have fixed.

Developing a game in such a small timeframe is tough, naturally there was always going to be unresolved issues with the game. It's thanks to the dedication of the whole team that we were able to push ahead and deliver a game we are all proud of.

Below are some of the issues with the final game we would have liked resolved. These will hopefully be resolved in our next title:


ULA "snow" on first release

Whilst we had tested the game on numerous emulators, we still fell foul of the ULA "snow" issue. This issue is caused by having an interrupt routine in the memory address range 0x4000 to 0x7FFF ( so the second 16k memory block on a ZX Spectrum ). We had integrated the Arkos tracker into our project to allow for AY chip music when running on a 128k model spectrum. To service the music we installed an interrupt routine at address 0x6161 which would be called once per frame on a V-Sync. Whilst this worked brilliantly on the emulators we tried, it turned out that this causes the ULA "snow" effect to occur onscreen. Once the issue had been identified on the WoS forum we were able to supply a quick fix.

As we now knew the final size of all our assets we were able to move all of our data to the start of memory, plus a little padding, so that we could install the interrupt handler at 0x8181. In future we will be able to avoid this issue, but there is no substitute for testing on real hardware :-)


Sound Effects

We initially wanted to have our sound effects also be played through the AY-3-8192 chip. Unfortunately we ran out of time to fully utilise the chip and instead used the Spectrum beeper for our sound effects. We used a modified routine from Gloop Troops to generate a few beeps ( player death and collecting a present ). The upside to this is that there are sound effects played when playing the game on a 48k Spectrum!

Just before the game shipped AJH was able to re-create the title theme using the Spectrum beeper. There was a brief chat about whether to release a 48k version without the AY music, but with beeper renditions of the music instead. This would have been a cool feature to have supported, but may not have added much to the game for the extra work involved. Perhaps in the future we may want to look into separate 48k and 128k versions of the game if there is demand.


Keyboard control / configuration options

Something we wanted was configurable keyboard controls. This was left until the last minute and then dropped as we were short on time. Our reasoning was most people would play the game on an emulator, so would be able to configure their keyboard however they liked to represent the joystick. Another issue is the jump on pressing the joystick up versus pressing fire. Our previous game Gloop Troops, like a lot of games of that era, used up on the joystick to jump. However a lot of forum feedback requested fire to jump ( perhaps this is better when playing on a portable emulator? ). Next time we will provide this option if the game allows.


Sprite flicker

One of the issues with our sprite system is in how the sprite being drawn will splatter over the background image. This is not a problem usually within the game as we have a single colour background. However when two sprites overlap there is noticeable flicker. This is something we'd like to reduce further in future games where possible. This might be done by using a different sprite draw call if a collision between two sprites occurs. Alternatively we may see if preventing sprite overlap is possible. We could, for example, have the sprites bounce off each other instead!

Overall we are very pleased with Crimbo and are eagerly starting work on our next game! :-)



No comments:

Post a Comment