Thanks for playing :).
Checked the fullscreen toggle now (honestly thought I already did that.... :)):
Schinken
Creator of
Recent community posts
That the plan... initially. They had something come up and couldn't participate (like 1,5 days before jam start). We were initially awaiting a 2D artist to join as the 5th person (5 person team limit) so we didn't really bother looking for another dev... they never joined :). Welp. lesson learned, always have options and people ready beforehand.
Thanks for the appreciation. Programmer here :). Yeah we opted to only have a single mechanic (attack) with jump being a thought (I almost didn't implement it...).
I was very concerned with performance on the Web-Export but I think it runs well (apart from the usual shader stutters)... Maybe if I focused less on performance I could've managed another attack (like a simple dash/ram would've definetly been an option). <3
Not *much* difference at least when using the music file (it is also converted into an array of NoteData (custom class with some data like start_time, frequency etc)).
This array is checked every physics_frame (though the whole array is split into the 4 bins for the 4 lanes first, so there are maybe like 90-ish notes per bin per physics_process frame to check). For larger songs this could lead to problems but for this it worked fine :)
I think it might even be less prone to lag issues, at least the way we did it.
- Get a list of all notes to be played (note + start time). We cheated a bit and just let our composer export a midi file for us :)
- For every note just instantiate a note-scene at position.y = start_time_in_seconds * pixels_per_second
- All notes are under one parent node
- Instead of "moving the parent note by some value" just absolutely reposition the parent note at position.y = current_playback_time_in_seconds * pixels_per_second * -1 every (physics) frame
This way, the notes move always in sync with the music, if the music skips/lags, the visuals will also skip/lag.
This approach might lead to performance issues with very large songs (lots of notes), but for us this worked. For note detection we don't use physics at all btw, we just check if the note is withing a given timeframe of their start time. i.e.:
var min_time = note.start_time - tolerance_time
var max_time = note.start_time + tolerance_time
if current_playback_time >= min_time and current_playback_time <= max_time -> then note is hit
Thanks for the kind words! :)
About the missing the notes part: On web (hopefully only on web...) there is a bug with the AudioStreamPlayer playback duration (i.e. when you read how long the AudioStream has been playing). It sometimes jumps to 100% duration and then quickly fixes itself. This however is enough to trigger all notes as failed (and thus unhittable...).
Reading the playback duration is a pretty new feature on web (>4.3, so 4.4 dev/beta) and it seems there is still some bugs to iron out there :).
Thanks for playing! It indeed was quite the challenge to get three minigames ready in time.
About the rhythm game: No you're not the only one, a few people already mentioned that they don't know when to hit the notes. Most tried to hit when the note reached the pipe... oh well :). Lesson learned for another time!
Interesting concept that could be expanded further. Feels like a mix of 90s First Person Point & Clicks (Myst, Dracula etc), Flash Escape Room Games and the physics interactivity of Penumbra/Amnesia.
Here are some notes:
- There IS a lightswitch in the hallway. :>
- It works without issues on my Linux system (just confirming that it works, because someone else had issues)
- Performance on my (arguably) weak Laptop is not great. Not sure if its some material settings (lots of reflections going on) or maybe the mirror subviewports are rendering all the time? 1080p fullscreen I get sub 30 fps on my Ryzen 4800 with iGPU :)
- Rotating left/right allows you to sqeueeze through gaps (got into the rose/3207 room that way :)
- The lock/key mechanism is too small to be easily noticed. The first time I mirrored the key and opened the door it was just luck. After that I looked at the other key and locks in detail and noticed their shape.
- It is a tad tedious to always run back to the bathroom to mirror the world, especially since the hallway-door sort of blocks the bathroom entranc
All in all a great entry though. Would love to see either a full point & click adventure with this mechanic sprinkled in, or a full game with this mechanic :)








