Development Diary Archives - June 2003

29th June 2003 - Build 628

Been another Awesome week as Jumpman Goes.. I spent most of it adding in a lot of new elements which allowed me to get a lot more levels completed. This actually involved a LOT of work. The 'code' size of Jumpman-UC is now over 53,000 lines..

I now have the following levels done..

• Easy Does It • Bombs Away
• Jumping Blocks • Vampire
• Invasion • Grand Puzzle I
• Builder  

I started off with Grand Puzzle I. For this I needed to expand the bomb to also handle 'bonus bombs' which meant it had to flash a graphic animation when the bomb was collected. You can see from the screenshot below that I added an outline for 'bonus bombs' which shows where the collection graphic is animated. I also changed the way triggers where drawn in the editor.

The Scripting for 'Grand Puzzle I' is the most complex of the beginner levels (not that I would call it complex).. It basically uses Triggers to make segments of the ladder visible (and active) as they are hit.. Below is the script for the first trigger segment (the one in white above)

All this does is check to see if Jumpman is carrying a ladder piece (which is set when Jumpman collects a bomb) and if so, plays a sound, makes the ladder piece under the trigger visible and makes the next trigger active so the process can continue again and again.. the script for the other triggers is basically the same.

Offcouse I had to make Jumpman able to carry ladders but that didn't take too long.

Next on the list was 'Jumping Blocks'.

This was actually very simple as it's basically the same as the 'Bullet' object except which it hits the player it makes him jump instead of killing him..

I then worked on getting 'Bombs Away' done. I had a lot of fun doing the 'Falling Bomb' object.. I spent a while working on a much better looking explosion graphic.. (Hopefully all the graphics will look a bit more modern at the end of it all)

The Original 64 Graphics (with a bit of shading)


Much nicer looking Explosions

When rendered, it looks like..

Bombs Away (Doesn't the Falling Bomb look like a Goldfish..)

The 'Falling Bombs' basically detonate when they hit the last girder (from the bottom up) in their path.. I chucked in a heap of bombs and it was a lot of fun dodging them all.. Ofcouse.. the entire object could be changed by replacing the graphic with a water drop and splash for something different..

Last for the week was 'Invasion'

I had to implement the 'Shoot' special ability for Jumpman.. This allows him to fire upto 3 shots. I then spent a while extracting the graphics from the 64 original.. the top 8 basically animate as the ufo flys around the screen and the bottom 16 graphics are drawn over the UFO as it crashes to the ground (I still want to do some much better graphics for the burn..).. A lot of the graphics in the 64 Jumpman just colour cycle though the colour palette as part of their animation.

Ufo and Burn Graphics

It takes a long time to actually get a new object into the editor.. One of the of the more painful things is getting a new object to render in the editor as that uses a lot of vectors to draw the object (so it can be scaled). I would have to say that the UFO is probably the most complex object to do as it has a lot of little bits. Still a good session of Pink Floyd helps..

Ufo Object as drawn in the Editor

And in the Game..

Collecting the Single Bomb while Falling in 'Invasion'

I also fixed a few more little issues and Scott found a problem on 'Vampire' which my jumping code didn't handle (jumping of the top bit onto one of the side ladders).. Turned out to be a single line change. I've made the jumpman interaction code very flexible (although very long) so little things like that are easily implemented.

And Speaking of 'Vampire'

We're Coming to Suck your Blood

The scripting for 'Vampire' was very straight forward.. Each bomb has the following scriptlet.. (well a few bombs do have a extra line or 2 to make platforms/ladders disappear)

Which basically enables a Vampire Bat every 3 bombs collected. There is a BombsCollected and BombsRemaining global variable which the script can use for any custom action.

Also enhanced the scripting by adding a few things and the ability to display some debug text on the screen..

The object tool bar is starting to get a little fuller now and more and more objects get added..

The Object Selection Toolbar

Put in a Idle mode for Jumpman. This plays a little animation (such as waving, stamping his feet etc.) if he is stationary for a few seconds (doubt it will happen much )

Was thinking that it's been 20 years since Randy released Jumpman.. How time fly's.. Well done Randy on making a Classic which is still loved today.

22nd June 2003 - Build 621

Been another fantastic week for Jumpman.. It's all starting to fall into place now, which is extremely satisfying..

Must thank the Jumpman Lounge for the Coverage for Jumpman - Under Construction. It turn's out that Matty is a local Perth boy so it's a very small world. (also means I can drive around and get a Jumpman cup at some point)

The biggest thing that happened this week was the implementation of the Scripting Support. I am using Microsoft's Visual Basic Scripting support which is built into Windows. It was actually quiet simple to implement (once you figure out which function calls to make) and it basically doesn't require much time at all to process.. Ofcouse you have to make all your objects COM's (which I did) so you get the penalty there.. The Script is built up out of all the little scriptlets the various objects have and it's great to actually play the first level completely.. ie. the Girders/Ladders vanish when bombs are collected. When objects Vanish, they actually fade out which looks very cool..

If there is a scriptlet error, I bring up the following error dialog..

Opps. A Script Error!

Not much to look at but at least you get an idea what went wrong.. In this case I tried setting an invalid property of Ladder12.. (It should of been '.Active' ). Different Errors are brought up depending if its a usage or a syntax error of the script. If there are any Script Errors, the Game still continues to run so you can test other aspects of the level.

Implemented the 'Trigger' object which runs a scriptlet when run over. This should allow for more dynamic level creation. And will be used in a few of the 'default' levels.

Fixed a few minor bugs which I had noticed (and written down on my notepad).

Also added a few more Sound Effects from the 64 original and ripped the rest of the music. The only sound I cant get is a clean version of the falling sound.. I guess I will have to work out how to generate it..

Changed the Music Manager to support marking music as usable as for End Level Themes. The Game Engine basically picks a random tune (which has this mark) when you complete a level.. Works well enough.

Scott suggested that I put in a Single Button Jump. What this means is that you don't have to press 'Up' at the same time as pressing 'Jump' to jump.. Both the Atari and 64 Version needed the 'Up' key but It makes the game simpler if you only have to press a single key.. It's a definable option in the Game Options so it doesn't matter either way.

Spent a little while moving the keyboard scanning code over to use Direct Input. This works a lot better than the standard 'Windows' key code. The way I constructed it was to present a virtual joystick to the game engine.. At the moment, the joystick is populated via keyboard presses but if I actually Implement real joystick support then I only have to change one piece of code.

You can now define you own keyboard controls via the following Game Keys dialog..

The Default Key Set

Also got around to putting in the game pause mechanism.. It bring's up a small dialog which gives you the option of Resuming the Game or Returning to the Editor.

The Game Pause Dialog

Upto now, I've been pressing Alt-F4 to exit.. better late than never I guess.

Man.. I really got to hate the Microsoft Development system I am using this week.. When I first created a few game objects (via the ATL wizard) I forgot to mark them as requiring 'IConnectionPoint'. Now.. Visual C doesn't allow you to change what the wizard generated for you.. you can edit the source files and add it in manually, but as soon as you add a new method or property to the code, it fricking recompiles the object removing the manually added 'IConnectionPoint' reference.. The only way to solve it was to remove the entire fricking object and start again (takes a while..)..

Also spent a while playing the PC (Dos) Jumpman (get it here). A great job by Jeff.. (Though it does remind you how bad PC Speaker sound actually is, though that's not Jeff's fault). Scott suggested that Jumpman-UC comes out with various graphic packs (Enhanced, 64, Atari and PC) which would allow people to play the style they like.. The library support Jumpman-UC has will defiantly come in handy for that

This week I will be trying to get some more of the actual Levels playable (I only have the Beginner Levels in the editor) but even those still require a lot of work.. Will be doing 'Bombs Away' (creating a BOMB object) and Grand Puzzle 1 (Bonus Bombs and Ladder Building) done first. Since most of the frame work has been done now, they shouldn't actually be too hard to do.. The hardest will be 'Robots I' as that requires me to add in the monster 'Path' support into the editor.

15th June 2003 - Build 614

Been a Great week for Jumpman.

Finally finished all the of the movement code and thanks to thank Scott Haag ( for helping me test Jumpman. With his observations I was able to get jumpmans movement just perfect. He has done some great games himself. Check them out.

Enhanced the Image Manager so the Transparent Colour can be specified for Bitmap (BMP) files... Ofcourse this isn't required for TGA as they contain their own Alpha layier. It is also ignored if the image type is a Jpg. The Image Manager now loads, BMP's, JPG's, GIF and TGA.

I also got in the bouncing off girders as jumpman falls to his doom (well a sore head) and It works really well.. Put in the Appear effect code at the start of the level.. Jumpman can either fade in or vertically wipe in (as per the original).

Spent a bit of time getting the state machine of the game/level player done so it now correctly handles the game states. Offcourse many of them aren't done yet.. (ie Intro, Menu, High Score).

Put in the Bonus Decrease code which decreases the bonus value by 100 every 4 seconds)

And for the Big One.. Bullets are now in.. Bullets are now created (as per their properties) and float across the screen until they can fire at jumpman.. I spent quiet a while dodging 20 Bullets for fun (Bring on the Matrix..). All the collision code is in now so they do hit the player and cause him to fall/bounce to the bottom of the level.

Also spent a bit of time getting more sound effects so at least it sounds a bit better than nothing.

This week I will be putting in the bomb collection code aswell as implementing the scripting language support (which I hope will not cause me too much grief). Once that is in.. I will work at releasing the first public beta (in a few weeks) which will at least allow you to play with it.

Thanks to everybody the last few weeks who have sent emails.. I Spent a day working on a IRC chat room (via HTML) so come on in and have a chat..

8th June 2003 - Build 605

Been quiet a Successful week. Work was a bit thin so I managed to spend a lot of time on the controller code for Jumpman.. He now Climbs, Runs and Jumps just like the original (only smoother) but it was a week of learning how to do things slightly differently.

Getting the jumping to work turned out not to be as easy as I thought.. Because of the movement method I was using (the joy of frame based movement), the jump gravity was being turned into some huge number which basically swamped the jump code.. After talking to a few people on a game development forum I worked out that if I changed my movement code to another method then things would work and they did.. The initial code I had in my mind when I started plonked right in.. Well I guess that's what you get when you try something new.. first attempt never quiet works.. Also fixed the scalling of the speeds when playing at different screen resolutions.

Anyway too cut a long story short.. It's really nice to be able to play all the levels (well I can't collect bombs yet). The interaction between the editor and the game player seems to be working just great. A lot of time was spent fine tuning the controller code so things behavied correctly. The original jumpman movement rules are probably more complex than most people think but I'm happy I've gotten very close to them.

I've still got to do the falling/bouncing off girder code (when he dies) but hopefully that won't be so bad as its just a bits of the existing code put in a different order.

Also worked a bit more on the game options (was the video option) by putting in the Sound settings and the default run speed people prefer (saves have to change it every time to play a game)

The Game Options Screen (Ignore the Skin..)

Progress is going well.. My beta testers are happy with it so far and I am hoping to get a public BETA release out in a few weeks once I can collect bombs.. the Bullets work and the Visual Basic Scripting has been implemented..

Also started collecting sound effects which I hope to also start putting in this week aswell as all the sound code..

I did spend 4 hours yesterday cleaning, polishing and waxing my car. Got a lovely shine on it now (red so it goes Faster.. )

The Jumpman Mobile..

1st June 2003 - Build 512

I'm sorry to say that basically apart from a bit of playing and fine tuning with the player movement code i've done squat.. This week has been busy finishing off some other things and working a little on my other project (private programming job). I have enjoyed the week off from Jumpman though, as I've worked very hard the last 2 months and think I've gotten it upto its current stage reasonably quickly.

Apoc, my tester did send in the following :D

Look Familiar ?

Did a project line count on Jumpman-UC.. Currently 39,951 code lines (out of a total 47,867 lines). So you can't say I've been that slack..

I've got the entire week off this week so I will be working more on the movement code and getting him jumping and climbing ropes/chains correctly..