Rhythum [Game Jam 5]

Rhythum.ino.leonardo.hex (56.8 KB)

title-screen_128x64
A mobile suit/mech rhythm like game!


Banner art created by LENZ.

Links

README file
Release
Itch.io Page


Story

You are piloting the Orchestra’s new Rhythum mobile suit unit, when the ship you are on is attacked by a fleet of enemy suits known as the Conductors. Do you have what it takes to survive the Conductors’ attack?


How to Play

Press the correct (directional or A) button when icon lines up with aim reticule


Controls

Pause/Unpause game with B button


This was a super fun game to make. First time making “music” for a game. Beats don’t quite align with the music so it is kinda like an off-beat rhythm game. Hope you all like it!

There seems to be an issue with the hex files with emulators. Recommend using source files and Arduino IDE if hex files don’t work. I’ll push a fix for the issue later once I figure out how to correct the no matching function error when making a Rect with args that were passed in to a function.

3 Likes

A suggestion for making it easier to install the game in the Arduino IDE:

In your GitHub repository, create a folder named Rhythum. Move Rhythum.ino and all the .h and cpp files into it.

This way, to install the game, the Rhuthum folder just needs to be moved or copied into the IDE sketchbook folder (usually named Arduino). No renaming (like removing -master from the folder name) will been necessary and none of the files and folders that aren’t actually required to compile the game will be included.

Edit: I’ve created a pull request that does this, if you wish to apply it.

1 Like

I you set:
Show verbose output during: ☑ compilation
in the Arduino IDE preferences, this game generates many warnings the first time it’s compiled. I don’t know if any are something to be concerned about but you may wish to look into it.

1 Like

I will take at look at the warnings. I do have verbose output on, but looks like the warnings are split in different sections. The last one is about EEPROM from Arduboy2 library which I was ignoring and wrongfully assumed the other warnings weren’t related. Did see some stuff for my code that I will take a look at. Tried passing some const stuff that seems to be most if not all the warnings.

1 Like

You can ignore the EEPROM warnings from EEPROM.h. They’re generated by the Arduino code and don’t concern you. To know if it’s your problem, look at the file name that the warning is given for.

Note that some of the warnings will only be seen the first time you compile after opening the sketch because some of the compiled code is cached and not compiled again unless the source code changes.

1 Like

I wasn’t able to play this on my Arduboy. I created my own uploader and it said that it wasn’t a valid .hex file. It could be an issue with my uploaded. To make things easier, could you edit your post and upload the .hex file there? At least that way I can try it out in the simulator :slight_smile:

Edit: seems like another game messed up my Arduboy. Finally had a go. The training section at the beginning was harder than the rest of stuff lol. I got a few things wrong, was there a visual/sound cue to let me know that? (even though it was obvious)

:man_shrugging: Looks like Project ABE doesn’t like the hex files because rect can’t upcast a byte. I’ll try fixing it real quick if I can.

Yeah, I’m not sure what is up with the emulators. It doesn’t like me making a Rect object with passed in variables. Rect(x,y,width,height) is giving it an error about no matching function call. I’ll try messing with it later in the week and see if I can make a fix. Loading it with Arduino IDE works just fine so not sure why the hex files are an issue.

If ProjectABE can run the .hex then don’t worry if it can’t compile the code.
ProjectABE’s compiler has a few issues but the emulator itself mostly works.
(Though it doesn’t emulate certain timer pins, which can cause an issue with some libraries.)

Running on hardware is the most important part.


By the way, all the Sprites functions are static so you don’t actually need to create a Sprites object, let alone pass it around.

It’s nice to see code using references and being const-correct though.


Oh, and Arduboy2Base::collide is also static so IndicatorBox doesn’t actually need an Arduboy2 instance.

Could you please post a working .hex in your first post?
The forum software should then provide an embedded emulator, for casual users to check out your game. Thanks!

Posted a hex file. Looks like it works, which I’m a little surprised by since I tried the web version of Project ABE for a previous comment and it didn’t want to compile it. I plan on doing a couple bug fixes that Pharap pointed out, but I don’t plan on releasing those changes until after the voting.

2 Likes

They’re not really bugs as such, but they’d certainly reduce the memory usage.

I mainly chose to point those out since they’re likely to save you effort in future.

If you’re interested in other potential savings/improvements at all I may be able to have a look when I have some spare time.

As I said before, the emulator is 95% fine with hex files,
but the compiler has a few issues which means it won’t compile perfectly valid* code.

* for Arduboy’s environment.