Thursday, March 18, 2010

The games I’ve made


It could be said that at one time in film history, two contrasting figures were Orson Welles and Ed Wood. Therefore it can also be said that in the realm of homebrew videogames two contrasting figures could be Derek Yu and... aww damn, myself?

Yes, readers of HG101, welcome to my Plan 9 From Outer Space!

(scroll to the bottom for a download link with everything)
.
.
.

Actually, perhaps the Ed Wood comparison is incorrect. I don’t suffer from Wood’s more perverse traits, I’ve never made porn games, I don’t have someone like Bella working for me, and my games don’t even reach the level of so badly kitsch they’re awesome (that status is reserved for Red Seeds, which I’m hoping receives an English Asian release for the PS3).

But if a tortured analogy to Welles and Wood allows me to put my own name alongside the astoundingly gifted Derek Yu, then so be it. I recently read an article on him, one of the best articles I’ve seen, in GamesTM magazine issue 93, and it reinforced my admiration for Yu’s creative skill (especially his deft use of randomisation), and it also convinced me that he might be the indie scene’s own Miyamoto. He said how he’s always been designing games since he started playing them, if only on paper, and went on to explain how he created his own studio at the age of 14 (I started when I was about 15). The inventiveness and creativity he showed, even at an early age, is astounding.
(naked Derek Yu image taken from indiegames.com)

What annoys me about my own games is not my lack of programming skill, which I could have easily improved if I’d made the effort. Rather it’s my lack of originality, especially considering that today I professionally review games and, like most critics, find it so easy to point out creative mistakes and then suggest ways of improving said game. Give the new Vandal Hearts a different art direction, more like the original. Or make Agarest Senki more intuitive for the beginner. And so on... Considering that I made these games not for profit but for my own amusement, and that of my school chums, there is no reason why I couldn’t have been more daring with regards to the themes.

My first game was a text adventure, which by its very nature isn’t constrained by visuals or themes. You can do anything with words, and words are easy to conjure up. And yet I went with a Tolkein-esque setting and a mechanical dragon. Yes, a dragon. A staple in derivative crap since the days of whenever. I could have gone with Mad Space Puppies, or a Seven Breasted Woman From Brazil. But no, I went with a dragon...


Something else which I’m proud of is Trampoline Gunmen (not Tramampolining Gunmen as I once called it), which I will dedicate a whole entry to tomorrow. I swear, if I had a proper dev team and some marketing budget, I could probably scrape some profit with a cheap PSP release. That beautiful oblong screen would be perfect for it. Unfortunately I never implemented all the stuff I’d written down, and with newer Operating Systems beyond Windows 98, most people’s computers stopped being able to run these DOS games anyway. Hence why I eventually abandoned my ambitious TG ideas.


QBASIC

During the late 1990s a guy in the year above mine at high school, an Italian named Luke, spend his lunch times coding in QBasic. He was working on an epic RPG (pictured, LOFT2.BAS in folder).


It was a wonderful era, with the PS Net Yaroze community releasing regular demos, Digitiser in full swing on Teletext, and long summers that never seemed to end. I got talking with Luke and he explained the joys of QBasic. I’d used it before to play Nibbles and Gorilla in Middle School, but at the time hadn’t realised I could make my own games using it. He copied the files which were on the school’s computers to floppy, plus he gave me all the stuff he was working on, and so I tried my hand at game creation.


Another friend, Dominic, I later discovered also coded some cool things in QB, including this rather awesome Space Invaders clone. The front-end is sharp, the use of colours good, and altogether it’s a very professional little title.



I coded all the below games using a Windows 98 PC with specs which, in 1999, was considered a powerhouse of the time. Today they run haphazardly on Windows XP, and probably not at all on Windows Vista or 7. But they’re emulated quite nicely in DOSBox, and for anyone interested in trying them, I highly recommend you use this.

I’d also recommend QBasic, even today, to anyone interested in trying their hand at programming, but has no prior experience and has no desire to take it very far. I do not do reading instruction manuals – I’m a man, with a hairy chest and a beard, and when I do stuff, I barge in and get it done. Manuals and instructions are for women and small children. Real men can operate the VCR and heavy machinery without no stinkin’ manual. And so it went with programming: I wasn’t going to spend time studying before hand. GameMaker I find clunky - half an hour of fiddling and I couldn’t even get a text box to pop up. C and the “plusses” require far too much reading beforehand (though I acknowledge that they’re probably the best language to learn for serious coders). PASCAL was even worse. Visual Basic was good, with a click and drop interface, but after two high-school classes in it, all I’d managed was a Tamagotchi clone where you tortured a butterfly.

An artist's impression of me and Luke, during those lazy, innocent summery wonder years, where you could skip class to code some games, before riding your bicycle to the soda shop to play some pinball.


Why QB is a good starter language:
1) You can, within seconds, creating a working program and even a game. After QBasic I tried to learn PASCAL, and after struggling for 20 minutes with a demo program which drew some lines, I still had no idea what I was doing. 30 seconds with QBasic and I’d progressed beyond HELLO WORLD and had made a quick 3 line text adventure. QB grants instant gratification to the wannabe programmer. It’s quick and easy, and very versatile. Be warned: you risk ending up learning just enough to make a few simple games, but never anything high level enough to anything really interesting.

2) The HELP FILES are probably the best I’ve ever seen, for any program. You don’t even need to study them – you can glance, copy, paste, and suddenly you’re coding your own stuff again. It allows for rapid learn-as-you-do coding. Other companies should look at QBasic’s help files and learn a lesson. Neatly organised, they explain pretty much everything you need to know in a very short amount of text. I much later went against my genetic machismo and borrowed a few books on QBasic from the library, but it was honestly quicker and easier just to read the bundled help files. As I said, I didn’t need no books on the subject.

3) You can do a surprising amount with QB. The DRAW, LINE and CIRCLE functions allow for some reasonable creativity and, despite the fact that QB lacks the ability to display the colour orange (without some tweaking), you can get some nice NES-style visuals out of it with enough effort. I’ve even seen polygon models and voxel landscapes rendered with QBasic.



QB COLOURS (I think they went like this?)
0 Black

1 Blue
2 Green
3 Turquoise
4 Blood Red
5 Purple
6 Brown
7 Light Grey
8 Dark Grey
9 Light Blue
10 Light Green

11 Light Sky Blue

12 Light Red
13 Pink
14 Yellow
15 White

So if you want to claim to have coded something, without relying on external Game Creation tools, the easiest (laziest) option could be QBasic and DOSBox.



MY GAMES

What I love about these is not their quality – they’re mostly awful and not worth anyone’s time but my own – but they recall an era where my frame of mind was wholly different. Before the injustices of the world slowly crushed my spirit. Playing them again, and reading the code, I can actual feel glimpses of this past frame-of-mind, devoid of the bitter cynicism that corporate bankruptcies over the years has created.

Unfortunately I never kept records of when I started these projects, so I’ll go through them as best I can remember, and kind of fudge the order from then on. I will be saving a write up on the Trampoline Gunmen series, my best creations, for tomorrow. This was also the first time where I featured SAVE functions for a game, and even the ability to save the required SPEED, so you didn’t have to input it each time.

Most of the EXE files should work under Windows XP, otherwise use DOS Box. I’m afraid that the timing with DOS Box, even with Cycles set to maximum, is kinda screwy and everything runs too slow (or has glitches). So it’s essential that you play around with the numbers, or if you can in-game, manually alter the speed until it runs right. Also, most will require you to put CAPS LOCK on, though a few automatically do this. Remember to turn it off afterwards.


John’s Fortress
The first game I ever made, it started off as a three-line text adventure which I coded the night I brought QBasic home from school, housed on a standard floppy disk. The next day I spent my lunch break and, if I recall, my art class working on it (along with classical art, we had weekly art classes to learn how to use Corel Photo Paint proficiently). I tried to incorporate as much from the help files as possible, including randomisation so you were forced to play everything in sequence. I also screwed around with different screen modes (a bad idea). My big problem was that for some tasks, like taking the water, there was an incredible number of things people might type: check water, take water, grab water, read water, read water bottle, take the water, drink the water, and so on. Only much later did I learn how to use an INPUT statement that searched an entire sentence for a specific word. Here you have to type precisely what it needs or it doesn’t work. In the uncompiled version I had about 30 variations for each situation, but this wouldn’t compile, so I trimmed it down to about 5 obvious ones (try to keep what you type simple). Most kids in my class liked this, with one playing it to the point where he timed himself and claimed he could finish it in under 20 seconds.


AkiraImmediately after finishing John’s Fortress I started this, an action game based on the film/manga Akira. It was also the only game whose code I destroyed – a grossly over-ambitious project which, had I had more experience, could have been great.

With the only two Akira games I could think of at the time being the Famicom text adventure, and the awful Amiga game, I thought that if I could make something slightly more fun, the brand recognition alone would propel it to stardom. The basic premise was Spyhunter with a big boss battle at the end. You drove your red bike up the street and could fire ahead of you in a long line using the laser gun from the film – I think you had like 50 shots or something. Up to two pink Clown bikers would attack you at a time, each being able to fire left or right. It was really cool because if they were on either side of you and one fired, you could slow down and let his bullet hit his friend on the other side of you. There were also yellow road blocks hurtling down the road, and it was possible to lure the Clowns into these to be destroyed. If you hit the roadblocks, or were shot, you’d lose some fuel. You started with a set amount and the goal was to survive 20 miles to the Tokyo Stadium, at which point you’d fight Testsuo. You could alter the speed of your bike, which affected fuel consumption, and if you lost too much fuel through collisions or poor driving, it was GAME OVER.

The Tetsuo battle took the form of a Space Invaders clone, with the yellow Akira bio canisters from the film appearing and then being hidden underneath Testsuo’s pink and grey mechanical-flesh body as he manifested himself (I just randomised the CIRCLE function a lot). You had to move left and right firing your remaining laser energy to hit the canisters. There were 7 canisters partially visible beneath Tetsuo, and if you missed you could see the long black line of emptiness which you had cleared in his flesh (real time damage display!). Each time you hit a canister he redrew himself, but it wasn’t difficult to know where to fire the laser. In the end Tokyo blows up in a giant ball of light.
Unfortunately my lack of experience killed it – I went partially with ASCII rather than all drawn sprites. This led to a few weird problems where the ASCII conflicted with the drawn images, and the constant need to update the screen made it slow. Also, different computers have different ASCII sets I discovered, meaning it looked totally different on my computer to how it did on the school computers and my friend’s computer. The controls used the Numkeys and so tended to jam a lot (after this I discovered how to code using the arrow keys). I also didn’t have any grasp of computer speed or timing, meaning it tended to run WAAAY too slowly on other people’s lesser-specced computers. This taught me a valuable lesson though, and all subsequent games started with a screen requesting GAME SPEED. Other problems included only much later learning that the CINT statement rounded numbers – until then, your distance travelled was augmented by like a dozen variables, including fuel amount, number of Jokers on screen, proximity to enemies and roadblocks, and so on. Somewhere along the line these miniscule numbers would go awry and the distance travelled in the status bar would shoot up to about half-a-dozen decimal places, borking the screen in the process.

I also tried to do far too much, including incorporating WAV playing and GIF loading code. The game would start by loading a GIF of Kaneda walking towards his bike, an aerial view taken from one of the Akira manga books. After this the bike-riding Kaneda song from the film would start playing. Unfortunately because I’d borrowed the code from other people’s projects, it conflicted with itself and made the whole thing buggy and unstable and I could never get the two sections to work at the same time.

Eventually, after pouring what must have been close to 50 hours into the project, in a fit of rage I deleted the entire thing and vowed never again to spend so much time on a single project. Sadly I don’t have any archives with the code on it.
----

Dice
Dice game inspired by the same dice game in Mystical Ninja on the SNES. As you can tell, it in no way, shape or form evokes any of the good feelings found in Mystical Ninja. In hindsight I wished I’d added a stupid story or something to this. I don’t know why I made it, apart from the desire to have another finished title under my belt. The kids in my class loved it.


Flight Simulator
I saw a screenshot of a really old wireframe flight-sim in some magazine (for DOS?), and decided I’d try to create a pseudo-copy. It didn’t need to be accurate I told myself, it just needed to trick people into thinking there was something clever going on in the background. I spent a 6 hour train journey writing the code up by hand, while some guy in the chair opposite mine, with his wife, gave me a deranged psychotic look. On reflection, I think they may have been on drugs, drunk, or possibly just trying to freak me out – fresh-faced teenager that I was. Either way, that’s the most memorable thing about this project. Those two nutjobs on the train. After a couple of weekends I dropped this.


Wimbledon
The fifth game I started after Akira, Dice and the Flight Sim, this was technically only the third game I completed: a Pong clone in colour. Except, because multiple key presses had a tendency to freeze DOS, it’s One Player only. And since I couldn’t be bothered to create AI, the enemy paddle follows the ball continuously, and you score only when you rebound the ball. It’s basically racquetball.


AsteroidsThis tech-demo exists because I wanted to experiment with altering the angle of a DRAW statement using variables which could be changed in real time. Tap the arrow keys and it changes the number in the draw statement, as opposed to having a separate line of code drawing each conceivable angle. The asteroids and stars also move at different rates to simulate foreground and background movement. I think there’s only 4 of each, and when they go off screen they randomly appear on the other side. There’s not much to do except fly around. Like so many other games, it was the development of graphical trickery which led the design of the gameplay. I toyed with the idea of doing some kind of space-trading game, like Elite in 2D, but my mind wandered long before that.


Aces High (no EXE, can’t compile)
I think this was done after the Asteroids game, since I think I included the ability to alter the line angle in the DRAW statements in real time. I also recall spending ages painstakingly drawing the aeroplanes – and today their DRAW statements are so long and complicated you can’t compile the game! The title was inspired by the Iron Maiden song, and the gameplay was a less-elegant version of Space War. For a start you can only fire one bullet each (I only worked out how to do arrays, and therefore multiple bullets, MUCH later on in my coding life), and you can only travel in one of eight compass directions. I would later learn how to do 360 degrees of movement with variable speed for each angle, but I never did anything with the knowledge.

In hindsight I wish I’d done this a lot different. For a start, I’d change the theme from Iron Maiden to Porco Rosso. One blue and one red plane, like the film’s end. I’d also simplify it so that a single hit means victory – I included energy bars and variable damage to increase game time, but friends in my class hated this since it took WAY too long. I made a proto version with one-hit kills, and this proved popular, but in my arrogance I never properly implemented it in this final version, thinking I would later improve the game. The visuals should also have been simplified. No fancy DRAW statements for the planes, just a basic aeroplane shape and square bullets to keep the draw times quick and the overall game speed up. As it is, most of the processing power is spent drawing all those bloody lines! I also had an idea for a scrolling background of clouds and a sky, which only moved when both planes where going in the same direction, but to do this I would have definitively needed to trim the detail those stupid planes. Boredom killed the project though...


Tankers
Unfinished tank game, killed by the fact that I didn’t pay attention in maths class and couldn’t use Pi or any other kind of function that would help me draw an accurate projectile arc. As a result the projectiles moved in a kind of cuboid trajectory. I later got a handle on Pi, circular area, and other such essential knowledge, but it was rather late in my coding life and I never really put any of it to use outside of a few tech demos which drew heartbeat lines. The game was probably inspired not by the myriad of other tank games out there, but the film THE BEAST OF WAR, which featured a group of Russian tankers invading Afghanistan. Bloody good film.


Hanoi Hilton
Ever play Metal Gear 2 Solid Snake on the MSX? Well, it featured the Hanoi Hilton tap code, where you had to count people’s tapping to spell out words, or in the case of the game, find new frequencies for the codec. I made a simple program to do this using numbers. It is rubbish.



The First Age (no EXE, can’t compile)
This must be played with DOSBox’s cycles set to maximum, otherwise the jumping physics don’t sync properly. I stole the title screen from Luke’s RPG, and the game was basically an excuse to show off a “music playing” section of code I taught myself. I recall that Mathew Smith’s Manic Miner featured the Waltz of the Blue Danube, or some such classical piece of music, so now that I had a piece of music, a crappy single-screen platformer seemed the way to go.
Derivative Indiana Jones storyline coupled with some diabolically broken jumping was the result. Unfortunately, the way the sound code worked, I couldn’t easily change the speed of the game or the number of loops is did while playing the music – in a bizarre situation which I can’t ever recall understanding, the game synced itself to the music being played and was locked at that speed. Meaning on slower machines it went all weird – if you drop the DB cycles, you suddenly gain a double jump because the timing has gone off. If played on max cycles though it’s similar to how I remember it was supposed to be played. You can double jump by clipping the edge of the platform, and to win you need to jump and double back on yourself at one point (which is technically impossible in the real world once you have momentum, but if Mario can do it!), then jump over a snake hidden on one platform, reach the upper right and jump over the end of the screen to land near the gold mask. There’s some cool scaling effects when you grab it, based on increasing the length of the DRAW command.


Slipgate
I made this right after the above platformer, because I was still obsessed with having music in my games. I thought it sounded like Jaws, but in hindsight it’s just annoying here. The game plays like Gyruss, with your ship moving in a circle and attacking the red ship.
If you wait around for long enough the Slipgate becomes unstable you get a really cool warbling effective, the result of the circles moving around as they expand. I still like this, since the gameplay is fairly playable and the effects almost give the impression that I knew what I was doing – as opposed to screwing around with the CIRCLE command.



War Dogs of Solaris (aka: Crisis on Polaris)Recoil in horror as you read some of my earliest and worst attempts at fiction. The name on the title screen doesn’t even match the name IN THE GAME. In my defence, your honour, I was a young teen – I knew not what I did! Anyway, if you can ignore the terrible plot to this, you’ll be astounded to find the game is actually quite unplayable. I’d been playing Mercenary all weekend and had momentarily become obsessed with wireframes and flat green landscapes.
In an afternoon I cooked this up but, not being bothered to even try to create wireframe models, populated the planet only with an invisible enemy and a black sphere you needed to collect – unfortunately it had the worrying tendency to not display properly, and with the enemy constantly closing in on you, actually winning was a nightmare. I thought if Kenji Eno can have invisible enemies in Enemy Zero, then so can I!
Ahh yes, these were the experimental days of the Sega Saturn, and I have fond memories of bidding on weird Saturn imports online before eBay became crappy. There was a distinctive smell during the era, one of warm summers and drying lawns. In hindsight I wish I’d made it more like Everblue, with no enemies and instead a sonar which pinged the closer you got. It might have actually had some semblance of fun. As it is, it’s delightfully impossible.


Stealth Dude
I made a deal with an student archaeologist friend: if he discovered a new dinosaur, he’d name it after me, and in return I’d make a game featuring him. He never did discover the dinosaur (actually, he became a farmer in the end), but this Metal Gear inspired game features him. It’s also very loosely based on a hedonistic night out, which featured some mind-altering “food” and events (Fear and Loathing in Las Vegas style).
Stealth Dude is almost perfect, let down only by my laziness to implement proper collision detection, and the fact that I randomised the number of Dollars you need to steal (this can make playing tedious if the number was randomised at the maximum 16). At the time I had trouble dealing with the problem of: how can the code detect when you’ve entered a solid object, like a wall, and revert you back to your original starting position if you can enter said wall from any side. The outer walls are simply collision based on IF PLAYER > NUMBER THEN PLAYER = -1, because the EAST wall is always in the same place. Much later I solved this by creating an additional variable which, every time the direction key was pressed, became the number travelled (which was either negative or positive depending on which way you went). If you entered an object (IF PLAYER = WALL) then it subtracted this variable from the X, Y co-ordinates before anything was even drawn to the screen. It was hugely effective, and I should have gone back to fix this, but I was too lazy, so instead walking into walls kills you. Also, the randomisation of items to collect can make the game impossible, since you’ve a timer. LESSON LEARNED: randomisation is bad, and so is impossible games. I probably should have also added more colour to stuff. Still, you can escape from rooms if the dollar is in a dangerous place, and it’s still a cool experimental title.


ArcamusBased on the Atari 2600 game, Adventure. This was made after Stealth Dude, and took advantage of better collision detection which I learned. It also has an “engine” of sorts, and signifies my attempt to streamline my coding. Every room is built using the same building blocks (6 or so cubes of colour), each governed by the same code, just with different location variables. Some rooms also have items in them, and the enemies are identical, with no AI. I was also experimenting with detection of computer speeds, since inputing numbers is a pain – but unfortunately it doesn’t quite work. I highly recommend you play this, but you’ll need to experiment until you find a speed where the monsters are fast enough to catch you if you try to run past them, but slow enough to allow you to run back in the direction you came. Like Adventure, there’s also an Easter Egg. If you kill all the enemies, then grab an invisible item in a tiny walled off room, and then take it and drop it in a big empty grey room, you’ll be able to grab the glowing circle and discover something totally awesome. And by awesome, I mean pointless.


Castle AdventureThe first ever PC game I played was Castle Addventure, by Kevin Bales, during my first year at primary school. Mr Bales was apparently only 14 when he made it, back in 1984, but at the time it captivated me. Only a few years ago did I finish it for the first time, and I’d say that it has probably influenced my view of videogames quite considerably over the years. I love how he was able to create so much detail using only ASCII, and there’s actually quite a lot of depth to the game, especially when it comes to using items. I wanted to create something similar, so after finishing Arcamus I started my own Castle Adventure in ASCII. I’d finished the design and basic engine code, but grew bored before I’d implemented item usage or anything interesting. As it stands, it’s a ghost castle. If it looks interesting, then please find and play Kevin’s original Castle Adventure.



Panda Commanda
During Metal Gear Solid fever back in the day, there was a website where you could put your details in and get a MGS-style codename – someone I knew got the codename Panda Commander. Since I was also playing through the original Metal Gear again, I decided to make a game based on the remote control missile segments, since they were especially fun. This is a great title, with its own boss at the end, but like everyone who played it said: you should have designed each stage, instead of having them randomly designed. As it stands, the first stage is fine, then there’s about a dozen or so which are stupidly easy because the blocks end up in ridiculous places, then you finish it. Or, you could end up with a stage impossible to finish. I’m convinced that with a little more thinking, I could have refined the randomisation to create meaningful levels. Or I could have knuckled down and actually been creative. Laziness I tell you, for the love of pies, it was the thing which crippled me!


Hunt For Red October
Why would I think that creating a Battleship game with the added of complexity of submarine depth would be a good idea? Why would anyone think that’s a good idea? Why would I base it on a film I can remember nothing about? Perhaps I was being post-modern and intentionally wanted to make a terrible film-to-game conversion. Well, if I had, I probably should have turned it into a platformer. Be amazed at the fact that you can actually SHOOT YOURSELF with your OWN TORPEDOS. Enemy AI is pure randomisation. Sonar helps with working out enemy depth. Please do not play it.




MAX
This started off as my attempt to get QBasic to display the colour orange, and it sorta works. Then it mutated into a game based on the Mad Max films (playing like Spyhunter, and reminiscent of my Akira game), but I lost interest before doing anything with it.


2050AD
A fairly late project of mine, this was another text adventure – though I never finished it. Inspired by a description I read on Digitiser, of a text adventure they played with the same starting scenario. I never discovered what it was, and I grew bored with this before completion. The code for keeping stock of your inventory also proved bloody troublesome.


Unnamed Text Adventure
This is why 15-year-olds shouldn’t write text adventures – horrible, horrible, horrible writing. Another attempt at a text adventure, this time purely multiple selection. I reckoned if I could put a few dialogue trees in, some of which reached the same conclusion, I could knock up a text adventure in an afternoon. Well, after a few hours I realised I’d need to write another 30 entries or so and gave up. Again, this was based on a Digitiser entry I had read. I also seemed to have an obsession with dingy hotels and amnesia. Hey, if it worked for Shadowrun on the SNES!

Cyberpunk
I attempted this 3rd text adventure directly after the above two. This time I decided to use randomly generated situations based on a pool of words, most with a cyberpunk theme, to avoid having to write anything. Why waste time writing a whole bunch of scenarios when the computer can do it for you? Honestly, I think I may have been inebriated when I coded this, but today it stands as something which, thanks to the absolute lunacy of what it tries to do, is actually funny. I am amazed at how ridiculous some randomly generated situations can be, many of them worse than a lot of internet Engrish, and on at least one occasion I laughed hard to point of projecting coffee out my nose. Derek Yu used randomisation in Spelunky to create something beautiful, whereas I used it to create something frightfully wrong. Yes, I think I’ll head in the direction of some tramps!

----- AI STUFF
I went through a phase of trying to create perfect AI. This resulted in about half a dozen files, none of which are even remotely worth loading.

Rboto
I watched a documentary on the development of sentient AI for computers – and one experiment involved creating an AI that learned to hunt another AI more efficiently. So I wanted to make an experiment like that. The two coloured blobs feature rudimentary AI augmented by 3 parameters: attack, defence and speed, and each has to draw from a limited pool of points. I can’t remember how they work, but the results of changing them are often unexpected and the whole thing is mostly pointless. I had the intention of creating a save function for this, so it could record the best possible set of parameters against other sets and, in effect, have the AI learn to be more efficient. I got bored though and stopped.

Food AIBloody hell, did I make this? The code is in my personal folder, but I don’t ever remember typing this. The creature gets smarter each time it dies, and more stupid each time it feeds.

Money AIMake bets on how long the creature will survive.

-----


SPACE
A really late effort, coded sometime around 2004 I think, in an afternoon. I was attempting to recreate two-dimensional outer space physics in ASCII – this was inspired by that Star Trek film where Shatner has to go back in time, and in order to do so has to gravity whip them around the sun.
The game works, kinda. You need to speed past the sun and get caught in its gravity force to be slingshotted around and increase your speed beyond the maximum which your thrusters can achieve (which was “ONE”, I think). I recall managing to do this twice and get the number pretty high.


Catch Me
Long after finishing Trampoline Gunmen 2, I came to the conclusion that multiplayer games were best (what I was really thinking was that they’re easier to make interesting, since even some crap games are enjoyable with another player). Two balls and a timer bar. If the bar is your colour, you’re faster than and can catch the other player. When the bar runs out, the roles are reversed, and the other player can catch you – think of Pacman and the ghosts, in that once his power pill wears off they no longer need to run from him.
To make it interesting, the grey boxes can kill you. It’s a good idea, and one that would probably be more fun if coded by someone else. I’ve never actually tested it with anyone else, but I would guess that as your bar decreases, there’s a fair amount of tension if you’re close to catching the other guy. Be fast, because if you take too long he’ll get you!

Sprite
I was experimenting with having a sprite travel in true 360 degrees of movement – travelling NORTH-EAST for example, should not mean he moves up and right by one pixel, since that results in faster movement than directly east. I created a fraction based bit of code, but never quite got it working right. Apparently you need to use some seriously high level maths to get absolutely, mathematically precise 360 degrees of movement.


TECH DEMOS
I have a folder with about 40 tech demos, mainly graphics stuff. Stuff like a Matrix screensaver, or using LINE commands to paint a nice picture. If you think I’m going to screengrab this crap, or make it available, you’re outta your minds. It’s really not worth it.


DOWNLOAD

If anyone would like to try their hand at coding in QBasic, I’ve created a little package featuring my games in EXE format, QB 1.1 (for coding), QB 4.5 (for compiling), plus the source code to most of my stuff, the source to all of Luke’s stuff, plus my friend Dominic’s Space Invaders game.

Get it HERE.

Tomorrow, I will talk about Trampoline Gunmen – which is excellent.

Click the link!

7 comments:

  1. Amazing post. I may even try my own hand at QB.

    ReplyDelete
  2. Ah, yes. I think we've all deluded ourselves at one time that designing a game is easy.

    ReplyDelete
  3. I remember making an overworld engine that looked like Ultima. It took so long that I never made the actual game, but it did have a sweet title page. I gave up once I discovered ZZT's incredible level editor, I guess it was enough for me.

    A few Qbasic games I remember from the internet were a game where you shot at Bob Saget and a really ambitious Secret of Mana lookalike that didn't get pass the engine phase. I know there were more but I can't think of them. I remember downloading them off the internet then putting them on floppies so I could mess with them on the 386 in my room. Good times!

    ReplyDelete
  4. You could try FreeBasic to run your qbasic programs in a moder OS: http://www.freebasic.net/index.php/download

    The compatibility of the compiler to the original qb is really good.

    ReplyDelete
  5. Rboto sounds like a little game called Robowar, except that Robowar has you actually programming your robots:

    http://slickproductions.org/robowar.php

    ReplyDelete
  6. That was fun. I'm a bit older than you, but I also dabbled in game creation when I was younger, and it still brings back great memories.

    I think James Silva, the creator of Dishwasher and "I MAED A GAM3 W1TH Z0MB1ES 1NIT!!!1" for XBox360, used to code all his games in either QBasic or Visual Basic (probably the latter). He made lots of cool stuff back then, like Blood Zero, Zombie Smashers X and (my favorite) Survival Crisis Z. (Someone please write an article about these overlooked games!)

    Regarding your self-criticism, being a games critic but not able to come up with better ideas for your own games: Artists know that it is easier to improve something that has been drawn, than to create something new on a blank piece of paper.

    ReplyDelete
  7. I would really love to download these but megaupload is dead. Is there any chance you could upload them somewhere else? (please?)

    ReplyDelete