Little Space Rangers

by tmirobot

LITTLE SPACE RANGERS Journey across the stars, crashing your Star Cruiser into a series of increasingly dangerous, procedurally generated planets as you attempt to make your way back Home. Explore hazardous surfaces, rescue your stranded crew, salvage lost cargo, and zap hordes of enemies. Will you be consumed by a slime, zapped by an enemy blaster, boiled in acid, or burnt to death by a toxic atmosphere? CONTROLS Arrow Keys/Directional Pad - Move [Z] - Jump (tap, or hold for higher jumps) [X] - Use Held Item [Down] + [X] - Pick up / Swap Item PLANETS As you delve deeper into space, the planets will get more difficult: Increasing in size Adding more difficult room layouts and variations Increasing the chance for high gravity Unlocking new hazardous biomes (including burning lava planets, sliding ice planets, and rare toxic atmospheres!) Adding more challenging enemy variants Adding more enemy crew Reducing the number of useful items While the first few planets might not cause you much trouble, by the time you reach Home, you'll need the skills and bravery of a true Space Ranger to survive! ITEMS As you explore the surface of a planet, you'll discover several types of useful items you can pick up. All items use Energy to activate. Pulse Gun - Shoots an energy beam that can kill enemies Transport - Use this item near a friendly crew member to beam them to the ship for bonus score Vita-Heal - Use this item to restore lost Health. SPECIES Humans are boring! While they're the most common species in the Space Rangers, the other sentient species have special bonuses to help in their adventures. Along with all the random features of each planet, you'll need to accustom yourself to the unique ability of your randomly chosen cadet. Humans - Gain bonus points when securing cargo Greebo - Consume less energy when using items Fuzzi - Jump higher Demi - Run faster Robo - Damage Reduction Can you reach your Home Planet with a cadet from every species? SCORE There are several ways to earn score as you traverse a planet's surface: Bopping enemies Zapping enemies Securing cargo Transporting friendly crew off the surface Completing levels Blasting off from the planet in a new Star Cruiser Several secret bonuses you'll need to discover! CREDITS Game design, programming, and terrible sfx by tmirobot. Follow on Threads for more game dev postings. Uses portions of @matthughson's Advanced Micro Platformer library, which can be found here https://www.lexaloffle.com/bbs/?pid=46229.​; CHANGE LOG v.1.61 Planets Massively increased the chance (1% -> 25%) of getting a special level section at the start of the 2nd part of a 2-part planet (2-part planets can start appearing at Planet 4) v.1.6 (High Score Reset) Planets Changed the final planet to be the 9th planet instead of 10th Added stars in the background of low gravity planets Changed toxic damage particle to use same color as the toxic level indicator Characters Changed Robo species from having extra health to reducing damage and resistant vs. toxic atmosphere Added helmets to characters when they are on low gravity (no atmosphere) planets HUD Rearranged for a better overall layout Changed the names of items so they have a consistent length for better HUD layout Added indicator to highlight if liquid will instakill (using planet temperature indicator) Help Screens Added up/down page cycling v.1.5 Added new planet visuals for low and high gravity of each of the 4 biome types, so it's easier to immediately recognize biome + gravity type Changed friendly crew to always wear blue and enemy crew to always wear red, to make it easier to differentiate them. Added splash effects when landing in or taking damage in liquids Added a help page describing Planetary and Objective bonuses Lots of code cleanup and compression to make room for new additions, but code should still be fairly legible v.1.4 Added a species trait for Humans (extra score when securing cargo) Rearranged the HUD to show player's score even while on a planet Added instructions screens Smashed functions into code blocks and removed some comments to make more token and character room. v1.3 --- GAMEPLAY --- Lowered the number of screens per planet, and randomized the chance of extra screens on later planets instead of always having them be bigger, which: 1) makes the game easier 2) varies up the landscape more frequently 3) presents the player with a win feeling more often, making the game more fun overall. Removed the increase in enemy hit points on later planets, as, with no visual indicator, it's confusing and not fun to discover deep into a run. Removed the need to press up to enter the ship, removing the need to learn another action Fixed a bug where your high score wouldn't be updated when you win the game Changed screen clear score to take into account planet difficulty Changed score to not be stored as decimals, as score should never get close to 32k and conversion used tokens. Forced new save version to _13, to clear old scores as this and gameplay changes make old scores meaningless. --- VISUALS --- Adjusted the HUD window size so that the full vertical play area can be seen properly Added a HUD prompt when near an item, instructing the player on how to pick it up Adjusted the title screen to be centered better, shifting all status displays a little higher Added random flavor text dialog strings to the crash sequence Added flavor text dialog strings that describe the overall difficulty of a planet upon landing Added ability to specify a blood color for death particles (robots no longer bleed!) Renamed the "talk-o-tron" to "tele-tron", to better match its concept --- AUDIO --- Added a sound effect when entering the ship at the end of a planet Added a sound effect for the Planet: Cleared banner --- CODE --- Updated the include pico-8 package to v0.2.0i (netting some free tokens!) Added back in code comments I had to remove a long time ago for .png format space and reorganized code for better readability Recaptured a bunch of tokens through various methods (multiple if chains converted to "if ands", some ifs that weren’t necessary (nil checks when nil is ok), a few missed multiple assignment lines, a few unnecessary assignments in reset() and other functions, a few never-used code paths (extensibility that was never used or generic functions that are only called in one place), and other assorted cleanups.