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