Fill the cup

fillthecup.ino.mr_skinny.hex (33.5 KB)

Also optimized the level data in program mem to remove anything unused which turns out I’m bad at maths because a freaking 10kbs has been removed because I made the array WAY bigger than it needs to be.

This version I made the more difficult levels easier since I’m running out of time to make new levels and I need to work on the time trial part of the code so Id expect this to be the second to last update before I’m done.


These levels are fantastic! It’s no longer a novelty - it’s a fully blown game!
. :sun_behind_rain_cloud: .
:droplet::droplet: .
:droplet: :ocean: .

As I mentioned before, it’s getting very reminiscent of ‘Cataclysm’ (which is great!!)
Cannot wait to see your code. Will you post to GitHub?

1 Like

Even it’s not up to date it seems that Spartanfox will share it the beginning of the program as been shared on github:
(and thanks to @Spartanfox (link on freelancer ) for that :wink: )

1 Like

I have been exposed

And yes I super will be posting the completed thing. Probably in a separate project as I changed the name to fill the cup rather than fill the bucket. Plus it’s now all bulked up with game flow logic and animation gubbins, so the above is probably easier to understand anyway if you’re interested in the particles. At least until I clean it up and add more in depth comments.


Here is the final version for today:
fillthecup.ino.time_trials.hex (34.4 KB)

I’ve implemented the time trials which begin after level 10.
Then beyond that when it gets back to the first level, it’ll be the same time minus 5 seconds (which might change to be scaled with the original time) and so on. So the game has a lot of levels that get harder and harder now.

Right now I’m struggling with level 29 for an example


When working with valves (pressing A), it’s far too easy to accidentally tap B and reset the level :frowning:
Circuit Dude has a great count down timer to prevent accidental resets.


On the iOS version, someone left me a bad review, saying they hated the countdown and wanted an immediate reset, also saying it added frustration, which was also something I wanted. :sweat_smile: That said, pushing A+ B also quits to the level select. I think A + B might work as an alternative.


Personally I do prefer the countdown as it’s much safer and decisive in my opinion, so I think i’ll go with that. Might even look into using the RGB LED for it too since I wanted to use the blue to reflect the percentage anyway.


fillthecup2.ino.lightsss.hex (34.8 KB)
Though I said the previous was the final version for today it’s currently 12:54AM so its a new day meaning it still counts.

I added the reset delay, its roughly 2 seconds with the red LED being the indicator.

Also added the blue LED to indicate the percent level with a little bit of green for a more natural water look.


I’m really impressed with how much this game has improved, I just played through ten or so levels in the emulator and found it a blast. I’ll have to stick it on my device and see how it plays on the smaller screen too.

1 Like

In my Lion Tamer game, to rest the scores the use must hold down the Left and Right button for a couple of seconds. I have the red LED build up in intensity until the time out is achieved. I just use a simple counter to count both the duration the buttons are held and use it for the LED brightness.

1 Like

That’s basically what I did too, though I just left it as holding down B since B isn’t used for anything else (yet). The last version I posted uses it.

1 Like

Thank you for the kind words, I wanted to make the game as good as I could in the time frame, though afterwards I’ll probably be changing the tiles to 16 by 16 so you can have more particles going through the pipes which to me is way more fun.

As for playing it on the smaller screen only thing I can really say about that is my dad has pretty bad sight, yet even with the small screen and pixel particles he managed to get 100% of them in. I think with how erratic their movement is it’s easy for them to catch your eye, and with the lack of other moving objects in the game apart from a tiny few animations the only moving things are the particles.

fillthecup.ino.donions.hex (34.7 KB)

I redid the second level as it was kind of jank and didn’t do the valves justice.

Also fixed the b button not working instantly when being pressed on the level complete screen.

I think this is basically done now, so I’ll start work on getting the code up on github

1 Like

fillthecup.ino.optimised.hex (31.8 KB)

spent some time optimizing the game by spreading the in cup validation code over two frames instead of one and many other things, so now the game is a much more stable 60fps

It also made the game smaller so that’s a plus.

Nothings really changed with the gameplay, apart from the 20+ levels are scaled better to make the time 5% shorter each run.

I also added an option to enable the grey mode in the code it can be flickery and disgusting but I wanted to experiment with it anyway.

Ill update github with the changes too since there’s not much more I can do now.


Looking great! How did you create the level design data in the end? Did you use a spreadsheet? I have an idea… but don’t want to duplicate work you may have done…

I literally just used some software called Tiled to design them then hovered over the tiles for their ID then wrote that into the array manually

Which ain’t the best, but at some point I want to compress the levels anyway. They can currently fit in 6bits not 8. With some custom software I want to design the levels then convert them into a 6bit structure between the bytes of the regular array, and then have a more lengthy level loader to turn them back into 8bits in memory.

1 Like

Another speed optimization:

fillthecup.ino.more_optimised.hex (33.2 KB)

I was working on cached rendering then realized why not just render the level once. So this version renders the game during the level animation then once more after. So all the particles and tile animations are the only parts that get wiped and rewritten to.

And thanks to this, the game now runs at the full 60fps even under a high load of all 400 particles moving at the same time, which I am very happy with. The only thing I would change to the game now is level compression to save space but thatll have to come with some kind of level designer.

I’ll upload the source to github but in a separate branch since the master branch is stable and there might still be unseen issues with these optimizations


I just played this version in the emulator and the first level got to 100% when there were still a lot of particles outside of the cup. Is that intentional?

I have a percent required which is set to 90% then the percent is scaled back to 100 I wanted the first level to be more of a tutorial type thing. Ill be adding menus at some point where it can say what amount you need, or for the time trials how much time you have