Miscellanous
This page describes every change in Phobos that wasn’t categorized into a proper category yet.
Blowfish Dependency
BLOWFISH.DLL
is no longer required to start the game.
Developer tools
Additional sync logging
Phobos writes additional information to the
SYNC#.txt
log files when a desynchronization occurs such as calls to random number generator functions, facing / target / destination changes etc.
Display Damage Numbers
There’s a new hotkey to show exact numbers of damage dealt on units & buildings. The numbers are shown in red (blue against shields) for damage, and for healing damage in green (cyan against shields). They are shown on the affected units and will move upwards after appearing. Available only if
DebugKeysEnabled
under[GlobalControls]
is set to true inrulesmd.ini
.
Dump Object Info
Object info dump from CnC: Reloaded
There’s a new hotkey to dump selected/hovered object info on press. Available only if
DebugKeysEnabled
under[GlobalControls]
is set to true inrulesmd.ini
.
Frame Step In
There’s a new hotkey to execute the game frame by frame for development usage.
You can switch to frame by frame mode and then use frame step in command to forward 1, 5, 10, 15, 30 or 60 frames by one hit.
Save variables to file
There’s a new hotkey to write all local variables to
locals.ini
and all global variables toglobals.ini
. Available only ifDebugKeysEnabled
under[GlobalControls]
is set to true inrulesmd.ini
.Variables will be also automatically saved to file on scenario end if
[General] -> SaveVariablesOnScenarioEnd=true
is set inrulesmd.ini
.Variable section will use the same name as the mission file name in capital letters, i.e.
[MYCAMPAIGN.MAP]
.Variables will be written as key-value pairs, i.e.
MyVariable=1
.
If an INI file with the same name (
locals.ini
/globals.ini
) doesn’t exist, it will be created. If it exists, all sections will be preserved.
In rulesmd.ini
:
[General]
SaveVariablesOnScenarioEnd=false ; boolean
Semantic locomotor aliases
It’s now possible to write locomotor aliases instead of their CLSIDs in the
Locomotor
tag value. Use the table below to find the needed alias for a locomotor.
Alias |
CLSID |
---|---|
Drive |
|
Hover |
|
Tunnel |
|
Walk |
|
DropPod |
|
Fly |
|
Teleport |
|
Mech |
|
Ship |
|
Jumpjet |
|
Rocket |
|
Note
Chrono
is not a standard Alias, but since the default behavior of using Teleport
will be triggered when the value of Locomotor
is incorrect, the result of the operation will appear as if Chrono
has taken effect.
Insignia Type
It is now possible to define the properties of insignia in an entity, so that all properties in it will be used once it’s applied to a techno.
In rulesmd.ini
:
[InsigniaTypes]
0=SOMEINSIGNIATYPE
[SOMEINSIGNIATYPE] ; InsigniaType
Insignia= ; filename - excluding the .shp extension
Insignia.Rookie= ; filename - excluding the .shp extension
Insignia.Veteran= ; filename - excluding the .shp extension
Insignia.Elite= ; filename - excluding the .shp extension
InsigniaFrame=-1 ; int, frame of insignia shp (zero-based) or -1 for default
InsigniaFrame.Rookie=-1 ; int, frame of insignia shp (zero-based) or -1 for default
InsigniaFrame.Veteran=-1 ; int, frame of insignia shp (zero-based) or -1 for default
InsigniaFrame.Elite=-1 ; int, frame of insignia shp (zero-based) or -1 for default
[SOMETECHNO] ; TechnoType
InsigniaType= ; InsigniaType
InsigniaType.WeaponN= ; InsigniaType
InsigniaType.PassengersN= ; InsigniaType
Game Speed
Single player game speed
It is now possible to change the default (GS4/Fast/30FPS) campaign game speed with
CampaignDefaultGameSpeed
.It is now possible to change the values of single player game speed, by inputing a pair of values. This feature must be enabled with
CustomGS=true
. Only values between 10 and 60 FPS can be consistently achieved.Custom game speed is achieved by periodically manipulating the delay between game frames, thus increasing or decreasing FPS.
CustomGSN.ChangeInterval
describes the frame interval between applying the effect. A value of 2 means “every other frame”, 3 means “every 3 frames” etc. Increase of speedup/slowdown is approximately logarithmic.CustomGSN.ChangeDelay
sets the delay (game speed number) to use everyCustomGSN.ChangeInterval
frames.CustomGSN.DefaultDelay
sets the delay (game speed number) to use on other frames.Using game speed 6 (Fastest) in either
CustomGSN.ChangeDelay
orCustomGSN.DefaultDelay
allows to set FPS above 60.However, the resulting FPS may vary on different machines.
In rulesmd.ini
:
[General]
CustomGS=false ; boolean
CustomGSN.ChangeInterval=-1 ; integer >= 1
CustomGSN.ChangeDelay=N ; integer between 0 and 6
CustomGSN.DefaultDelay=N ; integer between 0 and 6
; where N = 0, 1, 2, 3, 4, 5, 6
In RA2MD.INI
:
[Phobos]
CampaignDefaultGameSpeed=4 ; integer
Note
Currently there is no way to set desired FPS directly. Use the generator below to get required values. The generator supports values from 10 to 60.
Click to show the generator
Enter desired FPS
Results (remember to replace N with your game speed number!):
INI
Include files
Note
This feature must be enabled via a command line argument -Include
.
INI files can now include other files (merge them into self) using
[$Include]
section.[$Include]
section contains a list of files to read and include. Files can be directly in the Red Alert 2 directory or in a loaded MIX file.Files will be added in the same order they are defined. Index of each file must be unique among all included files.
Inclusion can be nested recursively (included files can include files further). Recursion is depth-first (before including next file, check if the current one includes anything).
When the same entry exists in two files, then the one read later will overwrite the value.
This feature can be used in any INI file, be it
rulesmd.ini
,artmd.ini
,soundmd.ini
, map file or anything else.
In any file:
[$Include]
0=somefile.ini ; file name
Warning
Due to a technical issue, there is a chance that the first line of a included file will be skipped! To prevent this, included files should start with an empty line or a comment.
Warning
When this feature is enabled, [#include]
(equivalent Ares feature) is disabled because of technical incompatibilities.
Section inheritance
Note
This feature must be enabled via a command line argument -Inheritance
.
You can now make sections (children) inherit entries from other sections (parents) with
$Inherits
entry.When a section has no value set for an entry (or an entry is missing), the game will attempt to use parent’s value. If no value is found, only then the default will be used.
When multiple parents are specified, the order of inheritance is “first come, first served”, looking up comma separated parents from left to right.
Inheritance can be nested recursively (parent sections can have their own parents). Recursion is depth-first (before inheriting from the next parent, check if the current parent has parents).
This feature can be used in any INI file, be it
rulesmd.ini
,artmd.ini
,soundmd.ini
, map file or anything else.
In any file:
[PARENT1SECTION]
[PARENT2SECTION]
[CHILDSECTION]
$Inherits=PARENT1SECTION,PARENT2SECTION... ; section names
Warning
When this feature is enabled, the Ares equivalent of $Inherits
(undocumented) is disabled!
Warning
This feature may noticeably increase game loading time, depending on the size of game rules and used hardware.
Turning off/on in-game exception handling
You can turn on/off the exception handler of the game’s main loop using the following command line arg: -ExceptionHandler=boolean
where boolean
is (true|false|yes|no|1|0)
.
Note
In debug builds the in-game exception handler is turned off by default.
Warning
The CnCNet 5 spawner uses the main loop exception handler for fixes. If you get any issues (crashes, bugs) in combination with that then please first test with the exception handler enabled.
Player colors
Unlimited skirmish colors
It is now possible to have an unlimited number of skirmish/multiplayer player colors, as opposed to 8 in Yuri’s Revenge and 16 with Ares.
This feature must be enabled with
SkirmishUnlimitedColors=true
in[General]
section of game rules.When enabled, the game will treat color indices passed from spawner as indices for
[Colors]
section entries.In example, with original rules, index 6 will correspond to color
Orange=25,230,255
.
In rulesmd.ini
:
[General]
SkirmishUnlimitedColors=false ; boolean
Note
This feature should only be used if you use a spawner/outside client (i.e. CNCNet client). Using it in the original YR launcher will produce undesireable effects.
Warning
Due to technical incompatibilities, enabling this feature disables Ares’ Customizable Dropdown Colors.