KissE is a script/tool for processing and modifying (EX_StringConst) inside the Unreal Enigne Kismet bytecode. It allows you to both get all available for extraction strings (EX_StringConst) and replace them with (EX_UnicodeStringConst) by changing the instruction itself inside the bytecode.
UAssetAPI is used to work with Unreal Engine files and bytecode.
Key features of kissE:
- Allows you to extract (EX_StringConst) bytecode as string to a UberJSON file.
- Ability to modify (EX_StringConst) with those specified replacement in the UberJSON file.
- Corrects (EX_UnicodeStringConst) new offsets for correct work in the game.
Made with ❤️ for all translators and translation developers.
- Or download and drag & drop
(.uasset|.umap)to a command tool. - Or use
Kisse.exe <file_path>.
- You can simply drag & drop
(.uasset|.umap)and.jsonontoKisse.exeto replace (EX_StringConst). - Or use more advanced options with CMD.
Tip
Logic of the work in CLI:
kisse <asset/folder_path> <json/null> <...args>
kisse <json_path> <asset/folder_path> <...args>
| Argument | Description |
|---|---|
--include:name -i:name |
Include name/key::value (e.g., "ENG::Gori") |
--map -m |
Specified .usmap nearby .exe as mappings for processing (e.g., --map="Gori_umap.usmap") |
--nobak |
Disables the creation of .bak backup files. |
--all |
Extract all string types (includes StringTable and LocalizedSource) |
--table |
Extract strings from Data/String Table assets. |
--localized -l |
Extract fallback localization strings (LocalizedSource) [RISKY] |
--underscore -u |
Allow extracting strings that contain the '_' character. |
--table:only:key |
If key/name matches then include only this value to output (e.g., --table:only:key=ENG) |
--pack:folder -p:f |
Translate and pack assets into auto prepared folder (e.g., "ManicMiners_RUS") |
--version -v |
Set the engine version for correct processing (e.g., -v=5.1) |
--run -r |
Execute a command in the terminal after completion (e.g., --run=[CommandArgs]) |
| --debug | write additional files for debug: Ubergraph.json |
| --help | Show help information. |
| Argument | Description |
|---|---|
--endpoint -e |
Translation service endpoint (e.g., -e=router (yandex, google, microsoft, router as OpenRouter) |
--api -a |
Api-key for OpenRouter (e.g., --api=sk-or-v1-321313.....) |
--api:model -a:model |
Model for OpenRouter (e.g, -a:model=tngtech/deepseek-r1t2-chimera:free) |
--lang:from -l:f |
Source language for translation (e.g., --lang:from=en) |
--lang:to -l:t |
Target language for translation (e.g., --lang:to=ru) |
"A:\SteamLibrary\steamapps\common\Wigmund\RPG\Content\Paks\UI_Tooltip.csv" "A:\SteamLibrary\steamapps\common\Wigmund\RPG\Content\Paks\s_rus_NEW_P\RPG\Content\RPG\Blueprints\UI\Game\UI_Tooltip.uasset" [A:\SteamLibrary\steamapps\common\Wigmund\RPG\Content\Paks\UnrealPak-With-Compression.bat s_rus_NEW_P | start A:\SteamLibrary\steamapps\common\Wigmund\RPG\Binaries\Win64\RPG-Win64-Shipping.exe]
- The process is fully automated here.
- Start the process of replacing lines in the asset in a specific folder.
- Inside [CommandArgs]: I connect to UnrealPak.exe and I hand over the folder that needs to be packed (the one with the asset)
- After packing, the game starts next to check its performance. The commands are separated via '|'
- Profit. The process is fully automated to test how the game and asset work after modification.
- Visual Studio 2022 Preview
- You can create your own fork of this project and contribute to its development.
- You can also contribute via the Issues and Pull Request tabs by suggesting your code changes. And further development of the project.