Diary of a Game
Uridium 2 Part 4
The epic saga of the creation of a super-sequel reaches its fourth instalment. At last the dreadnought designs are beginning to take shape, and they're a far cry from those seen in the old C64 classic. Andrew Braybrook, the programming genius coding the game, tells all...
Part Four — August/September 1992
Tuesday August 25th, 1992
Great way to start the new diary. Met Gary Liddon at EMAP Towers while delivering the previous diary part and had a few bevvies with him and The One lads before catching the train home to Witham. Had I stayed awake I might have got off at the right station. As it was I ended up in Harwich, which was quite a shock. You don't want to know how much a taxi costs at that time in the morning.
Had a further play with the weapons systems. A flame-thrower for the robot seemed like a good idea. No graphics for it yet but it works, spraying out the ubiquitous explosion graphics that get used whenever the proper ones aren't available. Also changed the mass devastation weapon as that was a little slow to take effect; usually what I was aiming at had long gone by the time the bullets came out. Now it's a rocket that gets produced and sprays bullets (also currently looking like explosions) from top and bottom.
Spent the afternoon experimenting with plasma — it's a graphic effect we've seen on a demo. It's quite fun trying to figure out what they've done. We may not come up with the exact same method that they're using but we'll get similar results. If you only need to get one effect on the screen you can throw a lot of memory at the problem, but we have to get a game in there as well. Finally I got some red plasma on the screen. It tends to do really strange things to your eyes if you keep watching it. Weird.
Wednesday August 26th, 1992
Now to build a title screen out of my plasma. There's no point in having something pretty if you can't use it. The first thing was to create some nicer looking plasma to work with. The plasma is now more ordered and curvy so it's easier to see what's happening. Since these things like being left/right symmetrical and there's no point in wasting memory, I wrote a routine to reflect half the picture across the screen.
The reflection routine didn't quite work but the effect was really wacky — the screen was stretching up and down and I still haven't sussed out why. Part of the optimisation involved only plotting the plasma in sixteen colours, leaving me the other sixteen to add text over the top. Then I got to thinking — since there isn't much CPU time left after the plasma is plotted, why not write Uridium in giant size letters in another plasma colour? All I have to do is teach a cursor to drive-around the screen, printing up big letters. This turned out to be just like writing a turtle program in Logo. Tedious or what?
Tuesday 1st September, 1992
Really did go on holiday this time. Returned to find Phillip drawing full 32-colour backgrounds, contrary to instructions as usual. Still, if you can't beat 'em, put in all the routines to display the full 32-colour graphics.
I've been changing the colours around on the block font to make it even more readable, since the whole world and his dog say "Yeah, it's really pretty but what does it say?". Everybody, that is, except Phillip, who just said "Yeuek!" — but then he says that about anything that he didn't draw himself. I've had a go at redrawing one or two of the letters to make more readable shapes. The 'R' is causing trouble as most of the letters are capitals, but the 'R' is actually an r.
Wednesday 2nd September, 1992
Spent nearly all day battling with different linker output formats. All I want to do is load the game in relocatable format so I can store the code wherever the machine's extra RAM is, but I want my variables to be short-word addressed in the top 32K of the Amiga's memory for extra speed. ALink format seems to support 16-bit relocation data but I can't persuade SNLink to produce the right output. Can anybody help? I just want one section, namely my variables, to be linked absolute in word-addressable memory.
Thursday 3rd September, 1992
We need to put together a demo for the European Computer Trade Show next week. Jason has started converting his music into our format and hopes to have some token sound effects ready. We still have no backgrounds but the mapper is nearly ready to at least try to put a map in. I've commissioned some more graphics from another of our graphics artists, Mark Bentley, so I've not got any dummy sprites in the game. If only we had an extra 24 hours we could put so much more in.
Friday 4th September, 1992
Getting close to show-time and the mapper is available for its first test — no guarantees, no nothing. The music and some trial sound-effects have been set up by Jason. Unfortunately the graphics didn't get finished and I was left with a sheet of really pretty organic graphics that I had no idea how to slot together.
The mapper held up fairly well until I tried to put its output into the game. I have had to resort to using my old graphics so I can see what is going on. The mapper is somewhat to say the least but this is its first test. Normally I'd wait for it to be fixed but with the show looming I'll have to program my way out of this by reformatting the map and character set data within the game itself.
Monday 7th September, 1992
Show day. Uridium 2 gets its first showing to the press, unfortunately without any real backgrounds in it. It's also the first time that Renegade, the publishers, have had a good look at it. Had a Cuban dinner in the evening with the Bitmaps (name-dropper) to celebrate the completion of another Graftgold project, Gods, on the Sega Megadrive. If you'd like to play this game, write to Sega Europe and tell them so. It's rather good.
Tuesday 8th September, 1992
Now is the time to re-organise things in the machine and to free up some of that valuable chip RAM by moving the game code to fast RAM. That means that I have to tangle with Amiga relocatable link format, which is pretty horrible, and I have to sneakily redefine my variables because Amiga link format does support short word addressing but SNASM won't actually produce any short word addressed sections. Why not, chaps? Not everyone wants to run system legal stuff, you know.
Still, a wily programmer can find ways round this, I've written a scatter-loader that locates the Amiga's fast RAM, puts my code there and then relocates it. It's like picking your house up and moving it down the street, then changing the number on the house to fit in with the houses on either side of it. Then it has to tell the post office where it is, but it still knows where the post office is because that hasn't moved.
What am I drivelling on about?
Wednesday 9th September, 1992
Taken the whole program apart today to define my variables in a different way. The main objective is to split the program into two lumps, one that can be relocated into fast RAM, and one that can't be relocated because it's too messy. Then I have to set up a communications area to allow the two halves to communicate. This will mostly be one-way traffic. Both halves get bolted back together again while debugging to speed things up.
All this monkeying around took about five hours. Now I need to come up with a way to test it. I don't think that just letting rip with a code relocator is a good strategy. It needs to be traced slowly to identify places where it may go wrong. That will be tomorrow's job. Mustn't do this too quickly — I told Renegade it could take three weeks! Of course, it still might.
Thursday 10th September, 1992
Got the code relocator working which now officially frees up about 80K of chip RAM for more graphics and sound, which is good news because it wouldn't all fit before. Jason wants more memory for samples because he wants to put speech in.
On the game front I've changed some of the parameters of the control modes to make them more responsive. The Manta turns quicker, as do the robots which also move a little faster too. That helps to squash the thugs. Also in is a new mass devastation weapon that fires lasers in an arc around the ship.
Friday 11th September, 1992
Sorted out some niggling bugs. Bad initialisation caused weird things to happen as some flags weren't being cleared out to start with, including a pause flag so the first game automatically paused itself. It's a case of studying the symptoms and deducing what can possibly be the cause of them, and then figuring out what has caused the cause. Knock-on effects can have a programmer chasing the wrong thing for days.
Needless to say, no-one who played the game today noticed the tweaks that I applied to the control modes. They nag like little kids for changes and then don't notice when they happen. Further tweaks included making the homing missiles turn slower while they accelerate away from being fired (that makes them look more realistic) and a smart-bomb that hits all targets on-screen with the appropriate stroboscopies.
Monday 14th September, 1992
Set Phillip up with a PC and the mapper to create the first real map of background graphics. A few teething troubles needed to be eradicated and we have a list of changes for the mapper already. Still no mouse to use with it, so cursor keys it is. Not very efficient.
Jason has produced some speech to put in, expanding the size of the sound samples from 90K to around 140K. This is going to be a tight squeeze indeed. The Speech seems to be centred around picking up bits of a few key words, 'Playsern' being one of them. For example, by missing out the 's' and the 'n' you get 'Player', and by dropping the 'P' and the 'n' you get 'laser'.
Added a grenade weapon for the robot which is equivalent to the bombs of the Manta. Great for taking out the generators, not so good at hitting the thugs. Discovered a deep-rooted bug which was giving infinite use of some weapons which were supposed to be limited. That one could, and I emphasise could, haw been the cause of a mysterious crash one time that has been sitting at the back of my mind, nagging away.
Tuesday 15th September, 1992
Getting close to diary delivery time and the game doesn't LOOK that much different from last month. Of course, it has had loads of new features added and all the sound but what comes across in pictures? Graphics, and they're still the same. Better crack the old whip on the graphics department, Also on the agenda is making up a demo to take to EMAP towers. It would be a really bad idea to wait until the day to try and make up a demo considering what I've just done to the game regarding its internal arrangements.
My initial strategy of making up a hybrid debug 'all-in-one' version but with a live load was flawed. I couldn't get the thing to load in and survive, and it took ages to make up the disk. The trouble with the live version is you get no help if it crashes. Next plan is to make up a full live version with relocating code and all. This also failed. Getting desperate now, so start putting border colour changes into the code to see where it gets to. Didn't even hit the first one. This is bizarre.
After two or three hours of head scratching I decided to just download the first part of the game to the Amiga and have a look at it. "That's not my code!" I cried. I had linked the game together in the wrong mode, so I got a Cross Products Executable code instead of pure binary. Realisation of the problem caused so much relaxation I could have gone into hibernation.
Mid-afternoon and the demo is made up, loading code and music in on its own. Lucky that as I'd already wrecked the show demo disk trying to put the new version on it. Now I can concentrate on making up a new demo with new graphics knowing that I have a fall-back disk.
Wednesday 16th September, 1992
Took delivery of the first part of the new ship layout with new graphics. This map is huge and I really mean HUUUUUGE. Phillip has gone mad on the scale. I've never had a map this big before and driving around it highlighted a new bug. The scrolling system blew it going downwards after about a screen and a half.Rather a fundamental error in there somewhere and finding it means remembering how it all works. Those bits of code assumed to be working do tend to get forgotten about.
Thursday 17th September, 1992
Last minute thrashing about to get a demo ready to have some pictures taken. The first map is nearly complete and at least you can fly over it. The extra size has highlighted a need to generate the attack formations near the player. Trying to destroy a wave of fighters spread over the whole map width would be too difficult.
Last minute panic problems includes a renegade tank that drove off the screen because its control data had been corrupted by our operating system looking for extra chip RAM. The program is already more that 512 K long. That's just too big to manage. I'll probably drop the sound out now that it is working.
Uridium 2 enters its fifth month of development, and once again we'll be there with the very latest graphics and white-hot game design secrets, all direct from the horse's mouth! And remember, this is the ONLY place you'll read it...
PIC: (Below) For the sake of the ECTS demo, Andrew re-used some old Paradroid 90 graphic blacks to flesh out the backgrounds inside the dreadnought.
PIC: (Below right) Having destroyed all the generators inside the ship the mission is complete. The droids must then find the lift-off pad, transform back into Mantas and make good their escape.
Andrew Braybrook Amiga Softography
Graphics: John Cumming
Music: Jason Page
O.O.P.S Kernel.: Dominic Robinson
Graphics: Michael A. Field,
John W. Lilley
Music: Jason Page
Graphics: John Cumming
Music: Jason Page
Sound: Steve Turner
O.O.P.S. Kernel: Dominic Robinson
Graphics: John W. Lilley,
Music: Jason Page
Graphics: Colin Seaman,
Music: Jason Page