Ultima Online Enhanced Client Walkthrough – Character File
The following discussion is intended to be a basic walkthrough for the character file; the file’s organization, a couple of tips for what to look for where, and some basic template creation. This is not a line by line code breakdown, nor is it an exhaustive explanation. Having said that, this may still be a bit technical, so read on as you desire.
In Ultima Online’s Enhanced Client (EC) each character has a unique file (the character file). This file contains a host of information about how you have chosen to setup the user interface (UI) for that character. The information in the character file includes widow positions and settings, all of the hotbar information for that character, all of the macro information for that character, all of the agent information for that character, key bindings, UI options, and more. The file is updated during play and is saved when the character successfully logs out of the game.
Since each character has unique UI settings stored in their character file, each character can have their own specific UI configuration. Character specific UI’s can be beneficial when using different types of characters for different types of tasks, but can be frustrating when you’re starting a new character and have to set everything up again. By understanding a bit about the character file, you can exercise more control over the customization of your UI and significantly reduce the hassle of setting up the UI for new characters.
Let’s get started!
By default, the character file is stored in your documents folder, in the following path:
Documents > EA Games > Ultima Online Stygian Abyss > User Data > Account Name > Shard
character file can be opened using a text editor such as Notepad or Wordpad.
The code within the character file uses specific syntax to indicate beginning and ending segments.
For a single line of code: < indicates beginning, while /> indicates ending.
<CameraZoom Value = “16.000” />
For a code chunk: <> indicates the beginning of the chunk, while </> indicates the end of the chunk.
code, code, code
The character file is divided into sections, with basic organization as:
Options (From in game User Settings > Options tab)
At the beginning of the character file, prior to the <WindowSettings> section, is a group of 20 or so single lines of code that determine the basic settings of the UI upon login. Most of these are self-explanatory and control things like whether or not the “Tip of the Day” is shown, the Camera Zoom you start with, etc.
One thing to pay attention to in this area is <Containers> as the first number in this list is the ObjectID of your characters main backpack. We tend not to think of the main backpack as a world object, but it is, it has an ObjectID, and therefore can be targeted as any other object.
Sometimes you will see additional <Container id> in <Containers>. The additional id’s are those of any containers in your main backpack. The <OpenContainers> line, just below <Containers>, controls how many of those containers are open on login.
The line of code below would indicate two open containers on login: the main backpack and a container within the main backpack.
The section of the character file contains the code for the position and/or size of each UI element on your screen. The position is measured in x, y coordinates from the top left corner of your gameplay window, to the top left corner of the UI element. The x axis is the horizontal axis (left – right) of your monitor, the y axis is the vertical axis (up – down) of your monitor. Some UI elements have transparent borders or boxes, in which case the measurement is to the upper left corner of the transparent border or box.
In <WindowSettings> you will find “ResizeWindow” which records the width (x-axis) and height (y-axis) of your gameplay area. By expanding the gameplay area (NW pointing grey arrow on the bottom right of the gameplay frame) to fill your screen you can determine how many units of space you have to work with in different Windowed Mode or Full Screen settings. Maximizing the gameplay area is a quick way to determine the dimensions of your play space. In the image below, the gameplay area is maximized in a mostly square Windowed Mode, giving 1536 units width and 1262 units height of total play space.
As seen in the above image, the upper left corner of Hotbar3 is the 1245th unit from the left edge of the play space and the 888th unit from the top of the play space. Hotbar3 extends 270 units to the right of, and 50 units down from, that starting unit. Hotbar frames are 50 units high and 50 units wide. Hotbar3 displays 5 frames, so should be 250 (5x50) units wide. However, Hotbar3’s handle is displayed, adding 20 units to the width of the hotbar, for a total of 270 units in width.
begins at the 920th unit from the left edge of the play space and
the 1187th unit from the top of the play space. Hotbar2 extends 600
units (12 frames x 50 units per frame = 600 units, no handle) to the right of
the starting unit and 50 units down from the starting unit.
The positions of the UI elements are recorded in <WindowSettings> as those elements are created. As such the code for similar elements will be scattered through the <WindowSettings> section, rather than grouped. You can cut and paste similar code into ordered groups if you’re a neat freak. In addition to aligning hotbars, you can use <WindowSettings> to position your Main Backpack and Loot Bag, the Runebook, buff/debuff bars, Party Health bars, Mobiles bars, and all the rest of the UI elements. By changing the parameters of the various lines of code in <WindowsSettings> you can control the layout and alignment of your UI down to the individual pixel. This isn’t for everyone, but for some people the ability to perfectly align UI elements is…fantastical.
Unfortunately, some UI elements are programmed to override the settings in <WindowSettings> and reappear in the default position. For instance, the EC creates default hotbars when a new character is created. Hotbar2 is the default hotbar containing menu icons. Even if you delete Hotbar2 information from the character file, the EC will still auto-magically recreate a hotbar with menu icons the next time you log in.
In the <Hotbars> section of the character file you will find the code related to the contents of the hotbar and the hot keys used to execute those contents. Each hotbar will be divided into two sections, <HotbarItems> and <Keybindings>.
In the above image you can see the code chunks for two hotbars, Hotbar 3 and Hotbar 4. Hotbar 3 has 5 items (itemIndex) but only item 4 (Keybinding slot = 4) has a hotkey (F6) assigned. Hotbar 4 has only a single item and no hotkey is bound to that item.
In the line <Hotbar id =”” locked = “false”>, the locked = “false” parameter indicates the hotbar handle is not displayed. If locked = “true”, the hotbar handle is displayed. The state of the locked parameter must correlate with the width of the hotbar in <WindowSettings>.
If locked = “false”, the handle is displayed and the hotbar must be 20 units wider than the total of the hotbar frames (each frame being 50 units wide).
If locked = “true”, the handle is not displayed and the hotbar is the width of the hotbar frames (each frame being 50 units wide).
For each hotbar, you can copy the hotbar position information from <WindowSettings> and the hotbar code chunk from <Hotbars> (as in the above image). With these two pieces of information about the hotbar you can transfer a hotbar between characters, or keep copies of your hotbars for backup. Customizations for hotbars (such as frames) are found as <NumberVar…> lines in <UIVariables>, the final section of the character file.