Axis Runner
Introduction
This idea comes from some years ago;
basically a 3D lode-runner type game
with a weird topology: if the runner bumps into a wall he climbs up
(like the fighting scenes in "The Matrix" or "Crouching Tiger, Hidden Dragon")
but if he reaches an edge he falls,
in the current downwards direction.
I.e. the direction of gravity changes.
To keep the world finite it is enclosed in a cube.
Typically characters walk on the ceiling/up walls/pipes etc.
After many attempts
(openGL in 1996 was too slow, Java in 1998 with line graphics was too dense),
after someone put an amazing sculpture
in the local bus interchange,
after a lot of learning about graphics engines,
and after the SDL
game competition,
here is 8000 lines of pure c coded madness!
While it is still in the prototype stage, if you have a
Linux machine handy you can try it out.
You will need the SDL library.
Comments? Suggestions?
simon@arrowtheory.com
Features
- Custom built (fast!) graphics engine; can run on old pentiums.
- User controlled perspective.
- The cube walls, normally transparent,
light up when characters are walking over them.
- All moves implemented: walk, rotate up, turn, dig, fall off, fall,
take parcel, drop parcel, go to next level (walk on blue square), and character collision.
- 11 levels.
- Sound effects.
Project Goals
- To make a game that is fun and mind bending to play.
- To explore dense 3D geometry.
- To run on slow machines without graphics hardware acceleration.
- To explore alternate realities (
see
A Mathematician's Apology)
- distortion of space,
- game theory.
- To explore the use of algorithmic music composition and dynamic sound synthesis.
Todo
- Python scriptable.
- Automatic camera positioning.
- Demo mode: yes, it is possible to play this!
- Easier gameplay,
for instance you can't dig 3 holes in a row like the original.
It is not (yet) possible to dig
in any direction, only in the forward direction.
This would involve adding a new move "turn and dig", triggered
by, say, a shift-arrow combination.
- Sound track.
- Improve/replace font.
- Texture mapping of surfaces.
- Some flesh on the runners (and arms too); use (real time) raytracing.
- AI for the bad guys (Dijkstra's algorithm would kick ass).
- To have the sound track respond to the player's actions.
- A more intelligent way of handling obscuring surfaces
(such as the enclosing cube's walls) - eg. switch to a wireframe.
- Perhaps a small global map (just pixels and lines) in the corner?
- A background, rather than suspended in the middle of nowhere.
Eg. some kind of mirror effect where the structure is echoed into the distance.
- Refactoring (oh, how i love thee):
there are a lot of game possibilities for using this same regular cubic
grid world.
- portability: use autoconf and friends, port to OS X and Windows.
Screenshots
Download source code
axis-runner.tar.gz
If you are going to try this, use '#' to
skip a level and ESCAPE will get you out of the introduction.
To run on a slow machine (eg. Pentium 100) remove the
#define USE_ANTI_ALIASING
in render.c.
User comments
Date: Sat, 02 Nov 2002 15:55:48 +0100
From: Wolfgang Arendt
To: simon@arrowtheory.com
Subject: axis-runner
--------------030906070209020205080308
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
Hi, Simon,
well, I like the game. Although I had some trouble, figuring out, how to
run it. I copied the whole directory to /usr/local/games/axis-runner. It
seems, that you can only run the game from within that directory. Since
that directory was owned by root, the logfile could not be opened by
normal users, so I replaced it with a symlink to /tmp/axis-logfile.
In order to be able, to run the game from anywhere, I renamed the axis
executable to axis-game and wrote a small wrapper script named axis.
Finally, I wrote an install.sh script, that makes all these changes for
me, that can be run after the game has been compiled. Now, everybody at
my workstation can enjoy your game. I include the install.sh and the
wrapper.sh scripts, just in case, you want to take a look at them.
Ciao, and thanks for the nice game
Wolfgang
--------------030906070209020205080308
Content-Type: text/plain;
name="install.sh"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="install.sh"
#!/bin/sh
cp -vr . /usr/local/games/axis-runner &&
cd /usr/local/games/axis-runner &&
mv axis axis-game &&
cp -v wrapper.sh axis &&
ln -vfs /tmp/axis-logfile ./logfile
--------------030906070209020205080308
Content-Type: text/plain;
name="wrapper.sh"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="wrapper.sh"
#!/bin/sh
AXIS=`which axis 2>/dev/null` || AXIS=$0
cd `dirname "$AXIS"` &&
./axis-game
--------------030906070209020205080308--
Copyright Simon Burton 2002.
Last update: Tue Nov 12