User Interface

This page lists all user interface additions, changes, fixes that are implemented in Phobos.

Bugfixes and miscellanous

  • Enabled ability to load full-color non-paletted PCX graphics of any bitness. This applies to every single PCX file that is loaded, including the Ares-supported PCX files.

  • You can specify custom gamemd.exe icon via -icon command line argument followed by absolute or relative path to an *.ico file (f. ex. gamemd.exe -icon Resources/clienticon.ico).

  • Fixed Blowfish.dll-caused error ***FATAL*** String Manager failed to initialize properly, which occurred if Blowfish.dll could not be registered in the OS, for example, it happened when the player did not have administrator rights. With Phobos, if the game did not find a registered file in the system, it will no longer try to register this file, but will load it bypassing registration.

  • Fixed non-IME keyboard input to be working correctly for languages / keyboard layouts that use character ranges other than Basic Latin and Latin-1 Supplement (font support required).

  • Fixed position and layer of info tip and reveal production cameo on selected building

  • Timer (superweapon, mission etc) blinking color scheme can be customized by setting [AudioVisual] -> TimerBlinkColorScheme. Defaults to third color scheme listed in [Colors].


You can use the improved vanilla font which can be found on Phobos supplementaries repo which has way more Unicode character coverage than the default one.


  • You can now specify which soundtrack themes would play on win or lose.

In rulesmd.ini:

[SOMESIDE]             ; Side
IngameScore.WinTheme=  ; Soundtrack theme ID
IngameScore.LoseTheme= ; Soundtrack theme ID

Battle screen UI/UX

Digital display

image Default configuration of digital display using example shapes from Phobos supplementaries.

  • You can now configure various types of numerical counters to be displayed over Techno to represent its attributes, such as health points or shield points.

  • Anchor.Horizontal and Anchor.Vertical set the anchor point from which the display is drawn (depending on Align) relative to unit’s center/selection box. For buildings, Anchor.Building is used instead.

    • Offset and Offset.ShieldDelta (the latter applied when a shield is active) can be used to further modify the position.

  • By default, values are displayed in current/maximum format (i.e. 20/40). HideMaxValue=yes will make the counter show only the current value (i.e. 20). Percentage=yes changes the format to percent% (i.e. 50%).

  • CanSee and CanSee.Observer can limit visibility to specific players.

  • The digits can be either a custom shape (.shp) or text drawn using the game font. This depends on whether Shape is set.

    • Text.Color, Text.Color.ConditionYellow and Text.Color.ConditionRed allow customization of the font color. Text.Background=yes will additionally draw a black rectangle background.

    • When using shapes, a custom palette can be specified with Palette. Shape.Spacing controls pixel buffer between characters.

    • Frames 0-9 will be used as digits when the owner’s health bar is green, 10-19 when yellow, 20-29 when red. For / and % characters, frame numbers are 30-31, 32-33, 34-35, respectively.

  • Default Offset.ShieldDelta for InfoType=Shield is 0,-10, 0,0 for others.

  • Default Shape.Spacing for buildings is 4,-2, 4,0 for others.

In rulesmd.ini:


Buildings.DefaultDigitalDisplayTypes=   ; list of DigitalDisplayTypes
Infantry.DefaultDigitalDisplayTypes=    ; list of DigitalDisplayTypes
Vehicles.DefaultDigitalDisplayTypes=    ; list of DigitalDisplayTypes
Aircraft.DefaultDigitalDisplayTypes=    ; list of DigitalDisplayTypes

[SOMEDIGITALDISPLAYTYPE]                ; DigitalDisplayType
; Generic
InfoType=Health                         ; Displayed value enumeration (health|shield|ammo|mindcontrol|spawns|passengers|tiberium|experience|occupants|gattlingstage)
Offset=0,0                              ; integers - horizontal, vertical
Offset.ShieldDelta=                     ; integers - horizontal, vertical
Align=right                             ; Text alignment enumeration (left|right|center/centre)
Anchor.Horizontal=right                 ; Horizontal position enumeration (left|center/centre|right)
Anchor.Vertical=top                     ; Vertical position enumeration (top|center/centre|bottom)
Anchor.Building=top                     ; Hexagon vertex enumeration (top|lefttop|leftbottom|bottom|rightbottom|righttop)
Percentage=false                        ; boolean
HideMaxValue=false                      ; boolean
VisibleToHouses=owner                   ; Affected house enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
VisibleToHouses.Observer=true           ; boolean
; Text
Text.Color=0,255,0                      ; integers - Red, Green, Blue
Text.Color.ConditionYellow=255,255,0    ; integers - Red, Green, Blue
Text.Color.ConditionRed=255,0,0         ; integers - Red, Green, Blue
Text.Background=false                   ; boolean
; Shape
Shape=                                  ; filename with .shp extension, if not present, game-drawn text will be used instead
Palette=palette.pal                     ; filename with .pal extension
Shape.Spacing=                          ; integers - horizontal, vertical spacing between digits

DigitalDisplay.Disable=false            ; boolean
DigitalDisplayTypes=                    ; list of DigitalDisplayTypes

In RA2MD.ini:

DigitalDisplay.Enable=false             ; boolean


An example shape file for digits can be found on Phobos supplementaries repo).

Show designator & inhibitor range

  • It is now possible to display range of designator and inhibitor units when in super weapon targeting mode. Each instance of player owned techno types listed in [SuperWeapon]->SW.Designators will display a circle with radius set in [TechnoType]->DesignatorRange or Sight.

    • In a similar manner, each instance of enemy owned techno types listed in [SuperWeapon]->SW.Inhibitors will display a circle with radius set in [TechnoType]->InhibitorRange or Sight.

  • This feature can be disabled globally with [AudioVisual]->ShowDesignatorRange=false or per SuperWeaponType with [SuperWeapon]->ShowDesignatorRange=false.

  • This feature can be toggled by the player (if enabled in the mod) with ShowDesignatorRange in Ra2MD.ini or with “Toggle Designator Range” hotkey in “Interface” category.

In rulesmd.ini:

ShowDesignatorRange=true    ; boolean

[SOMESW]                    ; SuperWeapon
ShowDesignatorRange=true    ; boolean

In RA2MD.ini:

ShowDesignatorRange=false             ; boolean

Hide health bars

image Health bars hidden in CnC: Final War

  • Health bar display can now be turned off as needed, hiding both the health bar box and health pips.

In rulesmd.ini:

[SOMENAME]            ; TechnoType
HealthBar.Hide=false  ; boolean

Low priority for box selection

smartvesters Harvesters not selected together with battle units in Rise of the East mod

  • You can now set lower priority for an ingame object (currently has effect on units mostly), which means it will be excluded from box selection if there’s at least one normal priority unit in the box. Otherwise it would be selected as normal. Works with box+type selecting (type select hotkey + drag) and regular box selecting. Box shift-selection adds low-priority units to the group if there are no normal priority units among the appended ones.

In rulesmd.ini:

[SOMETECHNO]                ; TechnoType
LowSelectionPriority=false  ; boolean
  • This behavior is designed to be toggleable by users. For now you can only do that externally via client or manually.

In RA2MD.ini:

PrioritySelectionFiltering=true  ; boolean

Visual indication of income from grinders and refineries

  • DisplayIncome can be set to display the amount of credits acquired when a building is grinding units / receiving ore dump from harvesters or slaves.

  • Multiple income within less than one in-game second have their amounts coalesced into single display.

    • DisplayIncome.Houses determines which houses can see the credits display.

      • If you don’t want players to see how AI cheats with VirtualPurifiers for example, DisplayIncome.AllowAI can be set to false to disable the display. It overrides the previous option.

    • DisplayIncome.Offset is additional pixel offset for the center of the credits display, by default (0,0) at building’s center. -[AudioVisual]->DisplayIncome also allows to display the amount of credits when selling a unit on a repair bay.

In rulesmd.ini:

DisplayIncome=false       ; boolean
DisplayIncome.Houses=All  ; Affected House Enumeration (none|owner/self|allies/ally|team|enemies/enemy|all)
DisplayIncome.AllowAI=yes ; boolean

[SOMEBUILDING]            ; BuildingType
DisplayIncome=            ; boolean, defaults to [AudioVisual]->DisplayIncome
DisplayIncome.Houses=     ; Affected House Enumeration, defaults to [AudioVisual]->DisplayIncome.Houses
DisplayIncome.Offset=0,0  ; X,Y, pixels relative to default

Placement preview

placepreview Building placement preview using 50% translucency in Rise of the East

  • Building previews can now be enabled when placing a building for construction. This can be enabled on a global basis with [AudioVisual]->PlacementPreview and then further customized for each building with [SOMEBUILDING]->PlacementPreview.

  • The building placement grid (place.shp) translucency setting can be adjusted via PlacementGrid.Translucency if PlacementPreview is disabled and PlacementGrid.TranslucencyWithPreview if enabled.

  • If using the building’s appropriate Buildup is not desired, customizations allow for you to choose the exact SHP and frame you’d prefer to show as preview through PlacementPreview.Shape, PlacementPreview.ShapeFrame and PlacementPreview.Palette.

    • You can specify theater-specific palettes and shapes by putting three ~ marks to the theater specific part of the filename. ~~~ is replaced with the theater’s three-letter extension.

  • PlacementPreview.ShapeFrame= tag defaults to building’s artmd.ini Buildup entry’s last non-shadow frame. If there is no ‘Buildup’ specified it will instead attempt to default to the building’s normal first frame (animation frames and bibs are not included in this preview).

In rulesmd.ini:

PlacementGrid.Translucency=0            ; translucency level (0/25/50/75)
PlacementGrid.TranslucencyWithPreview=  ; translucency level (0/25/50/75), defaults to [AudioVisual]->PlacementGrid.Translucency

PlacementPreview=no                  ; boolean
PlacementPreview.Translucency=75     ; translucency level (0/25/50/75)

PlacementPreview=yes                 ; boolean
PlacementPreview.Shape=              ; filename - including the .shp extension. If not set uses building's artmd.ini Buildup SHP (based on Building's Image)
PlacementPreview.ShapeFrame=         ; integer, zero-based frame index used for displaying the preview
PlacementPreview.Offset=0,-15,1      ; integer, expressed in X,Y,Z used to alter position preview
PlacementPreview.Remap=yes           ; boolean, does this preview use player remap colors
PlacementPreview.Palette=            ; filename - including the .pal extension
PlacementPreview.Translucency=       ; translucency level (0/25/50/75), defaults to [AudioVisual]->PlacementPreview.Translucency


The PlacementPreview.Palette option is not used when PlacementPreview.Remap=yes is set to yes. This may change in future.

  • This behavior is designed to be toggleable by users. For now you can only do that externally via client or manually.

In RA2MD.ini:

ShowPlacementPreview=yes   ; boolean

Real time timers

  • Timers can now display values in real time, taking game speed into account. This can be enabled with RealTimeTimers=true.

  • By default, time is calculated relative to desired framerate. Enabling RealTimeTimers.Adaptive (always true for unlimited FPS and custom speeds) will calculate time relative to current FPS, accounting for lag.

    • When playing with unlimited FPS (or custom speed above 60 FPS), the timers might constantly change value because of the unstable nature.

  • This option respects custom game speeds.

  • This behavior is designed to be toggleable by users. For now you can only do that externally via client or manually.

In ra2md.ini:

RealTimeTimers=false            ; boolean
RealTimeTimers.Adaptive=false   ; boolean

SuperWeapon ShowTimer sorting

  • You can now sort the timers of superweapons in ascending order from top to bottom according to a given priority value.

In rulesmd.ini

ShowTimer.Priority=0  ; integer

Flashing Technos on selecting

Selecting technos, controlled by player, now may show a flash effect by setting SelectionFlashDuration parameter. Set SelectionFlashDuration=0 to disable it.

In rulesmd.ini:

SelectionFlashDuration=0  ; integer, number of frames

Hotkey Commands

[ ] Display Damage Numbers

  • Switches on/off floating numbers when dealing damage. See this for details.

  • For localization add TXT_DISPLAY_DAMAGE and TXT_DISPLAY_DAMAGE_DESC into your .csf file.

[ ] Dump Object Info

  • Writes currently hovered or last selected object info in log and shows a message. See this for details.

  • For localization add TXT_DUMP_OBJECT_INFO and TXT_DUMP_OBJECT_INFO_DESC into your .csf file.

[ ] Next Idle Harvester

  • Selects and centers the camera on the next TechnoType that is counted via the harvester counter and is currently idle.

  • For localization add TXT_NEXT_IDLE_HARVESTER and TXT_NEXT_IDLE_HARVESTER_DESC into your .csf file.

[ ] Quicksave

  • Save the current singleplayer game.

  • For localization, add TXT_QUICKSAVE, TXT_QUICKSAVE_DESC, TXT_QUICKSAVE_SUFFIX and MSG:NotAvailableInMultiplayer into your .csf file.

    • These vanilla CSF entries will be used: TXT_SAVING_GAME, TXT_GAME_WAS_SAVED and TXT_ERROR_SAVING_GAME.

    • The save should be looks like Allied Mission 25: Esther's Money - QuickSaved

[ ] Toggle Designator Range

  • Switches on/off super weapon designator range indicator. See this for details.

  • For localization add TXT_DESIGNATOR_RANGE and TXT_DESIGNATOR_RANGE_DESC into your .csf file.

[ ] Toggle Digital Display

  • Switches on/off digital gisplay types.

  • For localization add TXT_DIGITAL_DISPLAY and TXT_DIGITAL_DISPLAY_DESC into your .csf file.

Loading screen

  • PCX files can now be used as loadscreen images.

    • You can specify custom loadscreen with Ares tag File.LoadScreen.

    • Campaign loading screen (missionmd.ini->[LS800BkgdName]) can also use PCX image.

    • Observer loading screen can use ls800obs.pcx (or ls640obs.pcx when screen width is 640) for this feature.

  • The loadscreen size can now be different from the default 800x600 one; if the image is bigger than the screen it’s centered and cropped.

    • This feature works in conjunction with CnCNet5 spawner DLL which resizes loadscreen window to actual monitor size and places the image in center. If there’s no CnCNet5 spawner loaded, the window resolution will be always 800x600.

    • Same applies to campaign loading screen (missionmd.ini->[LS800BkgdName]).

  • You can now disable hardcoded black dots that YR engine shows over empty spawn locations, which allows to use prettier and more correctly placed markers that are produced by Map Renderer instead.

In uimd.ini:

DisableEmptySpawnPositions=false  ; boolean


image Extended tooltips used in CnC: Final War

  • Sidebar tooltips can now display extended information about the TechnoType/SWType when hovered over it’s cameo. In addition the low character limit is lifted when the feature is enabled via the corresponding tag, allowing for 1024 character long tooltips.

  • TechnoType’s tooltip would display it’s name, cost, power, build time and description (when applicable).

  • SWType’s tooltip would display it’s name, cost, and recharge time (when applicable).

  • Extended tooltips don’t use TXT_MONEY_FORMAT_1 and TXT_MONEY_FORMAT_2. Instead you can specify cost, power and time labels (displayed before correspoding values) with the corresponding tags. Characters $ U+0024, U+26A1 and U+231A are used by default.

  • Fixed a bug when switching build queue tabs via QWER didn’t make tooltips disappear as they should, resulting in stuck tooltips.

  • The tooltips can now go over the sidebar bounds to accommodate for longer contents. You can control maximum text width with a new tag (paddings are excluded from the number you specify).

In uimd.ini:

ExtendedToolTips=false     ; boolean
CostLabel=<none>           ; CSF entry key
PowerLabel=<none>          ; CSF entry key
PowerBlackoutLabel=<none>  ; CSF entry key
TimeLabel=<none>           ; CSF entry key
MaxWidth=0                 ; integer, pixels

In rulesmd.ini:

[SOMENAME]            ; TechnoType or SWType
UIDescription=<none>  ; CSF entry key
  • The descriptions are designed to be toggleable by users. For now you can only do that externally via client or manually.

In RA2MD.ini:

ToolTipDescriptions=true  ; boolean


Same as with harvester counter, you can download the improved font (v4 and higher; can be found on Phobos supplementaries repo) or draw your own icons.

  • The background color and opacity of tooltips can now be customized globally or per side.

In rulesmd.ini:

ToolTip.Background.Color=0,0,0      ; integer - R,G,B, defaults to [AudioVisual]->ToolTip.Background.Color, which defaults to `0,0,0`
ToolTip.Background.Opacity=100      ; integer, ranged in [0, 100], defaults to [AudioVisual]->ToolTip.Background.Opacity, which defaults to `100`
ToolTip.Background.BlurSize=0.0     ; float, defaults to [AudioVisual]->ToolTip.Background.BlurSize, which defaults to `0.0`


The blur effect is resource intensive. Please make sure you really want to enable this effect, otherwise leave it to 0.0 so it stays disabled.

In RA2MD.ini:

ToolTipBlur=false  ; boolean, whether the blur effect of tooltips will be enabled.


Skip saving game on starting a new campaign

When starting a new campaign, the game automatically saves the game. Now you can decide whether you want that to happen or not.

In RA2MD.ini:

SaveGameOnScenarioStart=true ; boolean