Універсальний редактор українізації для ігор Hidetaka Suehiro (SWERY) / White Owls · A unified Ukrainian-localization editor for Hidetaka Suehiro (SWERY) / White Owls games
🌐 littlebitua.github.io/SWERY-Localization-Tool — landing site / overview
🇬🇧 English · 🇺🇦 Українська
SWERY Localization Tool is an open-source desktop editor that bundles the entire translation workflow for five Hidetaka Suehiro (SWERY) / White Owls titles: Deadly Premonition (Director's Cut), Deadly Premonition 2: A Blessing in Disguise, The Good Life, Hotel Barcelona, and THE MISSING: J.J. Macfield and the Island of Memories. One app instead of five — from editing JSON dumps and binary MSG.* containers to packing the final patch, with built-in font, texture and per-string box-size editors.
Text workflow
- 🎮 Five games in one hub: Deadly Premonition (via DPMsgTool by MrIkso), Deadly Premonition 2 (UABEA format), The Good Life (custom binary
loc/Englishcontainer), Hotel Barcelona (Unity Addressables bundle), and THE MISSING (MSG.*payload with length-table + IMHeightInfo). Themed FBI-dossier home screen with per-game progress counters. - 🎯 THE MISSING — full cycle: parse/build
msg*en.datwith stable offset-table, length-table with int16-overflow protection, dedicatedIMHeightInfo(box-sizes) editor with Auto-fit algorithm (ratio × padding, idempotent against repeated apply), on-the-fly lint for placeholder / voice-key rows. - 💾 One-click packing: DP1 — cyrillic glyph substitution +
DPMsgTool.exe from-json; DP2 —import-to-assets.ps1via PowerShell 7 + UABEA. Output goes straight into the game directory. - 🧠 Translation Memory (TM) across both corpora — DP1↔DP2 cross-search with Jaccard fuzzy match. Bulk TM auto-fill (1:1) — auto-applies exact source matches (no substring guesswork).
- 📖 Shared glossary + terminology consistency check: where
srcappears,tgtmust be present. - 👤 Character name consistency (DP2): detects typo variants (
Йорк / Йорг), one-click exact-equality rename across all files. - 🔍 Global search across the corpus: regex, case sensitive, field filter (JP / EN / UA / speaker).
Ctrl+Shift+F. - ♻️ Cross-file Find & Replace (DP2): preview each change → confirm → batch-apply across all files with automatic
.bak.
Quality & navigation
- 🏷️ Statuses & bookmarks:
draft / review / approved+ 🔖. Stored in sidecar files — game JSON stays untouched. - 📐 Smart subtitle break ("Драбинка"): balances translation into symmetric lines — no word splits, no orphan prepositions. Per-entry button + cross-file batch.
- 🎨 Placeholder highlighting (
{NEXT_SEGMENT},<color=red>,\netc.) in Monaco + live diagnostics for missing/extra tags. - 🔤 DP1 glyph audit: flags characters outside the 74-glyph substitution map in the editor + corpus-wide audit — catches production bugs before packing.
- 📺 In-game preview: renders the active row in DP2 subtitle style — uses the real game font (
FOT-NewCinemaAStd-D) with italic[i]…[/i], placeholder chips and ▽ marker. - 📊 Corpus readiness overview: % completion, UA/EN word & char counts, top-15 files by volume.
Deadly Premonition
- 🎮 Text: parses
mes_all.jsonfrom DPMsgTool (~20,000 records), CRLF+2-space round-trip, FSL recalculated automatically. - 🔤 DP1 Fonts editor (FONTWIDE.DDS): pure-JS BC1 decoder/encoder, canvas preview, drag-selection, snap-to-grid, click-to-pick a cell, move with cut+paste, draw-letter modal with Cinema Calligraphy 31.5pt + X/Y offset sliders.
Ctrl+Zundo. Auto-downloads the official OTF from Dropbox on first run. GlyphMap proposal banner offsets char code by −2 automatically (extended ASCII only) to match the game's render offset. - 🗜️ DP1 Textures editor (XPC2): custom format reversed —
"XPC2"magic + zlib-stream DDS/PNG. Recursive scan, extract-all / pack-all with streamed progress,.bakon first pack, path-traversal guard.
Hotel Barcelona
- 🏨 Full cycle: extract → edit → repack for the Unity Addressables bundle (
_resources_assets_all_<hash>.bundle). Auto-resolves hash when patching the game (hash changes with each update). - 🛠️ Patch migration: when White Owls ship a new patch, the toolkit ports translations from the old hash to the new one automatically + an editor banner warns before saving if the bundle changed.
- 🛡️ Integrity check: verifies that
_Textcount in raw matchesitems.lengthbefore write — protects against silent byte-shift corruption when bundle structure changes between extract and save. - ✓ Right-click → translated: for template references like
[Continue]that render as ready text — completion % stays accurate. - 🖼️ Textures editor: extract 24 UI / poster / result textures from the same bundle (Texture2D by PathID inside the
CAB-…assets-file) to PNG, replace + in-place bundle patch with.textures.bakon first save. Inline-mode write (image data ← new bytes,m_StreamDatacleared) — single uncompressed Write, the same pattern as text / fonts import.
THE MISSING
- 📐 Per-string box-sizes editor: GUI for editing the
IMHeightInfoMonoBehaviour (W × H × 4 language slots × thousands of rows). Side-by-side preview + Auto-fit with a multiplier slider (×1.00 — ×1.50), min-padding in pixels, idempotent reference-based ratio (no runaway growth on repeated apply). - 🔐 int16-overflow guard: row length in the
MSG.*length-table is a signed int16 (max 32767 bytes). The toolkit catches overflows at build time and surfaces a toast with a "Jump →" action that lands the editor on the offending row — instead of the silentlen & 0xFFFFcorruption found in older tools. - 🎨 MsgEnum-based stable IDs: a global enum
msgBase × 10000 + i— IDs in combined.txt and logs no longer shift when strings grow or shrink. - 🪄 Assembly-CSharp.dll editor + one-click "Виправити діалоги": chat-bubble code in
TheMISSING.UI.Ballonis hard-coded to character-truncate text past a fixed width, and the customTextExGenerator(Japanese-typography layout) wraps UA words mid-character ("потре|бувала"). Three deterministic Mono.Cecil IL patches fix it:Ballon.CheckProperties+BallonController.CheckProperties→SizeControlType = UseTextInfo(bubble grows to fit text), andTextExGenerator.get_WordWrapTypegetter → alwaysDefault(wrap on whitespace). Single.dll.bak, revert button, status badge. The same panel also exposes a built-in 17-string whitelist (graphics quality presets / ON-OFF labels) for hard-coded ldstr editing via Mono.Cecil round-trip.
Cross-editor essentials
- 🧊 Glassmorphic update banner: macOS-like style —
backdrop-blurwith a highlighted-edge frame. Download speed + percent shown live. - 🟢 SaveStatusBadge in Header: a colour dot reflects file state (⚪ saved, 🟡 dirty, 🟢 autosaved, 🔴 error) with a tooltip + filename.
- 📏 Monaco font-size:
[-] [size] [+]in editor footer, synced across DP2 / HBR / MISSING / DP1. - 🔀 Diff EN↔UA modal: Monaco DiffEditor full-screen side-by-side — instantly catch extra dots, missing tags, whitespace drift.
- 📊 EditorFooter: status bar with
Shown / Total / Translated % / Position / Unsavedcounters across DP1/HBR/MISSING. - 🦺 Race-free saves: per-path write queue in Electron main —
saveFile+autosavenever race on.bakcreation. - 🚪 Path-traversal guard + settings allow-list: the renderer cannot write into system directories;
dp2:save-settingsaccepts only whitelisted keys.
Font workshop (DP2)
- 🔠 Font workshop: dedicated "Fonts" tab on the DP2 card — export 7 asset fonts (
FOT-NewRodinProN-DB,FOT-NewCezannePro-DB,FOT-NewCezannePro-M,FOT-NewCinemaAStd-D,FOT-Wentworth,FOT-UDKakugo_LargePro-R,FOT-MatisseProN-UB) fromresources.assetsandsharedassets0.assetsas TTF/OTF, replace with your own + repack into the matching.assetsfile with.bak. - 🔬 Live preview: as soon as exported, fonts are registered via FontFace API. After Replace — instant cache-bust so the new font shows up without a re-export from the game.
Texture workshop (DP2)
- 🖼️ Texture workshop: export PNG character portraits from
resources.assets(DXT5/BC3 → PNG), replace + in-place patch the.assets+.resSpair (offset table preserved). 22 textures shipped in the list (Francis, Simon, Clarkson family, Woods, Davis etc.). - 📦 Export all in one click: dumps all previews into
Documents\DP2-Localization-Tools\dp2-textures\.
The Good Life fonts
- 🔡 Bitmap-font editor: unpacks the
c0718fc478f6943dbundle (Unity Asset Bundle with Font + Texture2D), editsm_CharacterRects.Array, add/remove glyphs directly on the atlas. - ✏️ AddGlyph modal: pick a TTF that has the missing letters (Є є І і Ї ї Ґ ґ), enter a target list "Є, є, і, …" — the app locates a free atlas region, Y-flips the bitmap correctly, fills in
uv/vert/advanceand re-packs into the CAB bundle. - 🎯 In-game preview uses the real atlas and
vert.x/ymetrics — you see exactly what the engine renders. - 🗑️ Delete key on a selected glyph: removes the record and clears the bitmap region with a transparent rectangle so leftover pixels don't bleed.
- 🌐 External locale files:
userData/locales/{uk,en}.jsonare merged on top of the built-in dictionary, so translators can edit strings without rebuilding the app.
Workflow & safety
- 💼 Auto-save + crash recovery: unsaved edits flush to
.autosave.jsonevery 30s; on reload, the app offers to restore. - 📤
.txtround-trip for external translators (ID-based mapping, preserve-translated). - 🔧 Bulk operations: copy-original, trim, mark-approved — across selection.
- 🍞 Toast notifications in the bottom-right corner — status messages never break header layout.
- 🌐 UK / EN UI with instant switching.
- ⚙️ First-run wizard: auto-downloads UABEA Next and PowerShell 7.
- 🚀 Worker threads + JSON cache (LRU 300 files, mtime validation) — repeated cross-file ops are instant.
- Download the portable
.exefrom Releases. - Launch — the first-run wizard will set paths and download dependencies.
- On the home screen pick a game:
- Deadly Premonition → point to DPMsgTool's
eng.json. - Deadly Premonition 2 → open the folder with
sharedassets0.assetsJSON dumps.
- Deadly Premonition → point to DPMsgTool's
- Translate. Press Build .mes (DP1) or Save & build (DP2) — the file lands in the game directory.
| Action | Shortcut |
|---|---|
| Save + jump to next untranslated | Ctrl+Enter |
| Next untranslated | Ctrl+J |
| Move between rows | Alt+↑/↓ |
| Copy original | Ctrl+D |
| Save | Ctrl+S |
| Find & Replace in file | Ctrl+H |
| Global search | Ctrl+Shift+F |
| Glossary | Ctrl+G |
| TM panel (toggle) | Ctrl+Shift+T |
| Focus mode | Ctrl+\ |
| Bookmark | Ctrl+B |
| Status draft / review / approved | Alt+1 / Alt+2 / Alt+3 |
git clone https://github.com/LittleBitUA/SWERY-Localization-Tool.git
cd SWERY-Localization-Tool
npm install
npm run dev # Vite + Electron in dev mode
npm run build:exe # Portable .exe → release/Requires Node.js 18+ and Windows for the portable .exe artifact.
SWERY Localization Tool — настільний редактор з відкритим кодом для українізації п'яти ігор Hidetaka Suehiro (SWERY) / White Owls: Deadly Premonition (Director's Cut), Deadly Premonition 2: A Blessing in Disguise, The Good Life, Hotel Barcelona і THE MISSING: J.J. Macfield and the Island of Memories. Один інструмент замість п'яти — від редагування JSON-дампів і бінарних MSG.* контейнерів до запаковки готового патчу, з вбудованим редактором шрифтів, текстур і per-string box-sizes.
Робота з текстом
- 🎮 П'ять ігор в одному хабі: Deadly Premonition (DPMsgTool by MrIkso), Deadly Premonition 2 (UABEA-формат), The Good Life (власний бінарний
loc/English), Hotel Barcelona (Unity Addressables bundle) і THE MISSING (MSG.*payload з length-table). Тематичний головний екран у стилі FBI-дозьє з лічильниками прогресу для кожної гри. - 🎯 THE MISSING — повний цикл: парсинг/збірка
msg*en.datіз збереженням offset-table, length-table з захистом від int16-overflow, окремий редакторIMHeightInfo(box-sizes) із Auto-fit алгоритмом (ratio × padding, idempotent проти повторних apply), на льоту lint placeholder/voice-key рядків. - 💾 Запаковка одним кліком: для DP1 — підстановка кириличних гліфів і
DPMsgTool.exe from-json; для DP2 —import-to-assets.ps1через PowerShell 7 + UABEA. Готовий файл одразу у директорії гри. - 🧠 Пам'ять перекладів (TM) з обох корпусів — cross-search DP1↔DP2, Jaccard fuzzy. Bulk TM auto-fill (1:1) — авто-заповнення неперекладених рядків з exact-match source (без substring-замін).
- 📖 Спільний глосарій + перевірка термінологічної консистентності — всюди де
srcзустрічається,tgtмає бути присутній. - 👤 Перевірка консистентності імен героїв (DP2): шукає типос-варіанти (
Йорк / Йорг), one-click exact-equality перейменування по всіх файлах. - 🔍 Глобальний пошук по корпусу: regex, case-sensitive, фільтр по полю.
Ctrl+Shift+F. - ♻️ Cross-file Find & Replace (DP2): pre-flight з прев'ю кожної заміни → confirm → execute по всіх файлах із автоматичним
.bak.
Якість і навігація
- 🏷️ Статуси і закладки:
draft / review / approved+ 🔖. Sidecar-файли, JSON гри не чіпається. - 📐 Smart subtitle break ("Драбинка"): балансує переклад у симетричні рядки без розривів слів і сирітських прийменників — per-entry та cross-file batch для всього корпусу.
- 🎨 Підсвічування плейсхолдерів (
{NEXT_SEGMENT},<color=red>,\n) у Monaco + live-діагностика втрачених/зайвих тегів. - 🔤 DP1 glyph audit: позначає символи поза мапою підміни (74 гліфи) у редакторі + загальний аудит — production-баги до запаковки.
- 📺 In-game preview: рендерить активний рядок у стилі реальних субтитрів DP2 — використовується справжній шрифт гри (
FOT-NewCinemaAStd-D), з курсивом[i]…[/i], плейсхолдер-чіпами і ▽-маркером. - 📊 Огляд готовності корпусу: підсумок % завершеності, UA/EN слова й символи, топ-15 файлів за обсягом.
Deadly Premonition
- 🎮 Текст: парсинг
mes_all.jsonвід DPMsgTool (20 000+ записів), CRLF+2-space round-trip, FSL перерахунок. - 🔤 DP1 Fonts editor (FONTWIDE.DDS): pure-JS BC1 decoder/encoder, canvas-preview, drag-selection прямокутника, snap-to-grid, click-to-pick клітинки, move (cut+paste), draw-letter модалка з Cinema Calligraphy 31.5pt + X/Y offset слайдерами.
Ctrl+Zundo. Auto-download офіційного OTF з Dropbox при першому open. GlyphMap proposal banner з −2 char-code offset для extended ASCII. - 🗜️ DP1 Textures editor (XPC2): custom-формат розкритий — magic
"XPC2"+ zlib-stream DDS/PNG. Recursive scan, extract all / pack all з streamed progress,.bakна перший pack, path-traversal guard.
Hotel Barcelona
- 🏨 Повний цикл: extract → edit → repack для Unity Addressables-бандла (
_resources_assets_all_<hash>.bundle). Auto-resolve хешу при patching гри (хеш міняється з кожним апдейтом). - 🛠️ Patch migration: коли White Owls випустили новий патч, програма автоматично переносить переклади зі старого хешу на новий + банер у редакторі попереджує перед збереженням якщо bundle оновлено.
- 🛡️ Integrity check: перевірка що кількість
_Textу raw збігається з items.length перед записом — захист від silent byte-shift корупції коли структура змінилася між extract і save. - ✓ Right-click → перекладено: для template references типу
[Continue]що рендеряться як готовий текст — % завершення рахується точніше. - 🖼️ Редактор текстур: extract 24 UI / poster / result текстур з того ж бандла (Texture2D за PathID всередині
CAB-…assets-файлу) у PNG, заміна + in-place патч bundle з.textures.bakна першому збереженні. Inline-mode запис (image data ← нові байти,m_StreamDataочищено) — single uncompressed Write, той самий патерн що text / fonts import.
THE MISSING
- 📐 Per-string box-sizes editor: GUI для редагування
IMHeightInfoMonoBehaviour (W × H × 4 language slots × тисячі рядків). Side-by-side preview + Auto-fit з multiplier-слайдером (×1.00 — ×1.50), мін. запас у пікселях, idempotent reference-based ratio (не наростає при повторному apply). - 🔐 int16-overflow guard: довжина рядка у
MSG.*length-table — signed int16 (max 32767 байтів). Програма ловить overflow при build і кидає toast з кнопкою "Перейти →" що стрибає на проблемний рядок — замість silentlen & 0xFFFFкорупції. - 🎨 MsgEnum-based стабільні ID: глобальний enum
msgBase × 10000 + i— у combined.txt і у logs ID не зсувається при росту/скороченні рядків. - 🪄 Редактор Assembly-CSharp.dll + one-click «Виправити діалоги»: chat-bubble (
TheMISSING.UI.Ballon) обрізає текст по character-count, а кастомнийTextExGenerator(японська типографія) розриває UA-слова посеред («потре|бувала», «психологічн|ий»). Три детерміновані Mono.Cecil IL-патчі знімають це:Ballon.CheckProperties+BallonController.CheckProperties→SizeControlType = UseTextInfo(пухир адаптує ширину під текст), іTextExGenerator.get_WordWrapTypegetter → завждиDefault(wrap на пробілах)..dll.bakстворюється один раз, кнопка ↺ Відкотити, бейдж стану. У тій самій панелі — built-in whitelist із 17 hardcoded user-facing рядків (графічні пресети / ON-OFF тригери) для round-trip правки через Mono.Cecil.
Спільне для всіх редакторів
- 🧊 Glassmorphic update banner: новий стиль (macOS-like) —
backdrop-blur+ матове скло з рамкою-highlight. Прогрес-бар скачування + швидкість. - 🟢 SaveStatusBadge у Header: кольорова крапка показує стан файла (⚪ збережено, 🟡 dirty, 🟢 autosaved, 🔴 помилка) з tooltip-ом + ім'я файла.
- 📏 Monaco font-size:
[-] [size] [+]у footer редактора, синхронізовано між DP2/HBR/MISSING/DP1. - 🔀 Diff EN↔UA modal: Monaco DiffEditor у side-by-side fullscreen — миттєво видно зайві крапки, втрачені теги, різницю whitespace.
- 📊 EditorFooter: статус-бар з лічильниками
Видно / Усього / Перекладено % / Позиція / Незбереженодля DP1/HBR/MISSING. - 🦺 Race-free saves: per-path write-queue у Electron main —
saveFile+autosaveне race-аться на створенні.bak. - 🚪 Path-traversal guard + settings allow-list: renderer не може писати у системні директорії;
dp2:save-settingsприймає тільки whitelisted-ключі.
Робота зі шрифтами (DP2)
- 🔠 Font workshop: окрема вкладка "Шрифти" на DP2-картці — експорт 7 ассетних шрифтів (
FOT-NewRodinProN-DB,FOT-NewCezannePro-DB,FOT-NewCezannePro-M,FOT-NewCinemaAStd-D,FOT-Wentworth,FOT-UDKakugo_LargePro-R,FOT-MatisseProN-UB) зresources.assetsіsharedassets0.assetsяк TTF/OTF, заміна на свій + repack у відповідний.assetsфайл із.bak. - 🔬 Live preview: щойно експортовано — шрифт реєструється через FontFace API. Після заміни — миттєвий cache-bust і preview оновлюється без re-export з гри.
Робота з текстурами (DP2)
- 🖼️ Texture workshop: експорт PNG обличчя персонажів з
resources.assets(DXT5/BC3 → PNG), заміна на свій + in-place patching.assets+.resS(зі збереженням offset table). 22 текстури в готовому списку (Френсіс, Сімон, родини Кларксонів, Вудс, Девіс і т.д.). - 📦 Export all одним кліком: масово витягуємо всі прев'ю у
Documents\DP2-Localization-Tools\dp2-textures\.
Шрифти The Good Life
- 🔡 Bitmap-font editor: розпаковка bundle-файлу
c0718fc478f6943d(Unity Asset Bundle із Font + Texture2D), правкаm_CharacterRects.Array, додавання/видалення гліфів просто на атласі. - ✏️ AddGlyph модалка: вибираєш TTF з відсутніми літерами (Є є І і Ї ї Ґ ґ), задаєш ціль "Є, є, і, ..." — програма знаходить вільне місце на атласі, малює гліф з правильним Y-flip-ом, оновлює
uv/vert/advanceі запаковує назад у CAB-bundle. - 🎯 In-game preview з реального атласу та
vert.x/y-метрик — бачиш точно те, що покаже рушій. - 🗑️ Delete-клавіша на вибраному гліфі: видаляє запис + затирає bitmap-ділянку прозорим прямокутником, щоб не "залипало" на атласі.
- 🌐 Зовнішні файли локалізації:
userData/locales/{uk,en}.jsonмерджаться поверх вбудованих — інші перекладачі можуть правити рядки без перебудови програми.
Workflow і безпека
- 💼 Auto-save + crash recovery: незбережені правки скидаються у
.autosave.jsonчерез 30с; при наступному відкритті — пропонує відновити. - 📤
.txtround-trip для зовнішніх перекладачів (ID-based mapping, preserve-translated). - 🔧 Bulk-операції: copy-original, trim, mark-approved — масово.
- 🍞 Toast-сповіщення у правому нижньому куті — статус-меседжі не ламають layout.
- 🌐 Інтерфейс UK / EN з миттєвим перемиканням.
- ⚙️ Майстер першого запуску: автозавантажує UABEA Next і PowerShell 7.
- 🚀 Worker-threads + JSON cache (LRU 300 файлів, mtime-валідація) — повторні cross-file операції миттєві.
- Завантаж portable
.exeз Releases. - Запусти — пройди майстер налаштування (вкаже шлях до гри і автоматично завантажить інструменти).
- На головному екрані обери гру:
- Deadly Premonition → вкажи
eng.jsonвід DPMsgTool. - Deadly Premonition 2 → відкрий теку з JSON-дампами
sharedassets0.assets.
- Deadly Premonition → вкажи
- Перекладай. Натисни Запакувати .mes (DP1) або Зберегти та зібрати (DP2) — готовий файл одразу опиняється у грі.
| Дія | Шорткат |
|---|---|
| Зберегти + наступний неперекладений | Ctrl+Enter |
| Наступний неперекладений | Ctrl+J |
| Між рядками таблиці | Alt+↑/↓ |
| Копіювати оригінал | Ctrl+D |
| Зберегти | Ctrl+S |
| Find & Replace у файлі | Ctrl+H |
| Глобальний пошук | Ctrl+Shift+F |
| Глосарій | Ctrl+G |
| TM-панель (toggle) | Ctrl+Shift+T |
| Focus mode | Ctrl+\ |
| Закладка | Ctrl+B |
| Статус draft / review / approved | Alt+1 / Alt+2 / Alt+3 |
git clone https://github.com/LittleBitUA/SWERY-Localization-Tool.git
cd SWERY-Localization-Tool
npm install
npm run dev # Vite + Electron у dev-режимі
npm run build:exe # Portable .exe → release/Потрібно: Node.js 18+ та Windows для збірки портативного .exe.
docs/TGL-modding-notes.txt— reverse-engineering write-up for The Good Life: text container layout (loc/English), font bundle structure (c0718fc478f6943d), theflipped+ negative-uv.heightconvention that catches every home-grown tool, atlas write-back pipeline, 64-bit PathID precision pitfalls, and Unity 2020.1.17f1 specifics.docs/THE-MISSING-modding-notes.txt— full write-up for THE MISSING: theMSG.*payload layout, length-table semantics, the int16 overflow trap that breaks Cyrillic translations,IMHeightInfoMonoBehaviour box-sizes structure, the 4-language slot convention, Auto-fit algorithm with idempotency notes, write-back pipeline through UABEANext, six common pitfalls (PathID drift, CR/LF, NULL-pad, section 2, UABEA Edit Asset vs Edit Data, antivirus locks), and why we did NOT reuse TranslationFramework2 source code.
Both write-ups are useful even if you don't use this app — they're written for anyone building their own modding tools.
- Electron 33 (portable build via
electron-builder) - React 18 + Zustand for state
- Monaco Editor (VS Code's engine) as the translation editor
- Tailwind CSS — GitHub-inspired dark theme
- Vite for blazing-fast dev cycles
- Node
worker_threadsfor heavy JSON parsing / searches
- MrIkso —
.mes↔JSON CLI (DPMsgTool) for DP1 packing. - nesrak1/UABEA — Unity asset editor whose libraries (
AssetsTools.NET.dll,classdata.tpk) drive DP2 packing. - PowerShell/PowerShell — PS7 portable bundled at first run.
MIT — free for personal and team use. Game content (.assets, .mes) belongs to the respective publishers and is not redistributed by this tool.
Made with ☕ and 🇺🇦 by Little Bit UA