>[!DANGER] > Slop since v8. Ren'Py is an [[MIT License]] licensed visual novel game engine implemented in [[Python]]. - [Website](https://www.renpy.org/) - [Source](https://github.com/renpy/renpy) > I use language models to develop Ren'Py, and have since Github copilot came out in beta in 2021. \- `renpytom` primary developer[^1] # Notability Earlier versions were used for games like [[Slay the Princess]] as well as thousands others. I was mostly interested in it from an [[Interactive Fiction Language]] standpoint. # Philosophy Built on top of Python, everything is actually embedded in a Python file with a DSL layer. As a result, text is not the primary environment, *code* is. This differs philosophically from [[Making Ink]] where the focus is on the writing **first**, with code secondary. ## Slop Developer directly states that they have used [[Github Copilot]] since 2021[^1] and will continue to do so. They probably stated this publicly because they have started using it more heavily and obviously.[^2] Developer claims that "it is not vibe coded" yet it is pretty clear that it is heading that way. And even if it wasn't, the technology is actively harmful. # Features - [Flags](https://www.renpy.org/doc/html/quickstart.html#supporting-flags-using-the-default-python-and-if-statements) - [Tags](https://www.renpy.org/doc/html/text.html) for text formatting and control flow ## Tags Tags are basically just short Python functions used for branching and markup. - `a` - link - label `jump` - label `call` and `call_in_new_context` - screen `show` - display `showmenu` for game menu - `alpha` - text opacity - `alt` - alt text for images (intended for web browsers) - `art` - alternate japanese ruby text - `b` - bold - `color` - color of text - `cps` - characters per second - `font` - font select - `i` - italics - `image` - images (intended for emoji and small icons on a line of text) - `k` - text kerning/spacing - `noalt` - disable text to speech for this section (use next to `alt` to provide different outputs depending on whether the user is doing text to speech or not) - `rt` - japanese ruby text (superscript text over kanji) - `s` - strikethrough - `size` - text size - `space` - horizontal space between words (like htab) - `u` - underline - `vspace` - vertical space between lines (like `<br>`) - `#` - ignore string for display purposes, only use for translation Additional text tags: - `done` - hide remaining text, used with other tags to avoid text jumping around (seems like a workaround) - `fast` - display text instantly, even in slow mode - `nw` - no-wait dismisses a line of text as soon as it finishes displaying - `p` - terminates the current paragraph, pause and wait for user input or timeout - `w` - wait, pause and wait for user input or timeout (==I'm not clear on how that's different from `p`==) - `clear` - ==some kind of pagination thing that I don't understand== Example of how `nw`, `done`, and `fast` combine with an action like `show` to dramatically time events with text. ``` g "Looks like they're{nw}{done} playing with their trebuchet again." show trebuchet g "Looks like they're{fast} playing with their trebuchet again." ``` # References [^1]: https://bsky.app/profile/renpytom.bsky.social/post/3mnuxkqt5ir2b [^2]: https://github.com/renpy/renpy/pull/6939