rules, log file, downloads, License, Readme, SpeedHack, index
Marsworm is a small game written for the TINS Is Not SpeedHack 2003. In short, the TINS Is Not SpeedHack is an international competition in which you have to write a game using the game programming library "Allegro" within 72 hours (one weekend). It is impossible to write the game entirely before this weekend because only at the last moment (Friday 12:00 UTC) a special set of rules is published. (This is essentially the same as the Allegro SpeedHack.)
This game is based on the classic nibbles --or snake-- game. The snake however, doesn't move around a flat rectangular grid on your monitor, but it moves round a three dimensional sphere (which is one of the two moons --Phobos and Deinos-- of mars).
There is only one genre requirement:
Your game must have a "planet Mars" theme. This can be anything from a tetris clone with a picture of Mars in the background to a real time strategy taking place on the surface of the red planet. Other than that, the game genre is free. You may create any type of game you like (puzzle, shooter, adventure, rpg, etc.).
There will be two technical requirements:
You may not use a rectangular grid (i.e. tilemap). Other map shapes or cell shapes are ok (e.g. triangular, hexagonal, ...). You also may choose not to use any grid at all, but in that case it must be very clear that you are not using a grid, so in that case your choice of game type is very limited.
Your game must have a real GUI, something with dialogs and buttons. You may use the allegro built-in dialog functions, some allegro add-on such as those you can find here on allegro.cc, or you may whip up one of your own. It is up to you how prominent the GUI is featured, be it only in the main menu or throughout the game.
There will be two artistical requirements:
Feature chemical formulas, e.g. H20 or C2H5OH (alcohol). You may use them as functional elements in your game, or just as background because they look cool.
Your game must feature a jelly (or jello if you're American? The stuff that comes as blocks of rubbery gel which you disolve in hot water then put into the fridge to set) like substance.
There is one bonus rule:
The Act of Dog is designed as a get-out clause for not implementing one or more of the requirements - providing that the entrant can come up with a extremely good explanation for not doing so. And when I mean good, I'm talking watertight. If I can find a way through it, then I will.
Lame excuses will be not be accepted, and may result in public embarrassment for the entrant concerned. Successful attempts at 'social engineering' will give you a waiver. All 'Acts of Dog' must be negotiated with me via Email before the entry is submitted on Monday morning.
Humour (of all grades) may be employed in your argument. Other techniques (underhand or otherwise) will have varying levels of success. Send all petitions to amarillion AT yahoo DOT com with good reasons, bribes, incriminating evidence and pitiful pleading. Judgement will be as swift as the organiser sees fit.
I intended to write a 2d game this year, as simple as possible. I was thinking 'bout an tilemapped RPG or something like that. This idea was blown into pieces by the rule which prohibited the use of a rectangular grid. I didn't want to spent my time writing a hexagonal or triangular tilemapper while there is a very good rectangular tilemapper on my HD. So I decided I would try to tackle the problems of a simple 3d game and go for it.
After some thinking I decided the game would be about a sorcerer, who could mix chemicals and throw them, in the form of jellies, to the enemy. The exact chemical formula would trigger a specific particle-explosion on the enemy.
I spent the first five hours programming (the entire friday), finding out that one cannot subdivide a tetraeder to a sphere with triangles of equal size -- One has to start with an icosahedron (20 triangles).
The second day of the contest, I finally got a wireframe sphere rendered, and, after lots of struggling with angles and quaternions in 3d, I wrote the code which centers a specific triangle on the screen by rotating the sphere. It was easy then to render a sorcerer on top of the sphere and add an enemy. I also wrote a simple particle engine.
Sunday morning, the third day, it was clear that I wouldn't be able to finish this first idea with a birthday party planned in the afternoon. Since I wrote enough code to hack it into a snake game, I decided to go for that. I still had to to the GUI and the chemical formulae. Sunday around midnight, it was kinda finished. The GUI was done by one gfx_mode_select_ex() statement.
Monday I decided I had to go for a better GUI and some kind of topscore system. I fixed this in a few hours and two hours before noon it was finally finished.