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!
Viewing post in BeatSwarm jam comments
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?
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)