beetrootpaul [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=67168 [BBS] &quot;at&quot; character should not be removed from YouTube username <p>YouTube introduced user handles recently (somewhere around September/November 2022), making it possible for channels of any follower count (not just 100+) to have the username which starts with &quot;at&quot; (&quot;@&quot;) character. For example this is my channel: <a href="https://www.youtube.com/@beetrootpaul">https://www.youtube.com/@beetrootpaul</a></p> <p>Sadly, Lexaloffle BBS profile doesn't allow to use &quot;@&quot;, since it is just removing it: I type &quot;@beetrootpaul&quot; and save, then it changes to &quot;beetrootpaul&quot;. In result URL of my YouTube channel is broken on BBS &ndash; it points to <a href="https://youtube.com/beetrootpaul">https://youtube.com/beetrootpaul</a></p> <hr /> <img style="margin-bottom:16px" border=0 src="/media/67168/screenshot 2022-11-14 at 22.28.27.png" alt="" /> https://www.lexaloffle.com/bbs/?tid=50230 https://www.lexaloffle.com/bbs/?tid=50230 Mon, 14 Nov 2022 21:24:26 UTC Dart-07 <p> <table><tr><td> <a href="/bbs/?pid=117957#p"> <img src="/bbs/thumbs/pico8_brp_dart07-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=117957#p"> Dart-07 v0.2.0</a><br><br> by <a href="/bbs/?uid=67168"> beetrootpaul</a> <br><br><br> <a href="/bbs/?pid=117957#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Dart-07</h1> <div> <div class=scrollable_with_touch style="width:100%; max-width:800px; overflow:auto; margin-bottom:12px"> <table style="width:100%" cellspacing=0 cellpadding=0> <tr><td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> <td background=/gfx/code_bg0.png> <div style="font-family : courier; color: #000000; display:absolute; padding-left:10px; padding-top:4px; padding-bottom:4px; "> <pre>A scrolling shooter. As the Dart-07 you fight on Emerald Islands, Outpost in Space, and in the interstellar Phoslar Mine</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>This is a <a href="https://www.lexaloffle.com/pico-8.php">PICO-8</a> game, which I made during <a href="https://itch.io/jam/basic-shmup">Basic Shmup Showcase event</a> organised by <a href="https://www.youtube.com/c/LazyDevs">Lazy Devs Academy</a>.</p> <p>You can play it here and on <a href="https://beetrootpaul.itch.io/dart-07">https://beetrootpaul.itch.io/dart-07</a> .</p> <p>⚠️ Please be aware <strong>this game is under development</strong>. Mission 1 is complete and ready to play, but you enter missions 2 and 3 on your own risk 😄</p> <p>If you want to take a look at the codebase, please visit <a href="https://github.com/beetrootpaul/dart-07">https://github.com/beetrootpaul/dart-07</a> (the code inside PICO-8 carts of this game is minified, therefore not suitable for reading).</p> <h2>Controls</h2> <p>Keyboard:</p> <ul> <li>press &amp; hold <code>x</code> to fire</li> <li>press <code>c</code> to trigger a shockwave (if available)</li> <li>press <code>p</code> to open the pause menu</li> </ul> <p>Virtual controller (in browser, on a mobile device):</p> <ul> <li>press &amp; hold <code>❎</code> to fire</li> <li>press <code>🅾️</code> to trigger a shockwave (if available)</li> <li>press <code>➖</code> to open the pause menu</li> </ul> <p>Physical game controllers are supposed to work as well, even in a browser. Button mapping varies between models.</p> <h2>Gameplay</h2> <p>Your task is to pilot Dart-07 unit in a set of secret missions of increasing difficulty:</p> <ul> <li>first, you mess with the enemy on <strong>Emerald Islands</strong></li> <li>then you continue to the <strong>Outpost in Space</strong> (⚠️ under development ⚠️)</li> <li>in order to reach the interstellar <strong>Phoslar Mine</strong> (⚠️ under development ⚠️) and prevent the enemy from utilising that precious resource</li> </ul> <p>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.</p> <h3>Power-ups</h3> <p>There are 5 types of power-ups you can grab, each of them either makes your life easier or, if cannot improve further, increases your score:</p> <ul> <li><img style="margin-bottom:16px" border=0 src="/media/67168/powerup_heart (18x16).png" alt="" /> <strong>+1 heart</strong> &ndash; you can have max 10 hearts; you lose one whenever you take damage</li> <li><img style="margin-bottom:16px" border=0 src="/media/67168/powerup_fast_movement (18x16).png" alt="" /> <strong>fast movement</strong> &ndash; increases player's movement speed; does not accumulate; lost on a damage</li> <li><img style="margin-bottom:16px" border=0 src="/media/67168/powerup_fast_shoot (18x16).png" alt="" /><strong>fast shoot</strong> &ndash; increases shooting speed; does not accumulate, but can be combined with the triple shoot; lost on a damage</li> <li><img style="margin-bottom:16px" border=0 src="/media/67168/powerup_triple_shoot (18x16).png" alt="" /> <strong>triple shoot</strong> &ndash; 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><img style="margin-bottom:16px" border=0 src="/media/67168/powerup_shockwave (18x16)t.png" alt="" /> <strong>shockwave charge</strong> &ndash; allows you to trigger a destructive shockwave around you (with use of &quot;c&quot; / &quot;🅾️&quot; button); you can have max 4 shockwave charges</li> </ul> <h3>HUD</h3> <p>In your HUD you see:</p> <ul> <li>left-top: <strong>mission progression</strong> (the higher the ship's icon is placed, the close to the boss you are)</li> <li>right-top: <strong>your score</strong>, which you gain by destroying enemies and grabbing power-ups in case they cannot bring any improvement</li> <li>right-middle: <strong>power-ups</strong> you gathered (excluding hearts and shockwave charges)</li> <li>left-bottom: <strong>hearts left</strong>; you die when all hearts are gone</li> <li>right-bottom: <strong>shockwave charges left</strong>; you can trigger a shockwave if you have at least 1 charge left</li> <li>top-middle, during boss fight: <strong>boss' health</strong> (yes, you are supposed to bring it down to zero 😉)</li> </ul> <img style="margin-bottom:16px" border=0 src="/media/67168/hud_info.png" alt="" /> <h3>Recordings</h3> <img style="margin-bottom:16px" border=0 src="/media/67168/mission_1_a.gif" alt="" /> <img style="margin-bottom:16px" border=0 src="/media/67168/mission_1_b.gif" alt="" /> <img style="margin-bottom:16px" border=0 src="/media/67168/boss_1.gif" alt="" /> <h2>Technical Challenges Tackled In This Game</h2> <p>In this game I focused on learning various bits of <a href="https://www.lexaloffle.com/dl/docs/pico-8_manual.html">PICO-8 API</a>.</p> <p>Some of the topics I tackled in this game are:</p> <ul> <li><strong>multi-cart setup</strong>: this game consists of many carts &ndash; 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 <a href="https://www.lexaloffle.com/dl/docs/pico-8_manual.html#MEMCPY">MEMCPY</a> and a user data memory area (<code>0x4300-0x55ff</code>), 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 <a href="https://www.lexaloffle.com/bbs/?cat=7&amp;amp;carts_tab=1#mode=carts&amp;amp;sub=2">Lexaloffle BBS</a>.</li> <li><strong>missions defined as a map</strong> &ndash; level shape and enemy pattern are defined as sprites in a PICO-8 map, but in a simplified form (in order to fit all needed data there). Dedicated piece of code is responsible for translating sprites from map into a mission gameplay, including proper placement of edge land/structure tiles.</li> <li><strong>circular clipping</strong>: during shockwave a ring of inverted colors propagates from the player. To achieve that I had to learn how to implement <a href="https://www.lexaloffle.com/bbs/?tid=46286">circular clipping masks</a> in a CPU-performant way.</li> <li><strong>dithered fade-in/out transition</strong>: basically a set of rectangles filled with <a href="https://www.lexaloffle.com/dl/docs/pico-8_manual.html#FILLP">FILLP</a> patterns, moving over screen.</li> <li><strong>high score</strong>: usage of PICO-8's API to read and store data persisted on a host machine</li> <li><strong>code minification</strong>: with my code style (full of spaces and long names), I found it easy to hit PICO-8's characters' count limit. Therefore <a href="https://github.com/beetrootpaul/luamin">I forked and modified luamin tool</a> and incorporated it into this game's build flow, resulting with characters' count reduced by around 50%.</li> </ul> <h2>Credits</h2> <p>I implemented this game on my own, as well as drew 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:</p> <ul> <li><code>#easingcheatsheet</code> cart by <a href="https://www.lexaloffle.com/bbs/?uid=47278">ValerADHD</a> with copy-paste ready easing functions. See: <a href="https://www.lexaloffle.com/bbs/?tid=40577">https://www.lexaloffle.com/bbs/?tid=40577</a></li> <li><a href="https://www.lexaloffle.com/bbs/?tid=46286">Circular Clipping Masks tutorial</a> by <a href="https://www.lexaloffle.com/bbs/?uid=16423">Krystman</a></li> <li><a href="https://github.com/mathiasbynens/luamin">Lua minification tool <code>luamin</code></a> by <a href="https://github.com/mathiasbynens">Mathias Bynens</a></li> <li><a href="https://www.youtube.com/watch?v=nwFcitLtCsA&amp;amp;list=PLur95ujyAigsqZR1aNTrVGAvXD7EqywdS">Pico-8 Music Tutorials</a> by <a href="https://www.youtube.com/c/Gruber_Music">Gruber</a></li> </ul> <h2>Version History</h2> <h3>v0.2.0</h3> <ul> <li>new powerup type: fast movement</li> <li>fixed diagonal speed of a player's ship by dividing it by <code>1.41</code></li> <li>fast movement, fast shoot, and triple shoot have their status visible in a HUD</li> <li>more health for mission 1 boss and mission 1 big enemy</li> <li>shake camera on a shockwave trigger</li> <li>lower volume of player shooting</li> <li>show a win screen after first mission (the completed one)</li> <li>print version number on a title screen</li> </ul> <h3>v0.1.0</h3> <ul> <li>complete game mechanics</li> <li>complete mission 1</li> <li>complete screens outside missions (but without music for a win screen after mission 3)</li> <li>implemented persisted high score</li> </ul> https://www.lexaloffle.com/bbs/?tid=49480 https://www.lexaloffle.com/bbs/?tid=49480 Sun, 25 Sep 2022 18:16:18 UTC Towers of Survival <p> <table><tr><td> <a href="/bbs/?pid=115972#p"> <img src="/bbs/thumbs/pico8_brp_towersofsurvival-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=115972#p"> Towers of Survival</a><br><br> by <a href="/bbs/?uid=67168"> beetrootpaul</a> <br><br><br> <a href="/bbs/?pid=115972#p"> [Click to Play]</a> </td></tr></table> </p> <p>This game is my submission for the <a href="https://itch.io/jam/lowrezjam-2022">LOWREZJAM 2022</a>, which requires games to have resolution of 64x64px.</p> <hr /> <p>Enemies are approaching. There are 10 waves of them. We need to survive.</p> <p>There are 3 types of towers you can build:</p> <ul> <li>laser - the fast one,</li> <li>v-beam - the stronger one; its beam covers all tiles above and below, therefore you cannot build anything else on its way,</li> <li>booster - this one makes all surrounding lasers and v-beams shoot longer and re-charger faster; you can &quot;stack&quot; boosters to increase total boost &ndash; each laser can be boosted up to 8 times and each v-beam up to 6 times (not 8, because 2 tiles are reserved.</li> </ul> <p>Our base have 5 cores. Each enemy is capable of destroying one core. Without cores, we cannot survive, it's that simple.</p> <p>Good luck! You are our last hope&hellip;</p> <hr /> <img style="margin-bottom:16px" border=0 src="/media/67168/2022-08-12_title.png" alt="" /> <img style="margin-bottom:16px" border=0 src="/media/67168/2022-08-12_placement.png" alt="" /> <img style="margin-bottom:16px" border=0 src="/media/67168/2022-08-12_wave.png" alt="" /> https://www.lexaloffle.com/bbs/?tid=48955 https://www.lexaloffle.com/bbs/?tid=48955 Thu, 18 Aug 2022 10:09:53 UTC Avoid Your Past <p> <table><tr><td> <a href="/bbs/?pid=114801#p"> <img src="/bbs/thumbs/pico8_brp_avoidyourpast1-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=114801#p"> Avoid Your Past</a><br><br> by <a href="/bbs/?uid=67168"> beetrootpaul</a> <br><br><br> <a href="/bbs/?pid=114801#p"> [Click to Play]</a> </td></tr></table> </p> <p>This game is my submission for <a href="https://itch.io/jam/mini-jam-111-colors">Mini Jam 111: Colors&sup2;</a>. </p> <p>Your goal is to maximise your score. May it be by collecting coins (10 points for each) or activating paints (3 points for a orange one, 1 point for a pink one).</p> <p>Your enemy is your past self &ndash; every time you pick a coin, a memory of your movement appears. You have to avoid those memories to stay alive. </p> <p>Orange and pink paint drops result with a temporary effect. Orange paint makes coins disappear, so you cannot pick them. The pink one makes your past selves disappear, making you invulnerable.</p> <p>Controls:</p> <ul> <li>arrows &ndash; change player's movement direction</li> <li>enter &ndash; pause and open menu</li> </ul> <img style="margin-bottom:16px" border=0 src="/media/67168/4_screenshot-arrows.png" alt="" /> <img style="margin-bottom:16px" border=0 src="/media/67168/screenshot-normal.png" alt="" /> <img style="margin-bottom:16px" border=0 src="/media/67168/screenshot-invulnerable.png" alt="" /> https://www.lexaloffle.com/bbs/?tid=48656 https://www.lexaloffle.com/bbs/?tid=48656 Mon, 25 Jul 2022 11:44:43 UTC