Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Sep 10, 2018 · View creator page →

Creator of

Recent community posts

Thanks :D If you have any specific feature showcase suggestions, please feel free to let me know!

Hi Ashar. Thanks for reaching out. Please feel free to reach me at r3dhummingbird at, or, lynn#9327 on Discord.

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.

Looks cool! Thanks for sharing :)

Yep the source code can be compiled to run on Android.

Great to know. Thanks!

Hi everyone - Lynn here. I had great fun building this game :D Everything in this game is free and open-source, so feel free to use any part of the code in your project.

You can find the source code here on GitHub.

I’ll be posting more open-source Ren’Py code on my personal GitHub.


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.

I know I can count on Studio Madeleine Chai for quality visual novels :D

I loved the single-choice mechanism and the parallax background. Keep up the good work!

Thanks for reaching out and for sure! Feel free to use it in commercial projects. If you use it, please credit both this page and my GitHub repo.

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!

Hi, thanks for this wonderful pack!

I used and credited this asset in my recent blog post about getting started creating a VN game in Ren’Py.

Thanks for the amazing work!

(1 edit)

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 :)

If you are interested in creating a Visual Novel + Rhythm Game combined project, check out my source code for a rhythm game in Ren’Py. It’s entirely open-source (just a one-liner credit to me) and I’d be happy to provide support :)

(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 edit)

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)

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!

Thanks! Glad you like it :D

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 :)

Glad you like it and hope you find it helpful!

Glad you like it and hope you find it helpful!

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

(1 edit)

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, 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.

(3 edits)

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.

Thanks for making these available! I used Ludum Dare 38 Track Nine for my first Unity 2D game, Clicky Galaxy. I hope I've credited the assets appropriately and please do let me know otherwise :)

Thanks for the support as always :D 

Just a quick note that these features are only in the latest version of the engine and the new engine only supports Ren'Py SDK >= 7.4 . Please feel free to upgrade if you are comfortable with upgrading the SDK. I wasn't able to provide backward compatibility due to build complications.

Hi @pulpeirodasilva. Thanks for the note.

Can you confirm whether you have moved any of the files from the game I packaged? This seems like a missing file error and should not happen as long as the files are kept intact. 

Please try the source code on GitHub (Ren'Py 7.3.5) without removing or changing anything. If your SDK is Ren'Py 7.4, try the GitHub prerelease

If you have any more questions, please feel free to reach me on Discord. My handle is lynn#9327.

The latest update on GitHub makes GUI display text use DejaVuSans explicitly.


style game_status_text is text:
    font 'DejaVuSans.ttf'
    color COLOR_WHITE
    size TEXT_SIZE
style promotion_piece is button
style promotion_piece_text is text:
    font 'DejaVuSans.ttf'
    color '#aaaaaa' # gray
    hover_color '#555555' # darker gray
    selected_color COLOR_WHITE
style flip_board is button
style flip_board_text is text:
    font 'DejaVuSans.ttf'
    color '#aaaaaa' # gray
    hover_color COLOR_WHITE

Hi Ic4p,

Both the promotion piece buttons and the flip-board button are implemented using Unicode textbuttons. There is a flip-board button image in the asset folder but it isn't used. (See the code linked below.) If the Unicode characters aren't showing up, you would want to replace the textbuttons with image buttons and use image assets. If you have any more questions, please feel free to reach me on Discord. My handle is lynn#9327.

Hi mif4n. I'm happy to announce that the newest release now allows for difficulty level selection. Quote my devlog:

Easy: depth 2, < 1900 ELO. 

Medium: depth 6, 1966 ELO. 

Hard: depth 12, 2364 ELO. 

See Stockfish depth to ELO conversion

Hi @Ic4p, I'm happy to announce that this feature has been implemented and released for download.

Hi @Ic4p, thanks for the comment! Having a list of the 5 most recently made moves show up on one side of the board is easy to implement. I'll make a note of this and publish a new release when it's done.

Feel free to let me know if you run into any issue integrating this into your project :)

Game Link:


This is a chess GUI built with the Ren'Py Visual Novel Engine, python-chess, and Stockfish (for chess AI). You can use it as a standalone playable or integrate it as a minigame into a Ren'Py visual novel project. Read the guide for integration in my GitHub repo.

The source code is available both inside the game folder and on my GitHub. I wrote about how I developed this project in a blog post on freeCodeCamp. This chess engine will be used in a Visual Novel Game in development, The Wind at Dawn.


The game supports Player vs. Player and Player vs. Computer. In PvC, player can choose to play as either Black or White.

Click on a piece and all of its available moves will be highlighted in blue. Click on any of the legal destination squares to make a move. Press Flip board view to flip the view, with White on the bottom by default.

Gameplay Example: Fool's Mate

Flip Board View

Promotion UI


Player vs. Computer (Stockfish)

Threefold Repetition: UI for Claiming a Draw

(Also shows a similar UI choice screen if the fifty-move rule is in effect)

(3 edits)

Hi @mif4n. Thanks for the comment!

I will consider adding that as a feature if more people express interest :D

For now, you can programmatically set the difficulty in script.rpy as follows. A shorter movetime (in milliseconds) and a smaller depth will reduce the strength of the chess AI. Read more in my GitHub README and feel free to reach out with any more questions :)

$ movetime = 2000        
$ depth = 10