Vyrábíme překlad hry do češtiny (engine UNITY)
Překlad programů a her není jen o znalosti jazyka, z kterého chceme překládat, ale i o technice, jak češtinu do hry dostat. Spousta her, spousta metod, neexistuje žádný univerzální způsob. Dnes se podíváme na zoubek hrám, které jsou vytvořeny v enginu Unity.
0. Upozornění
Překlad her, který chceme zveřejnit, kdy zasahujeme do souborů hry a měníme je, je zásahem do autorských práv. Měli bychom tedy získat od autorů souhlas s takovou činností. Vím, tohle se asi příliš nedodržuje… Ve článku budu postupy ukazovat na hře Magnetic: Cage Closed, (Steam), souhlas k překladu hry od autorů mám, pomalu se blížím ke konci (80%).
Jiný případ je situace, kdy lokalizace je možno jednoduše přidávat textovými soubory (což bývá přímo podporováno vývojáři), kdy se původní soubory hry nemění. U Unity her tomu tak bohužel není.
1. Nástroje
Pro extrahování a následné vkládání souborů s texty, obrázky, zvuky atd. v Unity hrách budeme používat nástroj Unity Assets Bundle Extractor (UABE)
1.1. Stažení
https://www.dropbox.com/s/9iu59lpj76m0m4m/AssetsBu ndleExtractor_2.1_64bit.zip
https://www.dropbox.com/s/haousqg0a3n6x1t/AssetsBu ndleExtractor_2.1d.zip
https://www.dropbox.com/s/7lb77s8z6ckfq01/classdat a%205.6.0f3.zip
Stáhneme všechny archivy
1.2. Instalace
- vytvoříme si někde adresář, např. D:\Utility\UABE
- do něj rozbalíme obsah archivu "AssetsBundleExtractor_2.1_64bit.zip",
- dostaneme tedy D:\Utility\UABE\64bit\*.*)
- z archivu "AssetsBundleExtractor_2.1d.zip" vytáhneme aktualizované soubory pro 64bit verzi a přepíšeme jimi původní soubory v D:\Utility\UABE\64bit\*.*
- z archivu "classdata 5.6.0f3.zip" vytáhneme soubor classdata.tpk a přepíšeme jim starší z našeho adresáře
Tím máme pohromadě nejaktuálnější verzi Unity Assets Bundle Extractoru a můžeme začít.
2. Pracujeme s Unity Assets Bundle Extractorem
2.1. Kde hledat soubory s texty?
Hry v Unity enginu mají zpravidla velmi podobnou strukturu souborů a adresářů. Najdeme tedy na disku adresář takové instalované hry, uvnitř bude nějaký spouštěcí *.exe a podadresář *_Data (v případě hry Magnetic: Cage Closed je to Magnetic.exe a adresář Magnetic_Data). Otevřeme podadresář *_Data. Zde je různé množství souborů (od pár jednotek, po mnoho desítek až stovky) a další podadresáře, nás ale zajímají jen soubory s příponou *assets.
Poznámka: bohužel různí autoři přistupují k Unity hrám různě, texty ve hře jsou v různé formě, na různých místech a občas jako obrázky, textury. Někdy na jednom místě, někdy v mnoha souborech. To práci na lokalizaci znesnadňuje a někdy i znemožňuje; někdy se prostě texty najít nedají - respektive bylo by to neuvěřitelně pracné.
Nejdříve prověříme soubor resources.assets. Pokud budeme mít štěstí, nalezneme v něm vše, co potřebujeme. Pokud ne, budeme pokračovat v souborech sharedassets0.assets až sharedassets??.assets (bývá jich občas několik desítek, ale je pravděpodobnější, že potřebné najdeme v těch s nejnižšími "pořadovými čísly", 0, 1, 2…) U hry Magnetic: Cage Closed, na které budu práci s UABE demonstrovat, se jedná o soubory
- resources.assets (titulky k dialogům)
- sharedassets0.assets (menu hry, GUI)
2.2. Vytažení a vložení překladu
Aby byla práce v UABE pohodlnější, překopírujeme příslušný *assets soubor do adresáře UABE.
Spustíme UABE
V menu programu zvolíme File - Open a vybereme *assets soubor (resource.assets)
Vidíme, že archiv *assets obsahuje řadu souborů různého typu. Seřadíme si je (kliknitím na sloupe Type) a budeme se snažit hledat něco použitelného pro lokalizaci, ideálně soubor s texty.
A vida, máme štěstí, je tam několik souborů *TextAsset, pro různé jazyky! Kliknutím na English vybereme soubor s anglickými texty.
S nabídky vpravo vybereme tlačítko Plugins a z další obrazovky zvolíme Export to .txt.
Soubor English.txt se uloží na disk, defaultně do adresáře, kde máme nainstalován UABE. Podíváme se na něj.
Sláva, máme texty! Otevřeme v nějakém pokročilejším textovém editoru (PSPad, Notepad++ apod.) a můžeme se dát do překládání. Opět neexistuje jeden vzor, jak jsou texty v příslušném souboru uloženy a organizovány. V našem případě překládáme textovou část řetězců, části start/stop označují čas zobrazení titulků.
<text start="?.?" stop="?.?">Text ve hře.</text>
Přeložený soubor (nebo jeho část, pro otestování) musíme dostat zpět do archivu resource.assets. Opět spustíme UABE, vybereme resource.assets, najdeme v něm soubor English (TextAsset) a označíme jej. Z vedlejší nabídky opět vybereme Plugins a tentokrát vybereme Import from .txt
Najdeme náš přeložený English.txt na disku a potvrdíme OK. Ve sloupci Modified se objeví u souboru English hvězdička (*)
Změněný resource.assets uložíme, menu File - Save
Protože nelze přepsat původní resource.assets, uložíme jej pod jiným názvem, já tam vždy připíšu jeden znak, např. resource.assets- (pomlčku). Změněný soubor nakopírujeme do adresáře hry, původní resource.assets si někam zazálohujeme a resource.assets- změníme na resource.assets (přepíšeme původní).
A pak si už užíváme češtiny ve hře
(pokud máme nalezené a přeložené všechny texty…)
2.3. Poznámky
- průzkumem archívů *assets narazíme na spoustu zajímavých souborů, které můžeme podobným způsobem extrahovat, měnit a importovat: zvuky, textury, herní mechanismy apod. Můžete zkoušet cokoliv, postup je obdobný.
- v adresáři programu UABE je podrobný návod, jak s ním pracovat (v angličtině)
- samotný překlad může být s diakritikou nebo bez ní, záleží na použitých fontech a postupech vývojářů. Případným překreslováním fontů jsem se nikdy nezabýval, raději v případě nouze volím cestinu bez hacku a carek.
- při editaci textů je někdy potřeba zvolit správný formát kódování (nutno vyzkoušet). V případě Magnetic: Cage Closed je to UTF-8 bez BOM.