💦 CREATE AND FUCK YOUR OWN AI CUMSLUT 🔥 TRY NOW ♥
Create AI Cumsluts 💦
September 22, 2026

Ren'Py Images Can Finally Be Translated — Plus a Rebuilt Tools Hub and Gallery Unlocker

The headline feature is a complete Ren'Py image-translation workspace. It is joined by a clearer Tools area, a reversible Gallery Unlocker, several GUI improvements, and a long list of fixes across Babelith, Unity, Godot, RPG Maker and the regular translation engines.

---

## Ren'Py image translation is now a real workflow

Text embedded in title cards, menus, signs and chapter screens used to be one of the hardest parts of translating a Ren'Py game. The new workspace brings that work into Ultra Ren'Py Translator:

- Find static PNG, JPG and WebP assets from the game.

- Browse them in a visual thumbnail gallery instead of a filename dropdown.

- Filter by filename or folder and move through every result in pages of 24.

- Run OCR, correct what it detected, translate the text and preview the result.

- Save the localized image under `game/tl/<language>/` with the same relative path.

- Keep the original untouched and create a backup when replacing an earlier translated image.

Packed images must first be extracted from the game's RPA archives. The image tab now explains this before the search begins and points to the correct tool. RPA extraction also gives immediate progress and a visible final result, so users no longer have to guess whether the button worked or search the Console log.

Finding the few useful images inside a huge game

One test game contained thousands of images, while only a small fraction actually included text. Opening every thumbnail by hand was not a reasonable solution, so the gallery can now analyze the whole library with local OCR and classify files as:

- text detected;

- uncertain text;

- no text detected;

- pending; or

- failed.

Quick analysis is the default first pass. Thorough analysis adds contrast variants, transparency backgrounds and overlapping crops for smaller or decorative lettering. Progress is saved outside the game, survives cancellation, and is reused when the app is opened again. Identical files are read once, and switching between quick and thorough modes preserves every compatible result.

The scanner now processes up to six images concurrently. In the measured test library, throughput increased from *109 to 256 images per minute*. That is a measured example rather than a promise for every PC: image dimensions, storage speed, OCR language and processor all affect the result. The speed counter and ETA now use real wall-clock time as well; an earlier batching error made the estimate about six times too pessimistic.

OCR will never recognize every hand-drawn logo. The app keeps uncertain results visible for review, stops a batch after repeated engine failures instead of silently calling them “no text,” and lets the user draw a region manually at any time.

Editing directly on the image

Text regions no longer depend on typing X and Y coordinates. Draw a box over the text with the mouse, click it to select it, drag it to move it, and resize it from its corners. Coordinates remain available for fine adjustments.

Each region keeps its detected text and editable translation. The user can call the normal translation provider for empty fields, then correct names, accents, punctuation and line breaks before generating anything. The final local renderer writes exactly the reviewed text.

Font selection is visual too. The app searches fonts bundled with the game and displays every usable one using the actual translated phrase, including its real accents and length. A font that is damaged or missing required glyphs is skipped without hiding the rest of the list.

Three ways to rebuild a translated image

*1. Local image generation — recommended*

The local editor separates background reconstruction from text rendering. A quantized LaMa ONNX model removes the original lettering and reconstructs only the masked background. Pillow/FreeType then draws the reviewed translation with a real font. This avoids the spelling errors that image-generation models can introduce and preserves exact accents, ñ, punctuation and complete words.

The editor estimates font shape, size and slant, plus text color, gradient, outline, shadow and glow. Flat backgrounds use a faster exact cleanup. Textured backgrounds use the local model, and pixels outside the mask are restored from the original after reconstruction. Changing the phrase, font or effects reuses the cleaned background rather than running the model again.

The verified model is approximately *92.6 MB and runs on the CPU, so this reconstruction path does not consume GPU VRAM. Once its session is loaded, the integrated samples completed in roughly 3.3–3.6 seconds*. The packaged build also excludes optional PyTorch tooling, reducing the test build by roughly 305 MB while keeping ONNX inference and the Windows runtime it needs.

This hybrid design followed direct local testing. Within the 8 GB VRAM target, Klein produced 0/11 samples with completely correct text, AnyText2 produced 0/12, and Qwen-Image-Edit produced 0/2. Those models could create attractive pixels, but they were not reliable enough to spell an exact translation. Reconstructing the background and drawing real text proved much safer.

*2. Manual preview*

For a uniform background, the manual renderer is still useful and fast. It can cover the source lettering with a solid or border-sampled color and lets the user control font, size and colors directly. It does not try to reconstruct complex artwork.

*3. Optional AI editing through OpenRouter*

For decorative lettering, users can send only the selected regions to a compatible image model through OpenRouter. This path attempts to reproduce typography and visual effects, but it requires an API key and provider credit, and every letter must be reviewed. Overlapping or transparent AI regions remain restricted. The image outside the selected regions is preserved before encoding.

The bottom of the Ren'Py Image Translation tab now includes a detailed eight-step tutorial in English and Spanish. It covers RPA preparation, OCR choices, scanning, region editing, all three reconstruction paths, saving, testing in the game and common troubleshooting.

---

Tools has been rebuilt around three clear jobs

The old Tools page had unrelated controls in one long screen. It is now divided into three independent tabs:

1. *Live OCR Translator*

2. *Reverse Engineering & Modding Utilities*

3. *Ren'Py Image Translation*

Each tab scrolls independently, and the selected tab remains active during the session. The RPA extractor now changes state immediately, blocks duplicate clicks, reports partial success, missing archives and errors in a visible dialog, and rejects archive paths that try to escape the extraction folder. Valid files remain available if only one part of an archive is damaged.

This is part of a broader GUI cleanup. The Godot page now presents standard translation and Babelith together with a clearer explanation of when to use each. Optional tools sit below the main workflow, button widths are more consistent, and secondary or destructive actions no longer compete with the main Translate button. The Updates roadmap is compact and expandable, with current work shown first.

The image gallery, game-font selector, OCR progress, RPA extraction and gallery actions now all provide visible feedback. Routine operations should no longer look frozen simply because their only status was hidden in a log.

---

## Gallery Unlocker — Alpha, now reversible

The Ren'Py Gallery Unlocker now has a dedicated Home card with clear *Unlock and Restore and remove* actions, an alpha warning and visible completion feedback.

The unlocker uses Ren'Py's own seen-label and seen-image records, including the hashed records used by newer engine versions. The current development build also understands simple positive `persistent.field` conditions and safe `and` combinations used by standard Gallery objects. It contains validated handlers for the custom data layouts found in Amnesia Remaster and MBDK while preserving their nested dictionaries, sets and local proof data.

Before changing gallery data, it creates a backup. Restore and remove installs a one-time restoration script for the next game launch, restores only the fields changed by the tool, and removes itself afterward. Reinstalling does not replace the first backup. Unknown schemas, unsafe expressions, missing labels and invalid proof data are skipped instead of guessed.

The expanded logic has been tested against six real games: TrueHusband, Ravenous Arc 2, m.s.c., Family Trouble, Amnesia Remaster and MBDK.

It remains an alpha feature. Compatibility is not universal. Restoring a field can also undo progress earned in that same field after installation, and the new restoration process cannot reverse marks created by an older version of the unlocker. Back up saves before using it and launch the game once after either action so Ren'Py can apply the script.

---

Translation engines and reliability

Several less visible changes address failures that could damage a translation or make the program report success when nothing useful happened:

- *Google error pages are rejected globally.* Detection covers real localized error pages in 27 languages, prevents them from entering the cache and protects the normal, Godot and Babelith paths.

- *Existing contaminated Ren'Py translations can be repaired.* The repair tool restores only lines containing an injected error page, creates a backup and writes atomically.

- *Bing has a web fallback.* HTTP 404/410 responses and incomplete Edge/MET batches can move to the Bing website with lower concurrency while preserving completed work and the correct cache category.

- *Only a real HTTP 429 starts a rate-limit cooldown.* Failed preflight checks are no longer mislabeled as an IP ban, and the app will not announce success if both the main path and fallback translated nothing.

- *Ren'Py 8.5 compiled scripts are supported* through unrpyc 2.0.3. Decompilation uses a temporary destination so an author's existing `.rpy` file is not overwritten.

- *Repeated Ren'Py translations no longer accumulate visible backslashes* around escaped quotes.

- *RPG Maker protects real asset names* by checking files in `img/`, `audio/` and `movies/`, including filenames that contain spaces.

- *Interrupted BepInEx downloads can resume* and the completed file is checked against its expected size.

---

Babelith and engine fixes

Unity

Unity's full scan was heavily optimized. Babelith skips non-text data, source code and text already written in the target language. Deep scans can pause inside large nested objects, and a previous permanent stall near 12% was removed. A zero-allocation fast path, subsystem timing and frame budgets address a measured regression where one game fell from about 120 FPS to 22 FPS during scanning. When the queue intentionally pauses at its limit, the HUD now explains what it is waiting for.

UI coverage now includes IMGUI menus and UI Toolkit in Mono and IL2CPP games. Babelith also skips `NativeArray` and related native-memory containers: accessing one after Unity had released it could terminate the process without a managed exception, and those containers cannot contain translatable strings anyway.

An *experimental Unity decensor* is also present for Mono and IL2CPP. It is disabled by default, can be toggled without reinstalling or retranslating, and survives later Babelith reinstalls. It can hide separately drawn mosaic objects, masks and materials. It cannot recover detail when censorship is permanently painted into a 2D image.

RPG Maker

Dynamic speaker tags are normalized for cache lookup. In the measured game, pretranslated message hits rose from *79.6% to 98.5%*, recovering 3,802 translations that had already been paid for.

Very large pages merged by YEP_MessageCore can now be rebuilt from cached chunks. In a measured 14,437-character page, cache reuse increased from 16/197 lines to 194/197. Third-party choice windows repaint when a delayed translation arrives, short translated CJK labels respect the space needed by their values, and Japanese fonts that advertise accented characters with empty outlines are detected so Spanish accents do not turn into blank spaces.

### Godot and Ren'Py

Godot no longer translates text typed into LineEdit or TextEdit fields. Stable player-entered names are also protected when displayed later, including recovery from older poisoned cache entries.

Ren'Py Babelith's Shift+B panel shortcut no longer depends on a keymap entry that a game can replace during startup. Holding Ctrl can skip unseen dialogue as well.

---

Smaller changes included in this development cycle

- Damaged thumbnails are isolated instead of blocking the rest of the image gallery.

- Damaged game fonts are skipped individually instead of hiding the remaining font previews.

- OCR progress, compatible results and deduplicated images are preserved across cancellation and analysis-mode changes.

- Custom Ren'Py language-folder names are remembered correctly.

- The local model download checks both file size and SHA-256 before loading it.

- RPA extraction prevents path traversal, preserves valid partial output and reports the destination folder.

- “Create local preview” was renamed to *“Generate local image”* so it is not confused with the separate manual preview.

- A Flet layout regression that covered the editor with a gray rectangle was fixed and now has a guard test.

- The release workflow refuses to publish a version that is missing from the in-app update log.

- The full in-app history was backfilled so users can see what changed between internal builds.

That is the complete user-facing development set since public v0.99.17: *45 recorded internal versions from v0.99.18 through v0.99.62, plus the v0.99.63 tutorial and the current Gallery Unlocker, RPG Maker and Unity work described above.*

---

Thank you for supporting the project and for continuing to send the unusual games and edge cases that make these tools better. 🧡

Comments (3)

A
AVM · October 6, 2026

Hi, I have a question. I want to edit the translation and I'm following the steps to export the .jason file, edit it, and then import it into the game, but the changes I make aren't reflected in the game itself. They only appear in the renpy_dictionary_global file in the text editor (TL), not in the renpy_dictionary_dialogues file. What can I do to make the changes take effect in the game? Sorry if this isn't clear; I used a translator.

D
D-SHIHOO · October 1, 2026

Hi, I have a question: is there any way to get it working for games like this? (Datsubo Kan) https://vndb.org/v10261

U
Ultra Renpy Translator · October 3, 2026

yes.