Adding In Game Titles

Adding Titles

Adding in-game titles to Ryzom Core is a pretty simple process. In the course of this article we'll ignore the translation pipeline and modify the language files directly.

Titles are comprised of two primary components:

  • An entry in the translation words file: title_words_XX.txt
  • An entry in unblock.titles sheet.

Adding Title Translation Entries

The first step is to determine the unique string that will identify your title. For example perhaps you want to be able to grant key members of your community a special title that lets new players know they can ask that person for help. Lets call this new title pc_master_helper. The translation language files for titles are pretty simple. They have three columns:

  1. title_id
  2. name
  3. women_name

The third column, women_name, is optional. This is used for titles in which the gender of the title-bearer affects the title content. These files are tab-delimited files with the column names at the top. They can be edited in a piece of software such as Microsoft Excel or LibreOffice Calc. You can also use the Ryzom Translation Manager plugin. 

The text may contain unicode characters, such as in the foreign langauge files like ru, and the editor must be capable of saving UTF-8 files.


To continue with our example we would add a new title to the end of the file like this:

title_id        name    women_name
pc_master_helper    Master Helper


If you are not using the full translation pipeline (Translation Manager, Translation Tool and/or WebTT) then you will want to edit the wk file and the enfile plus any other languages you are presently supporting (e.g. fr, ru, de, etc.)

Updating the Unblock Sheet

In addition to defining the title string(s) you will also need to create an entry in the unblock sheet to define how these titles are unlocked and made available to players. The primary sheet is called unblock.titles and is typically located incode/ryzom/common/data_leveldesign/leveldesign/game_element/xp_table. It is not required that this sheet exists here, just that it is somewhere in thegame_element tree.

There is a huge variety of ways that a title can be unblocked:

Unlock KeywordDescription
SkillsNeededLimits to skill level specified. List of skill family and level combinations
BricksNeededLimits to the list of bricks. Space delimited list of brick sheet names.
ItemsNeededLimits to the items listed. Items are listed in pairs of sheet name and quality.
MinFamesLimits to minimum fame levels. Faction and fame level combinations.
MaxFamesLimits to maximum fame levels. Faction and fame level combinations.
CivNeededLimits to civ allegiances.
CultNeededLimits to cult allegiances.
CharOldnessLimits based on character age. Time in seconds since 1970 (epoch.)
CharPlayedTimeLimits based on character time played. Time in seconds since 1970 (epoch.)
AccountOldnessLimits based on account age. Time in seconds since 1970 (epoch.)
AuthorRatingLimits based on Ring author ratings.
AMRatingLimits based on Ring AM ratings.
OrganizerRatingLimits based on Ring organizaer ratings.
ReservedLimits use entirely.

Lets say that we'll going to assign a brick to allow a player to use the new title, "Master Helper." Creating the sbrick, which should be located in code/ryzom/common/data_leveldesign/leveldesign/game_element/sbrick/title is a pretty trivial matter. In the EGS console you can use the learnBrickcommand to 'teach' an entity the brick. Assuming we made pc_master_helper.sbrick here's what the entry in unblock.titles would look like:

    <!-- This value references the title_id in the translation worksheet. -->
    <ATOM Name="Title" Value="pc_master_helper"/>
    <!-- This value references the sbrick sheet. -->
    <ATOM Name="BricksNeeded" Value="pc_master_helper"/>


Update Code

You can use pre-generated title strings like Title00066 but failing that you will have to add an entry into ECharacterTitle in thecode/ryzom/common/src/game_share/character_title.h file. The title must be added to the end of the enum and the enum name must match the title_id.

We have opened an issue with the goal of eliminating this hard-coded requirement.