An Asteroids clone using Fonts.
[ glfast-1.2.tar.gz (12.5M) (OFFLINE - PLEASE EMAIL]
Author: A. Schiffler, aschiffler@sympatico.ca to contact the author.
Licenced under the LGPL; see the file COPYING for details.
[ This is FAST - FontAsteroids ] [ INDEX ] [ 1. ] [ Introduction ] [ 2. ] [ Version history ] [ 3. ] [ System Requirements ] [ 4. ] [ Software Requirements ] [ 5. ] [ Installation and Control ] [ 6. ] [ Comments on the Coding Style ] [ 7. ] [ Planned Future Additions and Addons ] [ 8. ] [ Web Links ] [ 1. ] [ Introduction ] Based on the original Asteroids game console, a spaceship with inertial control has to be manouvered through an "asteroid field" consisting of words of a web page. During the game the player fragments the already mangled page content from sentences to words, from words to characters, and characters to nothingness. Effectively, this game is the game with the most levels in the world - every webpage could be played as a level ... and there are millions of URLs. The game was first presented to the public during the net_condition Exhibition Sept. 1999 at the ZKM, Karlsruhe, Germany (www.zkm.de). This is also the reason why there are many german URLs included in the list. For completeness, the exhibition webpage texts from the 22/9/99 are included. See file LICENSE for copyright information. Have fun with the game! [ 2. ] [ Version history ] Ver 1.0 - Sun Sep 19 16:52:02 CEST 1999 * Initial release Ver 1.1 - Fri Sep 24 12:27:14 CEST 1999 * Removed yiff in favour of my own libgaudio system. * Changed web parsing script to load only html files. * Added "supershot". * Fixed up keyboard controls * Rewrote this README Ver 1.2 - Mon Sep 27 15:38:09 CEST 1999 * Cleaned up fast.C * Added analog joystick driver * Updated README and Makefile [ 3. ] [ System Requirements ] * Fast machine (>P2-333) * Voodoo2 OR Voodoo3 graphics card (see comments below) * Soundcard with joystick port * Analog Joystick OR Logitech WingMan Gamepad (see comments below) Comments: - The game was developed (and runs well) with a Voodoo2 card and is running in the exhibition even better with a Voodoo3-3000 card. Nonetheless, Voodoo cards are not really required, since the game is using OpenGL as basis. At the time of this writing (09/99) there is are two other options to get the game to run on a Linux-PC: the Matrox G200 OpenGL drivers and the Nvidia RivaTNT/2 OpenGL drivers. To enable these, edit the Makefile to set the new GL libraries and their locations. In the source code, the screen refresh frequency will have to be set manually. The Makefile option -DVOODOO2 will set a 800x600 resolution at 75Hz. The Makefile option -DVOODOO3 will set a 1024x768 resolution at 85Hz. You must use one. - The game has fallbacks for keyboard control. These are two slow for proper gameplay, as keydown and keyup events are processed in the event handlers but not provided the way I need them by glut. Your best bet to add support for your game controller, is to rewrite the readJoystick() routine in fast.C for your input device. If you manage to do so, please send me the code to be included in future versions of FAST. The Makefile option -DLOGITECH_WINGMAN will enable the logitech gamepad. The Makefile option -JOYSTICK_ANALOG will enable the analog jostick. You must use one. - To get the wingman working properly with my Soundblaster PCI64 card, I had to work with the following procedure. Edit the kernel es1371.c file such as to always enable the joystick port even when compiled as module. Add these lines: #define CONFIG_SOUND_ES1371_JOYPORT_BOOT 1 #define CONFIG_SOUND_ES1371_GAMEPORT 0x200 Then edit the joy-logitech.c modules to reflect the nonstandard joystick port. Edit this line to what is shown: static int js_lt_port_list[] __initdata = {0x200, 0 }; Load all the modules manually. - To get the analog joystick working properly, it is recommended to get the joystick 1.2.x package and set up a calibration file. Compile "jscal" and then run the sequence: jscal -c /dev/js0 jscal -p /dev/js0 > /etc/joystick.cal And add a line to your rc script (i.e. /etc/rc.d/rc.local) executing that file source /etc/joystick.cal [ 4. ] [ Software Requirements ] * Linux 2.2.x, glibc 2.x (i.e. Mandrake Linux 6.x) * Joystick driver modules (part of kernel) * Glide 3Dfx library installed (see comments) * Mesa openGL library installed (i.e. Mesa-3.1b2) * freetype TTF rendering library installed * gltt OpenGL-TTF library installed * wget installed (see comments) * libgaudio library (included with glfast) Comments: - Linux 2.2.x, glibc2.x is recommended, since the program uses pthreads multithreading. - Glide might not be required if a different GL library is beeing used. See the section "System Requirements". - Mesa is aften already installed, but compiled without Glide support. To install Mesa with Glide support, remove existing libraries, get, recompile and install Mesa from the source code. - freetype and wget is often already installed on current systems. - gltt can be downloaded. Compilation is a simple "./configure; make; make install" sequence. Make sure you add "/usr/local/lib" to "/etc/ld.so.conf". - libgaudio is included, but is to be considered a seperate package with its own production and update cycle. [ 5. ] [ Installation and Control ] * Compile libgaudio: cd libgaudio-1.0; make; cd .. * Edit Makefile and set your graphics card and input device * Compile program in fast directory: make * If desired, update webpage files with scripts in webpages directory: cd webpages parse_all.sh create_list.sh cd .. This might take a long time. Change pages to be loaded in the "url-list" file. * Make sure sound and joystick driver modules are loaded. * Start the game and blast away: ./fast If enabled, the game tries to open a network connection to another program that is only useful in the exhibition context (asciireflector). This will fail (unless an asciireflector is running at the specified section) but this doesn't affect the game in any way. The keyboard commands are as follows: ESC - start the game on title, exit the game otherwise SPACE - fire shot x - fire supershot s - start UP - thrust DOWN - shield LEFT - rotate left RIGHT - rotate right The analog joystick commands are as follows: UP - thrust, select up DOWN - shield, select down LEFT - rotate left RIGHT - rotate right Button1 - fire shot, start Button2 - fire supershot The Logitech wingman commands are as follows: Gamepad - rotate left/right, select up/down Start - start Trigger - fire shot ButtonA - shield + thrust ButtonB - thrust ButtonC - shield ButtonY - fire supershot [ 6. ] [ Comments on the Coding Style ] As you might have noticed, the source code is all in one big file, C-style inside, C++ outside (for GLTT) and with lots of hardcoded variables. Most of you will start to shudder and shout. Well, this is how I program and you have to live with that. :-) But hey, as long as it works its OK, right! In retrospect, this is how the computer industry worked for much of the 70s, 80s and into the 90s when binary was king - and then it was binary ONLY - we survived that too! [ 7. ] [ Planned Future Additions and Addons ] - SpaceMiner mode where one can traktor-beam words around. - More input modes: Unix man pages, local filesystems, local files ... - Live webpage loading and user URL entry. - Multiplayer modes using a public asciireflector as server. - More special weapons, more fragments, more sound-effects. Comments are welcome (aschiffler@sympatico.ca)! [ 8. ] [ Web links ] Links checked as of 09/99. * See http://www1.zkm.de/~bernd/ for ESC_to_Begin details. * See http://www.zkm.de/ for the ZKM main page and net_condition exhibition information. * See http://www.linux3d.org/ for Linux specific info on 3D hardware and the 3Dfx drivers. * See http://www.mesa3d.org/ for info on the MesaGL library. * See http://services.worldnet.fr/~rehel/gltt/gltt.html for info on the GLTT library. * See http://www.freetype.org/ for info on the freetype library * See http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/ for info on the Linux joystick driver.