professir [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=56007 Untitled Mining Game - v0.4.1 (last update: Feb 20) <p> <table><tr><td> <a href="/bbs/?pid=107209#p"> <img src="/bbs/thumbs/pico8_digdig-4.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=107209#p"> Untitled Digging Game</a><br><br> by <a href="/bbs/?uid=56007"> professir</a> <br><br><br> <a href="/bbs/?pid=107209#p"> [Click to Play]</a> </td></tr></table> </p> <p>Currently working on this mining game - happy to hear some feedback if you play :) Still a lot of work to be done and a lot of ideas in the pipeline.</p> <p>Just gotta dig out some gems and sell them at the shop / upgrade screen to purchase consumable items and permanent upgrades. Your battery will recharge automatically and you will sell your gems automatically when you surface. </p> <p><strong>LADDERS and TORCHES are VERY IMPORTANT!</strong> Without ladders, you will get stuck. Without torches, you can not see where the gems are. </p> <h3>IF YOU GET STUCK, PRESS ENTER THEN &quot;RESCUE&quot; - this will reset your inventory and bring you to the surface</h3> <p>Currently you can dig down 200 meters. The rocks get harder to drill at 100m and below. More valuable gems are deeper in the mine.</p> <p>You have 3 hearts currently. You lose a heart when you take <strong>fall damage</strong>. In order to take fall damage, you need to fall ~9 blocks (about the distance from your player to the bottom of the screen - so if a pit extends beyond the bottom of the screen, be careful!). If you lose all 3 hearts, you will be automatically <strong>rescued</strong> (lose inventory and placed on surface).</p> <h2>Controls</h2> <ul> <li>Arrow keys move</li> <li>Z to select inventory item</li> <li>X to use item (hold to drill!)</li> <li>UP to interact w/ shops and teleporter</li> <li>ENTER&gt;&quot;RESCUE&quot; if you get stuck</li> </ul> <h2>Upgrades</h2> <p>Visit the Upgrade Duck to get permanent buffs:</p> <ul> <li><strong>Inventory Size</strong>: can hold more consumable items from the shop or gems you find in the world</li> <li><strong>Battery Size</strong>: capacity of your battery. A larger batter allows you to dig longer without having to surface</li> <li><strong>Walking Speed</strong>: how fast your character can move</li> <li><strong>Drill Power</strong>: how quickly your drill can destroy blocks of dirt and free gems</li> </ul> <h2>Consumable Items Shop</h2> <p>Visit the Shop Cloud to get helpful consumables:</p> <ul> <li><strong>Ladders</strong>: gives you 9 ladders to place in the mine. Very important for getting out!</li> <li><strong>Torch</strong>: lights up a medium-sized area and exposes buried gems</li> <li><strong>Light Bulb</strong>: lights up a very large area and exposes buried gems</li> <li><strong>Power Pack</strong>: recharges 50% battery - can be found buried in the dirt sometimes as well</li> <li><strong>Power Station</strong>: permanent building placed in the mine - will recharge your battery. Can place more than one</li> <li><strong>Teleporter</strong>: permanent building placed in the mine - will teleport you to and from the surface. Can place more than one</li> </ul> <p>Thanks for checking it out. Lots of changes still to come.</p> <h3>Changelog:</h3> <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 /> 2-20-22 v0.4.1:</p> <ul> <li>Bugfix shop layout</li> <li>Bugfix pressing Z while X is held down</li> <li>Allow player to force down-drill while holding the down arrow. Safe down drill by holding Z but not Down Arrow</li> </ul> <p>2-20-22 v0.4:</p> <ul> <li>Removed personal illumination. Must rely on torches now</li> <li>Added RESCUE menu item. This will reset your inventory and place you on the surface</li> <li>Added player hearts. Lose 3 and you are automatically rescued</li> <li>Added gravity and fall damage </li> <li>Added ladders to the shop and given to player at beginning of game</li> <li>Default to 4 inventory slots now</li> <li>First layer of mine is now undrillable grass blocks</li> </ul> <p>2-20-22 v0.3:</p> <ul> <li>Layered gem spawns &amp; sale price changes</li> <li>Economy and upgrade scale rebalance</li> </ul> <p>2-19-22 v0.2:</p> <ul> <li>Added light &amp; shadow system</li> <li>Torches and light bulb consumables added to the shop</li> <li>Player receives one free torch at the start of every game</li> <li>The price of upgrades now scale with your level. More balance changes still to come</li> <li>Gems are automatically sold upon surfacing. No need to enter a shop to sell</li> <li>Unburied items are now permanently visible in the mines</li> <li>Renamed certain upgrades</li> <li>Updated graphics + shop graphics - items you can afford are not shown in green</li> <li>Depth display</li> </ul> <p>2-18-22 v0.1:</p> <ul> <li>First release. Dig to get gems and sell for upgrades and items.<br /> </div></div></div></li> </ul> https://www.lexaloffle.com/bbs/?tid=46646 https://www.lexaloffle.com/bbs/?tid=46646 Sat, 19 Feb 2022 00:11:26 UTC Simple Timers Service <p> <table><tr><td> <a href="/bbs/?pid=99913#p"> <img src="/bbs/thumbs/pico8_simple_timer_service-6.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=99913#p"> Simple Timers Service</a><br><br> by <a href="/bbs/?uid=56007"> professir</a> <br><br><br> <a href="/bbs/?pid=99913#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Simple Timers Service</h1> <p>Here is a Simple Timers Service that can manage multiple timed events -- feel free to use it in your games :D</p> <h2>How to use</h2> <p>This service is a Singleton and can be referenced with the variable &quot;timer&quot;. </p> <p>The service exposes 2 methods:</p> <ul> <li><strong>timer:start( _frames , _callback )</strong> <ul> <li><em>Simply start any number of timers, wherever you want in your code</em></li> <li><strong>_frames</strong>: the number of frames to count down before executing the callback function</li> <li><strong>_callback</strong>: the function to execute after the number of frames has elapsed</li> <li>Example: &quot;timer:start(600,my_function)&quot; -- this will execute &quot;my_function()&quot; after 600 frames have elapsed</li> </ul></li> <li><strong>timer:update()</strong> <ul> <li><em>Simply place this into the pico _update or _update60 function to allow the service to update itself each frame</em></li> <li><em>Note that update60 will cause the timer to &quot;count&quot; twice as fast, since it is counting down the number of frames</em></li> <li><em>The service uses this internally to iterate all of the timers that have been started in order to decrement each / execute callbacks as necessary</em></li> </ul></li> </ul> <h2>The code</h2> <p>In the cart, Tab 0 is the Simple Timers Service code. Tab 1 is a commented example of how to use it in your project. I have pasted the code below for your convenience:</p> <h1>Tab 0 - Simple Timers Service</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>--simple timers service --by buck young | professir timer=(function() local sts={ update=function(e) for i=1,#e.l do e.l[i].t-=1 if e.l[i].t&lt;=0 then e.l[i].f();deli(e.l,i) return end end end, start=function(e,t,f) add(e.l, {t=t,f=f}) end, } sts.__index=sts return setmetatable({l={}},sts) end)()</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <h1>Tab 1 - Example Implementation</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>-- example implementation function _init() cls(0) -- start a timer -- from anywhere in your -- code. this code says -- &quot;after 30 frames, call -- the 'green_screen' -- function&quot;: timer:start(30,green_screen) -- you can even in-line -- an anonymous function. -- this call says &quot;after -- 60 frames, turn the -- screen red&quot;: timer:start(60,function() cls(8) end) -- you can start as many -- timers as you like, -- they are all managed -- within the service itself. timer:start(90,green_screen) end function _update() -- be sure to include this -- in your update function -- so the timers service -- can do its job: timer:update() end function green_screen() cls(11) end</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <h3><em>Many thanks to FReDs72 and merwok for some helpful discussions in the PICO-8 discord!</em></h3> https://www.lexaloffle.com/bbs/?tid=45317 https://www.lexaloffle.com/bbs/?tid=45317 Wed, 10 Nov 2021 18:56:20 UTC PLORBO: Critter Getter <p> <table><tr><td> <a href="/bbs/?pid=99784#p"> <img src="/bbs/thumbs/pico8_plorbo-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=99784#p"> PLORBO: Critter Getter</a><br><br> by <a href="/bbs/?uid=56007"> professir</a> <br><br><br> <a href="/bbs/?pid=99784#p"> [Click to Play]</a> </td></tr></table> </p> <h3>An alien abduction game with procedurally generated planets</h3> <p><em>ATTENTION, PLORBO! We require new critters from across the Universe for our intergalactic zoo, the Pride of Plorbia. You must venture to new, unexplored worlds to find specific critters that we beam to your Mothership and return them to us.</em></p> <h2>Controls</h2> <p>When controlling green ship:</p> <ul> <li>ARROW KEYS: move</li> <li>Z: boost</li> <li>X: abduct</li> </ul> <p>When docked to Mothership:</p> <ul> <li>DOWN: undock</li> </ul> <p>When out of energy:</p> <ul> <li>LEFT / RIGHT: control Mothership for a rescue</li> </ul> <p>Any time:</p> <ul> <li>Press ENTER to VIEW THE ZOO or MUTE THE MUSIC</li> </ul> <p>‚ÄčIn the zoo:</p> <ul> <li>Left/right to scroll</li> <li>Hold Z + left/right to scroll quickly</li> <li>X to exit zoo</li> </ul> <h2>How to Play</h2> <p>View the required head and body at the Mothership, then explore the planet to find a critter with both that head and body. Abduct it and return it to the Mothership. Do this a few times to visit the next planet. You can collect extra research points by finding critters with similar features, even if you do not find the exact match. You may abduct up to 5 creatures at once.</p> <p>In between planetary visits, you will see the zoo with all the critters you have found so far. The zoo has some statistics listed - they will turn gold once you &quot;complete&quot; each stat. </p> <p>Watch your energy meter (yellow meter above your craft). Moving, abducting, and boosting (especially) uses energy. Recharge at the Mothership. If you run out of energy and crash, you can control your Mothership to stage a rescue. Crash three times and thats game over!</p> <h2>External Links</h2> <p><a href="https://professir.itch.io/planet-plorbii-doo-zed">Itch.io Game Page</a></p> https://www.lexaloffle.com/bbs/?tid=45291 https://www.lexaloffle.com/bbs/?tid=45291 Mon, 08 Nov 2021 15:46:45 UTC Custom menuitem causes crash after INFO+RESUME <p>I found a potential bug with INFO+RESUME pico console commands. If you RESUME after calling INFO and then try to interact with a custom menu item, you get the following error:</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>ATTEMPT TO INDEX FIELD '?' (A NIL VALUE) IN FLIP LINE 0 (TAB 0) AT LINE 0 (TAB 0)</pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <h2>Example</h2> <img style="margin-bottom:16px" border=0 src="/media/56007/example2.gif" alt="" /> <p><em>Note: Ignore the second RESUME typed into the console after the program has already crashed</em></p> <h1>Sudden freeing of RAM after INFO+RESUME</h1> <p>Another curious thing is a huge RAM drop after INFO+RESUME (something getting GC'd that shouldn't be?). Notice the RAM display upon RESUME in this example (drops from 10% utilization to 7%):</p> <img style="margin-bottom:16px" border=0 src="/media/56007/example1.gif" alt="" /> <p><em>Note: Ignore the second RESUME typed into the console after the program has already crashed</em></p> <h1>Steps to reproduce</h1> <ul> <li>Load any cart with a custom menu item</li> <li>Press ESC and type INFO into the console</li> <li>Type RESUME</li> <li>Press ENTER and select a custom menu item</li> </ul> https://www.lexaloffle.com/bbs/?tid=45150 https://www.lexaloffle.com/bbs/?tid=45150 Wed, 27 Oct 2021 16:16:56 UTC Chance of Rain: Evolutionary Simulation <p> <table><tr><td> <a href="/bbs/?pid=99046#p"> <img src="/bbs/thumbs/pico8_chance_of_rain-9.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=99046#p"> Chance of Rain: Evolutionary Simulation</a><br><br> by <a href="/bbs/?uid=56007"> professir</a> <br><br><br> <a href="/bbs/?pid=99046#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Chance of Rain</h1> <h3>A slightly interactive and slightly meditative evolutionary pond simulation</h3> <h2>Controls</h2> <ul> <li>ARROW KEYS: control frog</li> <li>Z: surface/submerge</li> <li>X: tongue</li> <li>ENTER: options</li> </ul> <h2>Gameplay</h2> <p>This simulation is meant to be watched more than played (though you may interact with it by suggesting actions for the frog). </p> <p>There are four types of creatures living in this rainy pond: a frog, fish, flies, and dragonflies. Enjoy watching them swim, fly, eat, die, and birth new generations. Flies birth larva into the water which swim towards the nearest rock, where they slowly mature and eventually sprout wings - becoming flies themselves. Well-fed fish will turn green and reproduce when near each other. Dragonflies swarm the lillypad to spawn new. Each parent passes genetic predispositions onto their offspring - which allows for behavior evolution over time. Creatures may die of old age or starvation. All the while, a happy frog swims about - ready to offer a guiding hand (or, rather, mouth) if one part of the ecosystem becomes unbalanced.</p> <p>Occasionally, you may see some event-triggered haikus or tips to help you further enjoy and understand the game. Statistics about your world will also slide by from time-to-time (and can be triggered manually from the options menu). If your ecosystem fails or you lose a creature type, just keep playing - there are heavy storms that roll in occasionally to replenish your stock.</p> <p>Every game has randomizations, so each experience will be unique.</p> <h2>DNA System</h2> <p>A <strong>DNA system</strong> has been implemented that allows parents to pass certain parameters onto their offspring. There is even a chance of slight genetic mutations for each parameter. Through this system, each species will actually evolve its behavior over time to be best-suited to its environment. </p> <ul> <li>Dragonflies pass on these parameters to their offspring <ul> <li>speed, initial lifespan, threshold for hunger, starvation resistance, tolerance for rain, and others</li> </ul></li> <li>Fish pass on these parameters to their offspring <ul> <li>speed, initial lifespan, threshold for hunger, and starvation resistance</li> </ul></li> <li>Insects pass on these parameters to larva which become adult flies <ul> <li>speed, initial lifespan, swarming location, tolerance for rain, and others</li> </ul></li> </ul> <p>Full &quot;technical&quot; breakdown of the DNA system:<br /> <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 /> When 2 parents of any species produce an offspring, the child inherits parameters from the parents. For each parameter, there is a:</p> <ul> <li>33% chance the child will inherit the value from its father</li> <li>33% chance the child will inherit the value from its mother</li> <li>33% chance the child will inherit the average value of its mother+fathers parameter</li> <li>1% chance of a 'genetic mutation' which can increase the parameter beyond defined maximums<br /> </div></div></div></li> </ul> <h2>Options</h2> <p>Press the ENTER key to adjust these options: </p> <ul> <li>If the text scrolls too quickly or too slowly, you may <strong>adjust your reading speed</strong></li> <li>If you are returning to the game, <strong>you may disable tips</strong> to enjoy only haikus and stats</li> <li>If you want a more meditative experience, you may <strong>disable the text completely</strong></li> <li>You may also manually <strong>prompt gameplay stats</strong> to scroll by. This will happen occasionally through normal gameplay, as well. </li> </ul> <h2>Creature colors</h2> <ul> <li>Green: well-fed and fertile - will birth a new generation when a partner is found</li> <li>Red: starving - will alter its behavior to look for food more seriously</li> <li>Grey/Brown: getting old - will likely die soon</li> <li>Peach: just born!</li> </ul> <h2>Final thoughts</h2> <p>There is a ton of nuance and complexity to the system but my goal was to simplify the player's experience as much as possible. Furthermore, I wanted to expose as much of the game as possible to the player from within the game itself (hence the tips that scroll by). Creature lifespans can be as long 40+ minutes, so this game was definitely meant to be enjoyed in the background / as a virtual aquarium. Personally, I turn off all scrolling text and leave it on during the workday to observe the system over many hours. I hope you, too, find enjoyment in this experience :)</p> <h2>Itch.io Link</h2> <ul> <li><a href="https://professir.itch.io/chance-of-rain">https://professir.itch.io/chance-of-rain</a></li> </ul> <h2>Versions</h2> <h3><em>FINAL VERSION RELEASED! (10/29/2021)</em></h3> <ul> <li>Version 9 will be the final update of this project, other than any future bug fixes or player suggestions</li> </ul> <p><em>Click here for full change-log:</em><br /> <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;"></p> <h3>Version 9 | 2021-10-29 | chance_of_rain-9</h3> <p><strong><em>Increase births</em></strong></p> <ul> <li>Only 1 side has to be fertile for fish and dragonfly</li> <li>Increase fish lifespan to 23m-36m</li> <li>Increase dragonfly lifespan to 14m-20m</li> <li>Dragonflies stay fertile until 1/2 hunger instead of 1/4</li> <li>Well fed fish head towards a submerged frog when fertile</li> <li>Dragonfly hunger threshold lowered</li> <li>2 larva each time fertile flies meet</li> <li>Drastically lower dragonfly birth rate</li> <li>Rework fly stun/die logic to release flies from the mortal realm more easily</li> </ul> <p><strong><em>DNA System</em></strong></p> <ul> <li>Create DNA system so parents can pass parameters onto their offspring</li> <li>Implement DNA for fish, dragonflies, and flies (thru larva)</li> <li>Explanation of DNA system: When 2 parents produce offspring, the child inherits parameters from the parents. For each parameter, there is a 33% chance the child will inherit the value from its father, 33% chance from the mother, and 33% chance it will inherit the average of mother+father's parameter. There is also a 1% chance of a 'genetic mutation' which can increase the parameter beyond defined maximums.</li> </ul> <p><strong><em>Particle System</em></strong></p> <ul> <li>Particles on birth of all species <ul> <li>(big thanks to CART #58210, <a href="https://www.lexaloffle.com/bbs/?uid=26940"> @DocRobs</a>)</li> </ul></li> <li>Particles on death of all species except larva</li> </ul> <p><strong><em>Music</em></strong></p> <ul> <li>Added intro and phrase 1 of e.sati g1</li> <li>Play music on game start - refactor intro text a bit</li> <li>Refactor and add sfx for the new interactions in versions 7/8/9</li> </ul> <p><strong><em>Misc</em></strong></p> <ul> <li>When fish are <em>very</em> close to starving, they will move towards a surfaced frog</li> <li>Flies will still swarm on their fertility schedule even if not fertile</li> <li>Flies revitalized on next storm anytime under 10</li> <li>Fish are allowed to have a single member during a storm without being revitalized</li> <li>Dragonflies die of old age in the action area <ul> <li>Fish can eat them - ~2x nutrition of stunned flies</li> </ul></li> <li>Refactor stats haikus and tips to reclaim some compression space</li> <li>Larva birth rate implemented</li> <li>Fish max list count set to 5</li> <li>Lots of rebalancing and tweaking (as always)</li> <li>When creatures eat, their lifespan is extended slightly</li> <li>Increase swarm-xy range - should see evolution over time where insects swarm closer to the rock</li> <li>Increase/rework rand_int range on DNA parameters across all species - should allow greater evolutionary advantages to manifest</li> <li>Repurpose some tips to explain new features</li> </ul> <h3>Version 8 | 2021-10-26 | chance_of_rain-8</h3> <p><strong><em>Dragonfly and fish lifespans</em></strong></p> <ul> <li>Both dragonflies and fish can die of old age</li> <li>Stats for tracking starvation and old-age death stats of dragonfly and fish</li> </ul> <p><strong><em>Reduce messiness of too many entities</em></strong></p> <ul> <li>Reduced the max list counts of all species</li> <li>Stunned flies in the action area disappear after 83 seconds</li> </ul> <h3>Version 7 | 2021-10-25 | chance_of_rain-7</h3> <p><strong><em>Hunger &amp; lifecycle updates</em></strong></p> <ul> <li>Implement dragonfly hunger (6532-&gt;6619 - 87 tokens)</li> <li>Implement dragonfly reproduction/birth (6619-&gt;6682 - 63 tokens) <ul> <li>dragonflies perform their mating dance near the lillypad</li> <li>new dragonflies are born on the lillypad</li> </ul></li> <li>Add dragonfly birth stats</li> <li>Introduce &quot;well fed&quot; states for dragonfly and fish</li> <li>Add fish birth - 2 fertile fish must collide &amp; tracking stats (6682-&gt;6882 - 200 tokens [other stuff was included in this]) <ul> <li>fertility occurs when a fish is over-fed (well fed)</li> </ul></li> <li>Dragonfly and fish stay fertile until 1/4 and 1/2 hunger, respectively</li> <li>fly fertility color changed to match fish/dragonfly standard</li> <li>track fly and larva birth stats</li> <li>fertile flies are worth an extra 5 nutrition (even if stunned)</li> <li>fix fly and dragonfly despawning bug - rebalance init population sizes and fertility behaviors</li> <li>flies only remain fertile for 10 seconds</li> <li>fish and dragonflies can only be born at most every 60 seconds or 5 mins, respectively</li> <li>flies age slower (hibernate/rest) when its raining too much for them (to help ease impact of long bouts of rain)</li> </ul> <p><strong><em>Reduce build-up of stunned flies on water surface (introduced in version 6)</em></strong></p> <ul> <li>reduce nutritional values for larva and flies (15&amp;30/35 instead of 20&amp;60)</li> </ul> <p><strong><em>Big code refactor to prepare for future changes</em></strong></p> <ul> <li>Introduce hunger behavior &amp; refactor fish implementation</li> <li>Reduce token count through some refactoring across the board (~7200-&gt;6485) and character count (~63k-&gt;58k) <ul> <li>mainly removing unneeded variables and functions (prefer inlining)</li> <li>doing some DRY (though this sometimes created more tokens &amp; was reverted)</li> <li>flattening the objects (prefer global) (menu is a good example)</li> <li>doing the math</li> <li>multiple variable assignments on one line</li> <li>introduce &quot;rnd_int&quot; to bucklib</li> <li>comment out debug/unused code</li> <li>remove lillypad movement</li> </ul></li> <li>Deal with char limit reached <ul> <li>shorten parameter names in all behavior files</li> <li>shorten variable names (direction-&gt;dir, etc)</li> </ul></li> <li>Deal with compression limit reached <ul> <li>remove large blocks of comments and some whitespace</li> </ul></li> </ul> <p><strong><em>Misc</em></strong></p> <ul> <li>add current rain to world stats</li> <li>change display order of world stats - creature-first focus</li> <li>raise rock and lilly max_y to avoid overlapping titles</li> <li>add force option to add_tip - force the wave revitalization tip on first storm</li> <li>completely clear stats buffer on text hide</li> <li>do not allow adding to buffer when stats are hidden</li> <li>force storm when any list is 0 (dragonfly, fly, or fish)</li> <li>introduce max list count for dragonfly, fly, larva, and fish</li> <li>dragonfly draw order reversed so fresh births are drawn below flying ones</li> <li>add additional read speed (1.5)</li> <li>various bugfixes and rebalancing</li> <li>fish no longer feed on larva during heavy rain (&gt;70)</li> </ul> <h3>Version 6 | 2021-10-23 | chance_of_rain-6</h3> <p><strong><em>Code refactor to prepare for future changes</em></strong></p> <ul> <li>Cleanup creature controller code for larva and dragonfly and fish <ul> <li>break draw &amp; update functions into encapsulated pieces</li> <li>refactor dragonfly execution flow for simplicity and readability</li> </ul></li> <li>introduce birth behavior</li> <li>introduce collision dumping ground</li> <li>introduce &quot;create_individual&quot; paradigm</li> <li>cleanup unneeded direction delay functions (make anonymous)</li> </ul> <p><strong><em>Menu</em></strong></p> <ul> <li>Add menu item to show world stats</li> <li>Better behaved text change speed menu item (press left/right or enter to change speed)</li> </ul> <p><strong><em>Misc</em></strong></p> <ul> <li>Add sticky title to scrolling stats &amp; updated many texts</li> <li>Added to music (still wip)</li> <li>Added a new tip: how to manage a large fly population</li> </ul> <h3>Version 5 | 2021-10-23 | chance_of_rain-5</h3> <p><strong><em>Complete ecosystem failure should be less likely and easier to recover from</em></strong></p> <ul> <li>larva and stunned flies have different nutritional values now</li> <li>fish hunger threshold has been increased</li> <li>if fish population hits 0, a storm is forced on the next cycle</li> <li>if fly population is below 10 (instead of at 0), it gets rejuvenated on next storm</li> <li>ease lifespan suppression for large populations of flies (65-&gt;40)</li> </ul> <p><strong><em>Further limit dragonfly damage to fly populations</em></strong></p> <ul> <li>dragonflies must be in action area to catch flies</li> </ul> <p><strong><em>Misc</em></strong></p> <ul> <li>decrease frog tongue hitbox size</li> <li>fix lillypad left-drift bug</li> </ul> <h3>Version 4 | 2021-10-22 | chance_of_rain-4</h3> <p><strong><em>Limit dragonfly damage to fly populations</em></strong></p> <ul> <li>Dragonflies can only grab 1 fly per screentime - must carry off-screen to eat</li> </ul> <p><strong><em>Misc</em></strong></p> <ul> <li>Change tag line from poetic to meditative</li> <li>Add runtime to world stats</li> <li>Music skeleton (wip)</li> </ul> <h3>Version 3 | 2021-10-22 | chance_of_rain-3</h3> <ul> <li>Bugfix &quot;hide tips&quot;</li> </ul> <h3>Version 2 | 2021-10-22 | chance_of_rain-2</h3> <ul> <li>Capture new label image</li> </ul> <h3>Version 1 | 2021-10-22 | chance_of_rain-1</h3> <ul> <li>Bugfix fish starving haiku</li> </ul> <h3>Version 0 | 2021-10-22 | chance_of_rain-0</h3> <ul> <li>Initial release<br /> </div></div></div></li> </ul> https://www.lexaloffle.com/bbs/?tid=45112 https://www.lexaloffle.com/bbs/?tid=45112 Fri, 22 Oct 2021 19:45:09 UTC Stability Failing: Endless Platformer <p> <table><tr><td> <a href="/bbs/?pid=98174#p"> <img src="/bbs/thumbs/pico8_stability_failing_ld49-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=98174#p"> Stability Failing: Endless Platformer</a><br><br> by <a href="/bbs/?uid=56007"> professir</a> <br><br><br> <a href="/bbs/?pid=98174#p"> [Click to Play]</a> </td></tr></table> </p> <h1>Stability Failing</h1> <h3>A short story sets off a grand adventure of arcady, platform-hopping fun in an increasingly unstable world.</h3> <p><em>This is my <a href="https://ldjam.com/events/ludum-dare/49/stability-failing">submission</a> for Ludum Dare 49, Theme: &quot;Unstable&quot;</em></p> <h2>Controls</h2> <p><strong>Left/Right</strong>: Move character<br /> <strong>Up/Down</strong>: Slow down or Speed up the platforms<br /> <strong>Z/X</strong>: Jump</p> <p><em>Note: you can press ENTER and SKIP TUTORIAL if you'd like to start the game at level 12</em></p> <h2>Gameplay</h2> <p>As the levels progress, various aspects of the game begin to breakdown... </p> <h3><em>(try to reach at least <strong>level 11</strong> to see the full instability)</em></h3> <img style="margin-bottom:16px" border=0 src="/media/56007/stability_failing_ld49_2.gif" alt="" /> <p><em>Spoilers</em>: <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 /> First, your permanent platforms start to crumble. Then, the walls give way while dead-pixels fill your screen. Even your character isn't immune to the madness. By level 11, the game has fully broken down and you play like this for as long as possible. There are bits of story sprinkled throughout, all the way to level 300+.</p> <p>Here are some examples of later stages:</p> <img style="margin-bottom:16px" border=0 src="/media/56007/stability_failing_ld49_4.gif" alt="" /> <img style="margin-bottom:16px" border=0 src="/media/56007/stability_failing_ld49_6.gif" alt="" /> <h3>Features</h3> <ul> <li>Platforms crumble faster as the levels wear on.</li> <li>More and more dead pixels will fill the screen as the levels progress.</li> <li>The storyline loosely progresses all the way past level 300! I don't expect anyone to make it this far, however it is there for the intrepid - and talented - soul.<br /> </div></div></div></li> </ul> <h2>Versions</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;"></p> <ul> <li>Version 2 | October 6 2021 | stability_failing_ld49-2<br /> -- Extend starting platform size<br /> -- Add menu option to skip the tutorial<br /> -- Increased platform fadeaway time from 103 to 133 (eases difficulty of earlier levels)<br /> -- Increased minimum platform fadeaway time from 20 to 30 (eases difficulty of later levels)<br /> -- Bugfix horizontal movement<br /> --- reduce horizontal speed on platforms<br /> --- reduce slipperiness of platforms (add stick on first contact with a platform)<br /> -- Bugfix vertical movement<br /> --- disallow the false double jump<br /> --- formalize coyote jumping<br /> -- Bugfix platform collision<br /> --- normalize player position on first contact with a platform</li> <li>Version 1 | October 4 2021 | stability_failing_ld49-1<br /> -- Title screen!<br /> -- Generative music on the title screen<br /> -- Many quality of life changes<br /> --- hide text when player reaches mid-height<br /> --- starting platform normalization when spawned near walls<br /> -- Additional SFX added &amp; remastered existing SFX<br /> --- SFX added for holding up/down<br /> -- New cart cover photo<br /> -- Revised tutorial &amp; built out storyline through level 300+</li> <li>Version 0 | October 3 2021 | stability_failing_ld49-0<br /> -- Initial release<br /> </div></div></div></li> </ul> <h2>External Links</h2> <ul> <li><a href="https://ldjam.com/events/ludum-dare/49/stability-failing">Ludum Dare</a></li> <li><a href="https://professir.itch.io/stability-failing">itch.io</a></li> </ul> <p><strong>How far can you get? Post your highest level reached in the comments :)</strong></p> https://www.lexaloffle.com/bbs/?tid=44860 https://www.lexaloffle.com/bbs/?tid=44860 Mon, 04 Oct 2021 15:58:48 UTC ISOL8: Build &amp; Isolate <p> <table><tr><td> <a href="/bbs/?pid=96274#p"> <img src="/bbs/thumbs/pico8_isol8_build_isolate-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=96274#p"> ISOL8: Build &amp; Isolate</a><br><br> by <a href="/bbs/?uid=56007"> professir</a> <br><br><br> <a href="/bbs/?pid=96274#p"> [Click to Play]</a> </td></tr></table> </p> <p> <table><tr><td width=0> <img src="https://www.lexaloffle.com/bbs/gfxc/56007_3.png" width=0 height=0> </td> <td valign=bottom> <a style="cursor:pointer;font-size:8pt" onclick=' var el = document.getElementById("gfxcode_56007_3"); if (el.style.display == "none") el.style.display = ""; else el.style.display = "none"; microAjax("https://www.lexaloffle.com/bbs/gfxc/56007_3.txt", function (retdata){ var el = document.getElementById("gfxcode_56007_3"); el.innerHTML = retdata; el.focus(); el.select(); } ); '> [0x0]</a> </td></tr> <tr><td colspan=2> <textarea rows=3 class=lexinput id="gfxcode_56007_3" style="width:640px;background-color:#fed;display:none;overflow:hidden; font-size:6pt;"></textarea> </td> </tr> </table> </p> <h1>isol8: Build &amp; Isolate</h1> <p>An original arcade game inspired by old-school games like <em>Jezzball</em> and <em>Qix</em>.</p> <img style="margin-bottom:16px" border=0 src="/media/56007/Screen Shot 2021-08-20 at 6.07.14 PM.png" alt="" /> <h3>How to play</h3> <p>You must build horizontal and vertical walls in order to isolate the bouncing balls from each other. Once all balls are separated, you will proceed to the next level. If a ball collides with your wall while building, you lose a life. An additional ball is added each level, up to a maximum of 15 balls. Continue playing until you run out of lives and <code>post your highest level reached in the comments below!</code></p> <h3>Features</h3> <ul> <li>Play with either 1, 3, or 5 lives (Easy, Normal, Hard)</li> <li>Try &quot;Endless&quot; mode where you cannot die</li> <li>Restart current level in the pause menu, if needed</li> <li>Hand-chosen background color and ball color changes every 5 levels up to level 100</li> <li>After level 100, the colors are randomized every single level</li> </ul> <img style="margin-bottom:16px" border=0 src="/media/56007/Screen Shot 2021-08-20 at 6.09.25 PM.png" alt="" /> <h3>Notes for developers</h3> <ul> <li>A flood-fill algorithm is used to determine if the balls are isolated. Here is a super helpful resource on different implementations of flood fills: <a href="https://lodev.org/cgtutor/floodfill.html">link</a>.</li> </ul> <h3>Footnote</h3> <p>This game was originally designed for the upcoming <a href="http://play.date">Playdate</a> device (crank to build walls). I have adapted it for pico8 as my first game on this console.</p> <p>Enjoy! </p> <h2>Versions</h2> <ul> <li>Version 3 | 08/25/21<br /> -- Added indicator guide lines<br /> -- Added alternate control scheme (Pause during game and press &quot;Toggle Controls&quot;)<br /> --- Toggles between default (X to build vertical, O to build horizontal) and new (Hold either X/O then press Up/Down to build vertical wall or Left/Right to build horizontal wall)</li> <li>Version 2 | 08/22/21<br /> -- Added music to the title screen</li> <li>Version 1 | 08/20/21<br /> -- Bugfix ball/wall collision issue - fix player position rounding error and additional wall overlap check</li> <li>Version 0 | 08/20/21<br /> -- Original release</li> </ul> <h2>External Links</h2> <ul> <li><a href="https://professir.itch.io/isol8-build-isolate">itch.io</a></li> </ul> https://www.lexaloffle.com/bbs/?tid=44323 https://www.lexaloffle.com/bbs/?tid=44323 Fri, 20 Aug 2021 21:47:32 UTC