SVEDEN11 [Lexaloffle Blog Feed] Space Ranger <p> <table><tr><td> <a href="/bbs/?pid=147898#p"> <img src="/bbs/thumbs/pico8_spaceranger-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=147898#p"> Space Ranger</a><br><br> by <a href="/bbs/?uid=21326"> SVEDEN11</a> <br><br><br> <a href="/bbs/?pid=147898#p"> [Click to Play]</a> </td></tr></table> </p> <h3>SEIZURE WARNING:</h3> <p>This game may potentially trigger seizures for people with photosensitive epilepsy. Viewer discretion is advised.</p> <h3>Controls:</h3> <p>Move: Arrow Keys<br /> Shoot: X<br /> Bomb: Z<br /> Pause: Enter<br /> NOTE: Shoot / Bomb buttons can be swapped in the Pause menu</p> <h3>Instructions:</h3> <ul> <li>Defeat 30 waves of space pirates and recover the doubloons they leave behind.</li> <li>The ring around your ship indicates the range which will attract doubloons</li> <li>Destroying space pirates will increase your score multiplier. Letting a space pirate escape the area or taking damage will reset this multiplier to zero</li> <li>Collecting 100 doubloons will grant you a temporary shield which will absorb damage once without resetting your combo</li> <li>Once you take 3 hits your ship will be destroyed <h3>Power Ups:</h3></li> <li>Powerups will appear throughout the run, cycling between three abilities: Power, Option, and Magnet. Powerups can be upgraded 3 times, after which bomb pickups will appear in its place.</li> <li>Power (P): Increases the fire rate and potential damage of your ship</li> <li>Option (O): Options will orbit around your ship, firing additional shots, widening your range.</li> <li>Magnet (M): Increases your pickup range, allowing you to collect doubloons easier. It will also increase the range of any Options that orbit your ship.</li> <li>Bomb (B): Bombs will clear all enemies and their projectiles on the screen., awarding additional points for each enemy and projectile cleared. You start with 3 bombs.</li> </ul> <h2>Changelog</h2> <p><div><div><input type="button" value=" Show " onClick="if (this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display != '') { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = ''; this.innerText = ''; this.value = ' Hide '; } else { this.parentNode.parentNode.getElementsByTagName('div')[1].getElementsByTagName('div')[0].style.display = 'none'; this.innerText = ''; this.value = ' Show '; }"></div><div><div style="display: none;"><br /> v.135</p> <h3>Enemy Improvements</h3> <ul> <li>New enemy &quot;Freighter&quot;: A slow moving gunship that soaks up damage and fires 3 projectiles at once. Don't leave too many of them onscreen or you will quickly be overwhelmed</li> <li>New enemy &quot;Miner&quot;: Moves in a zig zag pattern, bouncing off edges of the playfield. Doesn't attack but explodes when destroyed, shooting projectiles and leaves a stationary projectile which must be avoided</li> <li>Existing enemies have had some of their shot patterns tweaked to make them more unique from each other <h3>Boss Improvements</h3></li> <li>Boss health increased (and now has a health bar)</li> <li>Boss now moves all over the screen so you can't camp at the bottom</li> <li>Boss has several more shot patterns of varying complexity</li> <li>Boss earned its own theme music <h3>Powerup Improvements</h3></li> <li>Collecting 100 doubloons now grants you a temporary shield which will absorb one hit without resetting your combo and help you survive longer, as well as making the &quot;Magnet&quot; powerup more useful -- UI has been updated to show current doubloon count (replaces &quot;PILOT&quot; text in top-right corner)</li> <li>&quot;Power&quot; fire rate and potential damage increased for your ship/options</li> <li>&quot;Option&quot; fire rate reduced to prevent player from becoming too easy</li> <li>More powerup opportunities for the player (or bombs to be collected <h3>Bomb Improvements</h3></li> <li>In addition to enemies, all projectiles cleared by bombs will spawn doubloons</li> <li>When pressing the bomb button, a sound will play instead if there are no bombs remaining <h3>Visual Improvements</h3></li> <li>Several new color palettes added (these may come unlockables later)</li> <li>Tweaked some existing color palettes for improved clarity</li> <li>Options now use sprites</li> <li>Several other sprites adjusted to be more thematic with space-pirates</li> <li>Added more juice when hitting enemies as well as impact particles <h3>Scoring Improvements:</h3></li> <li>Scoring system simplified: Score is primarily calculated by enemy score value multiplied by combo</li> <li>Enemies now have different score values</li> <li>Bombs award bonus points based on the number of projectiles that were cleared at once</li> <li>Bonus points awarded for lives remaining at the end of a run <h3>Misc. Improvements:</h3></li> <li>Auto-fire mode is now available in options for better accessibility (and since there's no benefit to not firing)</li> <li>Levels now progress more evenly</li> <li>Adjusted stars generation in the background for better readability</li> </ul> <p>v1.2</p> <ul> <li>Added option to disable screen shake</li> <li>Added option to swap Shoot / Bomb buttons (NOTE: Shoot / Bomb default buttons were swapped to be more consistent with other games in the genre)</li> <li>Added option to reset high score (ignores left/right buttons but use carefully nonetheless)</li> <li>Added version number to title screen</li> <li>Added functionality to theme menu -- it now changes color palette in real time to make previewing them easier</li> <li>Added bomb functionality -- bombs now destroy all enemy projectiles on screen and not just enemies themselves (should make bombs more useful overall, especially during boss fight when overwhelmed with shots)</li> <li>Changed starting enemies so they will now shoot more than once</li> <li>Changed explosions size slightly to improve readability</li> <li>Changed doubloon spawn count when enemies are destroyed to improve readability -- They will always spawn one doubloon, but doubloons are worth more now so high scores can still be achieved</li> <li>Changed size of powerups so they are larger/easier to collect</li> <li>Changed boss health, shot cooldowns, speed, to balance difficulty</li> <li>Changed boss phases so they are clearer to the player -- will now explode doubloons between phases, not just on death</li> <li>Changed menu functionality so all options have similar controls -- X / O no longer close the menu, use Esc or Continue instead</li> <li>Fixed bug where player couldn't collect powerups near bottom of screen</li> <li>Fixed bug where boss could receive damage during its entrance</li> <li>Fixed bug where boss wouldn't move, now it should move from side to side</li> <li>Fixed bug where player could die during boss' death animation</li> <li>Fixed bug where both victory and loss themes would play when dying at boss</li> <li>Fixed bug where doubloons wouldn't award points properly</li> </ul> <p>v1.1</p> <ul> <li>Added music to the game</li> <li>Added alternate color palettes</li> <li>Added &quot;play time&quot; stat that appears at the end of a run for lite speed running</li> <li>Changed boss functionality to be more challenging</li> <li>Changed enemy behavior to allow more variety</li> <li>Changed visuals to improve readability (all player shots are blue, all enemy shots are orange instead of mixing the two)</li> <li>Changed powerup names to be more consistent with &quot;shmup&quot; standards</li> <li>Fixed a bug where enemies that spawned later in the game only had 1HP, making the game easier than intended<br /> </div></div></div></li> </ul> <p>Thanks to everyone who checked out the game! Let me know your thoughts on the latest update, or what you'd like to see in the future for Space Ranger!</p> Sat, 04 May 2024 10:07:34 UTC Dungeon Song Test v1 <p> <table><tr><td> <a href="/bbs/?pid=73896#p"> <img src="/bbs/thumbs/pico8_dungeonsongtest-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=73896#p"> Dungeon Song Test v1</a><br><br> by <a href="/bbs/?uid=21326"> SVEDEN11</a> <br><br><br> <a href="/bbs/?pid=73896#p"> [Click to Play]</a> </td></tr></table> </p> <p>This is just a small loop I've been working on which I plan to put in one of my games, but thought I'd upload it to see what others think. It doesn't use any custom instruments and so far any additional layers I've attempted to add (drums, other melodies, etc.) haven't really sounded right. I'm curious if folks think this loop stands on its own enough or if it would become annoying to listen to after a while. Any general feedback is welcome.</p> Sat, 14 Mar 2020 00:23:07 UTC How to check for overlapping sprites? <p>When I try to run the code listed below, my game freezes because of the while loop. Can anyone shed some light on how I can prevent the while loop in this code snippet from choking? Or if there's a better way all together?</p> <p>I'm hoping to add additional objects to these functions (though they would be single objects instead of sets of 30 and 15, but I'm not at all an experienced coder.</p> <p>I was trying to borrow code from the following page: <a href=""></a></p> <p>I'm also having a second issue of all 45 sprites being set to foo's sprite instead of 30 for foo and 15 for bar, but i'll have to tackle that later unless someone can weigh in on that as well.</p> <p>Any help is greatly appreciated! Thank you :)</p> <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> function _init() test = 0 for i = 1, 30 do spawn_actor(foo) end for i = 1, 15 do spawn_actor(bar) end function spawn_actor(name) local obj = {} obj.type = name obj.frame = nil obj.x = flr(rnd(right_border) + left_border) obj.y = flr(rnd(bottom_border - top_border) + top_border) obj.w = 8 obj.h = 8 obj.x2 = obj.x + obj.w * 8 obj.y2 = obj.y + obj.h * 8 if == foo then obj.frame = 16 + flr(rnd(3)) elseif == bar then obj.frame = 32 end overlapped = true while overlapped do overlapped = false foreach(actors, function(actors) if actors.x &lt;= obj.x + obj.w * 8 + 1 and actors.x + actors.w * 8 &gt;= obj.x - 1 and actors.y &lt;= obj.y + obj.h * 8 + 1 and actors.y + actors.h * 8 &gt;= obj.y - 1 then test += 1 overlapped = true obj.x = flr(rnd(right_border) + left_border) obj.y = flr(rnd(bottom_border - top_border) + top_border) end end) end add(actors, obj) end function _draw() cls() foreach (actors, draw_actor) end function draw_actor(obj) spr(obj.frame, obj.x, obj.y, 1, 1) end </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> Mon, 09 Jan 2017 02:19:17 UTC Is there any way to simulate z-index? <p>Hi,</p> <p>I'm trying to have a sprite move in front of and behind other objects to simulate z-index ordering, but I'm not sure how to do this in PICO-8. I figured it would work something like if object_a.y &gt; object_b.y, move behind that object. </p> <p>I saw somewhere someone giving each object/sprite a &quot;z&quot; variable that would control what order things were drawn, but that wasn't for PICO-8 so I don't know if that could be recreated here. </p> <p>After some searching, I see that this has been done in The Lair and Kick Wizards, but I'm very new to Lua/PICO-8 so I'm having a hard time finding how they're doing it. Any help is greatly appreciated.</p> <p>The Lair: <a href=""></a><br /> Kick Wizards: <a href=""></a></p> <p>Thanks!</p> Sat, 07 Jan 2017 07:38:39 UTC