A downloadable game for Windows, macOS, and Linux

Ren'Py Rhythm is a rhythm game engine built for the Ren'Py Visual Novel Game Development engine. Check out the source code and guide for integration on GitHub. The section on automatically generating beat maps for any audio file might be of special interest to you.

Use the four arrow keys on your keyboard to play the game.

You can use this project as a standalone playable or integrate it as a minigame into a Ren'Py visual novel project, using any music you like and have the beat map automatically generated for you.

This project is entirely free and open-source (MIT license on GitHub). If you plan to use it in your game, please credit both the GitHub repo and this itch.io page.

Credit Example
Lynn / r3dhummingbird, GitHub, itch.io

I'd love to see what you create with this so please do comment below and link to your project!

This project is built with Ren'Py SDK >= 7.4.0 and is also compatible with Ren'Py SDK <= 7.3.5. Please feel free to comment below for bugs, feature requests, and general suggestions. You can reach me through the email address listed on my GitHub profile.


Need help generating beat maps? I made a YouTube tutorial just for you.


Music File Credits
All music files included with the code are copyright-free ones found on SoundCloud.


StatusReleased
PlatformsWindows, macOS, Linux
Rating
Rated 5.0 out of 5 stars
(12 total ratings)
Authorr3dhummingbird
GenreRhythm, Visual Novel
Made withpygame, Ren'Py
Tags2D, Open Source, Ren'Py, resource-pack, sourcecode
Code licenseMIT License
Average sessionA few minutes
InputsKeyboard
LinksSource code, YouTube

Download

Download
renpythm-1.0-linux.tar.bz2 34 MB
Download
renpythm-1.0-mac.zip 28 MB
Download
renpythm-1.0-pc.zip 63 MB

Development log

Comments

Log in with itch.io to leave a comment.

May I know what to do to get the beatmap?

did you used pygame to make the game?

I used Ren’Py for the GUI. Ren’Py supports some pygame functionalities like pygame.key so yep you can say this uses pygame too.

nice

not bad

Hey, I'm working on a rhythm mapping tool for games like yours. it's called MBOY Editor (https://vfpe.itch.io/mboy-editor) Do you want to try it for your game? Vic

Looks cool! Thanks for sharing :)

Hi, I want to upload chess 2.0 to Renpy 8, can you send me an updated version of it?

the game is great, but i came from pygame.... im trying to use pygame, and i followed every single installation there is, and its installed every time. but how do you use it? i started using vs code for it, but i cant play the game i made anywhere, its just debugging, and testing, never actually runs the code..... pls help me... 

Hello! Thank you for making this! I can't wait to incorporate it into my project.

I do have a question- is there a way I can code it so a certain percentage leads to a different outcome? For example, if a player hits 60%+ of the notes, they go down route A, but if they get 59% or less of the notes, they go down route B?

Thank you so much!

I know how to. But only in Ren'py. Sorry if I'm late and you already found a solution!

Basically, you just put:

if num_notes > 145:

Then you can make different routes. the number of notes is in the beatmap at the end of the long one of decimals. (Basically the number at the start of the last string of numbers in the beatmap)

The '>' indicates 'more than'. If The player got more than the beat number you put in, then the will go that route. Similarly, you can put:

if num_notes < 145

Then players that got less than the number you put in would go the other route. You can do this with other objects too! Like affection points and stuff like that.

define points = 0

Put this before 'label start' if you want to use it for anything else.

(+2)

My name's Chris, and I'm the Creative Lead for "Black Heaven: A Necromantic Dating Sim" (https://oldnoeyes.itch.io/black-heaven), which raised about $13K on Kickstarter. I came across Lynn's work here on Itch, and I decided to commission her to create a chess-like mini-game for "Black Heaven."

So far, I think it's one of the best decisions I've made in this game's development.

I really, really can't rate Lynn highly enough. I work with professional creatives all the time for my day job,  and Lynn beats pretty much all of them in terms of professionalism, thoroughness, and communication. Even when working on multiple aspects of a project at once, she kept things organized, well-documented, and updated regularly.

She was a great problem-solver, coder, and collaborator, and even though my knowledge of coding is pretty rudimentary, she was able to guide me through the development very smoothly. It was amazing to see the mini-game's AI develop into a truly formidable opponent, and I'm blown away to see my vision for the mini-game come together so seamlessly, on-time and within budget.

Bottom line: if you need a coder with Lynn's skillset (I'm looking at you, indie developers), get her on your project. In the words of 'Macho Man' Randy Savage, she's "the cream of the crop, ooh yeah."

Hey Chris! Thanks so much for the thoughtful comment! It was my great pleasure working with you as well :) My best wishes to Black Heaven.

sorry

I don' like this game

but It is a good game

No worries :D we all have our preferences. I’m all ears if you are open to telling me why you don’t like it so I can improve this and my future games!

(1 edit)

Anyone interested in joining the upcoming Rhythm Game Jam in July? If so please reach out to me at lynn#9327 on Discord. Looks like a fun jam so I’d love to assemble a team!

(+1)

Hi, I love your rhythm game code.

I have an ongoing visual novel project and wanted for a long time to have something like that as a minigame for one of the girls in it. Even tried creating one myself (was able to, to some degree), but yours is much superior to whatever I had made!

That being said, I have a kind of suggestion, kind of request to make... Is there a possibilty to have the notes assigned to lanes during the beatmap creation instead of during runtime?

Thanks for this!

(1 edit) (+1)

Hi, thanks for the comment! And yes to your question: It’s not very hard to do.

Check out this line of code and my answer to a similar question on GitHub.

Basically, when you create the beat map, you can create a list of indices (indicating which note appears on which track) and assign that to self.random_track_indices.

Reach out to lynn#9327 on Discord if you have more questions!

(1 edit) (+1)

Ohh... That's really useful!

Thanks!

EDIT: Alright! Got it working pretty nicely.

Thanks for this amazing framework!

(1 edit) (+1)

You are very welcome! I’m interested in what people can build using this engine so please feel free to link to your game here if you’d like :)

It's gonna be a looong time until this minigame is actually available in my game.

But if you wanna check out what my game is about, here's the itch page for it:

https://lykanz.itch.io/the-inn

(+3)

This is fascinating and super cool. Well done!

I have a couple questions:

-How easy would it be to use this to, say, build a Quick Time Event where timing/frequency of the button press would be based on the music currently playing? Like, how malleable is this for non-programmers =/

-Currently, I think you can mash on all arrow keys at the same time and then get a perfect score. Would it be possible to add a "miss" window, so that if you press the key too early it registers as a miss?

Once again, congratulations on making this amazing thing!

(1 edit) (+3)

Thanks! Your feedback means a lot to me.

how malleable is this for non-programmers

This code is pretty involved so probably some experience with Python is helpful. I’m not sure what you mean by “Quick Time Event” but currently it’s possible to automatically generate beatmaps based on the music currently playing (using its onsets) It’d be non-trivial work to try to support long-press notes if that’s what you are asking.

miss window

It’s doable in the code with some amount of work. I’ve opened a GitHub issue for this feature request and will post updates here if I have a chance to get to that.

Please upvote this post/thread if you’d like this feature as well. This helps me gauge people’s interest and prioritize feature requests. Thanks!

(+2)

You're a genius for making this work on Ren'Py lmao

(+1)

Thanks! Glad you like it :D

(+2)

YES

(+1)

Glad you like it and hope you find it helpful!

(+1)

THIS IS SUPER EXCITING!!!

Glad you like it and hope you find it helpful!

(2 edits) (+3)

edit: this issue has been fixed now & the engine runs with no issues on windows!

hello! this looks really cool but when i try to run the demo (from renpythm.exe/renpythm-32.exe), i get this error:

I'm sorry, but an uncaught exception occurred.
While running game code:
  File "game/00-renpythm/rhythm_game_displayable.rpy", line 29, in script
    init python:
  File "game/00-renpythm/rhythm_game_displayable.rpy", line 29, in script
    init python:
  File "game/00-renpythm/rhythm_game_displayable.rpy", line 36, in <module>
    from aubio import source, onset

(sorry if this is an issue on my end, but i'm not sure how to solve it!)

(1 edit) (+1)

First, thanks for the note! I’m on a Mac and haven’t tested this on Windows so I can’t tell from the first glance what’s wrong. Is there any way I can reach you to discuss this further? Feel free to reach me at email r3dhummingbird at outlook.com, or, lynn#9327 on Discord.

As a starter for debugging, you can also try downloading the source code from GitHub and see if it runs.

I believe this is now fixed. Would you mind giving it another try and letting me know how it goes? Thanks!

(2 edits) (+1)

that issue was fixed, but different issue seems to be occurring!

I'm sorry, but an uncaught exception occurred.
While loading <'Image' u'00-renpythm/images\\up.png'>:
  File "game/script.rpy", line 52, in script
    call screen rhythm_game(audio_path, beatmap_path, beatmap_stride=2)
  File "renpy/common/000statements.rpy", line 570, in execute_call_screen
    store._return = renpy.call_screen(name, *args, **kwargs)
  File "game/00-renpythm/rhythm_game_displayable.rpy", line 207, in render
    render.place(note_drawable, x=note_xoffset, y=y_offset)
Exception: Backslash in filename, use '/' instead: u'00-renpythm/images\\up.png'

also copy-pasting my comment from above: i noticed that the download comes with copyrighted music - i suggest switching to music you have permission to use! (as it is now i don't feel comfortable recommending this engine to other people since it seems to just have music downloaded from youtube included in the files.)

Thanks for your continued support! I’ve changed all music to copyright-free ones and attempted to address the bug on Windows. I don’t have a Windows computer to test on so I’d appreciate any feedback :)

(+1)

thank you so much! it's working perfectly on my windows computer now (:

(+2)

hi this looks pretty cool but "Chill Buster" is a remix by NyxTheShield and not just a song from deltarune you should probably edit the description

other than that this looks sick :0

(3 edits) (+2)

Edit: All music files are now copyright-free.

Thanks for catching that! Edited. It’s amazing that you can tell the source just by listening to it XD

When creating this project, I just bulk-downloaded video game songs from YouTube without tracking the sources carefully, hence the error in credits.