Thanks, glad you enjoyed it! The platforming on the last level is trickier, partially to make up for the fact that the flying enemies would be too easy otherwise. Thankfully there were just enough bytes to cram the level data in.
JadeLombax
Creator of
Recent community posts
Thanks, and sorry again for the hassle.
The level design and testing phase was only in the last couple of days, so it might need a little tweaking. Was planning to have more time for that, but had to create and debug a level editor program or revisions would have been a nightmare. The part that seems crazy even to me is that all the level data, including enemy placement, takes just 65 characters , and the second level, the simplest, only takes 16. o_O
Thanks,🙂
I'm glad the little workarounds I came up with seem to work well enough. The single bullet was just a way of saving space vs having another group of table entries to cycle through, and the 'homing attack waves' are just an increasing spawn probability with distance traveled, and an x position that changes by distance to the player's ship/96.
I was originally stuck on the random generation because the background needed srand(), but that meant no random enemy spawning without creating a list of values to draw from at startup. I hit on using another srand() call with the distance traveled as the seed, which gives random spawns that are the same every session, and saved around 30 bytes. I'm thinking about doing a writeup for this and/or my 550-char Space Invaders, maybe some of the strategies I found will help somebody fit their regular-size games into Pico-8 better.
Thanks, I had to heavily exploit P8SCII to shave off every extra byte, and also hope the hacky parts didn't cause problems (like the fact you only have one bullet).😉
I've had some ideas for a more substantial shmup for a while, but I'm not a fan of super-difficult games and am more interested in the aesthetics and atmosphere, and haven't been sure if people would be interested in that. Guess I'll have to do some experiments.
This is pretty neat, I second the request for a scoring system. I looked over the code and managed to shrink it by around 40 chars by changing the drawing functions and using a couple shorthand methods, is that enough to let you add one?
q={}r=rnd::z::x=20y=20h=0v=0g=0m=0::_::l=line?'⁶1⁶cc'
memset(27136,17,⧗)for i=30,45do
l(0,i,75-i,i,4+i%2)end
x+=h*g
y+=v*g
v+=g/9f=.88+sgn(40-y)/9h*=f
v*=f
if btnp()>0do
if(g<1)h=1+r()
g=1v-=1.5end
if(r()<.03)add(q,{x=-4,y=60+r(60),c=r(5)})
d=4for o in all(q)do?'|³d●',o.x-4,o.y-2,o.c+8
o.x+=r()if d>abs(o.x-x)+abs(o.y-y)do
o.x=x+1o.y=y
d=0end
if(o.y<40)del(q,o)end
m=max(m,y)circ(x,y,1,7)l(11,29,20,20)l(x,min(40,y),5)l(x,y)
if(m>40and y<40)goto z
goto _
Thank you, I'm glad to hear that you enjoyed it. It was mainly an exercise in trying to fit a little explorable game world in as little program space as possible, just a kilobyte. I just make little games as a hobby and I've never been paid anything for them. I went through and set up some things, though, and if you wanted to donate a bit, that would be very cool.
Thanks 🙂,
I saw your walkthrough, glad to see no new game-breaking bugs popped up.
To answer your question, I had to develop systems and techniques to cram a lot of information and logic into a tiny space, since despite much being faster than an NES, Pico-8's game carts can only be a tiny 32 kilobytes, while many NES games were hundreds of kilobytes. If you look at the other games I've posted on Itch, you'll see they're all 1KB or less. That's been due to a combination of finding optimization an interesting challenge, and also that severe size constraints really help to limit scope. For this project in particular, I used a system I built that greatly compresses level maps by storing them as placeable objects instead of individual tiles. If you're interested, you can check it out here: https://www.lexaloffle.com/bbs/?tid=42848
I am planning to work on more games that are bigger than a kilobyte, I'm actually currently working on a Pico-8 version of the original Mega Man. Like SMB, it's helping me learn a lot. I think I can get it to fit in a Pico-8 cart without significant cuts, though it'll take a while to finish.
Oh, okay, I thought you meant commented, long-form code. Here's a link to the code from the cart. I'm especially proud of the combined map decompression/autotiling system in about 100 chars at the beginning. ;)
https://pico-8-edu.com/c=AHB4YQkpBABPcc5oa-Bzy0Bel8v-tzaA-ZMUBjJ8isIifo8DzWV4Fe...
Thanks,
There's actually no separate source code, as I code all my tiny projects in compressed form by hand. I guess that's terrible practice, but I'm not a software dev, and it lets me better monitor and control the size.
I'd be happy to answer any questions or explain things if the code's too cryptic, though.
Thank you, I'm flattered.😊
When I was little kid, I remember my oldest brother slowly typing in lengthy programs from magazines on our old computer, usually to be rather underwhelmed with a primitive game that held our attention for a few minutes. Guess I'm fascinated by the idea of fitting something surprising and complex inside a tiny space.
I agree it's a bit unpolished in some spots. I'm hoping to make a more fully fleshed-out version sometime that adds and refines a lot of things. As it is, I had to cram like crazy to fit the whole thing in 1 kilobyte. That's less than 1% the size of the original NES Metroid. Those are good points, though, I'll see if I can free up enough space to tweak them.
As always, thank you for being a kind and gracious host. =)
I found a hybrid system for the map that seems to work pretty well: deliberate design elements laid on top of procedural generation. I'm calling the little robot K5, as it's the last part of his serial number. Initially was going to call him Gizmo, but it didn't really fit with the more realistic tone I was going for. Speaking of naming, my initial name for the game was MapDroid, do you think that's a bit too on-the-nose for a non-size-restricted version?
As for the power cell, I believe only 2 are truly hidden, I'd recommend searching the depths of the red crystal area, or around the waterfall. ;)
Thank you very much, that's high praise coming from someone with your coding savvy.
There's definitely some procedural generation smoke and mirrors, but it's a video game, what it looks like is kinda the whole thing. Glad to hear people are legitimately liking how the game plays. It's my first-ever shot at a Metroidvania, so that's encouraging for potential future projects.
Thank you, glad to hear you're enjoying it!
I might have to shatter the illusion a bit, but there's actually not very much map detail stored. The world is made up of just 35 rectangle and oval shapes drawn to the screen and copied to map memory. The trick is that the shapes are drawn over 64 cel-like room shapes composed of several hundred randomly-drawn black rectangles. I hit on this after initially trying pure procedural generation, which was too chaotic. Combining random detail with specifically-designed features seems to give most of the effect of storing a lot more information, though you have to work with what's there. It's kinda like looking for faces on a textured ceiling. =)
Thank you, looks like you got a good time! I would have liked to include at least some sound effects, but even that would have eaten up space fast. I'd like to make a more fleshed-out, non-size-limited version of this at some point, I just have to work at limiting my scope (a big reason I started size-coding in the first place).
Oh also, they're technically power cells (yeah, I know they're squares, but Metroid gets away with it. ; )
I'm glad you enjoyed it. I have to say my intention wasn't to be evil, more that I only had 12 total collectibles, and if I handed them all out in a straightforward way, the game would basically have zero longevity or replayability. If i'd really wanted to be evil, I could have included some blind pitfalls (including ones of that drop you out of the whole map), or made pits you could fall down and not get out of. =P Also, while the destructible walls aren't marked, they don't have any crystals on them, as you can't destroy those.
What you're saying about the double jump (or as I like to think of it, 'jump jets') makes sense. I didn't have any space for explanation (I mean, the game's title doubles as an explanation of your objective) but I had hoped the deep pit you have to climb out of in the green quadrant would help players come to grips with it.
Thank you, having the game stand on its own merits regardless of file size was my goal. I'm realizing the time in seconds is pretty awkward, but couldn't fit proper formatting. As it is, the title logo and time display are part of the same print command. And yes, they are green squares, they're supposed to be metroid-style power cells. =P
Nice job on the graphics and sound, and coming up with smart simplifications! The 97 seconds remaining submission is kind of the cherry on top. =) Was thinking about a demake of Dig-Dug or Frogger, and had made a little test, but my project took too much time for that. Glad to see somebody made one.
Thanks,
I've just been practicing the digital equivalent of jumping up and down on a suitcase to cram 'em in as tight as they'll go. ;) This one was tricky. I had a good base from my last entry, but as I've found when encoding sprite and map data in custom, highly-compressed form, things can get very temperamental.
Thanks for letting me know about the glitch, didn't have a lot of time for playtesting. I uploaded a fixed version. It appears I had failed to update a number from 21 to 22...

















