Turbochop [Lexaloffle Blog Feed]https://www.lexaloffle.com/bbs/?uid=52360 Picovania (Updated 7/21/22) <p>Hey all! </p> <p>It's been awhile, hasn't it?</p> <p>I have a new Pico-8 project brewing. Anyone care to guess what it could be? (Edit: people guessed quick! It's a Castlevania Demake) </p> <p> <table><tr><td> <a href="/bbs/?pid=113442#p"> <img src="/bbs/thumbs/pico8_projectcv-30.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=113442#p"> Picovania</a><br><br> by <a href="/bbs/?uid=52360"> Turbochop</a> <br><br><br> <a href="/bbs/?pid=113442#p"> [Click to Play]</a> </td></tr></table> </p> <p>I will update this post to keep everyone up to speed when I upload a new cart. Check out the spoiler below if you're interested!</p> <h3>Change Log:</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;"> </p> <p>(2/21/22)</p> <p>-Boomerang can now be caught. Small reason to post an update, but I thought it was important.</p> <p>-Boomerang graphics rearranged so it animates like in the original game.</p> <p>This may be the last update for a little bit. The code for climbing stairs MUST be rewritten before I will<br /> continue. While it works great as it is, the code is just too darned bloated right now.</p> <p>(7/20/22)</p> <ul> <li> <p>All throwable weapons have been added. Hold ❎ and press ⬆️ or ⬇️ to cycle through them,<br /> and press ⬆️ and 🅾️ to throw one. Like before, you can throw 3 at a time!</p> </li> <li>Holy water was redrawn to not be so huge. </li> </ul> <p>(7/19/22)</p> <ul> <li> <p>Holy water has been added, press ⬆️ and 🅾️ to throw it. You can throw 3 at a time.</p> </li> <li>Simon's sprite has been redrawn to make him more detailed and look a lot less scrawny. Many thanks go to the<br /> Discord community for their feedback on this matter!</li> </ul> <p>(7/18/22)</p> <ul> <li> <p>Stairs now work in all 4 directions.</p> </li> <li> <p>Plenty of stairs have been added to the map, so play around and let me know if anything breaks horrifically.</p> </li> <li>It is no longer possible to jump when a block is directly above the player.</li> </ul> <p>(7/16/22)</p> <ul> <li> <p>Commented out the code and formatted it so anybody could take a look and decipher it all...</p> </li> <li> <p>Taking a hit will now interrupt your attack.</p> </li> <li>Player can no longer warp through the ceiling when hurt.</li> </ul> <p>(7/15/22)</p> <ul> <li> <p>Player health, hurt state and death are implemented. There aren't any enemies yet, so for now you<br /> can press ⬆️ and ❎ to beat yourself up. These are disabled while on stairs...</p> </li> <li> <p>Continue screen has been added</p> </li> <li> <p>Made a pass on music and sound effects. I feel like the music instrumentation is way better now, and many of the<br /> sound effects are improving as well!</p> </li> <li>Initial HUD elements added. There are here only for a visual to pair with testing health and lives for now. </li> </ul> <p>(7/12/22)</p> <ul> <li>Changes to walk and stair climbing movement and animation speed. It felt just a tad sluggish before...</li> </ul> <p>(7/11/22)</p> <ul> <li> <p>Stairs are in progress. Right now there is only up-right and down-left movement, but this is a pretty good proof of concept. Whip is disabled for now while climbing them until I flesh out that aspect.</p> </li> <li> <p>The bottom of the screen is now a bottomless pit, and you will die and be reset.</p> </li> <li> <p>A small map to test out the mechanics and play around in. </p> </li> <li>Preliminary artwork has been added to make the view a little more interesting</li> </ul> <p>(7/10/22)</p> <ul> <li> <p>Jump physics have been reworked and the jank is now gone for the most part. I feel like the jumping is in a pretty good spot now.</p> </li> <li> <p>Initial work on the whip has been started. The animation is just a little janky, but I'm working on that :)</p> </li> <li>I am currently prototyping ideas for stairs. I haven't added stairs yet, so don't try...</li> </ul> <p>(6/26/22):</p> <ul> <li> <p>Basic movement is implemented; Walking, ducking, jumping and hard landing are in. There is one little niggle<br /> with collision and platforming. I'm sure you guys will know when you find it. (Edit) I've created a temporary workaround<br /> for this. Please let me know if you like how it handles. Collision is still not perfect, and you might still get<br /> hung up, but I'm working on that.</p> </li> <li>First draft of music has been created. Let me know how you like it! I might need to shift things around a bit<br /> before I release: I've not included everything I'd like to, and I've run out of room due to some initial (less<br /> than optimal) SFX layout choices.</li> </ul> <p>(6/27/22):</p> <ul> <li> <p>I've tweaked the jump physics to more closely match the original game. </p> </li> <li> <p>Invisible walls have been added. I wanted a way to create impassible areas without changing the collision.<br /> You can test this out near the lone block on the right.</p> <p>Now is the time where I sit down and take a class on <a href="https://www.lexaloffle.com/bbs/?pid=91798#p">Picomap</a> by <a href="https://www.lexaloffle.com/bbs/?uid=42638"> @JadeLombax</a>. I may as well get this figured out<br /> and implemented now, since stairs will likely rely on it...</p> </li> </ul> <p></div></div></div></p> https://www.lexaloffle.com/bbs/?tid=48246 https://www.lexaloffle.com/bbs/?tid=48246 Tue, 21 Jun 2022 15:30:12 UTC Contra Demake (Version .73) Updated 7/10/22 <p> <table><tr><td> <a href="/bbs/?pid=94206#p"> <img src="/bbs/thumbs/pico8_fijepuzide-41.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=94206#p"> Contra version .73</a><br><br> by <a href="/bbs/?uid=52360"> Turbochop</a> <br><br><br> <a href="/bbs/?pid=94206#p"> [Click to Play]</a> </td></tr></table> </p> <h2>Be sure to check the change log to see what's new!</h2> <p>I really thought version .51 would be the last major version, but somehow I managed to scrape out every last token and add a few new features! That said, this WILL be the last major version, though I will still support the game post release.</p> <h3>Change log</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;"></p> <p>Contra version .73</p> <h3>This version could be considered a bug fix/polish release...</h3> <ul> <li> <p>Tweaked the machine gun sound to give a more &quot;auto-fire&quot; feel to it.</p> </li> <li> <p>fixed underwater behavior so that your gun <strong>Actually</strong> won't fire. Somehow I missed that the feature was broken<br /> all this time...</p> </li> <li> <p>Changed the behavior of the continue cursor. Now it will only make a sound if you switch to the other option</p> </li> <li>Tweaked the runner enemy so that they cannot kill you when they fly back after being shot. </li> </ul> <p>Contra version .72</p> <h3>This version has been sitting on my computer for some time now, And I figured it has enough changes to warrant a release.</h3> <ul> <li> <p>More sprite edits by ReeceGames.</p> </li> <li> <p>Machine gun sprites changed to better set it apart from the Pea shooter </p> </li> <li> <p>Boss bullets will now fall straight to the ground, making him a little more difficult.</p> </li> <li>Fire sounds have been changed to more closely match what is happening.</li> </ul> <p>Contra version .70</p> <h3>Special thanks go to ReeceGames for their contribution to the graphics work!</h3> <ul> <li>Sprite edits to player, enemy, turret and shutter graphics to improve quality.</li> </ul> <p>Contra version .68</p> <h3>Thanks to the PICO-8 Discord community for offering suggestions on how to trim down my code and how to improve the graphics, this update would not have been possible without them!</h3> <ul> <li> <p>Turrets were completely rewritten, and can now track you in all 8 directions. They are still quick, but they have a limited range of motion...</p> </li> <li> <p>Fire Weapon fully implemented! It's not the greatest for crowd control, but it is highly effective against<br /> emplacements.</p> </li> <li> <p>Soldier drones have been reworked. Only 3 drones can spawn at a time now (usually), they run a little slower, and any drone that goes for a dip will instantly drown...</p> </li> <li> <p>Another pass on map and object graphics to improve detail and readability. </p> </li> <li>It is no longer possible to soft lock the game by taking damage from two things at the same time. </li> </ul> <p>Contra version .63</p> <ul> <li>Detail pass on map graphics</li> </ul> <p>Contra version .62</p> <ul> <li> <p>Tweaks to sound effects playback to reduce clobbering</p> </li> <li> <p>New explosion sound for turrets, shutters and cannons to help them stand out a little more and make blowing them up<br /> just a little more satisfying.</p> </li> <li>Adjusted collision so you can't scale the Base exterior</li> </ul> <p>Contra version .61</p> <ul> <li>fixed cannons not clearing out after a game over.</li> </ul> <p>Contra version .60</p> <ul> <li> <p>Turrets have been added. They have pretty good servos, so don't think you can slip past them so<br /> easily. A healthy dose of gunfire ought to short their circuits.</p> </li> <li>The boss now has some defenses in two cannons. They just kind of spew bullets on the ground, but they are still<br /> lethal. Blow them up if they are bugging you.</li> </ul> <p>Contra version .51</p> <ul> <li>Changed powerup collision so they pass through semi-solid platforms correctly</li> <li>The first Rapid and Machine Gun powerups have switched places.</li> </ul> <p>Contra version .50</p> <ul> <li>Boss has been added. There are no defenses for it, but he did finally show up.</li> <li>Runner enemy type has been added. They move fast, so you have to be on your toes. At least they are easy to kill...</li> <li>Powerup shutters fully implemented. Shoot them to receive an item!</li> <li>Victory state implemented.</li> </ul> <p>Contra version .30</p> <ul> <li>Capsules are fully implemented! they can be shot for a powerup, and I have sprinkled a few through the level</li> <li>Powerup behavior is implemented. Available powerups are: Machine gun, Spread, Fire, Laser and Rapid Shot</li> <li>Machine gun fires in full auto, like a Machine gun should!</li> <li>Collect Rapid Shot to nearly double the speed of your bullets!</li> <li>Sound and partial graphics in place for all weapons</li> <li>Adjustments made to some sound effects</li> <li>Minor changes to title music</li> </ul> <p>Contra version .25</p> <ul> <li>Phase one of capsules added. You can't shoot them yet, but if you press ⬆️ and 🅾️ one will spawn from Bill's location.<br /> I also have one capsule setup to spawn in as a script</li> <li>Initial work on items started</li> <li>Initial work on spread gun started.</li> <li>Small explosions added. Press ⬆️ and ❎ to make a capsule go boom!</li> </ul> <p>Contra Version .22</p> <ul> <li>Adjusted wipe speed to more closely match the NES version</li> <li>Map filled out with initial artwork</li> <li>Player spawn delay now consistent</li> <li>Code commented out a little more, and formatting changes</li> <li>Minor alterations to music </li> </ul> <p>Contra version .2</p> <ul> <li>Submitted to BBS</li> </ul> <p></div></div></div></p> <p>Here is my &quot;One Level Concept&quot; Demake of <strong>Contra</strong> for PICO-8!<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 /> I would just like to say that I absolutely love developing on this platform. The tools are fun to use, and the sheer number of resources available for learning the ropes are... humbling.. to say the least.</p> <p>On the note of resources, I feel like I should give a shout out to <a href="https://www.youtube.com/channel/UCbMjF_cWciuBUZjILNL1fyA">Nerdy Teachers</a> and the <a href="https://sectordub.itch.io/pico-8-fanzine-1">PICO-8 fanzines</a> for giving me a good idea of where to start, and to <a href="https://www.youtube.com/channel/UCAY9qxuOLj82c4TmLoVKnJg">doc_robs</a> for taking everything a step further! I am sure if you take one look at my code you will see their examples being put to good use.</p> <p>At any rate, I've set out to create at least the first level from Contra on NES. I still have a little way to go, but I felt that I had reached a few major milestones, and would like to share with everyone what I've been up to... </p> <p>That said, I have absolute <strong><em>ZERO</em></strong> coding experience, so please keep that in mind when you stare in disbelief at my code, although I am absolutely open to feedback.<br /> </div></div></div><br /> Enough about that! Let's get down to the nitty gritty...</p> <h1>Controls:</h1> <ul> <li>Press ⬅️ to move left</li> <li>Press ➡️ to move right</li> <li>Press ⬇️ to go prone</li> <li>❎ will make you jump</li> <li>🅾️ will fire your weapon</li> </ul> <p>More detailed controls in the spoiler...</p> <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> <p>You can fire in all 8 directions! Simply press in the desired direction and ol' Bill Rizer will make it so.<br /> (Note: You cannot fire straight down unless you are jumping or falling.)</p> </li> <li> <p>If you go prone on a floating platform and press the Jump button he will drop down!<br /> (That part took me FOREVER to figure out) (Note: This will not work on the bridge...)</p> </li> <li> <p>If you go prone while in water you can dive under. Your gun can't fire, though...</p> </li> <li> <p>If you just run off a ledge, you cannot immediately change direction. So if you run right off a cliff don't say I<br /> didn't warn you. Jumping allows FAR more control.</p> <p>Those are all the controls you need to know!</p> </li> </ul> <p></div></div></div></p> <h1>Game Details</h1> <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> <h2>What is here:</h2> <ul> <li> <p>Player movement is fully implemented. I will certainly have to tweak a few things, but everything works as<br /> intended...hopefully</p> </li> <li> <p>Death and lives</p> </li> <li> <p>The Pea shooter, Machine gun and Fire are fully implemented.</p> </li> <li> <p>The first stage layout.</p> </li> <li> <p>Items, capsules, Shutters and small explosions.</p> </li> <li> <p>A soldier drone that runs fast and can juke you if he catches you on a platform.</p> <ul> <li>Side mounted Turrets that track you</li> </ul> </li> <li> <p>The Boss, and some meager defenses.</p> </li> <li> <p>Victory state when you blow him up...</p> </li> <li> <p>Title, Game and Game over states are in place and working.</p> </li> <li> <p>Ending since I have reached the token limit.</p> </li> <li>Music and sound effects are in place. My musical ear is a little out of tune, and my rhythm is near non-existent,<br /> so please let me know if you catch anything while listening to it.</li> </ul> <h2>What was planned:</h2> <ul> <li> <p><strong>More weapons!</strong> Preferably all of them had I enough room: Machine gun, Spread, Fire and Laser!<br /> (Machine gun and Fire implemented!) </p> </li> <li> <p><strong>Enemies.</strong> well, <em>duh</em>... right? You gotta have enemies that you can attack aggressively!</p> <ul> <li>Gun emplacements that pop up from the ground</li> <li>More advanced soldiers that remembered they had a pistol...</li> <li>Standing soldiers that fire at you from a stationary position</li> <li>Soldiers that appear from behind the brush<br /> .</li> </ul> </li> </ul> <p></div></div></div></p> <h1>Known Bugs</h1> <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> <p>For the love of all that is not mayonnaise, go ape on this thing! I'd like for you guys to twist and bend and<br /> faniggle until either the game breaks, or you do. If you do manage to make the game buckle in some interesting or<br /> hilarious way PLEASE tell me all about it, and be sure to post a screenshot if you did something truly horrific.</p> <h2>Here is what I have found so far:</h2> <ul> <li> <p>Right now I have the Capsules set to spawn when the camera is within certain X and Y positions. If you stand in just the right spot a stream of capsules will spawn.</p> </li> <li> <p>There is an issue with firing your gun while jumping out of water that causes Bill's top half to begin cycling<br /> through all the sprites. I haven't quite pinned down what is causing that, or how to replicate it reliably.</p> </li> <li> <p>Sometimes when you die, instead of showing the sprite of Bill l<br /> ying on the ground, it shows him prone.</p> </li> <li> <p>If you press ⬇️ and ⬅️ or ➡️ while jumping, Bill will go prone for 1 frame.</p> </li> <li> <p>Not necessarily a bug, but I am still figuring out how to make the map longer than what is allowed.<br /> For now, there is a jarring snap to position when you cross into the second half of the stage.</p> </li> <li> <p>The area directly underneath what has been built has some garbage just below the screen in the map editor due<br /> the whole sprite bank/map bank &quot;Sharing&quot; thing. PICO-8 counts these areas as collision, and Bill will land on it if<br /> he dies. (Maybe mitigated since the whole map is now laid out.)</p> </li> <li>The title screen shows for a moment before doing its thing if you arrive from the Continue, ending or Game over screen.</li> </ul> <p></div></div></div></p> <h1>Final Words and Thanks!</h1> <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> <h2>So... why are you doing this, again?</h2> <p><strong>I am a humungous video game nerd!</strong> </p> <p>I love playing them, I love looking at them, I love listening to them! </p> <p>I've wanted to make them for some time now, and I have tried several platforms but I always ran into some hang up or other, but When I first discovered PICO-8 last year I instantly fell in love! Seriously, this thing is so easy to use. My creativity can just... flow, and I love Pico-8 for that! </p> <p>While I played around with other people's games for awhile I brainstormed, and Contra just kept pushing it's way forward. I began to think about how Bill Rizer would look as an 8 x 8 sprite and began drawing. I finished a first draft of his standing pose and thought, &quot;Dude... this could work. I could <strong>do</strong> this&quot;. One could gesture wildly at an NES with both hands while shouting, &quot;You want Contra? Here it is! the work is done, just play it here&quot;. To that I would point at PICO-8 and say &quot;Yes, but I <strong>made</strong> this.&quot;</p> <p>In addition to the kudos mentioned at the top of my post, </div></div></div>I'd like to thank Lexaloffle for this fantastic program, and Konami for my childhood memories and this inspiration. Also, mad props to the PICO-8 community, you guys are amazing!</p> https://www.lexaloffle.com/bbs/?tid=43595 https://www.lexaloffle.com/bbs/?tid=43595 Tue, 29 Jun 2021 15:30:01 UTC