Pyromaniac (originally Game Development Thingy) was a collaborative game development project I started in 1999. Written in Pascal, which I was learning at college at the time, it started as a bit of fun and then evolved into a bit of fun with other people. Sometime in 1999-2000 I launched a website on Virtualave and put links to it in a few directories, which found me a few collaborators.
The game is a multiplayer platformer with players and non-player characters (NPCs; mostly sheep and lemmings) wandering around. The multiplayer was intended to work over the local network using IPX -- unfortunately, although the IPX support got implemented the network play was horribly broken and frequently crashed. The most developed aspect of the game was the weapons system which was fully-definable through INI files, with support bullet physics and for the explosion of one bullet type producing other bullet types. This was used to create explosive "fire" weapons, where the fire would spread out (by fire creating more fire "shrapnel") over surfaces.
The project petered out some time after this late version, as I went on to try and finish by A-Levels and we never did fix those bugs. Something else for a rainy day.
The project was hosted at
gdt.virtualave.net and some of the pages are still available via the Wayback Machine.
Below is the available content copied from the archive. I've copied the download links to my own site, so you can still download and play the game if you like?
What is the Pyromaniac project?
The Pyromaniac project was the very first GDT project & has been working for quite a while now - which is the reason for the large amount of source code available. Like all GDT projects it is an open source game development project which is open to everyone who wants to get involved.
The game is designed to be a platform game - imagine Sonic the Hedgehog with a bazooka and you're nearly there. Once finished it'll be a multiplayer network shoot-up-your-mates type game. Y'know the sort - big explosions, lots of noise and other good stuff like that.
The game is being designed to load in user level files - either as one whole thing, or in bits, allowing the creation/configuration of a massive number of levels. Players & teams can create their own levels to play against one another on, including level graphics, sounds, sprite graphics and more. Eventually a random map generator will also be available which will create a maps to play in, which will expand the games potential even more.
For multiplayer, the game will be IPX network probably at first, but might make it into IP (or go straight there) depending on how it develops. Should be a good laugh anyways, something to play on the college network :o). Eventually, it'll be possible to set up multiplayer matches in a group of people, probably with a range of different fight types - from free for alls to large campaigns over a number of matches.
Well, thats pretty much the basics sorted out. The game will evolve as it goes on so things may change. As always, its a good idea to take a look at the download & source code page to see the latest state of things! Or maybe you just want to get involved?
The web page has undergone another reorganisation. This was because someone mentioned that it was a bit difficult to work out which was the latest source. So now, all the source is here, the latest stuff at the top! Also, the branching tree design has gone now. Although it looked nice, it took a while to load and was too restricted for the amount of test to add to things. Besides, I think the new way looks better. The names alongside each download give the names of the people involved in the changes since the last update.
Latest game download
Here is the very latest compiled version of the game. Just download, unzip (keeping dir structure intact) and run thegame.exe. This download is the compile version of the latest source & does not include the source files.
- game update 14 from Simon Reinholt, Martin Fitzpatrick, Mike Stuart. Latest version of the game for download, see the source description below to see what this update includes.
- level files [sound pack]. Sounds for use with the game, kept seperate to keep file sizes down. Download this also & unzip into the "levels" directory.
- tool update 1 from Martin Fitzpatrick, Simon Reinholt. This is the compiled version of the latest development tools update (tool update 1).
Unzip into a directory and run the files from there.
Latest source code
Here is the very latest source code for the Pyromaniac project. There are two downloads available, the development code & the actual game code. The game code is the main playable part of the game, while the development code includes a number of tools used in the creation of the game - such as sprite grabbers etc.
game update 14 from Simon Reinholt, Martin Fitzpatrick, Mike Stuart. A new update is here, with a LOT of new features. Including, network support (IPX/SPX) which although limited gives a rough idea of how things are going to progress - automatically asigns user numbers & allows you to see your opponent on your screen & actually inflict damage on their sheep! Also, new menus make the game both look more like a real game & allow us to start putting game options in there to control the play. The crashing that has been plaguing every single update up to now is fixed completely (though i forget how we did it!!) so the game is far more stable than any previous release. Together with that there are a load of little tweaks throughout the code, which help to speed things up - such as an XMS block approach to memory, reducing the number of gets by grabbing and buffering areas of XMS onto the heap. This is especially helpful in sprite putting, reducing the number of XMS waits before putting the sprites. Anyway, enough techy stuff, take a look at it & start blasting up the sheep (and lemmings, I forgot to mention the lemmings!)... go on, enjoy :)
tool update 1 from [Martin Fitzpatrick, Simon Reinholt. The latest version of the game development tools for map creation & sprite grabbing. Editmap now includes on screen pointer & display for choosing the current drawing block. Grabspr allows more than 255 sprites.
Past source code
For those of you who want to follow the development of Pyromaniac through from the very beginning we preserve the old source code here. You can track the development right back to the very first release, something I knocked up in a very boring lesson in computing. Its not done bad for itself!
- game update 13 from Simon Reinholt, Martn Fitzpatrick. Its been a long while since the last update was made, but thats because there have been a lot of changes to be made! This is a big update with a lot of new stuff in it, the main bits are: Collision detection is working a bit more now, its still a rubbish version of it, but you can now kill the sheep!, added in the sound code to the program - so sounds are played (sorta) during the game, new bouncing shrapnel added with timer for "flame" and "gooey liquid" effects, and also the new platform definitions have been finished off - although you cant walk on them yet! But thats all just the basics! Simons written a whole new approach to the screen refreshing making the blitting to screen independent of the game speed, and the game should now run identically on different machines (within reason of course ;). Visual effects have been added, including the parralax background image (remember that!) making its comeback into the real game & a screen shaking routine to make you feel the explosions that little bit more. And finally as a polishing off touch, bitmap fonts have been implemented, so we can now actually write stuff to the screen... Amazing or what? :).. Enjoy! Hopefully it's been worth the wait. Soon this'll be playable.
- sound update 2 from Arthur Corstanje. This is the latest version of the sound code for use in the game. This version handles both sound effects & S3M music playing, for SB, SB Pro & SB 16 cards. Everything is handles in the background so the game can carry on itself. Also uses XMS for storing data. Now incorporated into the game itself.
- game update 12 from Simon Reinholt. This new update includes a few optimizations to add speed in collision detection, and solves the previous bug with ini files (where I'd forgotten to change a bit of the code...) The most obvious addition is the table which is displayed when exiting the program, giving execution times for the procedures - so its clear where the time is being spent, helpful for optimization! Read the notes in THEGAME.PAS and take a look at the timings produced.. It's pretty fast really!
- game update 11 from Martin Fitzpatrick. This latest update of the game code includes a whole new set of bits - as you might have seen in release 2&3 of the previous update (10) on the downloads page. This revision includes support for zombies. These are mindless computer controlled characters which warp onto the map at set points and then amble aimlessly around the map to freak out the players & get in the way of shots. Later these may be upgraded to allow them to fire too! Also included is the slanted platform support, now completely working - maps are included to show this in action & its all commented in the source so you can see how we're going about the things. Collision, movement etc. now all support the slanted platforms - later, a few algorithms (e.g. shrapnel producing) will be updated to be more realistic on slanted platforms. Later revisions will include floating platforms (I've already got them working actually... Just need the collision detection sorted :) ). That's all for now!
- game update 10 from Martin Fitzpatrick. This new revision of the game code brings with it allowance for a whole range of weapons (10 definable in the ini files), as well as a new weapon type - 'bouncing bombs', allowing you to set the timer on a missile, so that it will only explode after a certain delay. As before this is all definable in the source code. Also a lot of alignment stuff has been done - so missiles have explosions centred around them and missiles come from the arm etc. So things look a little less disjointed. The arm sprite now also changes when you change weapon. So download and take a look!
- game update 9 from Martin Fitzpatrick. New revision including explosions and shrapnel (woohoo!) which is created when missiles hit things. All fully definable within the .ini files so you can design your own weapons - with your own graphics, speeds, gravity etc. Also, new ini file structure for defining the weapons (which you have multiple ones of as defined by Simons previous release). Includes all files... Finally begins to look like a game!
- game update 8 from Simon Reinholt This new revision updates the falling algorithm so now the sprite falling is easier to understand. It also implements Cosine/Sine tables for faster calculation of the angle stuff. Also, there are now two weapons available - gun & thrown.
- game update 7 from Martin Fitzpatrick, Simon Reinholt. This new revision of the game code now includes fixed point mapping. This means positions of sprites etc. are held much more precisely - each pixel split into 32 parts. Missiles now go where you aim, the sprite jumps better. Also, missiles are now removed from the screen when they collide with blocks/go off the edge.
- game update 6 from .Martin Fitzpatrick, Simon Reinholt. This is the 6th revision of the game engine. Now the arm movement has been fixed properly, without the glitches so it now aims at the mouse pointer. The missiles now fire towards the pointer - as they should do in the game - allowing aiming at enemies etc. Map redraw has been fixed, drawing correctly with the modified code, and the a couple of errors and bugs have been fixed. Contains all files.
- game update 5 from Martin Fitzpatrick. New sprite template stuff added for the arm sprite - now displayed & rotating (semi-normally). Missiles supported also, thought not moving correctly. New optimized map drawing routines fixed for faster screen updates.
- game update 4 from Simon Reinholt. New initialisation & exit procedures set up, so they work. New movement procedures implemented. Main player control reorganised & rewritten in places, also implementing collision detection for map blocks.
- game update 3 from Simon Reinholt. New (slightly dodgy) character movement implementation. 'Scouting Zone' implemented, allowing the user to look into the area surrounding the main character. Updated keyboard handling routines to distinguish between the left/right Ctrl, Alt and Shift keys.
- game update 2 from Martin Fitzpatrick. This is the first in-game implementation of the 'sprite templates'. These allow sprites to be defined externally to the game & then loaded in - which will be needed for fully configurable levels. Also includes a very basic movement system. Sprites are now stored in XMS and brought out to be displayed - allows for many sprites.
- game update 1 from Simon Reinholt. The first revision of the game engine, now being released seperately from the development tools etc. Revision includes changes to the unit structure (more organised) and new layout of variables etc.
- gdt 1, update 2 from Martin Fitzpatrick, Simon Reinholt, Arthur Corstanje, Tim Pickup. The first team collaboration. Involves graphics routines from Tim/Arthur as well as some nifty mouse & keyboard routines from Simon.
- gdt 1, add 1 from Martin Fitzpatrick. These are just some extra graphics for use with the sprite grabber etc. Not essential.
To support developers in [[ countryRegion ]] I give a [[ localizedDiscount[couponCode] ]]% discount on all books and courses.
[[ activeDiscount.description ]] I'm giving a [[ activeDiscount.discount ]]% discount on all books and courses.
In game screenshots
Unfortunately the images aren't available in the Wayback archives, so you'll have to use your imagination. Will see if I can dig them off an old disk somewhere.
Time for an update of the game screenshots, here are a few to show you how things are looking. As you can see we need some graphic artists! At the moment the game is running in 320x200x256c which is not up to much. However, if you've read the downloads page you'll see that we're on our way to higher res & higher colours, so the game should perk up a little soon. Keep watching.
- A freeze frame view of the flamethrower in action (doesnt really look very flamy admittedly). The player target is on the left (shows the distant point to which we are aiming). Also, you can see a number of sheep jumping around waiting to get toasted. Current weapon is shown bottom left, bottom right is game timer, top right is sprite-slot techy stuff.
- Now with the slightly more fun flame rockets. They fly and disintegrate on contact with the ground releasing flames which continue to burn for a few moments and spread around the map. The sheep being killed have HP bars to show their remaining health
- Time to kill some lemmings... Much more fun when your using a ridiculously powerful weapon like this. Lots of shrapnel released, which thanks to the completely redefinable template system can be set to release more shrapnel, which in turn releases more shrapnel - in other words it can go on for quite a long time!
- A big pit full of flame, and lots of lemmings around and stuff. Flame rockets are quite good fun
- Again with the flames (sorry!)... As you can see the flames are spreading along the platform at the top, so they can cover a much larger area. These type of weapons will be useful in multiplayer games to get at people hiding in small holes etc.
Latest update 17th March 2000
At last the pages get another update. I've shrunk stuff down here and got rid of a lot of waste so its clearer to navigate & a lot easier to update when it needs. This coincides with the latest game update, which is pretty good - bringing with it the new networking (IPX Networks) for multiplayer. Its not fully functional yet but its a start, as are the menus which means the game starts to look a bit more professional. This is the last update using Turbo Pascal from Borland - its served us well, but in order to produce half decent graphics & better memory handling we're shifting over to Protected Mode programming - and for that we need the Free Pascal Compiler, which means a whole chunk of converting!!
So, you want to get involved in what could possible be the snazziest game development project on the web? Sure you do. So how do you go about getting involved then? First, take a look at the list of available places where you could help out & see what you want to do. If you dont like the look of anything that is there, there may be other things you can do - you really can do whatever you want:
Things to do...
- Game level graphics (backgrounds, map blocks etc.)
- Game sprite graphics (e.g. default player characters, missiles, zombies, explosions)
- Bitmap font graphics (for menus etc.)
- Game level design
- Conversion to protected mode from real mode
- Protected mode graphics programming
- Protected mode network programming
- Conversion to protected mode from real mode
- In game sound effects - explosions, weapons, etc
- Game level music/intro music
Info about you
Whatever you choose, if you have any examples of your work (either relating to the game or otherwise) then they'd be most welcome (but not neccessary) - just so we can see what you're into & the sort of stuff you're good at :o). e.g. if you're working on the programming you could try send some examples of your modifications to the source etc.
When you contact us remember to include any information that you want to see up on the web page (e.g. name, email, homepage, icq etc.) and this will be added up onto the page. I'll email you to let you know when I've made the changes & to basically say hello :o).
Create GUI Applications with Python & Qt6 by Martin Fitzpatrick — (PySide6 Edition) The hands-on guide to making apps with Python — Over 10,000 copies sold!
Programming by Martin Fitzpatrick, Simon Reinholt, Arthur Corstanje and Kent Nilsson. Graphics & design by Mike Stuart
Remember, anyone is welcome to get involved, not matter what sort of level you think you're at. One of the ideas behind this is to teach people about games programming in general and allow them to get involved in a real project - so click here and contact us!