
The included downloadable material is the source code of the completed rhythm game project. For the material specific to each lecture, please check out the Course Material GitHub link in the External Resources.
Render a static game screen with four vertical tracks for the up, down, left, and right keys, compute offsets and bar dimensions, and map drawables to create the track layout.
Render time-based scrolling music notes across tracks, using onset times, track offsets, and a three-second life to animate notes in a Ren'Py minigame.
Aubio not working for you? Try Librosa (next lecture)
If you run into issues installing Aubio, no worries - you are not stuck. The next lecture covers a better-maintained library that is a perfect replacement for Aubio.
Librosa is a package under active development and maintenance. They may change their API at any time.
For example, for learners in 2023, you might need to change the code as follows:
From:
x, sr = librosa.load(file_path)
onset_frames = librosa.onset.onset_detect(x, sr=sr, wait=1, pre_avg=1, post_avg=1, pre_max=1, post_max=1)
To:
y, sr = librosa.load(file_path)
onset_frames = librosa.onset.onset_detect(y=y, sr=sr, wait=1, pre_avg=1, post_avg=1, pre_max=1, post_max=1)
See https://librosa.org/doc/latest/generated/librosa.onset.onset_detect.html#librosa.onset.onset_detect
The line of code to read in the file has been updated for Ren'Py 8 so it will be different from what's in the video.
Instead of:
with open(beatmap_path_full, 'rt') as f:
text = f.read()
We will use the open_file function provided by Ren'Py like this:
with renpy.open_file(beatmap_path, "utf-8") as f:
text = f.read()
Detect player interaction events in a rhythm game by implementing event detection with pygame, mapping keyboard keys to tracks, and tracking hits and misses with a 0.3-second hit threshold.
Brainstorms pausing the minigame and implementing finer-grained scoring, distinguishing good and great hits with multiple thresholds, adjusting scores and time base when resuming after a pause.
Are you interested in game development and want to create engaging 2D minigames? Are you a Ren'Py developer looking to implement minigames in your projects? This is the course for you.
This course, Ren'Py Minigames 101, covers all the fundamentals you need to build your own minigame in Ren'Py.
We will develop a Rhythm Game from scratch and in this process, you will learn all the necessary Ren'Py and Python skills for working with Ren'Py's Creator-Defined Displayables.
In each lecture, we will make incremental changes to our code, and, at the end of every lecture, we will have a runnable Ren'Py project that shows tangible progress towards the final completed project.
Some topics that we will cover:
Ren'Py Screens
Ren'Py Creator-Defined Displayables
Rendering the game view
Implementing player controls with PyGame
Timing the music notes to any song with Python packages like Aubio and Librosa
Enhancing player experience with a Heads-Up Display (HUD) and other visual cues
Designing bonus features for the Rhythm Game
Some experience with Ren'Py, Python, and programming is strongly recommended. This course assumes Python knowledge including data structures (list, dictionaries), functions, and classes (Object-Oriented Programming).
If you need to brush up on your Python skills, check out my tailored Python for Ren'Py course on Udemy.
By the end of this course, you will:
Have implemented a rhythm game from scratch
Be able to build bonus features for the rhythm game if you wish
Have the skills to build your own minigame in Ren'Py and Python
Join me in this course to level up your programming and game development skills and develop a minigame for your next Ren'Py project!