About the Author

Hi, I am Yves, but some of you might also know me as Docwise Dragon. I am trained as an analyst programmer, I studied at the University Institute of Technology in DIJON in 1989. I currently live in Reunion Island since December 1999.
I am 52 years old, I am married with two children. I work as an IT manager in an SME specialized in the building industry: production of aggregates, sand, concrete and artificial stones: American blocks, French blocks etc…
I think Ultima 6 is really the game that marked my youth the most.
I played for the first time when I was a student on an old Toshiba laptop with a 2-color backlit LCD screen.
No hard drive, you had to change the floppy disks at each fight and when entering the dungeons.
There was no forum. I didn’t know about tricks like the famous ALT 213 key combination, but I was determined to see the story through to the end.
Left to my own devices, I had to use what I could to get through this huge plot on my own.
Through perseverance, I was able to finish the story after more than a year.
I must admit that I had never been captivated by a game like this one.

So I fell into the cauldron like Obelix, so to speak. I felt attracted to Ultima because in this game there is a real atmosphere, a well constructed story with captivating plots and total interactivity with all the objects and characters. In the present we find traces of the past (meeting with the three statues of Mondain, Minax, Exodus). We can say that Ultima is a “living” story in the broadest sense of the word.

In each episode, it is a whole art to discover this moral so dear to Lord British. “…And you will never turn away from the path of the Virtues…”. It’s fantastic to embody a hero and to obey this morality. I think that each of us secretly dreams of becoming an Avatar…

And now, I can’t stop the chain of adventures, I want to taste absolutely everything, find the latest fan remakes, follow the news. I’m watching the EXULT version of ultima 6 ( http://www.ultima6.realmofultima.com/ )
I was also seduced by “the Dark Unknow”, I am waiting for the return of the author for a possible translation.
(http://darkunknown.tapestryofages.com/) I even translated THE DARK CORE but it was a failure.
I see a lot of Ultima projects on the Web that have been abandoned. What a shame to see so much talent disappear. I would like to encourage authors to persevere and not give up. Talent must be protected as a rare thing.

Coming back to our topic, I wanted to take up the challenge of translating this game into French to have a new experience and be a little closer to the story, something I didn’t have at the time since my English was a bit limited. I was a bit frustrated not to have a French version.
So it was only this year that I stumbled upon the site of Sir John, who is an absolutely wonderful person. When I saw that he offers utilities to translate this game, I thought it would be nice if I could translate Ultima 6.

That’s when it all came together. We exchanged a lot of things. It took some time to understand the basics of the main tools:
U6EDIT: to modify books, graphics, and NPC dialogs.
U6 Items Editor: the names of the objects we look at (L-Look key)
YYCHR99 to modify the character table.
John even took the time to do the main menu in the introduction screen. I owe him a big debt of gratitude.
I think the most complicated task is to translate the dialogs and executables (GAME.exe, U.exe, END.exe) . Translating books and objects was relatively easier.

Executables: they are modified using a hexadecimal editor. You have to keep the same length of text without changing the file size (there was a possibility to change the length by modifying the offsets but I had to give up).
This forces you to search for a long time for a translation that is efficient and has as few words as possible.
If the translation is still too long, you have to play with spaces or punctuation, removing dots for example.
Sometimes this is not enough, you have to reduce it again and again and the words no longer mean anything.
That’s why in the program there are a lot of ‘shorthand’ abbreviations such as “depl” “nivo” etc ….
So I have explained in detail the meaning of each abbreviation. English is a very “concise” language, you can say a lot of things in very few words, unlike French where you have to make long sentences well constructed with all the accents, conjugation, chords etc …
When you have to reduce the length of the translations, you feel a little frustrated because you can’t give the player a better understanding.

Scripts: Each NPC is driven by a script. It’s a file written in a specific language close to BASIC and contains the dialogues (all the text you see scrolling) and the keywords you enter on the keyboard (example : name, job, goodbye…). The scripts also contain what you don’t see:
it’s the background of the game, i.e. the mechanisms that you unknowingly trigger behind your back.
The script will indicate how much bad karma you get when you say such and such a thing, how much money you get stolen with the gypsies, which item is removed from the inventory to give it to the NPC, etc … The scripts are compiled in machine code to run as soon as the dialog starts.

There are a total of 221 NPCs, so 221 files to be translated. No need to copy and paste them into an automatic translator, because the reserved words of the script (IF ELSE JUMP) will also be translated! The script will not work anymore.

As I am passionate about programming, I spent a lot of time developing a VB program to extract the dialogs from each script.
The challenge was to extract the keywords marked with the “KEYWORDS” instruction and the dialogs framed by [ ].

Sample dialog (Dupre’s script) :

keywords "ques" {
["Yes, you've gone on some really fine ones."\n*]
["When you're not around I have to settle for ]
[rescuing @damsels, finding @grails, and the ]
[like."]
JUMP L1;

This part of the script allows to manage the word “quete” (quest)
When the user is going to type the word “quete”. the text just after KEYWORDS “quest” will be displayed.

I copy and paste the script into my program and this is what it will extract:

#ques#

["Yes, you've gone on some really fine ones." \n* "When you're not around I have to settle for rescuing damsels, finding grails, and the like."]

My program created a line for the keywords (delimited by #) and then grouped all the other dialogs into one line (delimited by [ ] ).
\n and * are control characters: skip one or more lines.

To complicate the task, it is also necessary to manage the keywords that appear in red (if the help is activated by CTRL H). They are easily recognizable by the ‘@’ (arobase) at the beginning of the word.

Example Dupre says “I have to settle for rescuing @damsels”: Damsels (ladies) will appear in red.

The concern is that you can’t translate texts with arobases. You have to remove them and don’t forget to put them back. Machine translation interprets arobase as the end of a sentence. This results in a bad translation.

Here is an example:
I have to settle for rescuing @ damsels.
we get :
Je dois me contenter de sauver @ demoiselles.
By removing the arobase, we get the right translation. “Je dois me contenter de sauver les demoiselles.”

Now that we have more than just simple sentences to translate, just take a good online translator like DEEPL or Google Translation and copy and paste.

But it’s not that simple, you have to go back and correct the translation, the translation isn’t perfect the first time, you have to keep editing it. In addition, the control characters \n and * as well as the arobases have to be put back.

The most difficult task is to put the arobases back on the keywords that match the original ones.
Example : Dupre says “and the @damsels” it will be necessary to put in the script “et les @demoiselles”.
Thus the word “demoiselles” will appear in red.
But that’s not all !
If you put an arobase in front of a word in the dialog, it must necessarily appear in the KEYWORD clause.
If we forget this word in the clause, the script won’t crash but we won’t be able to query the NPC using this keyword. The NPC will say that it does not understand the question.

Once the arobases have been put back correctly, my software will rebuild the script by merging the translation with the rest of the code that has not been translated. It will also check for any anomalies. It indicates if we have forgotten a keyword in the KEYWORD clause, other cases: we can have several ‘@’ that point to the same keyword.

Let me explain. Let’s take the example of the dialog with Pridgarm in the city of YEW.
Pridgarm holds the keys to the prison. The Avatar will try to get them to talk with the prisoner BOSKIN.
In the script we will have KEYWORDS clauses to manage the word “prison” and the word “prisoner”.

If we translate in this way :

KEYWORD "prison"
He talks about the prison ...].

KEYWORD "prisonnier"
[he talks about the prisoner ....]

It’s not going to work.
Why won’t it work?
Because if you type “prisonnier”, the keyword will be captured the first KEYWORDS clause that starts with the same characters and it’s “prison”. So by wanting to question about the prisoner, Pridgarm is going to talk about the prison and we don’t understand it at all.

What is to be done?

You have to use another syntax for ‘prison’ and look for a synonym.
That’s where we have to rack our brains.
So I found “geôle” (“jail”) as a synonym for prison but there were other solutions.

So there is no more confusion, we now have our two KEYWORDS lines corrected in this way:

keyword "geole"
[He talks about the prison.]

keyword "prison"
[he talks about the prisoner.]

Translating a game is not a simple copy and paste. Anyone who does translation will tell you that. You have to do a huge amount of interpreting, something that translation software cannot do. You have to immerse yourself in the context of each sentence and then adapt the translation so that it reflects the meaning as much as possible.

Another difficulty in translation is wordplay.
Once you translate them, they don’t mean anything. You have to try to grasp the subtlety of the pun and then find an equivalent to keep the same meaning and sometimes this is not possible.

I take the example of Chuckles. In English he says:

If hints were mints and mints were hints, think what a world it would be!

You can easily find the pun: “hints” and “mints”, he changes the “h” into an “m”.

If we translate ‘stupidly’ we get :

If the hints were menthe (mints) and the menthe (mints) were hints, think what a world it would be!

We lose the pun.
You have to change a few letters in ‘hints’ to get another word with the same ‘consonant’.
Here’s what I found:
if advice were gooseberries…

I could also have translated it as :
if the hints were appendices ….

Machine translators can’t do this job. I’m not criticizing them, they’re very good, but that’s the limitation of machine translation.

Once the scripts are translated, you compile the whole thing and then cross your fingers so that the game doesn’t crash when you play. I used a lot of my spare time to translate the documentation and polish up the last details to get a game that is not completely perfect but a nice game to play and I hope you will be satisfied using it.

Finally, I would say that I’m also passionate about 3D drawings (Blender software) and space simulation (Orbiter, a free software that simulates space navigation).
I have created some digital comic strips. My last creation is called “MISSION EDEN MARS” a ‘Space Odyssey’ made entirely in 3D GI (Global Illumination). It took 6 months of continuous calculations! A must read. Don’t hesitate to ask me for the download links.

I think I’ve said it all. I wish you a great adventure in Ultima 6. You can send me all your comments at yvespion@gmail.com.

Best Regards.