Passing Breeze, An Arcade Adventure.



Our entry for Retro Platform Jam #5

We normally try to make something technically impressive for these jams, but this time we just decided to do something different. We'd never made an Interactive Fiction before. Our platform of choice was again the SEGA Genesis.

The Jam theme was Breezy, so as old arcade game lovers we thought of Passing Breeze, the music from SEGA's Outrun. This all fitted together nicely. We'd do an adventure game based in a 1980s(ish) arcade.

PICTURES

Even though it's simple, I wanted to do something a little technical, so decided to see what sort of images we could display. I started with a simple 16 color image, then tried to do 31 colors by combining the two background scroll layers, A and B. (31 because the top layer would need a transparent color to show the bottom layer through)
This all comes down to the tooling. (another story, as I'm converting my game tools to WinForms at the moment). 
So I wrote the code to generate these images from a single source. This works nicely.
But another option would allow 45 colors to be displayed by showing a layer of sprites on top of the two background layers. I tried this, and again it is very nice.

At this point we needed to make a decision. We could do 31 colors with larger images, or 45 colors with smaller images, due to the space taken up in VDP RAM. I went with 45 colors. After a bit of calculator usage and trial and error I ended up with a resolution of 224x128 for each image. This uses 448 VRAM tiles per layer, or 1344 in total. We needed space for other things like fonts and effects.

Layer 1

Layer 2

Layer 3


Final combined image.

TEXT

My original plan was to use a bitmap font renderer, but at this point we had very little VRAM space left, and even less time to spend on it. We used an 8x16 font, and could display 4 lines of text in the space available. 
We had hardware sprites available, as the image only uses 28 [32x32] hardware sprites (out of 80). I used some sprites to overlay on the text as it 'prints up', so each character appears smoothly. And with the remaining sprites I added a simple 'blowing dust' effect (thinking about the theme: Breezy). These simple effects didn't take up much VDP space.

GAMEPLAY

As mentioned before, I was converting my game engine over to WinForms. I had already added a simple generic node tree renderer, but it hadn't found a use case yet, so I wanted to expand it in to a full Dialogue Tree sort of thing. 

The full game!

Here is an image from my Dialogue Tool depicting the whole adventure game It is broken up in to chunks, partly because that was easier to split the work between the two of us, and partly because if each section is self contained, there is a lot less to go wrong.
The tool itself has a runtime built in to it, so you can select any node, and 'play' it in directly in the editor. This will show debug information like variables etc. It highlights the nodes as you move around them. All this is for fast iteration without having to download to the Genesis.


Here is a section in more detail. We have different Node Types which are interpreted by the runtime. The grey rectangles just display text and wait for the player to press A. The light purple ones display up to three choices for the player. The player's response (A, B or C) decides which child node is selected next. And so on...
There are VARIABLES ( top left nodes) which can be set or changed (light green, top right) and choices can be made depending on the value of  variables. (dark green, bottom left). Other nodes include things  like random choices, GOSUB and RETURN, and ACTIONS (to display images or play music).
Once this was all working it made it very easy to iterate on the gameplay quickly.





Comments

Popular posts from this blog

Converting Gunslugs to Megadrive / Genesis

Mega Palettes