Add a simple rhythm game demo#1197
Conversation
2477a31 to
a7af5c2
Compare
Note that this should no longer be necessary if godotengine/godot-proposals#552 is implemented. |
a7af5c2 to
2ba0ec4
Compare
|
From the other pull request, I really appreciated the web demo for explaining. |
|
The metronome demo PR is done now 😃 I was working on cleaning things up before sending it out. #1199 |
78acc1f to
8a4821f
Compare
|
I played with the demo and I didn't notice any problems. The game was pretty fun! |
fire
left a comment
There was a problem hiding this comment.
I noticed that when toggling the checkbox the filter in the middle of the game it doesn't reset and required a reset. Not sure.
Do you mean the checkbox setting persists after pressing R to restart? This is intentional since I thought it would make sense to see the opposite filter setting from the beginning if you toggled first, then hit R. It's supposed to immediately swap between the filtered and unfiltered playback position though, so if you need to hit R to restart before the setting takes effect then something is wrong. |
8a4821f to
2da4796
Compare
|
Thanks for testing! I'm surprised -2ms is what you felt was correct. I do agree that 42ms is odd, but after repeated tests I can get it consistently <1ms error. I lowered it to 20ms to try to strike a middle ground. I also added some more things:
|
|
@Calinou Can you take a look? If you approve we can merge. |
|
I talked to JulianTodd and he suggest optional things to see the truth for example how the key thump and sound lines up in a graph. Like the graph in the right side. https://github.com/godot-extended-libraries/godot-debug-menu It's optional, but I wanted to note. Here's another view of the stacked graphs. |
2da4796 to
be7a046
Compare
|
I uploaded this project as an itchio web https://ifiregames.itch.io/godot-engine-samples-rhythm-game |
Calinou
left a comment
There was a problem hiding this comment.
Tested locally, it works as expected. Code looks good to me.
I think this is a pretty good start as it is. I can perform a polishing pass after it's merged.
My score on a first playthrough (never listened to the full song before):
I kept the latency settings to their default. I'm on a 240 Hz display with X11 compositing disabled and it seemed suitable out of the box. It was perhaps a tad high and could be changed according to the monitor refresh rate on startup automatically, but this can be difficult to get right.
|
Thanks! |






Follow-up for one of the project suggestions in godotengine/godot#105510 (comment).
This demo project is a rhythm game that utilizes the audio syncing strategies from https://docs.godotengine.org/en/stable/tutorials/audio/sync_with_audio.html along with a 1€ filter to have a smooth and accurate playback position. The project was built in 4.4.1.stable, thus not requiring the DSP time/
play_scheduledfrom godotengine/godot#105510.The song was taken from the BPM Sync demo project, and all other assets were made by me.
Key design decisions:
VSYNC_ENABLEDwith Compatibility render mode. Switching to Forward+ for this specific reason didn't seem worthwhile since tearing is not visible due to the notes moving vertically.