Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

The motion and sway give the circles personality. I laughed a bit on the first ones that psyched me out.
I've never used Love, but I needed it on Linux to run, so now I've got it!

What was your method for creating and storing the beat maps for the songs? Each circle looks like it would have several properties.

That final "hard" song was outrageous. Nice work on this!

(2 edits) (+1)

Thanks, glad you liked it!

Each circle has a hitTime property. I could get the current song time with LOVE using songTime = mySong:tell("seconds"). The note should be hit once hitTime is equal to songTime

Each circle also holds 2 math functions: easeFnX and easeFnY. These math functions take in the difference between the hitTime and songTime and returns a number representing the position it should be drawn on screen. So when hitTime and songTime are the same, the difference is 0. So when easeFnX receives 0, then the x position should return where the middle line is. The further away easeFnX is from 0, the further away the note will be from the middle line.

Each beatmap is stored in a lua file. They have access to a function like assembleNote(hitTime, easeFnX, easeFnY) to generate the notes. And I just call it a bunch of times in the file for each note.

Sounds tedious (it was haha), but I made a crude level editor that helped me write it all out!

Thanks for the thorough explanation. I like the method of using easing functions, giving you tons of flexibility! This explains how you drew the line path in front of the circles, just take songtime and add a beat or two, put that in the easy function to get points for drawing the line!

I can't remember from playing, but does the scoring system have a hit window for late/early hits?

(1 edit) (+1)

Yeah! The scoring works like:

Name Timing window Points Bar effect
Nice! +-0.03s 1000 Increases bar by 1 unit
OK +-0.06s 500 Increases bar by 0.5 units
Boo... +-0.12s
0 Decreases bar by 1 unit
Miss +0.15s 0 Decreases bar by 1 unit

You can also score an extra boo if you hit a note 1 second away. It will not consume the note and you could still hit it again later. It was intended to prevent “cheesing” the third level if the player just kept hitting all 4 keys to the beat (but it’s not that effective right now)

Ah yes, that's hard spot to find to prevent cheesing. Like you want to allow playing notes outside the normal beats, but not so forgiving you can spam key presses during hard sections. (thanks again for the detailed overview)