Skip to end of metadata
Go to start of metadata

Graphical User Interface

The GUI system allows for easy creation of user interfaces using an xml based format for layout, and features support for all the common interface controls, as well as scripting through Lua script.

It is possible to customize the graphical look and feel of the user interface. The interface controls adapt to the size of the graphics. Textures are packed together, using the interface build tool, in a large sprite sheet, which minimizes draw calls, resulting in high performance.

In order to allow for localized versions of the game in languages with varying character sets, Unicode fonts can be used. Text characters are rendered on demand in the font manager's character cache, so it is not required to build font sprite maps in advance, and your dialogue writers do not need to worry about missing characters. This also makes it possible to use any character in a font at any font size.

Interfaces can be created inside resizable and movable windows with a titlebar, which can also minimize the window to show only the titlebar. Transparency effects can be used to bring specific windows into focus or out of focus into the background.

All the common interface controls, such as buttons, labels, text boxes, combo boxes, checkboxes, and so on, are available.

A flexible general purpuse web browser component is available, which can be used for easily making more dynamic interfaces such as forums and help pages available ingame. The web browser allows you to use most basic html tags, including images, as well as to invoke client side Lua scripts.

The interface also includes a small music player, with support for common audio formats and playlists, allows the user to play his own music in the background.

All actions in the user interface can be bound to client commands and Lua scripts, through action handlers, which can be specified in the client code. Content displayed in the user interface can be dynamically linked to the client's network variable database using conditional expressions.
Keyboard shortcuts can be dynamically assigned to the action handlers.

Networking

Ryzom Core offers a higly optimized and proven cloud-based networking architecture

Multiple physical machines can be used together to run a single shard, spread over multiple services. Read more on the Ryzom Service Architecture. The connection between client and server runs over a bit-packed, bandwidth limited, fixed time rate UDP connection, with full support for packet loss management.

Up to 255 entities are propagated over the network connection in realtime under dial-up bandwidth constraints. This allows for large scale events, such as invasions and guild versus guild fights.
Variable data is easily shared between the server and a client, through a tree structured network variable database, that is specified through an XML file. Entries in the database can have conditional expressions attached to them, that allow Lua scripts to be called when one or multiple variables are updated to a specific or any state. It is also possible to link these variables directly into the user interface. The entity properties are also accessible through this database.

Static text strings are assigned a unique integer identifier, which can be used in the network communication to efficiently reference a string. The client can asynchronously request a string from the server to be displayed in the user interface as soon as the client receives this string. The database uses these identifiers wherever strings, such as player names, need to be sent to the client.

All direct event messages between server and client are specified in an XML file, and sent over the network using a unique id of minimal size. The version of this message structure file is verified upon connection of a client to the server, so that a client with a different version cannot connect. Messages that are lost over the UDP connection, are automatically resent. Large messages are automatically split up into multiple messages, which are spread over multiple packets, to stay within the bandwidth constraints.

Sound

The sound system can be graphically debugged from ingame, which allows you to see all the source voices which are currently playing, as well as the bounding boxes of environments, and portals for occlusion and obstruction effects.

Builtin Gameplay

Write text here: Crafting.
Write text here: Merchants.
Write text here: Guilds.
Write text here: Teaming.
Write text here: PvP.
Write text here: Harvesting.
Write text here: Magic.
Write text here: Guns.
Write text here: Swords.
Write text here: Missions.
Write text here: Knowledge Encyclopedia.
Write text here: Bricks, Spells, etc.

AI

Write text here.

World editing tools

Write text here.
Write text here: Ryzom ring.
Write text here: Worleditor.

Client updates

Write text here: Files verified, etc.
Write text here: Lzma compressed, deltas, etc.