Rhythm Gear


In the early 2000s, I was introduced to a game called O2Jam by a friend. I instantly fell in love with it. The gist of the gameplay is basically to tap each falling notes to the beat of a song.

O2Jam Screenshot

It was pretty popular in my country at that time actually, especially in internet cafes. (alongside MapleStory and Audition [audition is not a rhythm game fight me]). We would go around comparing scores, brag to one another about songs with the hardest difficulty level we were able to clear, etc.

However, in around 2008, the server for O2Jam silently closed down. No warnings, no announcements. Just poof, it's gone.

This led me to search around the web for other similar games like this, which I later came to find out that the genre is called VSRG (Vertically Scrolling Rhythm Game). There are quite a few number of them, like IIDX, DDR, for example. But for a free game on PC that my brokeass can get my hands onto? I was pretty much out of luck (I think there are some out there, like StepMania and OSU!Mania, but those didn't felt as satisfying to play for me for some reason).

So what was my conclusion? "I'll make one myself!"


The aim of the project was to add some RPG elements over the basic VSRG gameplay, such as gaining experience for leveling and gathering materials to craft gears.
The video demo for those features can be seen on these 2 youtube videos: Link Link

As I have no experience in composing music, I decided to just focus on the creating the game. As for the music and notecharts, it would just use existing BMS and OJN file formats.

OJN/OJM are file formats used by O2Jam for songs. Needless to say, the song files were encrypted. Well, badly, that is. It seems all they did was just XORed the entire file with "nami".
If you are interested, the documentation for the OJN/OJM files are here: OJN/OJM Documentation

BTW, the documentation is written by the open2jam team. They did a wayyy better job than my dumbass of emulating O2Jam. Do check them out!

I have also written a simple backend to capture and store highscores. Sadly, that part of the code is gone, though it is not a that big of a loss anyway. Its pretty much just REST API call to a PHP MySQL backend, and PHP sessions for login.
Think you could even just, feed the highscore table with your own self-declared score by doing some POST calls if you know the API link, not much for security.

That's pretty much it I guess. Game is far from complete (you'll prolly see this pattern in alot of my future projects as well), but I still feel this is thus far the most ambitious thing I've done. It may have shitty framerates, bad looking interface and buggy gameplay, but I do feel slightly proud for taking the first step in starting something.

Final gameplay video:

Thanks for reading! You can download the source codes here (Google Drive).