TonyTheTGR [Lexaloffle Blog Feed] FINISH SOME DAMN PROJECTS, SELF!! <p>Still chipping away at sound design and _update() sections of my other projects. Little by little, they're going somewhere, or so I'm telling myself.</p> <p>But this season hit some high traffic at work, as expected, so in light of having any real concentration-allowing downtime, I started visuals on what I'm hoping may turn into a &quot;fundamentalist Terraria&quot; project I'm simply calling Terra.</p> <p>This little 32x16 chunk; sprites 126-127, is the biome metamap which defines the whole 416-screen world:</p> <img style="" border=0 src="" alt="" /> <p>While some of these screens will be packed solid, or have little notches of ore carved out of them, a good chunk of screens will also be tunneled/mapped by applying variants of these other (lower end) tiles; often meant to mash in some treasure hunting and world structure. I'll probably also have to use some manual scripting to input minecart tracks and space for their use.</p> <p>The top section is the player and basic objects/platforms in the game, and the middle section is enemies/creatures. I'll probably put some more &quot;player head&quot; variants in there for humanoid enemy types. I'm hoping to make four boss creatures, one for each corner of the map area (??); and maybe a 3-minute day/3-minute night cycle. Something you can mash through in a 15-30 minute sitting, but still full of surprises and exploration, you know?</p> <img style="" border=0 src="" alt="" /> <p>You notice the distinct lack of pickaxes? Well, that's no accident. The plan is to have the player do all of the &quot;mining&quot; via bombs, which of course, are consumable. You can pick up torches, but it merely acts as a light timer for the underground - collect more torches to increase the timer, that kind of thing.</p> <p>Upgrading your sword or yoyo allows you to increase its range and damage (and the duration of the yoyo usage). Upgrading armor lowers the damage you take, and also upgrades your max HP. Boots effects all layer together to give you better mobility. Guns and staffs act as shooting weapons, guns consume coins as ammo and staffs consume mana; upgrading those gives you more damage per shot and more shot patterns.</p> <p>A lot of things will simply be color-variants of one another though; and I'm still not sure how I'm going to handle players building stuff.</p> <p>Could use some recommendations on things like GUI, mapdata management, and which creatures/items to stuff in the remaining tilespace; or if anyone else is working on something along the lines of this or it sounds like a thing you'd be into.</p> Sat, 22 Dec 2018 14:02:00 UTC SPITBALLING! Let's design an &quot;escape room&quot; generator? <p>DISCLAIMER: This isn't a replacement or a diversion from my ongoing projects. I'm at sound design and update functions on many of those now (trickling away little by little); this is either aimed toward a future project, or a thing you can just take on yourself should you choose to.</p> <p>But in this thread!</p> <p>I'd like to toss around some ideas for a modular &quot;escape room&quot; cart. Ways to use stuff like creative recursion, math and word and logic puzzles and so forth to make a dynamic mystery adventure that's really just layers of solving things; but concise enough to fit in a PICO-cart.</p> <p>If you've never done an escape room before, or have played anything like the Zero Escape games: An escape room consists of a network of intermingled puzzles and clues... so that the solution to one puzzle results in acquiring information or items that are then used to solve additional puzzles. Typically there are 3-5 &quot;layers&quot; of these puzzles of varying breadth - with each &quot;layer&quot; consisting of 1-4 types of puzzles - and then later layers of puzzles can reuse elements of the earlier puzzles in new and different ways - or the rewards for solving those puzzles can.</p> <p><a href=""></a></p> <p>Integrating this into PICO-8 in a modular fashion is the part that may make or break this. Clearly, it'll have to use a distinct set of puzzle types that are fun to play in PICO's controls and scope; as well as code/hint generation tools... then having some cohesive theme and plot generation in play. It might also be possible to integrate some basic-stripped versions of typical video game play as part of the excitement!</p> <p>There's also the choice to make this (primarily) sidescrolling, top-down-adventure interactive, or menu-driven. Each comes with upsides and tradeoffs, and there's no reason each one couldn't work nicely.</p> <p>So... let's spitball! What kinds of puzzles, themes, and approaches do you think would be best for this kind of project? Do you think making a &quot;video gamey&quot; version of this could do something unique?</p> Mon, 19 Nov 2018 12:00:54 UTC Summer 2018 Projects Update <p>I am an idiot that needs to move on to BGM stuff, basic AI, and update code. Still got a fair amount of coding on all of my projects to do, and for some reason, I've recently been jamming out a PICO-8 demake of Spiral Knights, or at least the base stuff of it. Don't know if I'll ever get the online multiplayer aspect of it, but the semi-random Zeldalike quality of the game is more than enough to make fun. Sprites and a fair chunk of map data done, code isn't even started yet.</p> <img style="" border=0 src="" width=1920 height=1080 alt="" /> <img style="" border=0 src="" width=1920 height=1080 alt="" /> <img style="" border=0 src="" width=1920 height=1080 alt="" /> <img style="" border=0 src="" width=1920 height=1080 alt="" /> <img style="" border=0 src="" width=1920 height=1080 alt="" /> <img style="" border=0 src="" width=1920 height=1080 alt="" /> <img style="" border=0 src="" width=1920 height=1080 alt="" /> <hr /> <p>Infinitroid has been a great inspiration to simplify and revisit Gentroid, where now instead of having code try to write a Super Metroidy world, has really been simplified to a handful of environments that are mostly horizontal in nature with isolated elevator rooms, item rooms, and maybe miniboss rooms. And now that I've learned you can recolor/tint sprites, I've revised many of the repeated items to make more creatures. All in due time, I suppose...</p> <img style="" border=0 src=" Map 1.png" width=1920 height=1080 alt="" /> <img style="" border=0 src=" Map 2.png" width=1920 height=1080 alt="" /> <img style="" border=0 src=" Map 3.png" width=1920 height=1080 alt="" /> <p>...and actually, I've revised the level layouts for Concert of the Damned the same kind of way, because it seems like a very valid way to generate these kinds of levels, honestly. I also like the idea of adding Spiral Knights-style encounter arenas to the game, too. We'll see where that goes...</p> <p>I've done just about all of my work in &quot;_init()&quot; and now I need to move on to the _update() and _draw() functions on many of these (although I still need to do some chorus/verse/breakdown/intro-outro composition code for my DDR-like project, too).</p> <p>But money season at my job is surfacing, and I really think I'm about to be dead another 3-5 months, and that's a painful thing to be facing at this point in project space...</p> Sun, 07 Oct 2018 14:37:29 UTC Working on &quot;Dynamic Music Generation&quot; (not random) <p>I've been plucking away, a function or two a day, or a SFX, or a handful of sprites, etc. Still just mashing on my days off and lunch breaks. Starting to see some little tidbits of going somewhere, at least.</p> <p>Anyways, I ran into a thing I could use someone with a little deeper expertise in dealing with.</p> <p>I'm devising a kind of proc-gen DDR game/song generator, using four hex-character seeds to implement 12 randomizable sequencers*, which are then used to pull table data and plant music data structurally (and then apply stepchart logic to that). The part in particular I'm needing help with is making a few functions that can universally change the speed, octave, and instrument choice of a selection of SFX (32-62, in fact - 00-31 only need speed adjusted since they're bass/percussion layers), maybe one to change the speed of one SFX in particular (for multiplied-speed layering after that). </p> <p><strong>I'm not 100% sure where the &quot;poke&quot; ranges I need to target for that kind of thing are.</strong></p> <p>The other function is simply one that pokes the SFX ids in the music editor, after this step.</p> <p>*sequencing follows musical structure, like<br /> 1, 2, 1, 3, 1, 2, 1, 4; 5, 6, 5, 7, 5, 6, 5, 8;... and so forth. It's not just &quot;randomly&quot; cobbled together!</p> Fri, 17 Aug 2018 11:11:10 UTC RPS article on &quot;Unexplored!&quot; dungeon generator <p>This is some really good stuff, certainly worth a dig. It's the kind of thing I've been trying to get into with dynamic level generation, eventually. There's a lot of ways to apply these principles, too!</p> <p><a href=""></a></p> Fri, 17 Mar 2017 17:34:36 UTC Converting pixels in map to tiles?? <p>Was running through some theoretical stuff in my &quot;idearrhea&quot; at work the other day - it does seem like the idea behind P8 structure is creative recursion. So, while a few things I've worked on have been tiled up as you'd expect in the map editor... I got to thinking about a thing and how it could be implemented.</p> <p>The thing I think I want to pull off is to commit the second two pages of sprite data to pixel-point maps of tiles, and then to put THOSE in the map editor. So, instead of rendering realtime maps, it could read each pixel of the map data, and then generate a tile based on the color of said pixel... in order to make a map that's 32x the size of the map data!! Bonus: then the &quot;pause&quot; button can be used to simply display the pixelled data, and you get an instant minimap!</p> <p>Sure, you'd have to get a bit creative in how the data itself is interpreted - maybe a chunking out squares of biomes where the same tile data is interpreted differently (or upon game start, probabilistically), as well as manually adding some objects after that on a per-scene/screen basis... but it's more to the effect of creating bigger gameworlds.</p> <p>I guess <em>eventually</em> I'd like to pan this idea out into something Terraria-like? But way more simplified. I'm really just making this post to put the idea out there, though... because I think this is ALREADY how the map data in the cart works to begin with... so then decoding map tiles into sprites, and THOSE sprites into additional grids of sprites...</p> <img style="" border=0 src="" width=1033 height=1033 alt="" /> <p>Also... is it possible to load functions or blocks thereof into a table, and then use a switch()-style function to simply execute a certain part of the table? The idea is still kind of like making a shorthand switch() or select() function.</p> <p>yo={<br /> function1(d),<br /> function2(d),<br /> if(function3(d))function2(d))<br /> ...}<br /> dawg={2,2,5,4,5...}</p> <p>foreach d in dawg<br /> do (yo,dawg)<br /> return</p> <img style="" border=0 src="" width=500 height=323 alt="" /> Sun, 26 Feb 2017 14:28:23 UTC TTJ reaction: WOW. <p>YO, DAWG.</p> <p>I HEARD YOU LIKE FANTASY CONSOLES. SO NOW WE PUT A FANTASY CONSOLE IN YOUR FANTASY CONSOLE, SO NOW YOU CAN PLAY YOUR FANTASY CONSOLE IN YOUR FANTASY CONSOLE!!</p> <p>...and THEN you can put THAT in VOXATRON, TOO!!!</p> <p>IT'S CONSOLECEPTION!!! XD</p> <p>For reals, though: I'm astonished at how simplifying constraints EVEN FURTHER has resulted in considerably more games being produced, what looks like considerably more rapidly!!! Just... WOW.</p> <p>I love you crazy bastards!</p> <p>PS: So... how long until we integrate this with Splore, to make a game about playing all these games?</p> Fri, 27 Jan 2017 05:01:21 UTC Getting started with enemies/AI <p>Alright. I'm finally getting somewhere with my level code, physics, and... well, I'm still WORKING on my composition stuff, too. But now I'm also starting to work on enemy AI. And here's another spot I'm kind of fresh to.</p> <p>See, past projects I've worked on include fighting games - which are essentially just really big FSMs, and the AI uses some conditions like player distance or input to determine appropriate responses (some MegaMan bosses do this, too)... and music games, which is really just about lining up targets with precise timing and that's really all there is to it. Making shots doesn't seem any different than making fireballs in SF, either. But making enemy AI for platformer and top-down-adventure games is kind of a different thing; and I could use some guidance - heck, maybe even outright collaboration with.</p> <p>There's four titles of enemies I'm trying to reasonably replicate here:</p> <p>200X - a MegaMan knockoff.</p> <p>Concert of the Damned - something between Zelda II and SotN, maybe a little Shovel Knighty too.</p> <p>Gentroid - Yet Another Metroid Fangame (there's a good grip of these, it seems - and Cow has the physics/feel to that DOWN! Perhaps I should just step aside...)</p> <p>...and an as-of-yet-to-be-determined title that's in line with Zelda 1 and/or Gauntlet; maybe a bit Isaacy, but certainly not Isaac. Save for maybe boss influence, we'll see where that goes.</p> <p>How do some of you do your enemy AI? I know really simple stuff could be handled by my &quot;MakeTarget()&quot; code, but not stuff that depends on terrain contact. &quot;MakeTarget()&quot; is mainly about making basic movement patterns - lateral, vertical, sine-waved values, diagonals, circles or semicircles, that kind of thing.</p> <div> <div style="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 maketarget(obj,scr,x,y,xrange or 0,yrange or 0,speed or 0,loop or 0) --x/y position relative to map obj.p.x=((scr\5)*16+x) obj.p.y=((scr/5)*16+y) --set sine motions to control local movex=2*sqrt(xrange)*speed local movey=2*sqrt(yrange)*speed --reverse direction! if (movex=xrange or movex=-xrange or xrange&lt;0) movex*=-1 if (movey=yrange or movey=-yrange or yrange&lt;0) movey*=-1 --diagonals or curves if loop=1 then movex=xrange elseif loop=-1 then movex-=xrange end </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> Fri, 27 Jan 2017 04:58:13 UTC [code &quot;??&quot;]How to make jump cuts and scroll cuts in PICO-8? <p><img style="" border=0 src="" width=1031 height=1029 alt="" /> <img style="" border=0 src="" width=1029 height=1029 alt="" /></p> <p>So, I'm going for some modular map usage, and in the interest of map management, I need to learn of a way to make &quot;scroll cuts&quot; and &quot;jump cuts&quot; between segments. For instance, the &quot;Concert of the Damned&quot; map is broken up into pathways that exit to the left and right, and the top and bottom. The &quot;green blocks&quot; indicate doorways that will jump the character into the next scene upon collision. But don't let the layout fool you! Since the map is modular, each of these scenes doesn't just connect to it's neighbor, they're designed to cross-script to one another. 200x on the other hand, scripts gameplay mechanics into the segments and warps between them, but I also need to preserve the scrolling within each scene, while not scrolling to the other scenes in visible range (perpindicularly). The screenshot for it shows horizontal corridors, but I have a section of vertical ones as well; so it's not just as simple as only scrolling on the X-axis.</p> <p>What I need is a way to cut the scrolling at the ends of the screens, and jump-cut to another segment of the map; while preserving the scrolling in the segments themselves. Any code monkeys care to give me a little tutorial on that?</p> Sat, 07 Jan 2017 17:22:58 UTC Let's talk about platforming physics systems! <p>So... I guess what I'm aiming for is a back-calculating method for controlling player movement, via globals. So, let's say I'm wanting a typical jump-to-same-level duration to be 90 frames; and for it to go up 3.5 &quot;tiles&quot; of 8 pixels apiece; with a 0.8x accel/decel rate (gravrate). I define the jumpheight as 28 (pixels) and the jumptime as 45 (ground-to-apex; so half of 90), and then use that to calculate jumpvelocity.</p> <p>My usual go-to is jumpvel=2<em>sqrt(gravity </em> tiles * gravrate), and then letting the typical gravity accel/decel take over from there. &quot;gravity&quot; is seperate from gravrate, in case I want to disable it (by making it 0) reverse it (by making it -1), or reducing it (making it a decimal, usually between 0.5 and 1).</p> <p>Also, working on a similar accel/decel for horizontal walk/runspeed... so let's say I'm aiming at 0.3 px/frame to be the max speed (18 pixels a second, or a little over 2 tiles, so you can jump four across, level-to-level)... I still want a 20-frame accel and 10-frame decel delta to that, to give some fluidity to the player's motion, it's not all &quot;everything or nothing.&quot; So the actual velocity is like &quot;0.3 - (0.015 * runframes, if less than 20)&quot; and then at release, setting that value to 20 and reducing it 2 at a time so that the calculation still affects the movement speed.<br /> ...<br /> I think I'm losing my mind though, so am I still doing this right? &gt;.&gt;</p> <p>I'm increasingly forgetting stuff, and when I'm working and calculating, it's interfering with my work - and THEN when I'm off, I'm no longer calculating, and everything's kind of getting messy. Dammit!!</p> Fri, 06 Jan 2017 17:19:20 UTC CHIPping away at things... <p>So, election and holiday season both got pretty crazy up until last week. So most of my PICO-dev has been during lunch breaks and to/from work or in little spurts on days off. That said... I probably get about 16-32 sprites, or 4-8 screens of map writing done, maybe a function per toss. That said, a fair number of these can reuse some code I use, which is a good thing; because I can concentrate most of my code into one project, iterate it to working condition, then copypaste and adapt it to other carts. All things considered, I still wish I could've been getting more accomplished by now; maybe it's just impatience talking... I see a fair number of good carts being pushed, maybe that's the thing.</p> <img style="" border=0 src=" (1).png" width=1920 height=1080 alt="" /> <p>These include Concert of the Damned (really, I've only reworked the maps so far), 200x (pictured above... if 20xx was the proc-gen response to MegaMan X, this is me trying to do that with MegaMan Classic or Xtreme, if it were meshed with MM9's Endless Attack mode), Gentroid (same approach but more Classic Metroid inspired), a simply-titled &quot;PlayThing&quot; (just an experiment for learning various things in PICO-8; where I'm currently focusing my code for the time being), &quot;Race to Riches&quot; (a simple speed platformer inspired by David Newton's &quot;Treasure Tower&quot;), and &quot;Shirley Nutt&quot; (a nut-collecting demake of Sonic, but where you can shoot nuts forward to control space ahead of you, and with none of the asinine plot or buddies or loop-de-loops, or even bosses).</p> <p>Matter of fact, I have <em>two</em> experimental &quot;Playthings.&quot; XD I started one on my PC, and a second, different-but-similar sort of one on my PocketCHIP. There's some ground they have in common but I have to kind of match up the factors and really make one do something.</p> <img style="" border=0 src="" width=384 height=384 alt="" /> <img style="" border=0 src="" width=384 height=384 alt="" /> <p>That's one &quot;plaything's&quot; spritesheet so far and here's the other:</p> <img style="" border=0 src="" width=384 height=384 alt="" /> <img style="" border=0 src="" width=384 height=384 alt="" /> <p>The first is geared with more versatility in mind where the second is clearly more action-platformer based. I'm learning to toy with compound sprites in both cases, but in the first I'm trying to layer elements together to make more expressions, where with the second I'm playing with making more distinct &quot;characters.&quot; Either way, I do feel like it's more prudent to utilize the map space to it's max more than the sprite space; but I do feel tugged between the two approaches.</p> Wed, 21 Dec 2016 07:00:34 UTC Complex sprites and function planning... <img style="" border=0 src="" width=1920 height=1080 alt="" /> <p>So... one of the things in my tinkering cart that I'm playing with is sprite complexity. The idea here is to associate the player position with the body, then draw the head relative to the player position, and finally, layer the expression on top of the head (unless it's facing up/away), and recolor as appropriate. It's not just the player that'll be using the build, but many enemies and NPCs as well, of course, so I'm trying to plan a &quot;DRAWBODY(..)&quot; function to draw the whole thing in one swoop.</p> <p>So far, I'm thinking important factors are:</p> <p>-x and y positions<br /> -body frame<br /> -colors of body<br /> -relative head x/y<br /> -head color/sprite<br /> -eye expression/color<br /> -facial expression/color</p> <p>...but I get the feeling I might be forgetting something here?</p> Thu, 17 Nov 2016 17:58:52 UTC CHIP'ing away at things... <p>So, in between lunch breaks, I've made tiny-but-significant progress in my level generation code. It's part of a &quot;bigger picture&quot; thing, and meant to be useful across multiple projects; since I'm kind of digging into proc-gen core gaming. Even this little project is a proof-of-concept of a major undertaking, depending on if I can squish this into tokens available.</p> <p>The idea here is to take a number of levels &quot;LV&quot; and make each one a 15-plus-one table - the first 15 being a kind of &quot;perlin noise&quot; function used to script &quot;rooms&quot; into the level, and the last being a control variable &quot;BIOME&quot; which influences the level's colors, themed elements, etc. I'm planning on coupling this with horizontal and vertical &quot;targets&quot; - ones to collect, ones to avoid, ones to attack, etc. Well, a &quot;target&quot; can be oriented both vertically <em>and</em> horizontally, and in varying speeds (more on this after my next WIP major chunk of code, &quot;MAKETARGET()&quot;).</p> <p>So MAKELEVEL(3) would generate 3 &quot;output&quot; tables:</p> <p>LVL1={n1,n2...n15,biome}<br /> LVL2={n1,n2...n15,biome}<br /> LVL3={n1,n2...n15,biome}</p> <p>...and then these tables will define the 5x3 screen map of each level.</p> <p>I'll have to add &quot;biome control&quot; in later scripting, depending on the kind of game it generates, after the level generation. The &quot;doorway&quot; table definition occurs BEFORE it runs... for instance, it makes sense for a platformer to limit &quot;doorways&quot; to being {0,4,5,9,10,14}, where in top-down adventure or RPG games, it could be anywhere.</p> <p>That said... still checking this for proper P8 syntax, and to see if it can be simplified. Being intermediate-level at best, I have the suspicion this can be streamlined a little bit still. Maybe even a lot.</p> <div> <div style="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 makelevel(lv or 15) if (lv&gt;15) lv=15 winlevel=lv for lv&gt;0, do &quot;lvl&quot;lv={} level={scr1=0,scr2=0,scr3=0,scr4=0,scr5=0,scr6=0,scr7=0,scr8=0,scr9=0,scr10=0,scr11=0,scr12=0,scr13=0,scr14=0,scr15=0,biome} -- create sequence of 16 doors -- we don't have to use them all doorshuf={rnd(1,6),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5),rnd(1,5)} ezpath={} hdpath={} d=0 n=1 for n=1 to lv do d+=doorshuf(n) add doorlist (return doorways,d) n+=1 end --each exit makes a short, --high-risk way, then a long --low-risk alternative for n=1 to lv do stdoor=doorlist(n) endoor=doorlist(n+1) --vertical paths? vstep=(stdoor/5)-(endoor/5) if (vstep&lt;0) vstep*=-1 --horizontal paths? hstep=(stdoor\5)-(endoor\5) if (hstep&lt;0) hstep*=-1 --add values to paths for n=vstep to 0 do if (stdoor/5)&lt;(endoor/5) then add ezpath &quot;5&quot; add hdpath &quot;5&quot; else add ezpath &quot;-5&quot; add hdpath &quot;-5&quot; vstep-=1 end for n=hstep to 0 do if (stdoor\5)&lt;(endoor\5) then add ezpath &quot;1&quot; add hdpath &quot;1&quot; else add ezpath &quot;-1&quot; add hdpath &quot;-1&quot; hstep-=1 end end add ezpath {&quot;1&quot;,&quot;-1&quot;,&quot;5&quot;,&quot;-5&quot;} if (#hdpath&lt;3) add hdpath{&quot;1&quot;,&quot;-1&quot;} --shuffle ezpath/hdpath order shuf(ezpath) shuf(hdpath) --read paths, edit level table local pos=stdoor for i=#hdpath,2,-1 do local step={ -1=(makelevel(pos)+=18,makelevel(pos-1)+=4,pos-=1), 1=(makelevel(pos)+=20,makelevel(pos+1)+=2,pos+=1), -5=(makelevel(pos)+=17,makelevel(pos-5)+=8,pos-=5), 5=(makelevel(pos)+=24,makelevel(pos+5)+=1,pos+=5)} end local pos=stdoor for i=#ezpath,2,-1 do local step={ -1=(makelevel(pos)+=2,makelevel(pos-1)+=4,pos-=1), 1=(makelevel(pos)+=4,makelevel(pos+1)+=2,pos+=1), -5=(makelevel(pos)+=1,makelevel(pos-5)+=8,pos-=5), 5=(makelevel(pos)+=8,makelevel(pos+5)+=1,pos+=5)} end --return generated results as a --list of &quot;lvl1,lvl2&quot; tables... return &quot;lvl&quot;lv{}=level{} end end </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>I use a pretty standard LUA shuffle script there, too. And I hope the FOR/DO/LOCAL STEP{..} is effectively equal to a switch/select case statement, because this is where I needed that!</p> <p>As for the high variables on HDPATH, I'm adding a 16-factor to the typical 4-directional perlin noise, to designate them as &quot;hard path rooms,&quot; where harsher penalties for screwups can occur.</p> <p>WIP P8 file available here: <a href=""><a href=""></a></a></p> Sun, 09 Oct 2016 10:15:17 UTC [ Collab ] Harambe Kong Country <p>Proposing a DKC inspired cart, based mainly on the funner parts that DKC is known for. Priorities: Barrel Cannon sequences/mazes, mine cart levels, rocket barrel levels, maybe bird buddy / flying or fish buddy / swimming stages... and then maybe after all that, if there's space left... we can squeeze in some platforming.</p> <p>Takers?</p> Wed, 28 Sep 2016 01:36:44 UTC Going about things the hard way? <p>Well... trying to make some dynamic level generation script - it's a thing I've been digging into, lately... and kind of fuzzy on implementing it.</p> <p>So, the idea is that the main playmap area is 3 screens tall, 5 screens across; and ultimately, represented as a table like:</p> <p>LVL1={/leveltype,scr1,scr2,scr3,scr4...scr15} (where scr1 for instance, is a perlin noise variable that indicates where it joins with other screens... so if it were &quot;4,&quot; it would open to the right (up=1, left=2, right=4, down=8). LVL1-LVL15 each do this.</p> <p>I have a table called DOORWAYS={1,6,11,5,10,15} ...these are the screen IDs that can contain doorways. And then one that's DOORSHUF={RND(1,6),RND(1,5),RND(1,5)...} - the idea is that the starting door from level 1 is the first variable, and it references &quot;DOORWAYS&quot; to place the appropriate door - then every door thereafter is made by adding the next &quot;n&quot; of DOORSHUF to the previous one, and if need be, subtracting 6 from it until the table finishes, and returning those values to a DOORLIST table that should end up looking like either (16 values of 1 through 6, to reference DOORWAYS) or (16 values of DOORWAYS that always alternate).</p> <p>From there, I'm aiming at taking THAT table, and having each of 15 levels take that sequence, and concoct a &quot;fast road&quot; that's high risk, rewarding, but very direct toward the next door; and a &quot;slow road&quot; that's safer but winding (at least 7 &quot;screens&quot; in sequence)... the two paths can cross, too. The path generation basically adds the appropriate openings to scr1, scr2, etc. (and doesn't really matter which way it generates, since that's just the openings on the screens); and calculates via +/-1s and +/-5s (trying to devise a way to prevent calculative wrapping... so &quot;5 to 6&quot; has to do a &quot;+5&quot; and 4 &quot;-1s&quot; rather than a +1... so that too)...</p> <p>Anybody else here mess with this kind of thing and get it to work right, by chance?</p> <p>In progress:</p> <div> <div style="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> DOORWAYS={1,6,11,5,10,15} FUNCTION MAKELEVEL(BIOME,SCR1=0,SCR2=0,SCR3=0,SCR4=0,SCR5=0,SCR6=0,SCR7=0,SCR8=0,SCR9=0,SCR10=0,SCR11=0,SCR12=0,SCR13=0,SCR14=0,SCR15=0) --CREATE SEQUENCE OF 16 DOORS DOORSHUF={RND(1,6),RND(1,5),RND(1,5)...} D=0 N=1 FOR N=1 TO 15 DO D+=DOORSHUF(N) ADD DOORLIST (RETURN DOORWAYS,D) N+=1 NEXT </pre></div></td> <td background=/gfx/code_bg1.png width=16><div style="width:16px;display:block"></div></td> </tr></table></div></div> <p>Now working on the pathbuilding... basically trying to make constraints that if scr(n)\5 = 0, it can't +1, and if scr(n)\5 = 1, it can't -1... and then if scr(n) / 5 &lt;= 1, it can't -5 and then if scr(n) /5 &gt;2, it can't +5... (easy enough); but then having the pathways calculate as a result of the correct amount of +/-1s and +/-5s (this should take screen(n.previous + variable) and give the new &quot;next&quot; screen - then depending on the operator involved, it'll add the appropriate Perlin values to each of the scr1...scr15 variables in that level's table...</p> <p>...but that's still tricky to take from &quot;idea&quot; to successfully implemented code, isn't it! 'XD</p> <p>PS: Can anybody tell I come from OOP shit? I think half of this question/post is &quot;am I syntaxing correctly here?&quot;</p> Thu, 22 Sep 2016 20:51:17 UTC Playing with Picade and PocketCHIP <p>Well, THIS was a surprising side of myself to find coming to life while messing with PICO-8. Little as I've been able to really sit down and focus, I've actually started getting more into hardware and Linux now as a result of my exposure to it! I've already built a &quot;Picade Console unit,&quot; and got that loaded up with some games... for some weird reason, Emulation Station still having trouble launching PICO-8, even though it can see the games there for it. I've done the &quot;sudo chmod +rwx pico8&quot; thing too. But nevertheless, the controller/unit was FUN to build, and that's something I really haven't done in a good ten years now. I'm up and playing a bunch of cool classics with it, too! I'm probably gonna get a full Picade Cabinet kit when they become available again, too! :D</p> <p>Also, after MUCH delibration, my PocketCHIP finally shipped as well! It's only been a day now, and I had to do some calibration to the touch screen, but developing for PICO with it is still fun and solid! The somewhat nonstandard punctuation is a little tricky at first; but once you get acquainted a bit, it's pretty solid. I didn't have as much trouble hitting diagonals as I expected to have, from what I've heard here - but getting my right thumb back on the 0/+ keys (the Pocket edition equivalent of o/x or z/x) usually involved me looking away from the screen for the placement. It also felt weird trying to compose sound with &quot;Q 2 W 3 E 4 R T 6 Y 7 U&quot; since the number keys THEMSELVES were in a piano-like arrangement at the top of the screen (that might be one version difference worth considering); but once I popped up an octave and stuck to &quot;Z S X D C F V B H N J M,&quot; it wasn't so bad. Then if I needed the top octave, I'd just change that bit in the tracker view. Editing sprites, maps, and even code felt natural as feck, though. And it's kind of a neat touch that it boots in Splore mode... but I can understand why the regular version doesn't do that.</p> <p>It also feels REAL DAMN GOOD to have my first entire weekend off since June. T.T But I suppose without that intense grind, I wouldn't be swimming in all the cool nerdy wares I have going on now! And it's all 100% thanks to the PICO-8 community.</p> Sun, 18 Sep 2016 17:01:10 UTC JustMathThings <img style="" border=0 src="" alt="" /> Sun, 21 Aug 2016 12:16:45 UTC Let's design a PICO-8 &quot;social game!&quot; <p>A PICO-8 social game that revolves around the two things PICO-8 lovers love to do:</p> <p>-Making PICO games<br /> -Playing PICO games (ala &quot;Splore&quot;?)</p> <p>Now, granted... there should be a fun game within this itself, too. So, you're a Pico in some PicoSpace that you can deck out (a general Pico theme, maybe a Migli/Celeste/Classic Arcade/couple other themed sets of assets?), maybe a set of background tracks you can buy as singles and swap to in your pad - which will become the default BGM there... or on the go, with headphones (to overwrite the in-game track with the one of your choice)... and the two meaty parts of the game: going to the &quot;Splorecade&quot; to run an arcade-simulator version of Splore, and the Game Store, which lets you &quot;buy&quot; (IE: download) P8.PNG carts to run on your home Pico-88 system, or later your portable PicoBabe system!</p> <p>Now, how do we make this <em>social?</em> How do we make feedback to each other with this, and/or share our PicoSpaces with each other? I know we can save a few simple strings like &quot;what we're working on,&quot; &quot;a game we played recently and really like&quot; - or maybe we can just check our hearts/stars database here through the internet to get that data on the fly! Or what kinds of things we're have trouble with, so we can get/give development advice to one another. Also, there should be some way to play in each other's PicoSpace too, so we can leave each other notes and so forth.</p> <p>Talk with me here. What do you think we could pull off, like this?</p> <p>&quot;Feature Creep Talk:&quot;</p> <p>I'd like to pull off customizable fighting~platforming movesets and powerups; so internal minigame segments can be like little competitive platformer games, fighting games, simplified beat'em ups (think GaiAttack from Retro Game Crunch), and side-scrolling shmups. Some kind of in-game puzzle or pinball game may be cool too (especially because the pinball elements can coincide with platforming somewhat), but that might be getting into &quot;too crazy&quot; boundaries, given &quot;tokens vs. scope&quot; and all.</p> <p>&quot;GaiAttack&quot; here:</p> <p><object width="640" height="400"><param name="movie" value=""></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="400"></embed></object></p> Fri, 22 Jul 2016 19:54:28 UTC Let's just talk about old-school game stuff here. <p>It could be inspiring!!</p> <p>Also, I tripped across this video, and thought some of you may appreciate it; especially comparing it with P8's &quot;restrictions.&quot;</p> <p><a href=""><a href=""></a></a></p> Fri, 15 Jul 2016 14:23:59 UTC PICO PICO REVOLUTION (Not Playable Yet) <p> <table><tr><td> <a href="/bbs/?pid=24509#p"> <img src="/bbs/thumbs/pico24511.png" style="height:256px"></a> </td><td width=10></td><td valign=top> <a href="/bbs/?pid=24509#p"> PICO PICO REVOLUTION (Not Playable Yet) 0.01 0.01b</a><br><br> by <a href="/bbs/?uid=10826"> TonyTheTGR</a> <br><br><br> <a href="/bbs/?pid=24509#p"> [Click to Play]</a> </td></tr></table> </p> <p>CONCEPT:</p> <p>Use some basic SFX scripting to make a DDR &quot;demake.&quot; Slam Jam is further along than I am. Go enjoy that, too.</p> <p><strong>SPRITING SUNDAY</strong>:</p> <p>Okay. So I did most of this last week. I'll probably revisit this after Concert of the Damned; I certainly would like to get way better with SFX/Music tracker stuff, and code to manipulate it from within. So far it has arrows (that can be recolored for 1/8 and 1/16 notes, holds, etc.), a &quot;hold blur&quot; that can be flipped each direction, some system icons and CD banners (which can also be palette swapped, but for now they're pretty straightforward).</p> <p>Not a whole lot, but it's there.</p> <p>The music part is gonna be a bit trickier; but I believe still doable. The thing is, I'm going to need a way to create a few functions that make and load SFX structures - or at least can reassign the IDs on the fly - so that the song select screen has 64 samples; and then once a stage is chosen, it can write the song data into the music tracker for gameplay purposes - and then play a sequence of the structures (1-8, 9-16, 17-23, 9-16, 24-32; for example); and at the end of the stage - during the EVAL loop - it reloads the samples.</p> <p>Fact is, a lot of songs share many of the same core beats and structures, only the main melodies and tempos are really different. The tempo will have to be totally reimagined (to work with PICO's &quot;speed&quot; setting instead), but a common factor should control both that and the arrow speed. And since the game doesn't require external sound effects, it can actually use all 4 sound channels for composition purposes.</p> <p>That said though? I'll fully admit I hardly know diddly about how the data structure for that stuff works right now. So &quot;Music Monday&quot; may be a good few months of constant tweaking to make right; and really, none of the other gameplay works without that. But I'm posting the current source material here because someone here may be able to run with it better than I can.</p> <p>Visualizer code after that? I mean... it <em>exists</em> now elsewhere, so we'll see what happens with that.</p> <p>BONUS ROUND: Name all of the songs that the CD cover sprites reference!!</p> <hr /> <p>AFTERTHOUGHT:</p> <p>Another similar concept popped into mind after this, and it might be equally amusing, as well as different enough to be compelling.</p> <p>You control a character, and a corresponding stepzone (just Z/X, it's two arrows wide) located above them (they both snap to the tile grid). Easy charts are 4 columns acrpss, mediums are 6, hards are 8. As targets approach the stepzone, you have to move the character to the position and then tap Z/X with the rhythmwork. Charts also contain &quot;spikes&quot; which you have to move the character/stepzone to AVOID. You can also &quot;slide&quot; targets by holding Z/X and then moving left/right with the correct timing (or holding both of them; which can also sustain holds).</p> <p>It's similar enough in structure to reuse the music code; but also different enough to be its own beast. Oh well, there's always later.</p> Mon, 04 Jul 2016 03:52:39 UTC