Nuklear Klone
by freds72
Suzie and Bob are trapped in a merciless world. Can you fight your way out?
Gameplay Elements
Random maps
Multiple biomes
Multiple enemies
Multiple weapons (but one at a time!)
Loop-based difficulty
Supports keyboard/mouse
Controls
Keyboard:
arrow keys: move & gun direction
bttn 1: fire & lock direction
bttn 2: pick up weapon
Mouse (selected in option menu):
arrow keys: move
mouse: gun direction
left click: fire
right click: pick up weapon
Note: any resemblance with a famous Vlambeer game must be purely accidental...
Changelog
1.2:
fixed: woobly sprites
fixed: actors stuck on corners
fixed: warp in/out effect
changed: impact feedback
changed: health upgrade on loop
1.1:
fixed: unexpected god mode
fixed: boss hp
fixed: boss attack
changed: tweaked game speed
change:balanced high level gameplay (loop)
1.0:
preview version
Dev Log
2nd finished game (last was Thunderblade). Took 4 months to complete & refine.
Un-minified source available on Github:
freds72/pico8/carts/nuke.p8
Tech Highlights
JSon Rules!
All entities (actors, weapons, particles, levels) defined using json (worth 3500 tokens!). A
lightweight parser (450 tokens) converts strings into lua tables.
Entities are created using a parent template with support for:
lua references
random values
method & attributes override
Rotating Sprites
Player weapon (and couple of other sprites) are rotated in real-time using an optimized sprite
routine. It is fast enough to allow ~10+ sprites on screen (before tanking FPS!)
Performance
An actor map is maintained each frame. It allows immediate bullet/actors lookup.
Only player/npc collisions are checked to ensure player cannot zip through enemies.
A-* path is refreshed for a single npc per frame. It ensures a large number of npc’s can
be created without too much cpu stress.
Sprites are added to buckets matching their y pixel coordinate.
Saves both cpu and tokens as no global sort is required :]
Toolchain
Cart is minified using picotool (19k compressed). All json attributes are replaced by their
short equivalent using output from minification script:
cat nuke.p8 | minify | replace > nuke_mini.p8
Missing In Action:
RPG aspects (upgrades/xp/abilities...)
Good music (for total lack of musical skills!!)
Scoreboard
Credits
Tyler Neylon: lua JSON parser
James Coonradt ( @gamax92): midi2pico
Jakub Wasilewski ( @krajzeg): Lighting by hand: the thin dark line serie
Dan Sanderson: picotool minify
collide sample by @zep
Vlambeer