So finally I’m getting around to talk about the title screen work I’ve been doing over the last couple of months. In all I think there’s around 10 – 15 hours or so I’ve devoted to this part of the game since I shelved the transfer game to come back to it later.
You may recall that this was initially the first part of the work I was doing for Paradroid which I half did before deciding the transfer game needed to come first. Minds change and all that and it was a bit depressing coming back to the code I’d written and finding that it had been pretty poorly written. It did what it had to do but it was the first code I’d ever written with GML and I literally had bashed together the main event and kind of thrown bits on ad-hoc, when needed, without rewriting the core to make it all work together better. I had loops within loops and sub conditions to branch into doing other stuff and the synchronisation of everything going on was turning into an absolute nightmare.
So the best thing I though to do with it was to take the core scroll routine – which was originally an external script – and rework that into an event so I could build the redesign Aaron and I had come up with around that.
The scrolling system works around using a surface so the original routine had just read the text from an external text file and then written it all into the surface and I then drew it in the display area on screen at a constantly moving location to simulate the effect of scrolling, just like you see in credit sequences in a lot of games. This was smooth enough when actually properly compiled, rather than running through the yoyo games project player, but our redesign called for some imaging to go in as well.
Now this isn’t actually a problem. You can draw a sprite onto the surface and it will show up on screen where it should when you’re dynamically changing the view position. The trick, as with the layout of the text, is to format everything correctly so it looks neat when it’s displayed. I toyed with the idea of working some kind of text/image parser which would work out the width of whichever letter/sprite was being displayed and compare to how much space was left to the right side border of our display area before switching to the next line. In the end I chose not to do this as it seemed overkill for a routine that I’d likely only use once so I moved all the text data into an external script, positioned the sprites by trial and error, and just modified the text lines manually so we didn’t lose any lettering as it chugged along.
This design also used some icons in our console area display for indicating controls like controller/keyboard as well as music/sound and choosing the graphics set – something that will be locked out of the game initially until unlocked. Here’s an image of it as it was then because I’ve now bolted on a seperate options screen for choosing this stuff instead due to Aaron creating a mini-hud for in the game itself.
Naturally you can’t see any movement there – mainly because this numpty hasn’t looked at how to insert a video into a blog post yet. The number used for score there will be very familiar to anyone who ever programmed a C64, by the way.
So, since this screen shot was taken I’ve been talked into dumping the icons again so there’s another screen in the cycle which is switched between on the F1 key. It’s a work-in-progress, and ugly as anything right now, so I’ll post it when it’s finished.
The rest of the sequence has also changed to incorporate some of the colour switching that the original Paradroid did at the end of the scroll sequence. I’ve tried to match the colours as best I can do based on emulating it via Vice on turbo speed to see how many combinations there are. Not that many it turns out, probably because C64 colours were limited and Andrew had to make sure that the text was readable on whatever colour was the background. On the image above you can see the mixing of sprites and text as the Dexterity Design logo and the Paradroid text are both sprites. Here’s another screen I saved at the time that shows mixed sprites and text.
I’m using one of the droid images here that are in the droid data that’s accessed from the terminals in the game because why not? It’s tempting to use some more of these to do flash stuff with the options screen, perhaps some movement patterns but I’m already toying with the idea of some kind of transition between the options screen switching on and off, so not sure where I will go after that.
At present the main Paradroid intro screen from the original game is shown. After this we jump to the scrolling sequence which presents the entire data from the original game, some of it rewritten to both give a little bit more information, or just for formatting purposes. From this I went with a static screen to show just the best and worst score of all-time which are recorded for prosperity now. People who played the original will know that it used to be scores for the session because most people loaded the game from tape with no option to store scores. That’s no longer a issue so there’s no reason not to.
So, to summarize, I’ve got to put in the save/load scores function, put in commands to change the options and then basically improve the look of both high score and options screens. After that I can remove any bugs and jig the code so it’ll slot seamlessly into Aarons project. If I have time then I can think about doing some more creative stuff just for the hell of it.