Hello, Aria here! Hope everyone is staying warm and opening hundreds of loot boxes in FGO (wait, did we miss Christmas? Pretend it’s still Christmas! Padoru!). Not to distract you from the necessary grinding, but our Fate/Extra Perfect Patch is here, which includes battle dialogue, ruby text, berserkers going berserk, and more! This patch was a long time coming, so I thought I’d talk about the battle dialogue process a bit!
When I first joined up with the project, I had never actually finished Fate/Extra before. I played on PSP when it came out and rage quit a couple rounds in after dying instantly to some mobs. So, my first task was to play through the game and subtitle the battle lines along the way. All the character voice lines are labeled like “ner_1700” without much additional context, which made things a little tricky. This includes non-battle dialogue as well, which we don’t want to translate. Thankfully, Kotcrab set up a debug message that appears on the bottom of the screen that displays the name of the currently playing file.
(You won’t see that message in the bottom left, but it made my life much easier~)
With that, I was able to figure out the general number range of what’s battle dialogue and what’s story dialogue. I started by translating as many Nero battle dialogue lines as I could, then continued playing the game. From there, I’d beat a boss, then translate their lines. All was fairly smooth…
…until this fucking guy.
Now remember, I’m doing all the subtitles with audio only. I just remember sitting in the library on my laptop, shaking my head in utter confusion as to what the fuck this guy was saying. His dialogue blends several religions into one to make his “true” religion, also known as a nightmare to my ears. I was in such a desperate state of despair that I just googled what I could make out and prayed. What answered my prayers…
…was a devote follower who created a Twitter bot that regurgitates his lines every hour or so. I managed to find the line in question typed out! It was a godsend, until the next line didn’t exist. But that one led me to a Japanese wiki with every line in the game typed out! (Well, it turned out to be more like 70%, but it was still an amazing blessing). Using that Japanese wiki, I was able to recreate it on my own local wiki and organize all my notes:
Each line had context written out as well, and with its help, I was able to match line numbers to specific actions, such as break attacks, master healing servant reactions, and more! With this new tool, I was able to check my previous translations, then advance much more smoothly into the horizon, with the crazy fanatic Gatou now defeated.
Now until that point, I was using our editor to translate without seeing anything in the game. Just before Gawain, everything was set up to add my translations into a patch. I pre-translated all of Gawain’s lines, then did his battle for the first time. It was the most intense battle in the whole game, improved immensely by having the battle subs working as he slammed his Noble Phantasm into me two turns in a row. I knew it was coming too because every enemy Servant has a “tell” line that announces their intention to use their Noble Phantasm that turn (it’s always line #1752 for anyone curious, with #1753 being a “you survived!?” follow-up). I had just translated Gawain’s, so I knew exactly what to look out for:
I recorded the battle as an early test to show the rest of the team the subs. I should have died in that fight with how sloppy I played, but damn if I didn’t win first try white knuckling the entire time. You can watch that terrible test video here (Keep in mind that since it was an early demo, the lines are unedited with some technical issues present that are now fixed. Timestamp is when things start going crazy – https://youtu.be/jomlQ6cx9uw?t=238 .) There’s no mic audio, but you can feel my spirit break when Leo announces a second Noble Phantasm. It just gets worse from there.
During the cutscenes before that battle, we also noticed an issue with battle subtitles playing during the pre-combat smack talk conversation. Turns out people say battle lines outside of combat for dramatic effect! Thankfully, Kotcrab had no issue hunting down a variable that would let us know if we were currently in battle. With that, subs would only play if we were in combat. BUT we also subtitled level-up lines post battle and those aren’t in battle! We settled on a set of flags in the timing, with one of the flags meaning “play only in battle” if true. Whew~
After that, the game was defeated, Holy Grail obtained! No strings attached, they just gave me the Grail and wished me on my way~ Next steps were to translate the rest of Nero’s lines plus Archer, Tamamo, and the Rin route servants. Sprinkle on some sound effect translations as well (those ended up being stored separately as we learned, requiring some more code tweaks to get just right), then it was time for Archer!
Wait that’s not right.
There we go, that sounds more correct. At this point, I’m mostly getting to just enjoy the game, while spotting a missing line now and then. Most of these lines are battle victory lines, separated into “servant doesn’t give two shits about you” (first half of the game) and “servant will die for you” (later half of the game). When I got to Alice’s fight on Week 3, I asked if colored subtitles were possible.
ItsumoKnight: “What’s so hard about it, it’s just Alice and Alice”
Turns out the color codes should just work since the subtitles use similar code to the game!
…okay not quite. It initially caused some interesting text glitches which made the following line even more creepy than before. With some quick debugging by Kotcrab, we got everything working:
Along that same line, we wondered if we could do the Berserker scream, which ended up being easier than expected. There are 4 possible Berserker noise characters, so I wrote a quick python script to randomize different combinations at different lengths, then I matched them to lines that seemed to fit and added “!” marks as appropriate.
The last major improvement we added was adding ruby text support. Kotcrab went into detail about this in an earlier post, but essentially it lets us add the small subtitle above certain skill names that CCC uses.
In this case, it adds “Rho Aias” above the skill name for that extra touch.
With Extra moving into an editing and playtesting phase, I was free to move onto CCC. It’s hard to give actual progress numbers with the battle dialog since there’s a lot of non-battle dialogue mixed in, but I’ve translated the lion’s share of Nero, Archer, and Gilgamesh’s dialogue. Once I finish with Tamamo’s (nearly there), I can play through CCC and translate missing lines as they come up. This will include the in-dungeon subtitles as well, with context! Sadly, the Japanese wiki for CCC is much more incomplete, so most of the lines will be by ear, but on the other hand, the line numbers have the same meaning as Extra! So with that, I’ll know when a line is a counterattack remark, an “I just died” line, or a “chiding the player for playing terribly” line.
Lastly, thank you for all your patience! This has been a tough year for all of us, and I hope that you can enjoy the work we put into vanilla Extra while you wait for CCC!
PS: I suppose you want to download this patch, huh? F-fine, it’s not like I want you to play it or anything!
Now with Mac/Unix patching options and various Aksys translation fixes mentioned by the community!
(Editor’s note: Fate/Extra is very special to me. It was my exposure to Fate, and without it, I wouldn’t have become the fan I am today. It also lead to me neglecting a blind date, and in retrospect, the game was the better choice, but that’s a story for another time.
If this is your first go at F/E, I hope you enjoy it as much as I did and still do. Especially the amazing Shinji Hosoe OST. -cj)