Thunder Blade (well, level 1 at least...)

Published 2023-06-12


Back 30 years ago, After Burner and Thunderblade ruled the arcades.
As a kid, I only had an Amiga and near zero coding skills to produce very (very) weak clones.
Now a seasoned programmer with the mighty power of PICO-8, I can beat a Sega X board!
Well, err...:

Credits
• Chris Butler (player + tank sprites lifted from the C64 1989 version)
• gamax92 for midi to pico-8 program
• dw817 (david w) for image decompression code (http://writerscafe.org/dw817)
• pico-8 community

What's Missing
• gameplay tweaking...
• levels 2,3,4,5
• gazillions of buildings on screen!

Tech Details

Map:
Drawn using sprite sheet (2), you can tweak the level using colors:
4: tank
6,7,13: building
8: enemy helicopter
9: Battleship boss
10: swtich to chase mode
11: switch to top-down mode
15: end_game (use carrefully!)

Title screen:
Title image is loaded from a stringified image, decompression done 'asynchronously' with yield.

Main screen:

Buildings are mostly drawn with many rectfill using a big checkerboard pattern to simulate windows/floors.

Everything is z-sorted (w actually ;) before being drawn. This 'zbuffer' is in charge of drawing every asset.

Game screen manager:
A light version of what I've extensively used during my XNA period. Allows nice decoupling between game loop and other loops (title, game over).

Coroutines:
Used only for rare events (like player dying) to easily control animation and state changes.

Lessons Learned
• PICO-8 is a fantastic platform. Forces you to keep things simple (say that to my dozen or so failed Unity attempts...)
• token count is everything
• Coroutines are unfortunately too slow to be used in the core game loop
• Throw OOP techniques out. The nice class:method() construct eats up too many tokens - had to rewrite half of the code to stays within the limits :[
• bnot-cheating the platform is way too easy (but resisted against!)
• Did I say token count is everything?