Friday 10 July 2020

Turbo Tomato: Continue?

The previous devlog saw me diving in to some 68k assembler for the first time in a decade, and managing to make improvments to TT despite the 1997 me's hyper-optimisation efforts to make the code unchangeably complex.

Really, though, it was more of a toe-dip. This time we get in properly, and think about adding some modern conveniences to a twenty-plus year old game.

I was supposed to be on holiday this week, but the ongoing situation ruled that out and I found myself at home, attempting to take it easy while locked up with two small bored children. It could have been worse though - we could have been in Legoland as planned. Somehow, I managed to get some work done on TT all the same.

Following on from last time's work to improve the level countdown timer, the natural first task was to implement, in classic style, an end of level points bonus determined by the time remaining. Go faster, get a higher score. This is Turbo Tomato, after all.

I made the bonus go faster than this

Guardian levels also get a new "World Complete!" message instead of a bonus as there is no timer on those levels. Victory will have to be its own reward in this case.

Next, a big one. The two player mode was another part of TT that felt tacked on without much thought. A second player could join at any time, and this would use up one of three credits the game started with. If one player ran out of lives they could rejoin and use up a credit in the same way, until there were no credits remaining. However, this wasn't carried through to a one player game, or a two player game where both players were game-over-man at the same time. Here, the game would just end and return to the title screens.

You know you want to

My solution here was to add a CONTINUE panel to intercept those game over cases when credits were remaining. Either player can rejoin from the continue panel, or let the timeout expire to move on to the usual game over sequence.

While the timer is nice, and an arcade classic, I'm considering changing it to a simple YES/NO option with no timeout. Can modern players stand to wait an extra ten seconds if they want to restart the game? Not sure. They might have to.

Sufficently advanced camera dejankification in action

Fleshing out two player mode uncovered some jankiness in how the screen scrolled to keep the players visible. There were situations where the camera position would jump suddenly - for example if one player went game over it would jump to centralise the remaining player - and this just looked bad. To make it more palatable, I added interpolation to the camera tracking so it moved smoothly(-ish) to the required position over a number of frames instead of a jump. X and Y are interpolated separately to keep the code simple. It's not perfect, but it happens rarely and happens fast, so it's sufficient.

Modern gaming considerations feed in to the next big new feature: the in-game options screen.

Until now, pressing ESCAPE in TT would dump you right out of the game back to the title screens. You need a quit option, but that seems a bit harsh. Also, pausing the game required pressing P. But what about CD32 gamers who don't have a keyboard? Enter the in-game options screen!

Choose wisely

By pressing ESCAPE or, crucially, the second fire button (which unduly complicated  joystick reading, by the way), an options panel appears that effectively pauses the game as well as offering the quit option. The panel can be completely controlled by either joystick or keyboard.

For considerations towards accessibility, I also added a Skip Level option that immediately jumps to the level complete sequence. This works on any level including boss fights. In fact, it was the experience of getting stuck on boss levels that prompted this addition, but the same problem can be encountered on any level. There's no penalty for skipping a level and it can be done as many times as the player wants. I'm sure there will be emails, but [massive shrug].

On the to-do list is a reworking of the title menus, and with this in mind I coded the options panel in a data-driven and hopefully reusable style (yay 2020 me). Implementing the new title screen menus should be a case of writing a suitable rendering routine and hooking up the right data to the options driver code. The same could be said if I decdided to change the continue panel to YES/NO as mentioned earlier. Fingers crossed.

I still need to decide what to do about selecting a starting level in the title menus as well. I like the idea of level codes, personally. However, a level select control is probably more convenient for the player, but would require recording completed levels on disk (or somewhere) and that may not always be possible. Send your answers on a postcard, please. No really, I love postcards.

Looking forward, I think a round of bugfixing and light polishing might be the best thing to tackle next. I've noticed a few little glitches and hitches as I've been working on the game, and I'd like to get these out of the way (and out of my brain) to start with a clean(er) sheet before launching in to the large task of playing through all the levels for balancing, finishing and further de-glitching.

Outside of code I've contacted a few composers with a view to making some new music for the game. The existing modules are fine, but some are direct copies of other games and I've lost touch with the original composer as well. I think it'd be best to start again with this. More on this as I hear back from them. There are also  art things happening behind the scenes, and of course the BIG NEWS that I can't share yet. How exciting!

Until next time, then.

Stay saucy!

No comments:

Post a Comment