Spacewar is a classic two-player game with ships that turn, thrust, and shoot in
a two-dimensional wrapping rectangle space. The originating purpose of Spherical
Spacewar was to see what a Spacewar game might be like played instead over the surface
of a sphere. To map the spherical surface to the computer screen, I included
a selection of various traditional map projections, in addition to orthographic
and perspective projections, which look more natural. The program also includes
the option of playing in a two-dimensional rectangular space, wrapping or walled,
either of which is arguably more fun than playing on the surface of a sphere.
sphrspwa081606.zip. md5sum e7d10ad725c8a1ef8c430838cc02c337
Program source code:
sphrspwa082006s.zip, August 20, 2006 version.
sphrspwa081606s.zip, August 16, 2006 version.
In classic Spacewar, damage from shots reduces the magnitude of a player's
shields or ultimately destroys the player's ship. For my program, I decided instead
to have shot damage increase the size of a player's saucer, leaving the ultimately
larger player susceptible to the judgement of having lost the space. The larger
player is quickly at a disadvantage in this program.
I developed the program on a personal computer with a 1.8 GHz AMD Athlon 64
microprocessor. I wrote it in C, for DOS with 320x200 8-bit VGA graphics, and
compiled it in the Borland Turbo C++ 3.0 IDE. In 2008, I began the work of
porting the program to the cross-platform MinGW with SDL C/C++ compiler environment,
but halted work soon after outlining the effort.
Spherical Spacewar has a mess of settings displayed to the user in two "Commands,
Help, and Status" text screens, accessed by hitting the "?" key.
"%" increases a delay of the program's main loop completions, in increments of 1ms.
"]" will enable or disable an effort by the program to adjust the speed of the
simulation to run at a standard rate on different processors or under different
Further program notes, sphrspwa.txt.
Programmer's desk notes,
I wrote this program at home, in the summer of 2006, two months of full-time work
for a little program I wanted. I wrote two other programs that year, 16-bit DOS
programs. Earlier in the year, I expanded an old rotating hypercube program from
college, Ncube we called it, written by two at a
desk one evening, summer '95. Toward the end of my '06 summer of code, I also
wrote an elementary gravity simulation,
a small program with rewarding runs, for me, to see
some orbits and contemplate gravity.
I've been meaning to write some more programs. I wrote some excel_vba in 2008; this is a
data merge utility from one column pair to another, by the key column keys.
Here's a 2002 basic program for playing with the Mandelbrot set, in qbasic.