Category Archives: Adventureworld

Dear 16 year old me

Dear 16 year old me,

As part of my quest of porting over your old Microbee computer game  ‘Adventureworld‘ that you wrote back in 1990, I’ve been studying the code and trying to work out what the 16 year old me  was thinking at the time.

I realise that that you believed that this was your first real big ‘awesome’ application, but seriously you really need to learn some standards NOW before you get yourself into real trouble.

Here are some comments of your coding standards and what you need to do to improve yourself if the 16 year old me has any hope of coding in the future. These guidelines will also make it easier for your future self (and others) to read your code 20 years later. Trust me, you really need to do this!

  • Please don’t use the variable name ‘O’ for anything. Ever! I mean seriously don’t do it! Imaging having to read this line in the future and trying to work out what it means:
    IFO=8ORO=127THEN364ELSEIFO=10ORO=24ORO=27THEN365ELSEIFO=13ORO=11THEN367

    This is especially important when you are mixing up the letter O with the number 0 . Combine that challenge with a dot matrix printout of your source code where the zeros aren’t slashed,  it will create extra headache for your future self. O, 0 look the same. Dear 16 year old me don’t do it! Don’t even get me started with the variable you used called O0. It’s just madness!

  • Please put a little more thought into your variable names. Granted that 16 year old me is just learning to code, and the basic language was rather limited, but seriously if you are going to be using x,y coordinates then maybe you should use variable names such as X and Y. Don’t use B and C (where C = X coord and B = Y coord).
  • Please put some more thought into the structure of your code. The GOTO command especially is evil, Pure evil. It does have its place though – just not here. As a example, don’t do this
    22 GOSUB23:GOTO25:GOTO99
    23 ...do stuff...
    24 RETURN
    25 ...program continues...
    ...
    99 ..do some stuff..:GOTO22
    

    You are looping all over the place.  Don’t embed your subroutines within your code, and try and bring all your code together in the one place.

I’m sure if the 16 year old me followed these guidelines it will make you a better programmer, and your future self would be able to port and understand your game a lot easier. Get started on it now! OK?

Cheers,

– Future Phil.

Note: You will be pleased to know that I have matured as a programmer since the 16 year old me started coding.

Tileset and maps

Today I have completed a little milestone and that is converting over Adventureworld’s tileset and maps into a format that can be easily read by lua.

The current map game data is in a format like this:

DATA "CMMMBBBDDDBBLLLLMMMCCCLLLMMMC..

I’ve decided to use the application Tiled to build up the tileset and maps which will make it much easier to visualise and adjust each screen. It also automatically generates some nice lua tables which will make it easier to import into the game as well.

tileset and maps
Adventureworld current tileset

The original tileset was created using  graphic characters (think of it as creating a custom font). The characters were 8×16 pixels, which looked rather small on today’s big screens. I have made a design decision to double the size of the graphics so each ’tile’ is 16×32 pixels in dimension. Having to convert decimal numbers into binary and the translating that into a pixel byte in screen brought back memories of designing sprites by hand with graph paper at school. 🙂

tilesets and maps
Current sample of a map of Adventureworld

The original game had a tilemap screen size of 64×15 characters. After adjusting the screen resolution with the new ‘doubled’ pixel size of each tile, the final game resolution ends up being 1024×480. I have currently made the game to be 1024×512 but will most likely adjust it to 1024×768 (a better ratio) later on down the track. I have attached a sample map (screen4) to give you an idea on what the game currently looks like.

Next milestone

Constructing the different game states (such as menu, help, instruction screens) and the flows between them.