.
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
.files/15.1.jpg)
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