Mission: Paper Airplane
Project Title: Mission: Paper Airplane
Time to Complete: 4 months
SDK: Psy-Q + Custom
Latest Release: Version 1.0
In Development: No
Initial Release Date: 18-FEBRUARY-2023
Last Date Updated: 13-MARCH-2023
Memory Card: None
Burn and Play: Yes
Executable Included: No
Source Included: Yes
Mission: Paper Airplane is a time trial game where you must complete 5 levels as fast as possible. There are speed powerups and tube obstacles scattered throughout each level. It's a very short game—you can probably beat it in less than 10 minutes on your first playthrough. Most of the code is written in C, but there are some bits of assembly hanging around the rendering code. A couple notes:
Earlier in development I had all of the assets jammed into main memory, so to save on space, any primitive that was to be subdivided was slightly enlarged relative to itself, and then passed onto the subdivision routine (in this case, RCpoly). I never moved from this method, so although the models will look off, it still performs an OK job at minimizing seams between polygons of differing subdivision levels.
Most of the level geometry still relies on AABB, but for tubes, the code plots a sphere centered on a point along the tube's bezier curve that is closest to the player and determines whether or not the player is in a valid position based off current conditions. The camera however doesn't adapt to whether or not you're right next to a wall, so sometimes the camera will clip outside of level geometry.
Unsubdivided polygons are clipped by checking if at least two of the polygon's vertices are within a specified on-screen boundary. Subdivided polygons are clipped by RCpoly. Unfortunately it's not perfect due to reasons I'm currently unsure of.
I once had Gouraud shading on the tubes, but my code was too slow so I ended up with flat-shaded polygons instead.
The game breaks copyright 3 times:
- PsyQ SDK (code)
- Alpine Stars - Jump Jet (music)
- GTA LCS - MSX 98 (music)
I unfortunately only got to implement a fraction of what I had outlined in my design doc, but as my interest on this project continued to dwindle, I decided that I was not going to leave yet another unfinished game project lay about on my hard drive. Hopefully you find it fun!
Source Code: https://mzxtuelkl.qeeds6.net/downloads/MPA_source.7z