| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| UnityGameTranslator-BepInEx5-v0.9.64.zip | 2026-06-03 | 3.3 MB | |
| UnityGameTranslator-BepInEx6-IL2CPP-v0.9.64.zip | 2026-06-03 | 3.3 MB | |
| UnityGameTranslator-BepInEx6-Mono-v0.9.64.zip | 2026-06-03 | 3.3 MB | |
| UnityGameTranslator-MelonLoader-IL2CPP-v0.9.64.zip | 2026-06-03 | 3.3 MB | |
| UnityGameTranslator-MelonLoader-Mono-v0.9.64.zip | 2026-06-03 | 3.3 MB | |
| README.md | 2026-06-03 | 3.1 kB | |
| v0.9.64 source code.tar.gz | 2026-06-03 | 417.9 kB | |
| v0.9.64 source code.zip | 2026-06-03 | 467.4 kB | |
| Totals: 8 Items | 17.3 MB | 0 | |
Fixes
- Custom CJK / Devanagari fonts now render the correct glyphs (a y-flip inversion in the modern glyph path was previously sampling mirrored UV positions, producing the wrong characters).
- Custom font no longer becomes invalid after a game restart, and modifying it after restart no longer crashes (atlas texture, material and clone are now flagged
DontDestroyOnLoad). - Custom fonts initialised before the splash scene no longer produce a broken bare ScriptableObject — the loader now defers and retries automatically once a game TMP_FontAsset becomes cloneable.
- Font dropdown no longer shows "(incompatible)" on TTF fonts whose first PNG write failed; the in-memory texture is reused on retry instead of pointing at a phantom file path.
Performance & memory
- Atlas texture is now
Alpha8instead ofRGBA32: 4× less VRAM per atlas and 4× less RAM during creation. LoadRawTextureDataon a singlebyte[]replacesSetPixels32on aColor32[], removing a ~1 GB Mono LOH allocation per 16384² atlas (transparent fallback toSetPixels32if the IL2CPP runtime rejects the raw path).Apply(false, true)after every atlas load drops the CPU mirror;GC.Collect+Resources.UnloadUnusedAssetsafter each font load releases the rasterizer's transient buffers immediately.- Disk cache per CJK font dropped from ~1 GB raw RGBA dump to ~10–30 MB PNG-compressed
Alpha8atlas. Legacy.cache.*files are auto-deleted on startup. - AtlasPacker now uses
SystemInfo.maxTextureSizeand supports multi-atlas spill (dormant for current targets but wired in).
Unity 6 compatibility
- New pure-C# PNG encoder replaces
Texture2D.EncodeToPNGon the rasterizer path. Required because Unity 6 + Il2CppInterop throwsInstances of abstract classes cannot be createdinBlittableArrayWrapper.Unmarshal— the marshalledbyte[]return wrapper can't be instantiated on that runtime. - PNG output uses ColorType 4 (grayscale + alpha) so Unity's
LoadImageroutes the SDF byte into the texture's alpha channel, avoiding the "white squares" artefact that ColorType 0 PNGs produced. - Streaming row-by-row encode keeps peak transient RAM under 50 MB during the encode itself.
Diagnostics & privacy
- Always-on environment snapshot at startup logs Unity / OS / GPU / RAM /
maxTextureSize/ Alpha8 support / culture in a single block. - Logs now strip the Windows username from paths, hide custom AI / API hosts (stock hosts kept in clear), and mask the API username — making bug-report logs safe to share publicly.
EncodeToPNGandWriteAllBytesfailures now surface the inner exception, drive free space and texture state.
Downloads
Pick the zip matching your mod loader:
| File | Mod loader |
|---|---|
UnityGameTranslator-BepInEx5-v0.9.64.zip |
BepInEx 5 (Mono) |
UnityGameTranslator-BepInEx6-Mono-v0.9.64.zip |
BepInEx 6 (Mono) |
UnityGameTranslator-BepInEx6-IL2CPP-v0.9.64.zip |
BepInEx 6 (IL2CPP) |
UnityGameTranslator-MelonLoader-Mono-v0.9.64.zip |
MelonLoader (Mono) |
UnityGameTranslator-MelonLoader-IL2CPP-v0.9.64.zip |
MelonLoader (IL2CPP) |