245 |
MARBLE MERGER
Seems like everybody's making a clone of Suika Game these days - here's mine!
Instructions
Drop marbles into the container - if two marbles of the same size touch each other, then they merge together to form a single larger marble, and you get some points (larger merges have larger value). If a marble comes to rest while going past the top of the container, you lose!
It's an endless game, so post your high scores in the comments!
Extra Thoughts
My main goal here was to make this version of the game look and feel as smooth as I could manage. The three features which are most relevant to that goal are:
- 60 FPS
- Custom "slightly squishy" physics
- Antialiased circle-drawing
I've been thinking about adding a mouse-only mode, which could make the game comfier to play on a phone. Let me know if that appeals to you, or if you have other feature-requests! I'm also happy to answer questions about how any part of the code works.
Changelog
- 1.0.2: Adding a drop-cooldown and antialiasing-toggle in pause menu
- 1.0.1: Adding "circle of evolution" to UI, bugfix in transition-rendering
- 1.0.0: Original upload
score of 543!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
603!
983!!!
649!
1005!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
723!!
749!!
739!!
767!!!
I have a suggestion, possibly make the cooldown between drops just slightly longer, I got a higher score spamming than I did thinking about my moves and waiting for things to settle, thanks to the entropy of it bouncing all around
The physics is so good that I can carefully aim shots to dislodge marbles to make them merge with others. One niggle, however: the movement of the dropper is really frustrating -- it keeps moving a little after I release the button, so I have to move it back and forth trying, and usually failing, to get it lined up where I want.
Awesome realization! Why don't you make with @spoke one ultimate game with hes artwork and music and your physics? It will be easily one of the pest pico remakes ever!
@dredds - that is a pretty wild score! the best i've gotten was just over 1,000.
you're the second person to ask about more precise aiming...another request i've gotten is a pinball-style "tilt" feature, and both of those might want that X button...but maybe i can adjust the way the default movement works (starting slow and accelerating as you hold it longer?) to avoid needing to use the extra button for a "slow movement" mode
If the other person asking for precise aiming was on Mastodon, that might have been me!
Rather than a tilt feature, how about being able to hold down the "drop" button to launch the marble with more force? And/or being able to adjust the angle with the left and right buttons before releasing the "drop" button?
I'm not sure if I'm a contender for hittin 2k but I improved 1.5k to 1.6k finally so that made me happy
I'm a simple guy. I see bouncy jiggly balls, I play with them.
Fun game. Very satisfying.
Fantastic job the physics feels great. The antialisaing helps loads.
1135 first attempt
Help, I don’t understand why this game gives an error on my Miyaoo. I download marble_merger-3.p8 - it gives an error.
All the rest of the program is fine.
@Hedgehog-77 - someone in some forum thread suggests that it might be related to bad autosave data, so maybe try deleting the autosave file for this game? maybe not good enough if it broke on the first run, but worth a shot i guess. the only info this game actually tries to save is the high-score and the enable/disable antialiasing setting.
i also see someone saying that FAKE-08 struggles with games that were saved from more recent versions of Pico-8 - so maybe it's worth importing the game into an older version of the engine, saving it from there, and then trying with that "old fashioned" .p8 file? i don't think this game is using any brand-new features, so an older Pico-8 build might be able to run it, but it might complain about loading a cart that was made in a newer version - if so, you might be able to gradually reduce the version 41
line at the beginning of the .p8 file until it accepts it. this might cause it to load incorrectly, but it's worth a shot. if that doesn't work, you could also manually copy the game over to a fresh cart in an older version - it's just code and sound effects, no sprites/map. note that lots of sound effect slots are empty on startup and get populated by the code, so if you copy sounds over manually, make sure you get all of them (the last slot with content at edit-time is 26).
a more extreme fix: you could try removing all the dset()
/dget()
calls, since those are the places where it's reading/writing saved data, and maybe that's what messes it up. this would remove support for saving stuff permanently to disk (your highscore and the antialiasing setting), but if you want to try that, it'd need a few small changes to the code:
during startup, antialias=(dget(1)==0)
can be changed to antialias=true
(or false
if you want the game to turn off antialiasing by default), and then inside of inside of toggleantialias()
, the line dset(1,antialias and 0 or 1)
can be deleted entirely. once that is done, you should still be able to toggle antialiasing from the pause menu, it just won't save your choice for later, when you quit and re-open the game. it's worth trying to run it again after making these changes to the antialiasing storage, because this is the one place where it calls dget()
during startup, and maybe that's bad on the device, somehow.
if that doesn't do it, you could try removing the permanent highscore stuff, as well. you'd need to add a new highscore=0
var on startup (next to the edited antialias=true
line would be fine), and then you'd also have to change this bit in resolvecollisions()
:
if score>dget(0) then dset(0,score) end |
...into...
if score > highscore then highscore = score end |
and finally, in drawscore()
, local n=dget(0)..""
becomes local n=highscore..""
. at that point, there should be no more usages of dget()
or dset()
anywhere. it'll track your highscore across multiple playthroughs inside of one launch of the game, but when you quit the game entirely and re-open it, the highscore will reset to zero.
@Hedgehog-77 - another dev suggests that if you're trying to run it with FAKE-08, you should try this wrapper for real-pico8 instead. he says the game fails for him with FAKE-08, but runs correctly with the real-p8 wrapper (on a Miyoo)!
Excellent excellent game. Well done! Reading through the comments the only suggestion I'd second would be to have a moving curser add a little inertia to the drop. That seems like it would be elegant and in keeping with the game as it stands. not sure it even needs it though.
visuals and sound design are fantastic. If you could add some optional music it would be nice. But it would to be top shelf repetitive tunes to match the standard of the rest of the game :-)
This is super fun! I love the physics of the balls, it makes them look extra squishy
Your physics engine doesn't account for a kind and loving god, because no good god would allow for this to happen.
Finally broke out of the 1600's! This one took a while.
Love the game.
I've been thinking about what a practice mode could look like... Maybe hitting the 'X' button could skip to the next ball? It's hard to toy with the physics of the bigger balls, about brown stripe and higher, because it's hard to get more than one on screen at a time.
Then of course it doesn't count for high score! :P
[Please log in to post a comment]