Word War vi


  • Downloads
  • Compiling
  • Running the game
  • Screenshots
  • Video
  • Controls
  • Bugs
  • Acknowledgements
  • History
  • Man page
  • Contact me
  • Intro

    In the beginning, there was ed. Ed is the standard text editor. Then there was vi, and it was good. Then came emacs, and a dearth of RAM. Your mission is to traverse core memory and rid the host of emacs. It will not be an easy mission, as there are many emacs friendly processes.

    Word War vi is your basic side-scrolling shoot 'em up '80s style arcade game. You pilot your "vi"per craft through core memory, rescuing lost .swp files, avoiding OS defenses, and wiping out those memory hogging emacs processes. When all the lost .swp files are rescued, head for the socket which will take you to the next node in the cluster.

    It's licensed under the good old GPL v. 2.0, except for the audio files, which are licensed under a couple different Creative Commons licenses (see sounds/Attribution.txt).

    Update: Sun May 04, 2008, New version 0.09 -- Here is the change log. The biggest change here is that libsndfile is no longer needed. But, libvorbisfile is now needed. Instead of using oggdec to decode the ogg files to wav files on disk during the build process, the game now decodes the ogg files directly to memory when the game starts. This is good news for makers of live CDs where space might be at a premium.

    Update: Fri May 02, 2008, New version 0.08 -- Here is the change log.

    Update: Tue Apr 29, 2008, New version 0.07 -- Here is the change log.

    Update: Sat Apr 11, 2008, New version 0.06 -- Here is the change log.


    Screenshots

    Word War vi

    20 instances of word war vi running at once. (not a scaled screenshot -- 20 running instances of the game are shown, all scaled down at runtime.)


    Video

    Above: "Destiny Face Down", an insane little intro I added in version 0.10, in which I do my best simultaneous Don Lafontaine and John Williams impressions (neither all that great, I'm afraid.)

    The above video shows what's current in CVS as of May 6, 2008. I have been meaning to add some kind of "smart bomb" that the player can use when he gets in trouble, but didn't want to use some kind of cliche, like the "smart bomb" that just blows up whatever's on screen. So I had the idea of a kind of "gravity weapon," which I'm not sure I'm going to keep. The video's a little out of focus (sorry). The weapon is sort of like a regular bomb in that it's something which drops from your ship, and falls to the ground, but it's invisible, but has a gravitational field like a black hole -- sucking in everything around it. When what's around it is a bunch of fire -- a kind of tornado of fire forms. If you launch the weapon while travelling upwards, the weapon travels in a nice parabola, dragging a firestorm of debris along with it. Pretty cool looking, but has some weird effects (flinging humanoid carrying cron jobs at warp speed across the terrain). You might think from the video that some fancy OpenGL effects were at work. Not so. There is absolutely nothing but gdk_draw_line() at work here. Not sure I'm going to keep it. Anyway, enjoy the vid (posted 10:30 pm, CDT -- may take awhile for google's video server to make it actually viewable.)

    The above video is v. 0.08, current with CVS as of May 2, 2008.

    Here is an older video of v. 0.06, circa Apr 11, 2008.

    Here is an older video from Mar 12, 2008 of word war vi v. 0.04."

    Here is a list of changes between v. 0.03 and 0.04.

    Here's a video that was current as of Feb 16, 2008 (version 0.03, or close to it.) Word war vi video, feb 16, 2008

    Here's an even older video: --> Older video of wordwarvi on youtube.


    Downloads

    Here's the download link: get wordwarvi.tar.gz from sourceforge The current version is 0.05, current with CVS as of Apr 8, 2008.

    Or, you can get it from CVS (which I would recommend). Do the following at the shell prompt:

    	cvs -d:pserver:anonymous@wordwarvi.cvs.sourceforge.net:/cvsroot/wordwarvi login
    
    	cvs -z3 -d:pserver:anonymous@wordwarvi.cvs.sourceforge.net:/cvsroot/wordwarvi co -P wordwarvi
    
    I try not to break anything with commits, so usually what's in CVS is better than what's in the tarballs.
    
    
    	cd wordwarvi
    	make
    

    Compiling the game

    Compiling is easy, after checking out from CVS as above, just type "make." You'll need the gnome libraries and header files, which you likely already have.

    You may need to set a couple environment variables:

    export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
    export LD_LIBRARY_PATH=/usr/local/lib
    

    (I have that in my ~/.login, so I tend to forget about them.)

    You'll also need libsndfile (not needed since 0.09) libvorbisfile (needed since 0.09. It's in the libvorbis rpm on redhat based distros, and the vorbisfile package for debian based systems, iirc) and the portaudio libraries, which there's a good chance you don't already have. These are easily compiled and installed via the traditional "./configure", "make", and (as root) "make install" commands.

    If you want to compile without the audio libraries you can do so by typing:

    make WITHAUDIO=no
    
    to build without audio support. (Note, the WITHAUDIO=no seems to be broken in v. 0.09, I screwed up the Makefile. This has been fixed in CVS as of May 5, 2008)

    The CVS code also needs oggdec (from the vorbis-tools package) to decode the .ogg files to .wav files, that is, if audio support is enabled (default). Not since v. 0.09.

    Other packages you might need:

    • gtk2-devel
    • pango-devel
    • atk-devel
    • vorbis-tools (for oggdec)

    Running the game Type

    ./wordwarvi
    in the directory you built it (because it expects the sound files in a "sounds" subdirectory).

    Controls

    The game is best played with a joystick or gamepad of some sort. The keyboard controls kind of suck. I have used a USB Logitech Dual action rumble pad with good results (left stick controls motion, press the buttons to see what does what. Bombs and laser are on the right hand trigger buttons.)

    • Pressing 'q' puts in a quarter and starts the game.
    • Arrow keys (or, of course vi's hjkl keys) to move
    • 'z' or spacebar fires signal number -9 (lazer).
    • 'b' injects NULL pointer into execution stream (drops a bomb).
    • 'c' forks to evade pursuers (throws chaff.)
    • 'A' advances to a new level (This is really just for debugging).
    • '9' commits suicide (just for debugging.)

    Bugs

    There are some bugs...

    • It will segfault occasionally in the code which generates buildings. I think it's overflowing a scratch array when recursion happens to get too deep for the arbitrarily chosen "big enough" value I used. Haven't gotten around to fixing that yet. Haven't seen this in ages, fixed it somewhere alone the line..
    • Missiles confused by chaff are doubly confused when the chaff disappears (they end up chasing a random object, usually a spark coming out of your exhaust, which is very nearly the right thing to do, but purely by accident. And, when the missile does hit the spark, you aren't damaged.
    • Sometimes a falling humanoid will suddenly disappear and reappear instantly on the ground. Don't know why that happens. (Update, May 5, 2008: Fixed in CVS.)
    • May 4, 2008, I noticed that one of the buttons on the USB gamepad I have will cause a segfault (not a button I normally use). Need to debug that one pronto. Update: May 5 -- so far cannot reproduce this bug.
    • At the end of the game, You sometimes see
      	editor now??? 
      	Game Over
      
      which is incorrect.
    • On higher levels, the game tends to run out of CPU. The game is too aggressive in adjusting parameters to make each level harder than the previous, with no limits, and things get a bit out of control. Needs tuning, and a more sophisticated algorithm.
    • Selecting a non-existent sound device with the --sounddevice option causes a segfault. (Fixed in CVS as of May 5, 2008).
    • I'm sure there are others...

    Acknowledgements

    I would like to thank the following people for helping out with various aspects of this project:


    History

    I started working on this game on Apr 23, 2007, weekends and nights, just out of boredom. It bears some resemblance to a DOS game I wrote in Turbo Pascal more than 10 years ago, which I've since lost.) I put it on Sourceforge May 7, 2007, about 2 weeks later, so progress was pretty fast. I tried to preserve the commits as they happened, so you can see the program as it evolved from essentially a GTK "hello world" example program to what it is now. I'm just putting this here in case some kid comes along and wants to learn from it. It's not the best programming in the world, but it does show fairly small incremental changes from very very simple beginnings to what is here now. So, feel free to browse through the CVS history: and check out older versions of the program and compile and run them and tinker with them.

    I made a few short videos showing a progression of older versions of the program leading up to where it is now (Feb 2, 2008).

    Part 1

    Part 2

    Part 3


    Note: Obviously, emacs is a fine editor and this is all very tongue in cheek, so don't be getting all bent out of shape because you like emacs better than vi, mmm-kay?


    Contact information If you want to send me flames or bug reports, or suggestions, or whatever, you can reach me at (sorry about the psychedelic captcha-izing, but you know, spammers. Oh man, I should have made it an animated gif.):


    Note: Obviously, emacs is a fine editor and this is all very tongue in cheek, so don't be getting all bent out of shape because you like emacs better than vi, mmm-kay?

    (as if there were any doubt.)