The Mostly Ugly Entirely Japanese-less Side of Translating
August 27th, 2013
I couldn’t think of anything to post again.
I’m really having a hard time with early week filler posts this season, aren’t I? I don’t think I can even really blame Seinarukana. It did eat up far more time than it had any right to, but I think that I’m finally almost nearing the end of the work I have to actively do on it. At least besides the few thousand text-images whose format still remains something of a black box. So I decided this week to do a kind of retrospective on some of the technical aspects on projects to date because I like to poke and prod at the insides of games just to see how they work, even if I’m never going to touch them. And let me tell you, the insides of Amatsukaze are a twisted nightmarish hellscape. Although a large chunk of that is also the hell that is the twenty thousand or so images.
I am fully aware too, that games are really not meant to be taken apart, forced into other languages, and then put back together. I’m sure (well, 50% sure) that most had great work environments and tool sets for developing them.
I didn’t get to use those.
I also didn’t bother actually going back and checking files, relying on my oh so great memory that sometimes forgets what I’ve translated after a week away from it.
Aaah, the ol’ virgin experience. Battle Moon Wars was more or less a delight to work with except for a couple little hiccups. Heck, I was even bug fixing. Scripts easily decompiled to their full XML format, and images were just as easily. I wrote up a whole post way way back in the day on editing it (and other Werk games). The XML format did mean that linebreaking was kind of a pain, but with a relatively huge text box and only two lines available in the story portions anyway, it was easy enough to visualize manually just by shrinking the text box down to where the line-limits were, an incredibly advanced technique that served me well on multiple games. The other, much more major hiccup, is that a bunch of strings were in the exe, which was something far more obnoxious to work with, and since I didn’t have a hacker to slave into doing my dirty work then, that stuff went by the wayside. Well, so did the dictionary entries when the Best Edition dumped some 6,000 or so extra lines of text on me out of nowhere that I really didn’t want to translate. Maybe someday…
Galaxy Angel is next. The scripts themselves decompiled very well into a mostly readable format. The font did need to be changed (a very painful process for someone else) because the original was wholly unsuitable for English. Lines were even broken visually within the scripts as text blocks instead of a single line (ie, the new line marker was a new line). There was a separate table that tracked the integrity of the game though. That needed to be annoyingly updated every time a change was made.
Text outside of the scripts was more of a pain in the ass. It was all in a different format which basically just ended up being dumped en masse into single text files. The entirety of the battle scripts (for all three GAs), is just one large barely sorted txt file. Eventually, the hacker who was working on that part put together a nifty little tool that would group the lines appropriately and link them to play the voice file for context, which is kind of important when it comes to Japanes and 36 different versions of "It hit," and "It missed," without any form of object identifier. Images were more of a pain, for all three really. GA’s crowning issue though was that certain images (location names mainly) weren’t templated well, so many were different sizes and then had their exact locations specified somewhere nobody ever was able to get at. And that’s why they’re all off center. Oh well.
Daibanchou’s images took a long time to get tools for… over 80% of the game translated if I remember correctly, but were fine after that. Its text… not so much. It was in another XML-like format on extraction (ie, one text box output was all on a single line), but featured the dual issues of unreliable speaker tags, and scenes being unmarked and unidentified. The first was (I’m told) because it defined the speakers at the start of scripts (or somewhere else) and just passed variables. Which meant that certain scripts, like those called for battle quotes or any of the prison stuff, had 100% wrong speakers attached to all the lines. Additionally, if there was ever a transition within the scene, the speaker tags wouldn’t be updated. Also, transitions weren’t marked in the scripts. Oh yeah, and if there weren’t speakers at all, like for any of the… uh… 200? H scenes and handful of other scenes done to CGs, there just weren’t speaker tags at all. It almost makes the game of "Guess what this scene is for by context" a fun game. Oh yeah, and if that wasn’t enough, all non heroine sex scenes existed multiple times in the text because gallery scenes are called differently (Ginjou alone has 5 different nigh identical copies of one sex scene), and since the script dump I was working with required lines to have the correct internal number, that meant a lot of fun with the ol’ script macros to get them copy/pasted right. That said, the scenes were grouped numerically by character, and besides a few very bizarre events that no longer existed in the game, they were mostly pretty easy to figure out.
Less so was practically every other piece of text. Those were all in just massive string dumps similar to GA’s battle quotes. Just one long list of some 20,000 (I think) odd strings. Practically every single string that wasn’t part of the script was in that string file. Event titles, location names, item descriptions, etc. All the names had their own ginormous string file too, but since they all had the kana pronunciations to go with them, I just search-replaced the kana, shifted them up a line, and went through the foreigner and monster sets to fix the non-Japanese in there. I can’t remember how many different variations there were though. I remember Japanese surnames, male and female Japanese names (matched with a surname), monsters (lots of random nouns/gags that needed to be de-romanized into actual English there actually), Christians, ninjas, and Arabians at minimum. Maybe there were more.
Moonlit Lovers was a comparitive breeze compared to GA, and especially after Daibanchou. The integrity table thing was gone, the pre-existing font looked good in English, the scripts were the same format as before, etc. I had the battle voice tool right from the get-go, and that guy even imported all the copy-pasted lines over into it. Some of the old lines were too long with the shorter text limit, but I doubt a little inconsistency hurt anybody. Due to the game-flow format change from GA, it did have a relatively annoying problem of identical text being in multiple scripts, but that was about it.
Eternal Lovers featured a big change in the script format though. The ones I worked with were basically just a lot of numbers, speaker tags, and the strings. Still sorted more or less by scene, but with a bunch of annoying little things to deal with, such as choices being shunted off to an entirely different file than the actual scene you make them in. The battle script tool also kind of broke a little there and I had to spend a lot of time manually catching redundant lines in the string dump for whatever reason as well as some lines it wasn’t detecting quite correctly.
Then comes Kamidori. Aaah, Kamidori. So little to say, but such deep and painful issues. Images were an absolute snap, if you don’t count the massive sprite sheets with half the content on it being completely unused. No, seriously. It was a quick lesson to look for what needed to be translated, not translate everything. Text was an entirely different matter. First off, no speaker tags. Second, scenes were grouped by location, not chronology or even relationship to each other. They all began with a little comment marking them, but it was usually just the name of the quest-line they belonged to. Which may or may not remain the same throughout all the events. Oh, and the linebreaker I had only worked sometimes. Didn’t work on append scripts, those simply have enough extra spaces after the last word to push the next one to the next line. Didn’t work on certain of the other text descriptions in the status/encylopedia screens. It would have been nice in those tiny spaces to have a few more lines to work with when imparting required information, but the game would have none of such hubris.
TWilight INSanity and TWilight refrAIN are back to a wholly XML format, which is annoying when you have somewhat dense text spanning four lines in-game on a single line in-script and indented for code ‘readability.’ Especially in the opening and ending narrations where the text wasn’t in the box at all and was more freeform all over the page. At least it was easy to trace what the scripts were doing and how they worked though. Images were just a massive pain for all kinds of reasons. Tiny tiny boxes that less compact English doesn’t fit at all in being the biggest sin. I think I just erased all of TWAIN’s stage names because the alternative was trying to make English words legible against a curtain fire background at a 4 point tall font.
Duel Savior (and Xross Scramble) was relatively painless aside from adding Destiny’s content. That was like pulling teeth by inserting the pliers by way of the rectum. But in its natural form, the scripts certainly weren’t pretty. It was all in a really low level programming kind of thing, with a bunch of calls (all defined by numbers) using ID files defined elsewhere and then periodically a Call specifying what command (by number) and how many of the previous instructions to take. Not readable at all, but you could eventually puzzle out what did what. Still, speaker tags, voice samples, and text was all clearly marked. It was even a fairly advanced text system too, capable of messing with font size, manually controlling output, etc. It made writing up a linebreaker to handle all that kind of a pain (again, single text ‘lines’ here), but nothing too bad. There was a weird hiccup with the repackers for the files though. We never got a fully working one. There was one descended from a dead Baldr Force project that I think didn’t encrypt files that worked on everything but folders that mixed audio and graphic files (ie, the combat files) and another from a dead Baldr Sky project that the game couldn’t read anything with text from it.
The engine hated any attempts to mess with it when I tried to add Destiny stuff though, even after getting the content out. Doddler wrote up a little bit, but that barely covers the grappling. The voices were actually really simple to deal with despite being the lion’s share of the change, and since the majority of the lines weren’t meaningfully changed, it just took some clever python to get all the lines copied over and Taiga’s voice calls imported into Justice’s scripts. There were some weird differences between them, like text command tags in Destiny that weren’t used, and the scripts were still half unreadable, but eh.
Any kind of images or the scripts though? Ye lords. That stuff was referred to in the scripts by ID number, defined elsewhere, and the game did not like anybody changing any of that. Memory space for those things was hardcoded into the game and if you tried to call something by an ID outside of its expected range, it was straight to the crashmobile. So adding all few hundred new Destiny CGs meant creating that space, defining the IDs for all the CGs, and then actually finding those scenes in the scripts and manually putting them in. And this was after automatically substituting the changed PS2 CG ID numbers for the existing PC ones. There were many errors. Oh yeah, and remember that repacking issue? Here’s where it really popped up and practically everything needed to be rearranged within all the files to account for it. Luckily, there was a very clear hierarchy between packs. I think it went Update > Justice1 > Justice2 > Script (and Voice1 > Voice2) and if a file existed in multiple places, it’d just use the one from the highest on the chain, assuaging some of the more obnoxious possible problems and letting Destiny voices exist in Justice (and vice-versa) with minimal headache just by naming them the same thing in different files.
MDKB was like the unholy love child of DS and Kamidori’s scripts. In their raw, uncut form, they are the kind of nightmare Duel Savior can only hope to achieve. While there isn’t a speaker tag obvious in them, one of those number things near text actually is a character ID. I forget which. I wrote a script just to get them out of that format and into a readable one (with tags marked) as well as insert them back in. That was the point where I found out that if you change the number of lines in those scripts and there’s a choice in the file (usually for tutorials), then it crashes, so in the end, the re-inserted script literally blanks out all previously existing lines and then puts all the text into the first line with enough spaces inserted at strategic places to push the text to linebreak in the window at the right spots. Go technology.
Romanesque is back to something soothing to work with though. The biggest two headaches are that there’s a lot of text-as image, which needs to be either handled with ImageMagick/Photoshop Actions or drive me insane, and that it crashes badly. Very badly. If you accidentally make certain typos in the wrong place anywhere in the script file. Won’t give you any indication of why, what file, or even the issue though.
Otherwise, it’s a dream. Text blocks for easy visualization and I can control practically everything. I even reanimated part of the title to put English in. LWR, however, flies in the face of standard practices and introduces yet another way of text linebreaking with its floating comic bubbles. Thankfully, at some point between LWR and Editio Perfecta, they expanded the engine to allow horizontal and vertical auto-sizing to them. Which is still somewhat haphazard and changing the universal text means changing the automatic bubble padding too, aaaand it still doesn’t address them being pushed out of position if the text is too much longer or shorter than before, but that’s a QC issue now and nobody’s done any QC on it yet, so…
And last, but certainly not least, is the current great beast, Seinarukana. You should be thankful it’s being officially released because the tools inherited from the original fan translation project (and that I began working on it using) are woefully inadequate. One thing that I only recently found out as I was importing lines into the original scripts, is that the fan-project script dump lost all furigana, which is slightly important when it comes to terminology that they’re pronouncing in English but is written in kanji. Or there’s how if you change the location names in the World files, they need to be updated in all the AI files and the actual image names themselves, because that’s how things work apparently. When they work. Sometimes, they just don’t. I can’t compile the file with PC names on my computer. Doddler can on his. Exact same file. I can compile other similar format files just fine. But that one file is going to have none of it.
Thankfully though, recently, everything’s finally coming together and most vestiges of the old tools have been cast off now that I have both the original scripts and a compiler that works with them in English, along with all the other definition files for the other packages of stuff. Instead of the single-text thing of the fan translation version, they’re into a text block format for nicer editing, and I’ve even gotten the go ahead to implement a few of the cut scenes that were commented out of the original for reasons unknown. Now there’s just prodding people to finish everything else. And all the images. And official bureaucracy. And any of the other new issues that seems to pop up every third day… oi…
And to settle any question on the matter, the best girls are Ranpha, Kunagi, Elizaselyn, Alto, Yomi, Lily, Ouka, Merrett, and Naya.
Seacrest out.
Posted in Miscellaneous | 12 Comments »
Woot! A history of all the great things Aroduc did over the last few years. Great work on all the translations so far man, really appreciate it. It’s too bad that Romanesque pretty much got taken away from you; I’d prefer the Aroduc translation any day.
Ranpha and Kunagi eh? Guess you like the strong tsundere types huh My Darling!
Also your seriously link seems to be broken.