Download the 30 day trial of Xara X now!
www.c64.sk for all the
latest scene news
X-Scape (StudioX64 game feature)
- Click on the "Download" icon to jump directly to the download
Welcome to this game feature for X-Scape, StudioX64's latest PC game. I thought because of the nature
of this games creation it might be interesting to do a mini feature, so here we are. Feel free to jump directly
to the bottom of all this text and download the game. Remember it's a full game, and totally free of charge!
So where to start then... I was sitting browsing the internet one night, I think it was about October 2nd 2002 if memory
serves me correct. For some reason I decided to visit www.BlitzCoder.com For
those not in the know, BlitzCoder is a support site for the great Blitz Basic package.
If you don't know what that is then visit their website first by clicking HERE!
In short it's a PC based application programming language to aid in the creation of good looking, fast running games! - gratuitous plug out of the way :)
Anyway, so there I was visiting the BlitzCoder website... I was browsing through the site, having not visited it for quite some time,
about 8 months I think :( when suddenly I came across a competition notice. I started to read and found they were asking
for games written in an 8-bit retro style (obviously fully coded in Blitz Basic). I sat and thought about entering for quite some
time, about 10 minutes :) then decided against it. It was really the fact that the deadline was set at just under 2 months time.
I went to bed and slept on it, then the next night thought, arhh what the heck let's give it a go! - I thought that maybe the
fact the deadline was so near might inspire me to try harder :)
With the deadline in mind I set about thinking of a game idea. I think I knew from the onset that it wasn't going to be
possible to come up with an original idea AND code it in the 2 months. Instead I decided to re-make an old C64 game which I
wrote 6 years ago, called "Square Scape 2" You can download my original C64
version as a PRG file for most Commodore 64 emulators by clicking HERE!
Square Scape 2 for the C64 was originally featured on Commodore Format magazines covertape in 1996/7. The game was later re-published
for the German market by C.P. Verlag GmbH. My choice of remake was obvious to me as Square Scape 2 was by far the easiest game I ever
wrote on the C64, and certainly the quickest to write in terms of programming. It was time to delve into my loft....
I managed to find my humble C64 and 1581 disk drive. I also located a copy of Square Scape 2 on a disk which still actually worked!
I loaded the game up and did some preliminary notes on what the conversion from C64 to PC would entail. My immediate thoughts were to
the level designs. What would really be handy would be to convert the levels directly onto the PC, saving me the very laborious task of
re-designing them all. After searching and searching many disks I gave up looking for the source code, and decided that porting the levels
would simply not be possible. The level data was actually compressed in order to fit it all into the C64, and I'd be damned if I could
remember how I compressed them :)
From Pen To Screen
I didn't have a great deal of time to do much planning, so this was kept to an all time minimum. The first thing to do was to "grab" some
of the original C64 graphics and convert them to the PC. I started to wonder.... wouldn't it be great if there was a tool for the PC which
could somehow extract graphics (sprites & charsets) from C64 games... hurm.... "oh yeah I wrote that application!" Suddenly remembering my
flag ship tool, the C64 Sprite / Charset Ripper. I set upon ripping the original character set from SS2, along with
the sprites and main game blocks. It wasn't as easy as I had hoped, the game blocks had to be built up from smaller 8x8 pixel blocks. There was
quite a bit of pixel editing in Paint Shop Pro done, along with converting the bitmaps to the C64 palette supplied for the competition. The pixel
editing actually continued all the way through the project. As I would play the C64 levels and design them on the PC I would suddenly find
more and more graphics which I had not yet converted / painted, I would have to keep breaking from level designing to draw them.
On The Level
After I had thought about how I was to display the levels on the PC, I set about copying the first level from the C64. Initially this was all
done by hand using plain old Data statements. I actually sat looking at my C64 and counted the blocks on the screen and hand entered the data
onto the PC like thus; Data 000,000,001,002,003 etc etc. I then wrote some code to actually load the graphics, read from the data statements
and draw the first level. It certainly looked fairly accurate :) With the level displayed on screen and a copy writen to an array table, the
next step was to get the basics working. By this I mean, get a square moving round the screen under player control. Piece of cake! - or so I thought...
C64 version (Square Scape 2) level 1
PC version (X-Scape) level 1
And So The Problems Begin
Ok picture the scene, there is my little square in the top left corner of the screen. If I press down it moves down, if I press right it moves right etc etc. Movement
is 1 pixel at a time and is smooth though incredibly slow (unuseably slow). I take the movement speed upto 2 pixels at one time, and it goes faster, looks ok but judders slightly every
now and then. I take it to 4 pixels and it looks much nicer so I settle on this for the time being. At this point I remember some of the articles I
read regarding speed dependant programming in Blitz Basic (or any PC language for that matter). In short if you move an image from one point to another on
a Pentium 500, and you update it's position every frame refresh. The time it takes to reach point B from point A will be different if you run the same
code on a Pentium 1.4 gig machine. Initially I didn't realise this would be such a problem, until I started running the game so far on slower computers. On a fast
machine it didn't really matter that the square moved from one side to the other quite quickly, however on a slow computer you would be sat there waiting.... wondering if the
square would ever actually make it to the other side of the screen. I knew from the start this was going to be a problem but it wasn't for a while that I realised
it would govern the majority of problems I would find when programming this remake.
Life was so simple back in the good old days :) when I wrote the C64 version. I remember my block checking routine was a piece of cake. If the player pushed the joystick
right then you would check 1 block to your right, act accordingly and start a move count. The move count would increment upto 16 pixels then you would loop back to your
block checking code. This was all very easy and painless, oh why are PC's the way they are!!! I had to forget everything I ever learnt on the C64 and instead work out
a super duper block checking routine. Picture this if you will.. Your main square has to get from point A to point B (simple eh?) - your player move code has to be speed
dependant, meaning you must check each time your square moves a pixel (or 4 in our case), the amount of elapsed time since the last 4 pixels it moved. This means that if the
game is running at full speed on a nice fast PC, you will only ever move at the fastest rate which I set (eg, 4 pixels). In order to fix the limit this means it's possible for
the square to move fractionally, though in reality your square won't actually move until the count hits 1 at the least. What it does mean is that if you run the game on
a slow computer, if the computer can not update the screen quick enough the game knows and moves your square any number of pixels in one jump. In theory the time it takes
to go from A to B is constant no matter what speed machine the game is run on.
And So The Problems Continue
On it's own this was difficult enough to get fully working, then came the further problems... I now had to think about collectable items on the screen. I initially coded the
routine checking the block under the players current position as it moved along. This worked fine on my computer, until... I decided to download something big whilst I was in
the middle of programming. This in turn slowed my computer down soooo much, that as I moved around the screen it was actually possible to jump clear over collectable tokens, rendering the game useless!
I had to think, and fast! - I set about re-writing the collectable routines, which took about a week to fully finish and bug fix. I ended up with a fairly complex piece of
code which as you move around the screen, not only checks blocks under your current position, but also checks every position you ever pass. This means that no matter how slow
the machine running the game is, you ALWAYS collect tokens when passing over them. I have a confession to make at this point, I very nearly gave up on the whole competition at this point.
I am not even sure what made me go on, but somehow I managed to finish the movement code and after many hours testing got it bug free.
C64 version (Square Scape 2) level 18
PC version (X-Scape) level 18
Finally Some Progress
I decided to have a break from the game at this point and wrote the level editor. I guess it only took a few nights coding before it really became useful, I think I was still
adding features to it only 2 days before completing all the level designs. The level editor allowed me to hand convert all of the original C64 levels over to the PC in the quickest
possible time. Without the editor I would surely not be finished even now. The way I converted the levels was to have my C64 version sitting next to me, and to simply play out all of
the levels. Yes I really did manage to remember how to complete them all, even after 5 years or more :) I added the additional graphics for the game as each individual level required them.
Editing them all by hand in Paint Shop Pro. With the level data all complete I decided to get away from programming for a few nights, and turned my hand to writing some music for the game.
After some promising conversations with a chap called "Tracer" on IRC I thought that maybe I could use the original Sid tunes from my C64 game, and simply play them through a DLL extension
on BlitzBasic. Sadly this never came to be as the DLL still required some work. So what was my next choice? - Well I toyed with converting all the tunes to MP3 then realised how big a download
it would make the game (remember I wanted to include about 10 tunes). I also remembered MP3 wasn't free for use in commercial games etc, so decided to give this a miss. I then remembered
having written a few tunes in ScreamTracker and the like using ModPlug, and so began project "Nightmare Music!"
In And Out Of Tune
The faithfull level editor
Composing the music in ModPlug
I must have been crazy to attempt what I did next! - I decided to rip the music from my SS2 game on the C64 and found the original music editor I wrote the tunes in (Demo Music Creator 4.0b for those interested :)
With the music in editable form, I sampled all of the individual instruments from the C64 to my PC as Wav files. Using these instruments and copying the notes by hand from one screen and package to another, I was able to re-create
the tunes in ModPlug on the PC as .XM files. Using this method I converted 6 in game tunes, along with the get ready music from the original SS2 game. I decided out of boredom really to re-write my own game completion music, keeping it
in the C64 Sid stylee ("Complete.XM" in the game zip). I still needed a title screen tune and ripping this from the C64 was not possible, once again I had to create a new piece of music in the Sid stylee ("TitleScr.XM" in the game zip).
Finally there was one further piece of music written and this was for the intro screen. All in all I think the music took about a week to compose.
Shortly after finishing the music I set about tidying up some of the game looping, and set about writing the mundane things like life counters and score etc. After this was done I was able to produce a
working test exe file of the game. I passed the test game onto my wife and asked her kindly to begin testing it. The good news was that it ran on her computer - did I ever think it wouldn't? :)
The only game change which came about as a result of the testing was being able to fast quit and start the level again. The way I originally had the game meant you had to wait each time you died for the
get ready message to scroll onto the screen, before you could press "enter". I changed the game so if you pressed "enter" before the scroll reached the middle it immediately went back to the current level. For those
who wondered why there was no level counter in the game, I think the logic behind this originally was to make it harder to remember the level layouts. I am not sure if this really ever worked, and to be honest
I think I simply forgot to add it into the remake version :) ce la vie!
The introduction screen was next on the list, and it didn't take very long to make at all. The longest part (aside from the music) was probably the logo. I designed the logo all in one colour but it was quite difficult to read when
I added all the background colours. I had to hand edit the image in Paint Shop Pro and manually draw the outline, believe me it took ages! The final look of the logo paid off as it looked much better having the outline. I drew on
inspiration from the C64 version for the title screen, if you have seen SS2 then you will know what I mean. Did you realise that even the rotating squares were the original C64 sprites? ripped straight out of SS2 using, you know who's
sprite and charset ripper :) Next came any coders most hated part, you guessed it the documentation. Although it's probably the most important part of any game, it is also usually the most overlooked. I think I made the instructions
from the title screen fairly good and concise. As the project drew near to an end, I later wrote some additional documentation in the form of a readme.txt included in the game zip file. With the introduction finished I now
turned my efforts to the game completion screen (GCS). As I mentioned earlier I wrote a special never before heard piece of music for the GCS. I thought the GCS turned out quite good in the end, and it didn't take all that long
to program either (for obvious reasons I have not included screen shots of the GCS!)
The End In Sight....
C64 version (Square Scape 2) title screen
PC version (X-Scape) title screen
So there I was, about seven weeks later and the game was almost finished. I still had a week to play with and only a few odds and ends left. I had a great idea to link a crackers intro screen onto the front of the game, to add to the retro feel of the game.
If you haven't seen one of these screens before I shall explain. A game would be published and available to buy in shops, most of use would buy these games :), some of us would not :( The people who didn't buy them were generally the people who would instead
copy the games freely amongst their friends (kinda like mp3 swapping now-a-days). These people later started getting competitive about who was first to copy the games, so they decided to place their handles on intro screens before the game would start.
These intro's all the time becoming bigger and better. Later, these groups of people decided to add cheats to the games and various improvements (or so they thought!). Cracking games soon caught on like wild fire, especially in the UK! - Anyway where were we?
Oh yeah, so that's why I thought the intro screen would look cool. I managed to knock something half decent up in a couple of evenings, then added the obligatory C64 colour bars onto a fake decompressing routine :) After a couple more nights tidying up the
game was just about finished.
The retro cracktro intro! (X-Scape)
Decompressing colour bars on the PC version (X-Scape)
I was incredibly pleased with how the final game turned out, and even more amazed at how well it's run on such a broad range of computers (unless you know better). If I had to make one single change then it would be to add a level counter :)
I even managed to finish the game with 4 days remaining until the competition ended, or at least that's what I thought. The competition has since been extended until January 6th 2003. Will it win? - truth is I haven't the foggiest! - I know I worked my
socks off on this game, and I certainly feel it was worth every moment. I would like to take this opportunity to thank my dear wife Victoria, for putting up with me during the production of X-Scape. She was most helpful in testing the game and surely bias in
complimenting me on the game music :) - Thanks Vikki!
I hope you have enjoyed this special game feature, and be sure to tune in again next time. By the way there maybe, just maybe a cheat screen in X-Scape. Who knows? .......
Example screen shot of later level
Before downloading we would be very grateful if you would click on the advertising banner at the top of this page, it will open in a new window. Thank you.
Technical Specs Minimum:
16 bit display graphics adapter
320 x 240 full screen resolution / 640 x 480 windowed screen resolution
Sound blaster compatible sound card
Windows 95/98/ME/2000/XP, this game doesn't run on NT.
Technical Specs Recommended:
Pentium III 500mhz
GeForce II graphics adapter @ 16/24 bit colour depth
Sound blaster compatible sound card
All programming, graphics and design by: Paul Kubiszyn
Game testing by: Victoria Kubiszyn / Paul Kubiszyn
Copyright StudioX64 Software 2002