Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Apr 01, 2016 · View creator page →

Creator of

Recent community posts

Oh wow, thank you so much for reading it aloud! Your voice is so lovely and you got most of the intended intonations right for each stanza. We didn't expect anyone to do any LPs of this game since it's rather short and a bit hard to swallow, but we're grateful nonetheless. 

(1 edit)

Thank you for catching that error with the build! We've updated the build to reflect the OS.

As for Ending 4, follow these steps:

For the Potion, choose the ingredient at the bottom of the screen for each of the 3 rounds. These should be: Ashgreens, Seablossom, Pure Light.

For the choices:

  1. Sage must be dealing with something difficult.
  2. "How are you feeling?"
  3. Distract them
  4. Distract them

Thank you for playing!

That's intentional and indeed the end of the game! Thank you for playing 🙏

I love you big big sea snake man

Hi there ashleecraft, thanks for asking! We can confirm that the name label/speaker names indeed does not count towards the word limit. In the future, please be sure to direct all your questions to the main FAQ thread so we can keep track of who we've already answered. Happy jamming!

(1 edit)

Making stuff is hard as is, and sometimes store page customization slip our minds right before launch! Don't skip out on it though: a good thumbnail and page design can get more people to interact with your content. Here's a few scattered tips to help you make your life easier and pages look nice~

Stop Re-Uploading Your Entire Projects To Fix One (1) Typo!

Get familiar with butler, itchio's command line tool for uploading projects more efficiently (it works a bit like pushing updates to GitHub)! Here's a nice Youtube tutorial by Skyride Studios about how to install butler for those who need some visual help.

If command line is a bit intimidating, you can try Sean S. LeBlanc's GUI Butler tool to see if it works for you.

butler's very handy if your internet upload speeds aren't where they should be or you're in a game jam with a tight time limit. To do this, make a page and set it to Draft or Restricted so it exists. Then, if you upload a base file of your game via butler, you can save a lot of time on the next upload as butler will recognize reused code and only push differences on the respective channel. As a bonus, players who download your game via the itch app will automatically get all the updates as they go live.

Customize Your Page Assets!

Are you uploading enough screenshots and filling in the information for the Metadata of your project? While you can release a project on without messing with that stuff, it definitely will help your project look more professional. See Easy Releasy by Jannik Boysen or Itch Game Page Image Guide & Templates by Star West for some tips on this.

Having trouble getting images down to 3MB each? Compress and optimize .webp, .png, and .jpg images using TinyPNG, and your .gif animations with ezgif.

If you're fancy and know your way around CSS, you can email support telling them how you plan to customize your page using CSS and they'll be able to activate it for you. Be sure to follow the best practices! There's even a handy live editor on CodePen to play around with it.

As far as thumbnails/cover images go, there's been multiple informal studies/tests that show that having a thumbnail that clearly shows a character's face and a legible logo gives a boost to CTR percentages. .gif thumbnails do even better with this. Ones that loop cleanly are pretty nice.

List Your Content Warnings!

Due to the nature of this bundle, some projects might have sensitive content that people might like to know before they go in so they can mentally prepare themselves. It can be a little hard to figure out what all to list though, so take a look at this article by Sisters in Crime. Remember: depiction is not always endorsement.


Got any other tips for everyone else? Feel free to leave them below!

Got a project that you're not sure fits the theme? Here's a thread where you can ask us if you're not sure about it. The last thing we want you to do is self-reject when you'd benefit from participating!

Examples of well-known games that we might not accept into the bundle:

  • Stardew Valley has mines that contain fantasy enemies, but the game as a whole isn't necessarily Horror or Halloween-y.
  • Any Final Fantasy game has lots of fantasy enemies, but the game as a whole isn't necessarily Horror or Halloween-y.
  • Rune Factory has fantasy enemies and magic, but the game as a whole isn't necessarily Horror or Halloween-y.
  • Dragon Age features an expansive magic system and world, but the mages and the Fade is not the main focus of the game.
  • Undertale is a game comprised of mostly monsters, but the main vibe isn't very spooky itself.

Alternatively, you can send an email to with the subject title [QHSB2023 Theme] [YOUR_PROJECT_NAME] to ask us if your game fits!

Hi there, unfortunately Meitu uses training data based on stolen artwork so this would not be allowed. Additionally, there may be slight shifts in the selfies even if unintentional. We encourage you to find Creative Commons assets for your sprites or find another way to photomanipulate a photo of yourself.

Hi there! This sounds like that'd be a CG, which would take up your BG and character/sprite slot. Was there a specific kind of context that might alter the way its depicted?

Hey, I know it's been a while but it was so nice to meet you at GDC! I finally found the time to play your bitsy game and wow, the way you tell the story through the different levels is really incredible and poignant. I'm looking forward to trying out the rest of your games soon as well!

Hi all, sorry for replying so late on this. After searching for answers in previous year's boards I wasn't able to find a conclusive answer but I vividly remember another developer asking about this, so it must be lost in Discord now.

My verdict: a custom transition will count as GUI.

Unless I'm misinterpreting the context, I believe this will count as your voice acting.

Thanks for your patience, we've discussed it and have come to this verdict.

For an "icon" in settings where a electronic device is used to communicate via text, the following is allowed as GUI for the visual portion:

  • Individual letters, words, and characters (such as in languages like Chinese or Japanese) in any language, stylized within engine
  • Standardized Emoji Sets

From your description, it sounds like this is a looping background, which is totally fair game! I'm interested to see how a rotating BG does versus a BG that scrolls past, so I'll be on the look out for your project 👀

RE: Music Room

You're right on the money with that one; the order that the songs are defined in do affect the way the actual Music Room plays in. We'll be fixing that in the next update!

Hi there, we went back into the extras.rpy file to check the behavior of the Music Room and the buttons are supposedly labeled correctly, according to the documentation.

            # Buttons that let us advance through tracks.
                textbutton "Previous" action mr.Previous() alt "Previous Song"
                textbutton "Next" action mr.Next() alt "Next Song"
            null height 20

However, upon testing the template, it seems that your observations are correct: clicking on Next will cause Ren'Py to play the song listed above (or loop back to the bottom of the list). We'll notify PyTom about this bug unless it is intended behavior.

We also apologize if the template is difficult to adjust for 1280p. Have you tried using the Change/Update GUI button on the Launcher?

Hi there, thanks for your patience over the holidays! Just to be sure, which version of the template are you using? We hope these answers are still needed.

1. Your persistent.typeface for notosans-regular is not the same between gui.rpy and screens.rpy, therefore Ren'Py isn't recognizing when you have the typeface set to Noto Sans. The easiest way to fix this is by changing the line in Font Size to if persistent.typeface == "/gui/font/notosans-regular.ttf"

2. To ensure that the Line Spacing setting takes effect, please add the following to your say screen styles in screens.rpy.

style say_dialogue:
    properties gui.text_properties("dialogue")
    xpos gui.dialogue_xpos
    xsize gui.dialogue_width
    ypos gui.dialogue_ypos
    adjust_spacing False
    line_spacing gui.preference("dialogue_spacing", 2)

3. For the custom screenshakes, please note that $ shake() only corresponds to the small_shake in the template. Other strengths are at the bottom of the below block.

init python:
    # Shakes the screen. To use, put
    # $ shake()
    # inline. For other uses, simply do a check inline for ATL statements,
    ## or a ConditionSwitch for shaky images.
    def shake():
        if persistent.screenshake:
            # renpy.with_statement(hpunch)
            ## Uncomment the one above if you prefer the default screenshake
            ### OPTIONAL: Show a different effect if screenshake is turned off.
### Custom Screen Shake Effect by BáiYù
        import math
        class Shaker(object):
            anchors = {
                'top' : 0.0,
                'center' : 0.5,
                'bottom' : 1.0,
                'left' : 0.0,
                'right' : 1.0,
            def __init__(self, start, child, dist):
                if start is None:
                    start = child.get_placement()
                self.start = [ self.anchors.get(i, i) for i in start ]  # central position
                self.dist = dist    # maximum distance, in pixels, from the starting point
                self.child = child
            def __call__(self, t, sizes):
                # Float to integer... turns floating point numbers to
                # integers.
                def fti(x, r):
                    if x is None:
                        x = 0
                    if isinstance(x, float):
                        return int(x * r)
                        return x
                xpos, ypos, xanchor, yanchor = [ fti(a, b) for a, b in zip(self.start, sizes) ]
                xpos = xpos - xanchor
                ypos = ypos - yanchor
                nx = xpos + (1.0-t) * self.dist * (renpy.random.random()*2-1)
                ny = ypos + (1.0-t) * self.dist * (renpy.random.random()*2-1)
                return (int(nx), int(ny), 0, 0)
        def _Shake(start, time, child=None, dist=100.0, **properties):
            move = Shaker(start, child, dist=dist)
            return renpy.display.layout.Motion(move,
        Shake = renpy.curry(_Shake)
    $ small_shake = Shake((0, 0, 0, 0), 1.0, dist=10)
    $ short_shake = Shake((0, 0, 0, 0), 1.5, dist=15)
    $ med_shake = Shake((0, 0, 0, 0), 2, dist=20)
    $ long_shake = Shake((0, 0, 0, 0), 2.5, dist=25)

To utilize the other strengths, please copy the base def shake(): definition and rename it appropriately. Additionally, the default persistent.screenshake variable is located at the top of accessibility.rpy.

Let us know if you have any other questions or encounter any other issues.

Thank you for reporting this error, we'll do our best to investigate the cause as soon as we can. Would you be able to tell us which version of Ren'Py you're using and what OS you're running on?

In the meantime, you can still open the source files in your code editor and use the code in there to assist you with your projects.

Unfortunately due to the lack of indents in the code you posted, we can't determine the issue. Can you post it again using the proper code block in the post formatting or send us your project files to If all else fails, you may want to transfer your game code to a fresh copy of the template.

(1 edit)

Thank you for the shout-out! Let's keep making great games together 💪

Thanks for your patience. You might have accidentally duplicated your game menu screen's use navigation line. Can you share the code for the game_menu and extras_menu?

Seems like both the navigation and extras_navigation were separated properly. Can you show me the game_menu screen and a screenshot of the issue?

Thanks for your patience. It looks like you may have accidentally combined your regular and Extras menu navigation. Would you be able to share the code you have for both of those screens? You can also press Shift+I while playtesting your game to see what screens are being shown there.

This was such a ridiculously fun little game, just loved the entire experience all the way through.

Josef succeeded. He lives in my head rent-free now.

(1 edit)

An assortment of resources that can be handy to other developers using the Ren'Py engine. Please note that I do not maintain pages created by other developers, so links may break in the future.

Last Updated: 08/23/2022


.ico and .icns converters for your .exe:

Fonts that are designed for dyslexic or low vision readers:

Other handy templates/codes for Ren'Py users (on

Other handy templates/codes for Ren'Py users (not

Vimislikart also creates a variety of video tutorials that focus on design and Ren'Py effects, which are incredibly useful (and entertaining to watch). Visit his Youtube channel here and be sure to support his work!


If you have any other resources to share, please feel free to drop them in this thread.

Really beautiful writing, almost like a guided meditation tailored to your favorite season! I picked Autumn first but all the other seasons were just as lovely. I'll have to come back to this game whenever I need to lay down and emulate the joys of the forest.

(5 edits)

Note: As of 08/08/2022, Ren'Py 8 does not have the ability to create versions of your game that can function in a player's web browser. You must use Ren'Py 7.5.1 to create Web distributions.

The following is a quick tutorial on how to make a HTML/Web version of your game that will work on both desktop and mobile browsers.

01a. Open your Launcher, then select Web (Beta) below iOS and above Generate Translations

01b. If this is your first time creating a Web Build, Ren'Py will download the necessary packages for it, then restart

02. On the left side of the menu, you will have 4 options and a checkbox for "Force Recompile" (it is recommended to turn this on)

03. To immediately create a web build to test, select the 2nd option titled "Build and Open in Browser"

04. A new tab in your web browser will open, and your game should load up. Use this to do some initial beta-testing

05. Go back to the base of your Ren'Py Launcher and select "base" from under the Open Directory header, then locate the "progressive_download.txt" file to edit it as so:

# RenPyWeb progressive download rules - first match applies
# '+' = progressive download, '-' = keep in (default)
# See for matching
# +/- type path
- image game/gui/**
- image game/**
- music game/audio/**
- voice game/voice/**

This will disable progressive download, which may cause your game initial pixelation for half-loaded assets or your game not to function on certain Mac browsers.

06. Go back to the Web Build menu of the Launcher and select "Build and Open in Browser" for another round of beta-testing

07. When you are satisfied with your Web Build, select "Open build directory" and locate the folder called "[YOUR_GAME]-[VERSION_NUMBER]-web"

08. Zip up the entire folder, then upload it your project page on itch

09.  Go to "Kind of project" and select "HTML - You have a ZIP or HTML file that will be played in the browser"

10a.  On the web zip, select the checkbox that says "This file will be played in the browser." If you offer downloadable versions of your game on the same page, no option needs to be selected for those files

11. Find Embed Options under your game files and adjust your settings. We recommend setting it to "Embed in page" and "Manually set size," with Viewport dimensions of 976px wide and 549px height for games that are 1080p/16:9 resolution (adjust if your project is a different resolution)

12. In Frame Options, select Mobile Friendly and leave Orientation to Default. You may optionally also select the "Fullscreen button" for desktop browser players

13. Save the page and test the game! Assuming no bugs, you should be done!


  • Make a backup copy of your project files first before adjusting them for web builds.
  • Video files are not currently supported.
  • You can replace the default Web presplash screen by placing a file named "web-presplash" in either .png, .jpg, or .webp at the base of your project folder (this is where icon files go as well for desktop versions)
  • Create a private test page for your web builds and set it restricted with password access, and hand that to people you know who use different browsers than you. While your itch feed will only show the latest time you've updated a page, it can be quite embarrassing for you to constantly update while troubleshooting...
  • If you know you have unused files (such as gui/nvl.png or such), you can delete those to reduce filesize.
  • If you have a highly customized GUI, be sure to CTRL+F for the "Mobile Variants" sections in gui.rpy and screens.rpy to comment out or adjust any styles that are under "touch", "small", or "medium" as these will refer to files in "gui/mobile/**". The files in there are based on the default Ren'Py GUI, so unless you create variants of the graphics there, it's often easier to not use them. When you confirm that your game functions without the files in the "gui/mobile/**" directory, you can delete them.
  • The only mobile style you may need to adjust is the quickmenu, in order to space them out more to accommodate for the size of human fingers.
  • To further reduce filesize, you can convert your image files to the .webp format, which Ren'Py should support natively. While there may be slight loss in quality depending on the style of your art assets, mobile devices at a smaller resolution should not be affected too much.
  • Always do a final beta-test on itch itself, as you may encounter an error that says you have too many files (over 1000). You should be able to avoid this error by zipping up the entire folder that comes out in your distribution folder.
  • Persistent variables do not save on web versions until the game has saved so if you have any persistent variables that are supposed to work even if the player doesn't save, you have to force the game to save or it won't function properly. To do this, disable quicksaves and add in the following code:
## When the true ending is read
$ persistent.true_ending = True
## Every time a persistent variable is changed
  • You may want to note on your page that web builds are still technically in beta and may not provide the most accurate play experience for your game, especially if it features a high amount of animation.

Ebbasuke's note: "If itch complains about the "over 1000 files", it would be wise to try and make a new zip of the web game files. During O2A2 I had that error, and without removing any files I made a new zip, tried uploading it again, and it worked. Itch claimed I had something like 1100-1200 files, so I'm not sure if it would work with a game that has way more than that."

If you encounter any issues, please feel free to leave a reply in this topic and I'll see if I can help troubleshoot it with you.

Special thanks to littlerat for the tips on viewport dimensions and persistent saves used in eggs for you, and Ebbasuke for general reminders from the Vampire†Hunter Devlog.

See also:

Ebbasuke's Devlog for Vampire†Hunter
The official GitHub page for renpyweb

Lovely game as always~

Hello Jammers! It's your main host, BáiYù of tofurocks, here with this year's Exit Survey!

I've sent a jam email this time around so it should be in your inboxes, but just in case it didn't make it through, I'm posting it here as well. Many of the questions are largely the same from last year's survey with some answer choices clarified for less ambiguous data. There are 14 questions in total, and if you were a participant, either solo or part of a team, or had intended to submit an entry but could not for various reasons, we'd appreciate it if you could take some time out of your day to respond.

Answer The O2A2 VN Jam 2022 Exit Survey here!

This survey will close on August 11, 2022, or the Thursday after next. Thank you in advance, and we hope to see you around the scene!

Clarification in GENERAL

  • You may have unlimited solid color backgrounds in menus and in-game generated by the engine, alongside your illustrated BG


  • It is within the rules to alter the pitch or speed of audio via code


  • You may have multiple typefaces


New section added:

If you offer both a web and downloadable version of your game, you may optimize effects (e.g. video backgrounds) for the web build as long as the downloadable version follows the rules. You may want to note differences between versions if applicable. Please follow this rule in good faith.

If you made a commercial or longer game using the template, go ahead and share a link and some screenshots here! Many players appreciate accessibility features becoming more and more normalized in games, so this thread might be a good place for them to start browsing for visual novels that are accessible.

I'm looking forward to seeing your visual novels!

(Did you make a jam game or something that's under 50K words? Here's the thread for those.)

If you made a jam game using the template, go ahead and share a link and some screenshots here! Many players appreciate accessibility features becoming more and more normalized in games, so this thread might be a good place for them to start browsing for visual novels that are accessible.

Smaller releases (noncommercial/under 50K words) can also go here! I'm excited to see all of your games.

Hi there Sunetraalex, forgive us for changing our minds on this ruling but we've determined that we'll allow slight asset variances between web and downloadable versions of games as long as the downloadable version follows the rules for the sake of optimization. We recognize that not all potential players may have the bandwidth or storage to download many games at a time, so offering a web version that is accessible to more players is beneficial.

If applicable, we recommend that you note if there are any differences between web and standalone versions of your game in your page.

We will update the FAQ soon with this new ruling.

Q: Can I use this template when I make commercial games?

A: Yes!

Q: Can I make custom GUI packs based off this template and sell them?

A: Yes!

This is placeholder text for the time being. Please check back soon for more answers and probably more explanations.

Hi Ian! The reason we listed RPGMaker as an example of an engine that most likely isn't suitable for this jam is because in order to make a functional map for players to explore in, you'd need multiple tiles (something for the floor, the walls, objects in the room, etc.). That would not be in the spirit of the jam, so engines similar to RPGMaker (such as RPG Paper Maker) wouldn't work well.

Panda3D looks like it'll be fine though. Good luck with the jam!