SPEED: Simultaneous Projections Employing an Ensemble of Displays. Or alternatively: Stupid Pointless Effort at Establishing a Dumb Acronym. By Shawn Hargreaves, November 1999. This program is my entry for the Allegro SpeedHack 1999, and was written over the weekend of November 27/28. Many thanks to Arron Shutt for organising this competition, and to the various musicians who kept me sane (?) during it (notably Trent Reznor, Adrian Belew, Charles Mingus, Miles Davis, Mike Keneally, and Robert Fripp). It should be pretty obvious how to play, as long as you know how to press the spacebar and left/right arrow keys. The objective is to protect the blocks underneath your ship: you get one point for each block left at the end of an attack wave, and a hundred bonus points if you manage to preserve all sixteen blocks. Hint: the later levels of this game are much easier to play if you view them through tinted glasses, to filter out only one of the views :-) You gain very little from running it in a truecolor mode (the title screens look a bit nicer, but game graphics are almost identical to in 8 bit color). It does look very cramped in a 320x200 resolution, though, so I recommend playing it in 640x480x8. This code is free: do with it as you will. The remainder of this file is a realtime log, with entries added chronologically during the course of the hack. The numbered subdirectories contain snapshots of the code taken at various times over the weekend. It is unlikely that anything but the final version will compile on systems other than Linux. 10-26-1999, at 14:56 -------------------- I've written myself a makefile, and a script which ought to be able to send this message to the website automatically. If you see this text, then it worked! 10-26-1999, at 15:18 -------------------- Design doc: Traditional Space Invaders type gameplay: aliens move down the screen, you move across the bottom firing upwards. Three lives. Your goal is to protect blocks underneath you, and you get score for having blocks left at the end of each attack wave. Alien motion will be as complex as I have time for, including Centipede style splitting. This 2d action will be rendered in four different psuedo-3d viewports: normal flat mode, inside of a tube, outside of a large cylinder, and in spherical coordinates. Early attack waves use only one viewpoint, later ones tile multiple views of the same action, and toward the end of the sequence the views are overlaid (additive color). If you complete the sequence, it cycles but with vastly increased game speed. When changing attack waves, views will slide around to their new locations (that should look pretty cool). Any color depth, any resolution. No time for drawing graphics, so everything will be simple vector art. Bullets are surrounded by spining wireframe square, flightsim targetting style. Explosions are expanding XLU circlefill, plus more rapidly expanding single circle shockwaves. Wow, I think that is the most detailed formal game design that I have ever written! I don't have time for this, better get coding... 10-26-1999, at 17:37 -------------------- Basic game structure is in place: init code, commandline parsing, title screen, stupid little music bit at the end. 10-27-1999, at 10:21 -------------------- 10:30 AM on saturday morning: just got out of bed and am ready to start some serious work. Title and ending screens are finished, so it is just the game itself left to be written! 10-27-1999, at 13:14 -------------------- Lots of new source files added: 3d viewport system is in place (sliding screen windows and all but one of the 3d projections). 10-27-1999, at 14:04 -------------------- Player movement is in, so you can see the different projections in action... 10-27-1999, at 15:08 -------------------- Added text messages (for status display, number of lives left, etc) that float over the middle of the screen, and implemented the final 3d projection mode, so all the different views are working now. 10-27-1999, at 16:17 -------------------- Bullet code is finished. 10-27-1999, at 17:55 -------------------- Enemies are in, and you can shoot them now. Still todo: more interesting enemy movememnt, you dying. This is going faster than I expected, so I should be able to get that finished this evening, and then have tomorrow free either to relax, or perhaps to add sound and a hiscore table... 10-27-1999, at 19:18 -------------------- You can die now, and the scoring mechanism is complete. 10-27-1999, at 22:55 -------------------- Enemy wave patterns are finished! It is a table-driven system, with a cycle of 26 different attack patterns before the thing repeats. I've just finished typing in all the tables, so the game can now be played the whole way through, ie. the gameplay side of things is complete! All that remains is cosmetic tweaking (sound, hiscore, etc). 10-28-1999, at 00:02 -------------------- Various tweaks to get it working with djgpp, MSVC, and Watcom (I've been developing in X up until now). 10-28-1999, at 13:42 -------------------- Scoretable is finished. Unfortunately this thing has reached the point where it is actually quite fun to play, which is getting in the way of my actually finishing it :-) 10-28-1999, at 15:40 -------------------- Some (really cheesy old-skool arcade style :-) sound effects are in. 10-28-1999, at 19:43 -------------------- Music is finished! And that means, the whole thing is pretty much complete. I just need to test that it still works in DOS/Windows, and take some screenshots, and then I can upload it. Yippee! And it is still pretty early on Sunday evening... The music is quite possibly even more crap than the sound effects, which is quite an achievement! The goal was to avoid using any external resources at all, which means that all graphics and sounds have to be written as pure C code in a text editor. In other words, sound samples are generated from basic waveforms, and I typed in all the music notes as data tables. I haven't done that since the old days on my 8 bit Oric machine, but it was quite satisfying. The results don't sound _quite_ up to what you can do with more capable sound editing tools, but hey, for an arrangement done entirely inside a text editor, I don't think this is too bad :-) Stay tuned for an upload of the final version... The End.