JelliBoi - Game Jam 3

For the jam I made a game detailing the life cycle of a Jelly fish. The goal is to avoid being eaten by fish while collecting the pixel food items with your tentacles or mouth depending on the stage.


The controls use the directional pad to set the direction and B to swim if your at a life cycle stage that can swim. A being held will cause the adult jellyfish to rapidly descend.

The Stages are: Larva-> polyp-> strobilates into a young medusa-> adult Jelly-> buds into a larva.
After each complete life cycle the food is worth more points, rewarding your ability to keep the life cycle in motion vs just consuming food. Each stage lasts 30 seconds and then you move on in the cycle.

Large fish can always eat you.
Small Fish can only eat the soft bell.

Also as a fair warning, the code is a bit of a spaghetti mess. I would do almost everything differently if I were to rewrite this and not pressed for time.


Great idea. I love the Jelli’s movement.

Nobody minds code that is slapped together … unless they want to change it!


There was a number of times where I wanted to change it and had to deal with the mess I had made.

Also I forgot to mention, the young jelly moves to the left because it’s being “pushed” by the current. It might not totally be apparent.

The collision is a little buggered too but I determined I wouldn’t have enough time to implement the pixel based one you use in the Steve the dino tutorial. The Steve Tut was a good reference though for this anyways, thanks.

1 Like

Thanks … I am glad it was of use.

1 Like

So the beep is present on my physical arduboy, but it only makes a clicking noise. I don’t think i’ll have time to sort it out but if anyone has a suggestion I might be able to fix that before tonight.

I added a quick and dirty help page in the game that tells you all the entities and basic controls/ pointers for the game. I hope you all enjoy it.

I also realized my intro screen was causing a bug with the initial entity spawning so that should now be corrected.

1 Like

When compiling he source code I had some trouble with the #include <Arduboy2Beep.h> directive. My IDE said that the file was not found, even though Arduboy2 is installed on my system. I also checked to see if Arduboy2Beep could be installed separately using Manage Libraries, but I didn’t see it as an option. In the end I copy and pasted Arduboy2Beep.h and Arduboy2Beep.cpp from the Arduboy2 git repository and then changed the directive to #include "Arduboy2Beep.h".

I just thought I’d mention this if anyone else is compiling the source. Our CMPT 220 class will be trying out all of the games tonight (including JelliBoi) so thanks for making this!

Did you update the Arduboy2 library? as Beep was included as of version 5.0.0

At time of writing 5.1.0 is the current release.

1 Like

Thanks! Yes, that fixed it. I didn’t realize I was out of date.

1 Like

This reminds me of a game I played at the London Sea Life Aquarium.


tbh I don’t think I even need that #include. I’ve never used any of the sound libraries before and didn’t have much time to figure them out for this.

Now I think about it, it reminds me of a game that used to come bundled with ancient Motorola phones like the one I own:


1 Like

Actually, you never have to #include <Arduboy2Beep.h>, even if you use the BeepPinX classes, because it’s included by Arduboy2.h

I recall reading that in the documentation, I added it since I wasn’t hearing anything but it just wasn’t audible in projectABE. After all the voting etc is done that’s on my list to fix. Is beepPin supposed to be superseded by the tones library now? Or is beep still appropriate to use in cases like this?

I currently have most of my bitmaps duplicated since I was having trouble using them for the help page. :coffin:

I’m pretty sure that’s a couple minute fix but I ran out of time to tinker so I took the easiest route.

Is the skeleton a health bar? I thought about adding a hug for score and a countdown timer but decided it looked better without them. I originally wanted the world to scroll instead of the jelli but restricting the playingfield was a lot easier to figure out so i compromised on that. The worldMap file has remnants of that intent.

How does the balance feel? At times it felt like it was easy to get cheesed like when you become a larva for the second time, but I figure most larva are going to get eaten on their way down in the real world. Life isn’t fair so why should the game be lol.

1 Like

Yeah, ProjectABE doesn’t support that PWM audio yet. It’s in progress, though… just had a brief pause because of the jam.

I just assumed my computer volume was just too low since it makes more of a buzz than a beep. I do most of the iterative testing on ABE and then use my arduboy for final tests.

Also I keep forgetting to mention @Vampirics tested an early version of the game and gave me some feedback so some credit is due.


I think it depletes over time and gets refilled by eating.
I think if you run into a fish that’s larger it just eats you and you die, no slow depletion of health - just instant death.

Once some conditions are met (I don’t know the exact conditions, but it involves eating fish) your fish becomes larger and starts having to eat larger fish species.

I only played briefly, I’ve been quite busy/preocupied this week.

I never even got round to finishing my playthrough of @filmote’s game.

Unfortunately, the mention of having to #include <Arduboy2Beep.h> is something that’s added automatically by the Doxygen formatting :frowning:. I haven’t looked into whether it can be suppressed.

No, which sound generation method you use depends on your requirements.

The new BeepPin classes, recently added to the Arduboy2 library, can only generate single tones but they use very little memory and processor time. The ArduboyTones library can play sequences of tones with a single command, and can play each note at two possible volumes, but the library uses more memory, which may be a problem if you’re short on code space.

Other sound libraries, such as ArduboyPlaytune, ArdVoice and ATMlib, have varying capabilities and memory requirements.

You have to weigh the features, memory and processing requirements of each (or even come up with your own sound producing code) based on the kind of sounds you want your sketch to have.

So there’s a couple things I want to add to round this off and make it complete.

  • Reorganize/comment/ reduce the code. (Lot of ints that could be int8_t etc)
  • Fix the buzz so it’s more of a beep
  • Add EEPROM score saving and maybe top 3 scores leaderboard.
    *Implement the pixel collision used in @filmote Steve the dino lesson
  • Add a background sound loop
    *Tighten up how the food pellets and fish are spawned so it feels more random instead of there almost always being the max amount of entities floating around.

I feel like that will wrap this up into a complete game.

I’m also thinking about adding a small hud along the bottom with the countdown timer and your score but I’m not sure if that fits with the theme of the game.

1 Like

I just gotta say I really love this game. I actually think it is almost one of the best games as far as educational and difficulty. Not really in space but…

This reminds me of the game odell lake, which was made by MECC same people who did Oregon Trail. Random trivia Odell Lake is actually also here in Oregon, and I’ve been there. It is nice.


I did a similar thing in Juno First … your welcome to borrow / steal the code and I can answer any questions about it.

I also have a simple sketch that shows how to capture a piece of text (the players name) and save it in EEPROM which may give you some ideas.