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
















































Thunder Blade (well level 1 at least...)
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.orgdw817)
•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 windowsfloors.
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