slainte [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=38916 Particle Experiments <p>Will post here my experiments with particle effects...</p> <h2>Experiment 1: Fireworks... basic explosions</h2> <p>version 1: very basic approach<br /> <table><tr><td> <a href="/bbs/?pid=67561#p"> <img src="/bbs/thumbs/pico8_fireworkstest-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=67561#p"> fireworkstest</a><br><br> by <a href="/bbs/?uid=38916"> slainte</a> <br><br><br> <a href="/bbs/?pid=67561#p"> [Click to Play]</a> </td></tr></table> </p> <p>version 2: added gravity pull and callback update/draw for particles to operate multiple particle types (f.e. rocket and spark in the test)<br /> <table><tr><td> <a href="/bbs/?pid=67630#p"> <img src="/bbs/thumbs/pico8_fireworkstest-3.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=67630#p"> fireworkstest</a><br><br> by <a href="/bbs/?uid=38916"> slainte</a> <br><br><br> <a href="/bbs/?pid=67630#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Experiment 2: Additive blit particle fire</h2> <p>version 1:<br /> <table><tr><td> <a href="/bbs/?pid=67630#p"> <img src="/bbs/thumbs/pico8_particlefiretest-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=67630#p"> particlefiretest</a><br><br> by <a href="/bbs/?uid=38916"> slainte</a> <br><br><br> <a href="/bbs/?pid=67630#p"> [Click to Play]</a> </td></tr></table> </p> <p>version 2: Supporting sprite-based blendop palettes (for now only partial additive palette included), next goal blit optimization<br /> <table><tr><td> <a href="/bbs/?pid=67630#p"> <img src="/bbs/thumbs/pico8_particlefiretest-1.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=67630#p"> particlefiretest</a><br><br> by <a href="/bbs/?uid=38916"> slainte</a> <br><br><br> <a href="/bbs/?pid=67630#p"> [Click to Play]</a> </td></tr></table> </p> <p>version 3: PEEK/POKE BLIT without great results... per-pixel blendops still kill it, updated color and added some toying controls<br /> <table><tr><td> <a href="/bbs/?pid=67630#p"> <img src="/bbs/thumbs/pico8_particlefiretest-2.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=67630#p"> particlefiretest</a><br><br> by <a href="/bbs/?uid=38916"> slainte</a> <br><br><br> <a href="/bbs/?pid=67630#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=35337 https://www.lexaloffle.com/bbs/?tid=35337 Fri, 13 Sep 2019 19:17:33 UTC led7segment <p>While starting work on my little deflektor project I decided to have classic 7 segment led style numbers, my first iteration (the one currently in the game...) is based on sprites but I wanted something a bit more versatile. This is a basic line drawing small library to handle 7 segment led like any digit length display. It should be fairly easy to define a text set and draw 7 segment text desplays (just need a table with the segment mapping for every letter and put up a wrapping function that receives a text and not a number)</p> <p>It supports background displaying of segments (&quot;off&quot; segments), color configuration and segment width configuration. The cart includes the library and a very basic demo on what it can do</p> <p>I might be working on reducing token size a bit (library itself is around 300 tokens) and I think there's some salvageable space there, but don't count on it for now</p> <p>Hope it helps someone out needing a 7 segment style display</p> <p> <table><tr><td> <a href="/bbs/?pid=66679#p"> <img src="/bbs/thumbs/pico8_led7segment-0.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=66679#p"> led7segment</a><br><br> by <a href="/bbs/?uid=38916"> slainte</a> <br><br><br> <a href="/bbs/?pid=66679#p"> [Click to Play]</a> </td></tr></table> </p> https://www.lexaloffle.com/bbs/?tid=35075 https://www.lexaloffle.com/bbs/?tid=35075 Wed, 14 Aug 2019 18:49:27 UTC Deflektor v0.3.5 <p>I've invested some time working on a demake for one of my favourite games from the 8-bit era, Deflektor (by Costa Panayi). Most of the gameplya is in place, currently working on the editor mode (it is there but not really functional, does not save or remove objects correctly... hope to have it working for next release)</p> <p> <table><tr><td> <a href="/bbs/?pid=66564#p"> <img src="/bbs/thumbs/pico8_deflektor-7.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=66564#p"> deflektor</a><br><br> by <a href="/bbs/?uid=38916"> slainte</a> <br><br><br> <a href="/bbs/?pid=66564#p"> [Click to Play]</a> </td></tr></table> </p> <p>Still early, single playable level that now can be played in a row... </p> <p>CHANGELOG V0.3.5</p> <ul> <li>FIXED bug with negative angle reflections not causing overload</li> <li>ADDED some more basic FX</li> <li>EDITOR MODE early version (reqs. mouse)</li> <li>ADDED laser loading phase at start level/new live</li> <li>ADDED end level scoring</li> <li>WIP bgmusic (in the cart but not playing, unsure if it will stay)</li> </ul> <p>CHNAGELOG V0.3.1<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> <ul> <li>FIXED bug in map loading that made optical fiber to crash (main reason to re-release)</li> <li>ADDED some basic SFX</li> <li>FIXED optical fiber pair coloring</li> <li>some minor token salvaging and code clean-up<br /> </div></div></div></li> </ul> <p>CHANGELOG V0.3<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> <ul> <li>FIXED extra greediness in beam capture at mirror centers causing odd reflexions</li> <li>FIXED color error on initial rise for the overload meter</li> <li>MASSIVE spr sorting to allow for a reasonable leveldata format</li> <li>Level is loaded from data (level info will live in 0x1000 to 0x1FFF unused shared map/spr space)</li> <li>Crude leveldata persister as a prototype for leveleditor mode (unsure if editor will be a separate cart)<br /> </div></div></div></li> </ul> <p>CHANGELOG V0.2<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> <ul> <li>Optical fiber interaction</li> <li>Laser grid scatter interaction</li> <li>Level can be completed</li> <li>Interaction with the receiver (connected status to end level)</li> <li>Removed displaying laser point debugging</li> <li>FIXED metal wall reflexion failing for some situations<br /> </div></div></div></li> </ul> <p>CHANGELOG V0.1<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> <ul> <li>Basic intro page</li> <li>Beam generation and reflection</li> <li>Player movement</li> <li>Mirror interaction and auto-rotation</li> <li>Beam interaction with mirrors, walls, mines and pods</li> <li>Full HUD control</li> <li>Crude live / energy / overload management</li> <li>Scoring</li> <li>Hardcoded level mapping<br /> </div></div></div></li> </ul> <p>PENDING</p> <ul> <li>More/Better sound effects</li> <li>Intro music</li> <li>EVOLVE Leveldata loading (intention is having it compressed in the MAP area outside the working level map)</li> <li>EVOLVE Level editor to create / save level data</li> <li>Tutorials for the intro screen</li> <li>Implement gremlins (enemies)</li> <li>Messaging (dialogs, etc)</li> <li>Remove a lot of debugging / tracing and dead code</li> <li>MASSIVE code cleanup and namespace reorganization</li> </ul> https://www.lexaloffle.com/bbs/?tid=35031 https://www.lexaloffle.com/bbs/?tid=35031 Sun, 11 Aug 2019 19:31:18 UTC