Day 1
Today was about scaffolding the underlying components I’ll need to implement game logic. Here’s what got done:
- P8SCII text renderer
- State systems; one for the menus and another for the game itself
- Actors object; consistent accessor for all actors
- Weapons object; probably incomplete, but was enough to spray bullets from the player ship
- Sprite handler with hitbox configuration and collision detection.
- Collisions check whether the distance between the midpoints of the two boxes is greater than the sum of the half-box widths (ikr)
- The advantage of this technique is hitboxes are relative to the sprite, and each collision check is very fast. Advantageous for pico-8’s constrained resources.
- Multi-controller bitwise interface; returns dx/dy as -1,0,1 that maps directly to movement vectors.
- Simple implementation of normalised movement vectors when travelling diagonally
- Pixel clamping when changing direction to prevent stair-casing
- Music dispatcher, which reserves 2 channels for SFX
- SFX channel dispatcher, which allocates as many SFX as there are available audio channels
- Fallback to older PICO-8 sys calls (when old PICO-8 is used) and (hopefully) support for fake-08
- Particle system for debris, shock waves and explosions
- uint32 support for player scores; 10 digit hiscores anyone?
- Player “HUD”; score, HP meter and generator level
- Player shields
- Fake reactive parallax starfield with hyperspeed effect
- MVP gameplay; shoot non-firing aliens and avoid asteroids.
Chasing fake-08 compatibility is ongoing, and this is my main learning for making projects in PICO-8. Make sure you have a current version fake-08 device available. I don’t, so I am relying on friends to provide feedback. Antsy Alien Attack Pico now runs on fake-08, it crashed yesterday. But some text rendering is not legible. If I use PICO-8 for a jam in the future, I will ensure I have my own fake-08 device available.
And what does it look like? Here’s the current state of things with some debug and hitboxes enabled for testing.
A longer clip is available on Imgur: