Hey all,
I've built a shoot-em-up game engine inspired by Tyrian, a classic of the genre released for MS-DOS in 1995. I'm stuck for now on my lack of artistic skill for graphics, art, a title screen, a menu...
I'm a fan of declarative programming, so I've gone pretty far down that path. The base implementations of ships, guns, and bullets handle clamping to the screen space, autoscrolling, acceleration + momentum + drag, damage, regenerating shields, limited power from a generator (which your weapons and shields both draw from), moving in straight lines (for bullets), limited ammo (optional), and poorly-animated explosions.
I've implemented powerups for recovering health and switching weapons. Weapons can have limited ammo.
I've implemented a general engine for progressing through a level. A level is a table from "distance" to 0-argument functions, which will typically spawn enemies (or powerups, or start events). A level can be "frozen", which stops it from incrementing distance or executing new level events, allowing for boss fights and the like.
Collisions between player bullets and enemy ships are optimized by breaking the screen into a grid of regions; a ship only checks for collisions with bullets in the regions that its own hitbox intersects with. (Ship-ship collisions and enemy-bullet on player ship collisions are brute force because there is usually only one player ship and the overhead of calculating the grid is pure dead weight.)
I've got a bunch of documentation in tab 8 - I hope it's enough for folks to develop their own ships, weapons, and levels with! In retrospect, I think I need to document that ship and event lifespan is managed as follows: when an event, move(), hitship(), or hitbullet() call returns true (or true-ish), it's dropped.
The example level is just a sandbox I was testing stuff in. The graphics are very distant from anything I'd really want to release. But the engine is there, and I think it's cool, and I'd be really excited to see anyone else using it to design a shmup of their own. It's a Tyrian-inspired shmup engine that doesn't have quite enough pieces to be a shmup kit, but I hope to get there.
Hey!! I watched you work on this and it was really cool -- and still is.
Folks ought to mod this.
This has had a lot of major updates! The graphics are much more reasonable now, there are particle effects for explosions and engine exhaust, there are enemies that chase the player, more guns, a boss fight, a fade-out at the end of the run, etc.
still no sound, scoring, or menu, but I feel like I can do the spritework enough that maybe I could make something out of this.
[Please log in to post a comment]