Development Diary - Ah Diddums

June 10th 2004

Wow, is it nearly a year since I started Booty!

Another date another game started. Always fancied doing this one, but every time I tried to do the teddy graphics, it looked pants. By some miracle, I was bored at work and decided to have yet another go at the graphics – they came out better than before, so I persevered and ended up with something that looked almost usable!

The game allows you to control a Teddy Bear trying to get back to his nursery. To do this he has to travel through a number of toyboxes. The original Spectrum game claimed 100 toyboxes, each adding a new toy-nastie to avoid. Only time will tell if this claim is true.

To get out of each toy box Ted must collect blocks to make some stairs so he can climb out. Also in the toy box are various toys, all of which kill ted if they touch him. Ted can fight back though, by throwing things at them or freezing them with help from the Jack-In-The-Box.

If all the toys are destroyed, a nasty lump of indestructable plasticine is let loose!

So, on with the remake...

I animated the movement, increased the frames from 2 to 9, so it should look a bit better. After a lot of tweaking, I finally had the teddy complete. Next was to start the code and see how he looked on screen.

A few hours later and teddy was running about on screen, looking very alone, but quite effective.

Next was to get the game mechanics running, this involves picking things up, dropping them again, firing the pea shooter and of course how to get the blocks in the right order to climb out.

In the original, the blocks kind of ‘auto-positioned’ in the right place if dropped close by, this could be done easily, but the hard part is the stacking order. Again, in the original if you had all the blocks in place but in the wring order, you simply stood over them and continually pressed the pickup and drop key. The blocks would then magically re-arrange themselves into the correct order.

I may bypass this and have either a rule saying blocks must be dropped in order (ie all yellow ones first, then red ones.. until the steps are built) or have them dropped in any order.
Only time and code will decide the solution to this one.

So, next up was the blocks. Get them drawn and try to work on the pickup and drop routines.

June 18th 2004

The original game had a strange and quaint way of picking up objects. I suppose to save memory, the block or object was just attached to the main teddy sprite and followed it around the screen instead of actually showing the bear holding something.

I think the new game needs to fix this and so I set about drawing the not-moving teddy holding a block. I shoved this into the game and wrote some code that allows him to pick up blocks. Then changed the sprite image to show this, and removed the block from screen.

Ted can now pick up and put down a block – wow!

Next I have to draw all the animations for him running (in all directions) holding a block. This can then be switched at the point the block is collected.

I have played the original to level 5 so far, and as each level increases, so does the number of nasties to avoid. So far we have 3 soldiers, a train that when crashes into the steps, scatters any stacked blocks about, and two spinning tops.

There are also various things to pick up and throw, like boots and a ball. But first I need to get the pickup and drop anims in.

Here is the first picture of the new Ted sprite (full size).

 

July 1st 2004

Been on holiday, so not a lot done...

Spent some time doing the anims for when Ted is carrying the blocks. I will also have to do ones for when he carries the boots, ball and peashooter! Argh!!

In the meantime I added the new anims of him carrying blocks into the code and wrote a switching routine. This works really well at the moment apart from a few keyboard scanning routines – sometimes it’s a bit hit and miss.

I drew up some nice text for the score bar and added a fully working score, lives and box number panel. It’s all looking rather splendid, although still no backdrop to play in. I will get this in next as I need some kind of guidelines for where things can move and where blocks need to be dropped to form the steps.

I re-drew the teddy bears face (side views) to make it look more cute, then had to transpose it to all the animation frames.

August 8th 2004

Finally added the toybox background and limited the movement of the teddy so that it stayed within the box. Completed all the blocks and wrote the code to randomly place them within the box.
Its starting to fill up now!
I then began to work on the pick routines so that Ted could pick up all the blocks instead of just the one. This proved problematic. It was ok when he was just picking one up, but if he was actually touching 2 or more, then they would all be picked up but only one would be dropped, loosing the blocks!
I tried to add some code to fix this, but life got in the way. I will have another go later.
I am beginning to get some flickering similar to Booty – will look through that code and see how I fixed it.

I dug out some awful midi tunes and then located the C64 sid music for the game. I converted it to wavs, then added some nice reverb and finally dumped each tune out to MP3. They sound pretty good, but there will be an option to switch it off in case it starts to send you insane!

I will add a sceenshot next update - but the sun is out and there's a cold beer in the fridge :-)

August 26th 2004

I re-coded the pickup and drop routine and now it seems to work fine, not loosing any blocks as yet, but the pickup key is a bit on the fast side. You can pickup and drop at the same time, and sometimes end up pressing the key a few times until the block is correctly picked up. I will try to fix this later.

I drew a nice soldier and added him to the game. He now struts up and down the left hand side of the screen, pointing his gun at Ted. No collision detection yet, but it does look nice.

Next on the agenda is the actual placing of blocks to form the steps to get out. I knocked out some testing code that completely failed, so I started again. This time it worked and the blocks are built into steps as they are placed there. There is still a small bug that I haven’t managed to track down yet, but time will show it better.

With this stage complete, it means that the first level (box) can be completed. So now I have to complete all the other things like the other objects, the peashooter shooting, the jack-in-the-box and of course the killer plasticine!

Not to mention the collision detection !!

I added the ball, and along with it the routines to pick it up, drop it and throw it. This was a bit hit and miss, and still has a few problems. Its very problematic with the collection and throwing routines, but I will have to do a lot of tweaking. There is still a problem with dropping blocks in the right place. Every now and again one does not drop properly, but its variable gets set. This means it is not counted as a step (10 needed for next level) but can’t be picked up again !

I think some serious debugging is on order soon, before the game gets too complete and full of code. Best to get what I have working before moving on.

As promised, here is a screen shot (50% reduced).

 

September 9th 2004

Doh!
I spent ages trying to find out where in the code this white rectangle was drawn. It marks the position for dropping the blocks to create the steps. I went through every line of code twice and still couldn’t find it, then it suddenly hit me… it was part of the toy box image!

I continued to play the original to see what things get added as the levels go on – I can’t see how there are 100 levels in the game, because it pretty crowded as it is on level 10 with 3 soldiers, a train, two spinning tops, two dolls, an aeroplane and something I can’t quiet figure out! Only time will tell and of course the infinite lives poke ;-)

I added the dummy (pacifier if you’re American) and the bottle. These are two of the three objects that can be collected for points.

I may reduce the number of boots from 2 to one.

A bit more playing of the original, and I discover that when Ted collects the rattle, dummy and bottle nothing much happens. No score, no extra features! I wonder why this was and so went in search of the answer.

As far as I could tell, the only difference collecting the items made, was that the jack-in-the-box lasted longer when it froze the toy movement, but this could have been an illusion! Its not a bad plan, so I may implement it if I can’t find any other use for the items.

Having no luck with the answer, I added the collection routine which gives Ted 10 points and displayed the collected item in the score bar. I then had doubts about the image used for the beach ball. I tried a few other ideas, and then had to insert the new ball into all the other animations of Ted. It now looks much better.

I also modified the Ted sprite a little bit to help fill him out and make him look more round and solid.

I still have a wild flicker problem that I will have to figure out later, as much of the game is complete now. I just have to add music, and the collision routines.

Of course I have to add the other toy sprites, but all the code is there, just a matter of pasting it and changing the sprite name.

 

September 24th 2004

Decided to try and tackle the flicker problem.
One by one I removed all the function calls – no effect.
One by one I removed all the graphic calls – no effect.
In the end all the main loop was doing was displaying Ted on a black background and still there was a flicker. I guess this could be down to the crap machine I am developing this game on. It’s not my usual machine, but the one at work, as the game has been written during lunch breaks etc (read at any time I got bored!). It’s a crappy old thing with only 8mb graphics ram and a 700Mhz CPU (remember them!)
I suppose I will have to take the code home and see how it runs on a proper system and also put in a request for a better work PC !!

I have decided to aim to complete a level fully. This means implementing collision, death, the jack-in-the-box and every aspect of the game. Then I can move on and add what ever is required for the next level.

So, I began work on the Jack-in-the-box. Having drawn him, I then have to add him to the game along with various timers and collision checks. I then added a timer so that he only pops up for a few seconds. Next I added checks to all the current toy movements so that they all stop if the jack is out of his box, and re start again when he’s back inside. Now that’s working fine it’s onto the next stage - destroying the toys..

October 9th 2004

I discarded the boot in favour of a new weapon in toy box – a little surprise for you!
I added the image, the collection drop and throw routines.

I added the plasticine image in readiness for when all toys all destroyed.

I added the last usable item – the pea shooter – and along with it the pick up and drop, and the firing system. So Ted can now pick up the pea shooter and fire peas around the screen.

Now it’s time to destroy the first toy – the guard. Because he’s the only toy in the box, when he gets splattered the plasticine should appear and move about randomly, and basically get in the way of Ted collecting blocks.

I added the code for the collision detection for the guard and all throwable objects. This worked a treat and the guard vanished to be replaced by a small (as per original) explosion. I then added a toy counter, which when it reaches zero, the plasticine is activated.

I added a few lines of code to make it randomly move about, and watched as it meandered about the toy box happily.

This about wraps it up for the first level apart from the collision with Ted. This will go in next, and then it’s just a matter of adding all the other toys.

I must admit, that having 100 levels seems a bit over the top. I mean, no one can survive with more than 20 objects anyway – the screen area is just too small. I will keep adding toys until its impossible play – then call it finished !

October 23rd 2004

Hurrah!
My new work PC arrives. Just have to set it all up now and make sure the network, web, email and security are all working. It’s a nice new 2.8Ghz Dell (not that I’m a fan of Dell or anything, just that its miles better than my last 700Mhz POS). The graphics card has 128m ram too, so things should look better when I start testing again.

I must remember to copy ALL game files across before I let the old machine go. Now that would be a complete disaster if I lost all my source and image data. I backed it up to CD and Pendrive just in case.

A few days pass…..

Finally got my work system up and running smoothly and got the dev kit back in place, complete with source and images – ready to continue…

Death of Ted.
I drew the animation for Ted’s demise and added it to the main code. Bunged in a few checks and extra anim routines, and space for some music - things worked fine – eventually. At first Ted refused to animate, then he jumped straight to the last frame – now he’s behaving himself.

I added a check for number of lives, and put in an end game message if it reaches zero.

What I need to do now is to add a small bit of code to reset all the variables so the game can begin again. I can just add this to the intro section without too much hassle.

I adjusted the code for the plasticine and then decided in a fit of madness, to try and fix this annoying pickup/drop bug that’s been around since I started this game.

I sat down with a string cup of tea and worked my way through he code – adding counters, and checks, double-checks and loops – eventually and finally the pick/drop routine works how it should. Phew, no more keyboard bashing in frustration when you can’t pick up that ball in time, and end up getting killed.

I added the collision check between Ted and the plasticine, making level 1 fully complete apart from sound. Its now time to start adding the extra toys/levels.

November 11th 2004:

Boom!
Oh no… my new work PC has just blown up!
I was sat having a snack and a cuppa when suddenly the PC went off and filled the room with a bloody awful stink! Something was burning deep inside my Dell!
With no time to spare I bravely flipped open the lid and pulled out the hard drive, hoping that it wasn’t that that had exploded.
I called the IT guys who as usual, were of little help. It was then I noticed an empty office across the corridor belonging to a lady who had just gone on maternity leave. On the floor was a PC exactly the same as my smouldering wreck. Cunningly I swapped over the hard drives and prayed…
Phew – the drive was fine and the source code safe. (not to mention all my work stuff!)
I put in a request for yet another system, and set about making a backup of all the source files and images.
With that little bit of excitement out of the way it was time to get on with some work…

Before I moved on to the next level I tweaked the code and added a game reset function that basically resets all the game variables ready for a new game to start. I added some checks for various key presses to smooth things out a little, and am now happy that level is complete.

On to the next one..

I added more code to set the new level variables, and using the graphics I had already done, the game lays up to level 4 before running out of new toys to add. I have yet to add the collisions for the new toys, both into Ted and being destroyed by the weapons. Next it’s back to PSP for some more toys.

Interesting…
Having spent the best part of an afternoon playing the original, the amount of toys expected is somewhat disappointing. I wonder if Imagine never expected anyone to get any further than level 15?
I was led to believe by the inlay text, quote “There are nasties (the level indicating the number)”, that there would be an extra toy added per level, but that is not the case. There is a maximum of only 12 toys. I am currently playing on level 15 (with unlimited lives) and there is still only 12 toys. (3 soldiers, 1 train, 2 dolls, 3 tops, 2 planes and a tank) See screenshot of how busy the toybox looks with 12 toys! (this is at level 15).

So, that mean less work for me, unless of course I add a few of my own ;-)

Bouncy bouncy…
I noticed that the ball behaves differently on the new version. The original bounces of the walls and makes it a great weapon to use in later levels. My version just stops when it reaches a wall. I will have to add some kind of distance count, and make it bounce back until its reached its set distance.

I added this code and things worked great until it came time to pick up the ball again, then for no reason, 2 balls appeared. One on the ground and one in Teds hands.

I went through the code and found nothing that drew the ball under the conditions set. I added some debug info and ran the checks again – still 2 balls on screen. I went through the code looking for bits that draw the ball – all correct with no misplaced routines. This is weird, and very annoying. It’s something simple yet bloody hard to track down. I’m guessing its just some bad logic somewhere. The ball is drawn on the ground until Ted picks it up. It is then removed from screen and the Ted sprite is replaced by the one with him holding the ball. He can then put it down again and the reverse happens. This all works fine. If Ted throws the ball, the ball sprite is drawn on screen, Ted is switched to him holding nothing and the ball movement is plotted. The ball reaches the end of its travel and stops. When Ted tries to pick it up again, the Ted sprite is switched but the ball is still visible on screen!!! Argh!!!

During my checks I also found another bug – one of the toys, when thrown to the right can not be picked up again. This is now fixed and so its on with the ball bug search.

Found it!
At last I located the problem. The routine that checks how far the ball travelled when thrown was checking to see if the distance had been reached. If it had it reset the ball direction to 0 (not moving). What I forgot to do was to then change the distance to stop the routine firing continually – resetting the ball direction to 0 all the time. Doh!

Anyway - here's a pic of how its looking at the moment (reduced of course!) ... more soon...

 

 

November 25th 2004:

With the ball problem sorted out it was toy time again. I drew a nice animated train and added it to the game. This little beast sits at the top of the toy box and randomly sets off across the screen. When it hits the place where your bricks are stacked, it scatters them back around the toy box.

I put in a random pause and waited… the train trundled across the screen and stopped. I then added a check for position, and removed the sprite and replaced it with an explosion. Next was to add a function to check which blocks have already been stacked, and then to re-distribute them around the toy box after the collision. This worked fine so now its time to add more toys.

I drew a doll and animated it. Imported it into the main code and ran the animation. Bloody aweful. I got another image and tried again, this time it was much better.

I played the original up to level 19 and still only 12 toys on screen. I guess that’s it – after all, it is only 16k game.

Created the sprites for the other doll and the other half doll half top thing and added them to the code. Implemented the random movement and assigned them to levels so they appear on certain levels.

Created the tank sprite and added that to the main code. This one has a different movement pattern to the rest of the sprites. It moves horizontally across the screen at varying speeds, so I had to create the movement for that too.

Now I have all the sprites/toys that the original had, the question is, do I add some more of my own for the later levels?

Anyway – now that all the graphics are done I will have to concentrate on the code and get all the collisions working.... but didn't !

Decided I wasn’t keen on doing the coding so I set about adding some sound effects. I found a couple on the internet and modified them to fit the game. Slipped them in and did a few tests. I have sound effects for most things now, picking up, dropping, throwing, stacking and shooting the pea!

I think I will get the game to the same stage as the original and then make a decision as to what to do next. Either release it or add more toys. So I’d better get on and do the bits of coding then.

I will also have to add an options/info screen for people who haven’t played the original and to be able to switch off the music. Also will have to add some hidden extras like all my other games.

 

December 3rd 2004:

I added the final two sprites (two planes) of the original and put in the code to make them randomly change direction.

I then added them to the code that decides which toys to add for which level.

I made a start on the collision code, and now half of the toys can be destroyed by the ball – a lot to go yet though.

I tweaked the block-step-building code so it works better and blocks don’t get left out.

Had a long crack at it and finally got all the collision code done, so now the game is playable in the real sense. So, for the ‘original’ version it was play-test time.

Bug1: Ted dies for no reason on far left – fixed.
Bug2: Too easy – fixed (increased speed of various toys)
Bug3: Pea remains active and kills toys when not visible – fixed
Bug4: Plasticine only moves horizontally – fixed
Bug5: Train kills Ted when not visible – fixed

To do:
Add music.
Play test.
Do ‘extended version’ with more toys.
Add cursor control.

After playing the game for a bit I became more and more aware of how bad the running animation was of Ted. I took the plunge and re-animated his run, which turns out really well – but I then had to change the other running animations as well. (hold the ball, holding the blocks and holding the peashooter)

I drew, animated and added a new toy. I placed it in the game but as yet there is no collision check.
I think I will add a few more.

More play-testing:

Bug6: Ted sometimes runs past his anim cycle when dying and causes an error – fixed
Bug7: Blocks appear in places impossible to collect them – fixed (I think!)
Bug8: Toys not reset when game restarts – fixed
Bug9: Blocks can not be picked up if dropped in certain places – Argh!!
Addition: Limit the amount of times you can use the ball – its too easy to take out half the toys with a few throws. – Added :-)
Addition: Speed up some of the toys to increase the difficulty level. Added :-)

Added another toy..

More play testing and bug fixing. Also added another toy, so that’s 5 more than the original. When you get to the level though it becomes very hard to survive. Careful use of the ball and jack-in-the-box is essential.

In the original, there was a limited amount of times per level, that the jack-in-the-box could be used – I have added this feature also hehe !

Here is a reduced screeny of level 8.

 

February 23rd 2005:

Sorry about the long delay...

Now we are back - almost.... this is the dev diary up to the Feb 23rd... some of it was done before that but I can't remember which bits, so I decided to stuff it all in one lump.

Bug10: Toys can be destroyed when paused (jack-in-the-box open) – fixed
Bug11: Toys not reset after game over so next game Ted died for no reason – fixed
Bug12: Jack failed to die – fixed
Bug13: Jack failed to come alive for next level – fixed
Bug14: Jack failed to come alive for new game – fixed

Added a last level and highest score indicator (only if you get past level 1)
Added a special feature! (only if you get past level 12)

Finally added the music.

Bug15: Ted sometimes over-ran his frame count (different) – fixed.

I added a rating system, so after each game you will be given a rating based on the toy box number you managed to reach. More info about this in the special feature.

Added the cursor control along side the normal QAOP controls.

Game complete (hopefully) – more play testing.

Bug16: Teds lives were checked for 0 instead of less than 1, this caused probs under some circumstances. fixed
Bug17: When you exit from the special section, Teds X and Y cords were reset. – fixed.
Bug18: Can’t toggle music on and off. – fixed
Bug19: flashing letters in intro ran over their anim count on some occasions. – fixed.

Collated all images (8mb of them!) and compressed then down to 800k !
Converted all the long WAV files and music into MP3.

Phew - very nearly there now.... Beta 1 now being tested...

Here's the intro pic... (reduced of course)

 

March 1st 2005: Release time sonn...
Changed the footsteps sound, now it’s much better.

Created the first test build and did some playtesting on other systems. The only problem I found was a bug so..

Bug20: Footsteps sound when Ted is killed and is not moving.


Finally, and after many comments, I implemented the block placement order. This means that the blocks must be placed in the correct colour order to form the steps. I’ll let you work out the order, its not too difficult. Now we’re into final testing and the first release should be coming real soon….


March 3rd 2005: Oh no...
Had along look at the final code and stupidly decided to try and optimise bits of it. This caused no end of problems with the end result being the game plays but only corrupted graphics are shown and only half of the info panel is working!
I sent about half a day trying to undo all the tweaks, but finally gave up!
I now have to sort it all out…
So… rip out the old FPS control and put in a new one – no effect…
Change all the viewport settings – a bit better..
Double check all the frame counters and anim loops – yep now things look better..
Still having trouble displaying the collected items though.. so I think I will have to re-write the functions to make the displaying of the bonus images part of the screen drawing routine instead of the collection routine. Why did I put them there in the first place???
Oh well.. after a few minutes hard toil things were back to how they should be and Teb was running about happily again.
I also did a few late additions and tweaks while I was in the code, so hopefully things are complete now.

I also made the decision to have the game run full screen and not windowed. This eliminates a bloody awful flickering that sometimes appeared. It also makes the game run better, so I hope that you folks don’t mind.

More playtesting (through all levels of the game) threw up a few tiny problems that I have hopefully now fixed. I changed that anim of the plastacine slightly and added a message to the ‘loading screen’.

A few playtesting hours later….

Noticed that some of the images were looking very bad on different monitors, so I did a bit of tweaking. Also the music wasn’t playing on anything but the machine it was compiled on. After a bit of messing about I re-created the pak file and the music is back.

More testing revealed that various sounds were missing despite being in the pak file !!!

I wiped the pak file and re-created it from scratch. Compiled the exe again and things seemed to be fine.

Sent the game to Dion for testing.

Bug 21: Plastacine fails to appear after level 16 - fixed
Bug 22: Pause mode caused problems when exiting. - fixed
Bug 23: Spectrum stuck to right hand wall - fixed
Bug 24: Pea stuck to left hand wall - fixed
Bug 25: Toys die when Ted is close holding object - fixed
Bug 26: Instant death syndrome - added imunity after death for a few seconds

...and probably more we forgot about...

But now its done.... ready to release....

Hope you enjoy it...