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.

Program executable:   md5sum e7d10ad725c8a1ef8c430838cc02c337

Program source code:, August 20, 2006 version., 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 processor loads.

Further program notes, sphrspwa.txt.   Graphs.

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.