



About Game
Dart-07 A scrolling shooter. As the Dart-07 you fight on Emerald Islands, Outpost in Space, and in the interstellar Phoslar Mine This is a PICO-8 game, which I made during Basic Shmup Showcase event organised by Lazy Devs Academy. β οΈ Please be aware . Mission 1 is complete and ready to play, but you enter missions 2 and 3 on your own risk π If you want to take a look at the codebase, please visit https://github.com/beetrootpaul/dart-07 (the code inside PICO-8 carts of this game is minified, therefore not suitable for reading). Controls Keyboard: <ul><li>press & hold x to fire </li><li>press c to trigger a shockwave (if available) </li><li>press p to open the pause menu </li></ul> Virtual controller (in browser, on a mobile device): <ul><li>press & hold β to fire </li><li>press π ΎοΈ to trigger a shockwave (if available) </li><li>press β to open the pause menu </li></ul> Physical game controllers are supposed to work as well, even in a browser. Button mapping varies between models. Gameplay Your task is to pilot Dart-07 unit in a set of secret missions: <ul><li>first, you mess with the enemy on </li><li>then you continue to the (β οΈ under development β οΈ) </li><li>in order to reach the interstellar (β οΈ under development β οΈ) and prevent the enemy from utilizing that precious resource </li></ul> Destroy enemies along the way to increase your score, grab power-ups left by them and survive a boss fight in order to complete a mission. HUD In your HUD you see: <ul><li>left-top: (the higher the ship's icon is placed, the close to the boss you are) </li><li>right-top: , which you gain by destroying enemies and grabbing power-ups in case they cannot bring any improvement </li><li>left-bottom: ; you die when all hearts are gone </li><li>right-bottom: ; you can trigger a shockwave if you have at least 1 charge left </li><li>top-middle, during boss fight: (yes, you are supposed to bring it down to zero π) </li></ul> Power-ups There are 4 types of power-ups you can grab, each of them either makes your life easier or, if cannot improve further, increases your score: <ul><li> β you can have max 10 hearts; you lose one whenever you take damage </li><li> β increases shooting speed; does not accumulate, but can be combined with the triple shoot; lost on a damage </li><li> β you shoot 3 bullets instead of 1, but on a little but slower rate; does not accumulate, but can be combined with the fast shoot; lost on a damage </li><li> β allows you to trigger a destructive shockwave around you (with use of "c" / "π ΎοΈ" button); you can have max 4 shockwave charges </li></ul> Credits I implemented this game on my own, as well as drawn all sprites and composed all SFXs and music. But there are some resources I found super useful and used some of them I used in the codebase as well. With huge thanks, here are those: <ul><li>#easingcheatsheet cart by ValerADHD with copy-paste ready easing functions. See: https://www.lexaloffle.com/bbs/?tid=40577 </li><li>Circular Clipping Masks tutorial by Krystman </li><li>Lua minification tool luamin by Mathias Bynens </li><li>Pico-8 Music Tutorials by Gruber </li></ul> Technical challenges In this game I focused on learning various bits of PICO-8 API. Some of the topics I tackled in this game are: <ul><li>: this game consists of many carts β 1 main cart for the title screen etc., and 1 cart for each mission. Each mission has its own sprites and music, as well as a code responsible for available enemy types, including their attack and movement patterns. Common SFXs and sprites are copied from the main cart to missions carts with use of MEMCPY and a user data memory area (0x4300-0x55ff), preserved across loaded carts). Moreover, I implemented this in a way which allows me to use same codebase to load both locally developed carts as well as those published to Lexaloffle BBS. </li><li>: during shockwave a ring of inverted colors propagates from the player. To achieve that I had to learn how to implement circular clipping masks in a CPU-performant way. </li><li>: basically a set of rectangles filled with FILLP patterns, moving over screen. </li><li>: usage of PICO-8's API to read and store data persisted on a host machine </li><li>: with my code style (full of spaces and long names), I found it easy to hit PICO-8's characters' count limit. Therefore I forked and modified luamin tool and incorporated it into this game's build flow, resulting with characters' count reduced by around 50%.</li></ul>
0