Also, I was wondering if you had the falling calculation in Lunkheads as a quadratic function, or just linear?
I do it with kinematic functions, which I believe counts as quadratic. I'm pretty balls with trigonometry, so I just copied equations off the Internet.
Tough to do a shmup on a discrete grid and have all the particles flow properly, at least with the generic approach I tried using my existing particle engine. Not sure how Chaos Stream does such an awesome job (I couldn't find a good way to add things like "static continuous lasers" without hard-coding the behavior).
Never heard of any of those, thanks for the links. The only real-time shooter like this I was aware of is
ASCII Sector, a marvelous little game. And of course
ZZT, which is nothing short of astounding for its age.
I can already see a lot of potential holes, with things like continuous actions and especially continuous user input. As for the "discrete grid" thing, I plan to store all object locations as decimals instead of integers (double doubles, if you will) and then render them wherever they best fit. This might produce some stuttering on occasion, but I don't think that's a big problem aside from sanity checking to keep multi-tile objects from being split up.
The other big problem I see is performance. I made a test program that just sends text strings to a buffering list, while the main program loop constantly prints the buffer clear. I wanted to test that threads don't step on each other; with a whole bunch of objects constantly updating their position, the buffering thread has to have a clear picture to print, not to mention just making sure an array it's scanning doesn't change halfway through.
I set this up by making some global flags like MasterGameLoop, AllowRendering, AllowChanges, and so forth, so the rendering thread can block map changes while the map changes can block rendering. Every thread is set to run on a short loop (a few milliseconds), ticking down a "total wait" loop until time to act, but not ticking down the total while the action is supposed to be blocked (this is so if the game is paused for instance, the threads don't keep waiting and then all immediately kick in at once when the game is unpaused). And under this architecture with just four threads, I've noticed a significant performance difference between 1 millisecond and 10 for the "am I supposed to act yet" loop. I may not be using the most efficient timer loops.