R3vo/Sandbox – User

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
mNo edit summary
Line 1: Line 1:
{{TOC|side}}
{{TOC|side}}
== Introduction ==
This article deals with the '''server.armaprofile''', describing all the visual and difficulty settings in ArmA, like friendly and enemy AI quality, HUD, crosshair, 3rd person view, clock indicator and so on.
== Extension ==
{| class="wikitable"
{| class="wikitable"
! colspan=5 |Arma 3 Server Configuration Overview
!Game !! Extension
|-
|-
! Topic !! colspan=4 | Pages
| {{arma1}} || .ArmAProfile
|-
|-
! Setup
| {{arma2}} || .ArmA2Profile
| [[Arma 3: Dedicated Server]] || [[Arma 3: Dedicated Server (Chinese Simplified)]] || [[Arma 3: Dedicated Server (Chinese Traditional)]]
|-
|-
! Files
| {{arma2oa}} || .ArmA2OAProfile
| [[Arma 3: Server Config File]] || [[basic.cfg]] || [[server.armaprofile]]
|-
|-
! Other
| {{arma3}} || .Arma3Profile
| [[Multiplayer Server Commands]] || [[Arma 3: Mission voting]] || [[Arma 3: Headless Client]]
|}
|}


This article deals with the '''basic.cfg''', the name means nothing, and can be called anything. The real name is determined by the [[Arma 3: Startup Parameters|-cfg]] command line option when launching the dedicated server or the game executable - in other words '''it also works for clients'''. When you do not provide a name, the default <tt>Arma3.cfg</tt> file is loaded located in the user profile folder.
== Location ==
 
The file's location is different on each operating system:
 
=== Windows ===


In this configuration file you should configure your server's connectivity, mainly for performance tuning.
The default profile named after the system user can be found at:


= Performance Tuning Options =
* XP EN: <tt>C:\Documents and Settings\%UserName%\My Files\ArmA</tt>
* XP DE: <tt>C:\Dokumente und Einstellungen\%UserName%\Eigene Dateien\ArmA</tt>
* Vista/Win7/8/10: <tt>C:\Users\%UserName%\Documents\ArmA</tt>


There are also some parameters that can be used to fine-tune network performance. You can add following entries to arma.cfg (the main Armed Assault configuration file)
User created profiles with a different naming are found at:


{| class="wikitable"
* XP EN: <tt>C:\Documents and Settings\%UserName%\My Files\ArmA Other Profiles</tt>
|-
* XP DE: <tt>C:\Dokumente und Einstellungen\%UserName%\Eigene Dateien\ArmA Other Profiles</tt>
! Parameter !! Default !! Description
* Vista/Win7/8/10: <tt>C:\Users\%UserName%\Documents\Arma - Other Profiles</tt>
|-
 
| <tt>MaxMsgSend = 128</tt> || <tt>128</tt> || aximum number of packets (aggregate messages) that can be sent in one simulation cycle ("frame"). Increasing this value can decrease lag on high upload bandwidth servers.
==== Profile name ====
|-
 
| <tt>MaxSizeGuaranteed = 512</tt> || <tt>512</tt> || Maximum size (payload) of guaranteed packet in bytes (without headers). Small messages are packed to larger packets (aggregate messages). Guaranteed packets (aggregate messages) are used for non-repetitive events like shooting.
In there is a folder and within filename based on your profile name:
|-
 
| <tt>MaxSizeNonguaranteed = 256</tt> || <tt>256</tt> || Maximum size (payload) of non-guaranteed packet in bytes (without headers). Small messages are packed to larger packets (aggregate messages).  Non-guaranteed packets (aggregate messages) are used  for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag.
\ArmA\'''MyProfileName'''\'''MyProfileName'''.ArmAProfile
|-
 
| <tt>MinBandwidth = 131072</tt> || <tt>131072</tt> || Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded.
You can define the profile to be loaded with the [[Arma 2: Startup Parameters|-name]] parameter.
|-
 
| <tt>MaxBandwidth = 200000 || <tt>UNKOWN</tt> || Bandwidth the server is guaranteed to never have (in bps). This value helps the server to estimate bandwidth available.
==== Define a different location ====
|-
 
| <tt>MinErrorToSend = 0.001</tt> || <tt>0.001</tt> || Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother at the trade off of increased network traffic.
You can specify the location by using the [[Arma 3 Startup Parameters#|-profiles]] parameter.
* Example: A unit 1km (distance d = 1km) from the player with MinErrorToSend = 0.001 (METS = 0.001) would send an update when that unit moves 50m (error value E = 50).
 
* Formula: d = sqrt[(20E)/METS] ; 1000 = sqrt[(20E)/0.001] -> E = 50
For example start the server with
* In reality, other factors about the object are taken into effect as well according to a weighted scale.
arma_server.exe -profiles=D:\ArmA\Users\ -name=server
* When the error value (E) between the master copy of an object (whoever "owns" the object) and a client's perceived/simulated copy of the same object >= MinErrorToSend (METS), a network update message will be sent for it.
 
|-
You can find your file in
| <tt>MinErrorToSendNear = 0.01</tt> || <tt>0.01</tt> || Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well.
D:\ArmA\Users\server\server.armaProfile
* When using MinErrorToSend alone, for small values of distance (d) the frequency of high errors (E) would cause excessive network messages that are not necessary but could negatively impact FPS.
 
* Too large of a value for METSN can prevent timely desirable network update messages which can result in units appearing to "warp"
=== Linux ===
[http://forums.bistudio.com/showthread.php?125396-Arma-2-OA-beta-build-84984&p=2103305&highlight=minerrortosend#post2103305 Detailed explanation of METS and METSN by Suma]
 
|-
The name depends upon the [[Arma 3 Startup Parameters#Profile Options|-name]] parameter when starting the Arma server.
! colspan="3" | Networking Tuning Options
Having started the server with "./server -name=server" (-profiles seems to be useless on Linux) you'll find it as a subfolder of your arma-server directory, for example "/usr/home/arma-server/server/server.armaprofile".
|-
 
|
If you're not using the <tt>-name</tt> parameter, the default name "player" will be used and you'll find the Arma profile in <tt>player/player.armaprofile</tt>.
  class sockets
 
  {
== Example Configuration File ==
    maxPacketSize = 1400;
 
  };
The server has less values compared to a client version.
| <tt>1400</tt>
 
| Maximal size of packet sent over network. This '''can be set for both''' client-to-server and server-to-client(s) independently''! {{Feature|important|Only use in the case your router or ISP enforces lower packet size and you have connectivity issues with the game.}} ''Desync might happen if used '''MaxSizeGuaranteed/MaxSizeNonguaranteed values over the maxPacketSize'''.  
=== Server ===
|-
 
| <tt>MaxCustomFileSize = 1024</tt> || <tt>UNKNOWN</tt> || Users with custom face or custom sound larger than this size are kicked when trying to connect.
==== {{arma1}} ====
|}
<spoiler>
<syntaxhighlight lang="cpp">
class Difficulties
{
class regular // Displayed as "Cadet"
{
class Flags
{
// These are the settings. Set a value to 0 to disable the feature, or set it to 1 to enable it.
Armor=1; // Gives you improved body armor, tank armor etc
FriendlyTag=1; // Displays information on friendly units. ONLY WORKS WITH 'Weaponcursor=0', eg crosshair on.
EnemyTag=1; // Displays information on enemy units
HUD=1; // Shows you leaders location and your position in formation
HUDPerm=1; // Shows HUD permanently
HUDWp=1; // Shows Waypoints right after they're ordered to you
HUDWpPerm=1; // Shows Waypoints permanently
WeaponCursor=1; // Shows the crosshair for your weapon
AutoAim=1; // Enables auto aim when you're not looking through your weapon's scope. Also works with crosshair off
AutoGuideAT=1; // AT missiles will be automatically guided to their target. If 0, player has to lock onto the target.
3rdPersonView=1; // This turns 3rd(third) person view and group leader view on or off. Please never talk of this as "3D view" - ArmA is not an arcade game !
ClockIndicator=1; // Displays the clock indicator on the left of your screen when giving/receiving orders like "At 11 o'clock, enemy man at 200 meters"
Map=1; // Shows symbols for all objects known to your group on the map. This will NOT disable the map itself !
Tracers=1; // Displays tracers even of small arms that in real life would not have tracers
AutoSpot=1; // If you're close enough to an enemy, you'll report it without right-clicking
UltraAI=0; // Enables some kind of super AI that hears and sees more and has better tactics. This is for both friendly and enemy sides.
UnlimitedSaves=1; // Enables saving permanently. For single player missions. But you then can only load the last save state.
DeathMessages=1; // (1.09 and later) Displays "XXX was killed by YYY" messages in multiplayer
NetStats=1; // (1.09 and later) Enables the scoreboard functionality in MP
VonID=1; // (1.09 and later) When using VoN, display the name of the player speaking.
};
// These are the skills. Value may range from 0.000000 to 1.000000
skillFriendly=0.350000; // Friendly tactics skill
skillEnemy=0.350000; // Enemy tactics skill
precisionFriendly=0.350000; // Friendly shooting precision
precisionEnemy=0.350000; // Enemy shooting precision
};
class veteran // Most of the options from above are not available, because they're off by default.
{
// Also soldiers/vehicles die sooner upon damage (have no armor or body armor).
class Flags
{
HUD=1; // Shows you leaders location and your position in formation
HUDWp=1; // Shows Waypoints right after they're ordered to you
HUDWpPerm=0; // Shows Waypoints permanently
WeaponCursor=1; // Shows the crosshair for your weapon
ClockIndicator=1; // Displays the clock indicator on the left of your screen when giving/receiving orders like "At 11 o'clock, enemy man at 200 meters"
3rdPersonView=1; // This turns 3rd(third) person view and group leader view on or off. Please never talk of this as "3D view" - ArmA is not an arcade game !
Tracers=1; // Displays tracers even of small arms that in real life would not have tracers
UltraAI=0; // Enables some kind of super AI that hears and sees more and has better tactics. This is for both friendly and enemy sides.
 
DeathMessages=1; // (1.09 and later) Displays "XXX was killed by YYY" messages in multiplayer
NetStats=1; // (1.09 and later) Enables the scoreboard functionality in MP
VonID=0; // (1.09 and later) When using VoN, display the name of the player speaking.
};
// These are the skills. Value may range from 0.000000 to 1.000000
skillFriendly=0.850000;
skillEnemy=0.850000;
precisionFriendly=0.850000;
precisionEnemy=0.850000;
};
};
</syntaxhighlight>
</spoiler>
 
==== {{arma2}} ====
 
This is how the default difficulty settings part of the server's .arma2profile file would look:<br>
<spoiler>
<syntaxhighlight lang="cpp">
class Difficulties
{
class Recruit
{
class Flags
{
3rdPersonView = 1;
armor = 1;
autoAim = 0;
autoGuideAT = 1;
autoSpot = 1;
clockIndicator = 1;
deathMessages = 1;
enemyTag = 0;
friendlyTag = 1;
hud = 1;
hudGroupInfo = 1;
hudPerm = 1;
hudWp = 1;
hudWpPerm = 1;
map = 1;
netStats = 1;
tracers = 1;
ultraAI = 0;
unlimitedSaves = 1;
vonID = 1;
weaponCursor = 1;
};
skillFriendly = 1;
precisionFriendly = 1;
skillEnemy = 0.55;
precisionEnemy = 0.3;
};
class Regular
{
class Flags
{
3rdPersonView = 1;
armor = 1;
autoAim = 0;
autoGuideAT = 1;
autoSpot = 1;
clockIndicator = 1;
deathMessages = 1;
enemyTag = 0;
friendlyTag = 1;
hud = 1;
hudGroupInfo = 1;
hudPerm = 1;
hudWp = 1;
hudWpPerm = 1;
map = 1;
netStats = 1;
tracers = 1;
ultraAI = 0;
unlimitedSaves = 1;
vonId = 1;
weaponCursor = 1;
};
skillFriendly = 1;
precisionFriendly = 1;
skillEnemy = 0.7;
precisionEnemy = 0.5;
};
class Veteran
{
class Flags
{
3rdPersonView = 1;
armor = 0; // Cannot be changed
autoAim = 0; // Cannot be changed
autoGuideAT = 0; // Cannot be changed
autoSpot = 0; // Cannot be changed
clockIndicator = 0; // Cannot be changed
deathMessages = 1;
enemyTag = 0; // Cannot be changed
friendlyTag = 0; // Cannot be changed
hud = 1;
hudGroupInfo = 0;
hudPerm = 0; // Cannot be changed
hudWp = 0; // Cannot be changed
hudWpPerm = 0; // Cannot be changed
map = 0; // Cannot be changed
netStats = 1;
tracers = 0; // Cannot be changed
ultraAI = 0;
unlimitedSaves = 0; // Cannot be changed
vonId = 0;
weaponCursor = 1;
};
skillFriendly = 1;
precisionFriendly = 1;
skillEnemy = 0.9;
precisionEnemy = 0.75;
};
class Mercenary
{
class Flags
{
3rdPersonView = 0; // Cannot be changed
armor = 0; // Cannot be changed
autoAim = 0; // Cannot be changed
autoGuideAT = 0; // Cannot be changed
autoSpot = 0; // Cannot be changed
clockIndicator = 0; // Cannot be changed
deathMessages = 0;
enemyTag = 0; // Cannot be changed
friendlyTag = 0; // Cannot be changed
hud = 0; // Cannot be changed
hudGroupInfo = 0; // Cannot be changed
hudPerm = 0; // Cannot be changed
hudWp = 0; // Cannot be changed
hudWpPerm = 0; // Cannot be changed
map = 0; // Cannot be changed
netStats = 0;
tracers = 0; // Cannot be changed
ultraAI = 0;
unlimitedSaves = 0; // Cannot be changed
vonID = 0;
weaponCursor = 0; // Cannot be changed
};
skillFriendly = 1;
precisionFriendly = 1;
skillEnemy = 1;
precisionEnemy = 1;
};
};
</syntaxhighlight>
</spoiler>


= Example Configuration File =
==== {{arma2oa}} ====
<spoiler>
<syntaxhighlight lang="cpp">
class Difficulties
{
class Recruit
{
class Flags
{
3rdPersonView = 1;
armor = 1;
autoAim = 0;
autoGuideAT = 1;
autoSpot = 1;
cameraShake = 0;
clockIndicator = 1;
deathMessages = 1;
enemyTag = 0;
friendlyTag = 1;
hud = 1;
hudGroupInfo = 1;
hudPerm = 1;
hudWp = 1;
hudWpPerm = 1;
map = 1;
netStats = 1;
tracers = 1;
ultraAI = 0;
unlimitedSaves = 1;
vonID = 1;
weaponCursor = 1;
};
skillFriendly = 1;
precisionFriendly = 1;
skillEnemy = 0.55;
precisionEnemy = 0.3;
};
class Regular
{
class Flags
{
3rdPersonView = 1;
armor = 1;
autoAim = 0;
autoGuideAT = 1;
autoSpot = 1;
cameraShake = 1;
clockIndicator = 1;
deathMessages = 1;
enemyTag = 0;
friendlyTag = 1;
hud = 1;
hudGroupInfo = 1;
hudPerm = 1;
hudWp = 1;
hudWpPerm = 1;
map = 1;
netStats = 1;
tracers = 1;
ultraAI = 0;
unlimitedSaves = 1;
vonId = 1;
weaponCursor = 1;
};
skillFriendly = 1;
precisionFriendly = 1;
skillEnemy = 0.7;
precisionEnemy = 0.5;
};
class Veteran
{
class Flags
{
3rdPersonView = 1;
armor = 0; // Cannot be changed
autoAim = 0; // Cannot be changed
autoGuideAT = 0; // Cannot be changed
autoSpot = 0; // Cannot be changed
cameraShake = 1;
clockIndicator = 0;
deathMessages = 1;
enemyTag = 0; // Cannot be changed
friendlyTag = 0; // Cannot be changed
hud = 1;
hudGroupInfo = 0;
hudPerm = 0; // Cannot be changed
hudWp = 1;
hudWpPerm = 0; // Cannot be changed
map = 0;
netStats = 1;
tracers = 0; // Cannot be changed
ultraAI = 0;
unlimitedSaves = 0;
vonId = 0;
weaponCursor = 1;
};
skillFriendly = 1;
precisionFriendly = 1;
skillEnemy = 0.9;
precisionEnemy = 0.75;
};
class Mercenary
{
class Flags
{
3rdPersonView = 0; // Cannot be changed
armor = 0; // Cannot be changed
autoAim = 0; // Cannot be changed
autoGuideAT = 0; // Cannot be changed
autoSpot = 0; // Cannot be changed
cameraShake = 1; // Cannot be changed
clockIndicator = 0; // Cannot be changed
deathMessages = 0;
enemyTag = 0; // Cannot be changed
friendlyTag = 0; // Cannot be changed
hud = 0; // Cannot be changed
hudGroupInfo = 0; // Cannot be changed
hudPerm = 0; // Cannot be changed
hudWp = 0; // Cannot be changed
hudWpPerm = 0; // Cannot be changed
map = 0; // Cannot be changed
netStats = 0;
tracers = 0; // Cannot be changed
ultraAI = 0;
unlimitedSaves = 0; // Cannot be changed
vonID = 0;
weaponCursor = 0; // Cannot be changed
};
skillFriendly = 1;
precisionFriendly = 1;
skillEnemy = 1;
precisionEnemy = 1;
};
};
</syntaxhighlight>
</spoiler>


<pre>
==== {{arma3}} ====
MinBandwidth = 131072; // Bandwidth the server is guaranteed to have (in bps). This value helps server to estimate bandwidth available. Increasing it to too optimistic values can increase lag and CPU load, as too many messages will be sent but discarded. Default: 131072
MaxBandwidth = 10000000000; // Bandwidth the server is guaranteed to never have. This value helps the server to estimate bandwidth available.


MaxMsgSend = 128; // Maximum number of messages that can be sent in one simulation cycle. Increasing this value can decrease lag on high upload bandwidth servers. Default: 128
'''Since 1.58:'''<br>
MaxSizeGuaranteed = 512; // Maximum size of guaranteed packet in bytes (without headers). Small messages are packed to larger frames. Guaranteed messages are used for non-repetitive events like shooting. Default: 512
One of the main changes that came with 1.58 is that the difficulty levels were transformed to true presets (Recruit, Regular, Veteran).<br>
MaxSizeNonguaranteed = 256; // Maximum size of non-guaranteed packet in bytes (without headers). Non-guaranteed messages are used for repetitive updates like soldier or vehicle position. Increasing this value may improve bandwidth requirement, but it may increase lag. Default: 256
Each preset has exactly defined value for each difficulty option. If any of the options doesn't match the preset, the preset is changed to Custom. The particular flags stored in profile are only for the Custom preset, since Recruit, Regular and Veteran are fixed ones and predefined in game's data in <tt>CfgDifficultyPresets</tt> config class.
* Documentation of presets and data config as well as a list of the most significant changes in 1.58: [[Arma 3: Difficulty Settings]]
* Related forum thread: [https://forums.bistudio.com/topic/188661-difficulty-overhaul/ Difficulty Overhaul]<br><br>


MinErrorToSend = 0.001; // Minimal error to send updates across network. Using a smaller value can make units observed by binoculars or sniper rifle to move smoother. Default: 0.001
==== Server Difficulty Example ====
MinErrorToSendNear = 0.01; // Minimal error to send updates across network for near units. Using larger value can reduce traffic sent for near units. Used to control client to server traffic as well. Default: 0.01
<syntaxhighlight lang="cpp">
class DifficultyPresets
{
class CustomDifficulty
{
class Options
{
/* Simulation */


MaxCustomFileSize = 0; // (bytes) Users with custom face or custom sound larger than this size are kicked when trying to connect.
reducedDamage = 0; // Reduced damage
</pre>


= Notes and Comments=
/* Situational awareness */
The greatest level of optimization can be achieved by setting the MaxMsgSend and MinBandwidth parameters. For a server with 1024 kbps we recommend the following values:
    MaxMsgSend = 256;
    MinBandwidth = 768000;
While connected to the dedicated server, you can use the [[Multiplayer Server Commands|admin command]] {{ic|#monitor}} to monitor server resource usage. (You have to be logged in as or voted as game admin to do this.) The server never runs at more than 50 fps. When running slower, it always uses all available CPU processing power to maintain the smoothest possible gameplay. When running at less than 20 fps, you can consider the server overloaded – the mission currently played is probably too complex for given server. If you see the server is not using bandwidth that it could use, you can try increasing values ''MaxMsgSend'' and ''MinBandwidth''.


----
groupIndicators = 0; // Group indicators (0 = never, 1 = limited distance, 2 = always)
Official Response to the meaning of a Simulation Cycle
friendlyTags = 0; // Friendly name tags (0 = never, 1 = limited distance, 2 = always)
{{Feature|quote| "Simulation cycle" is what makes "frame" in a normal game.
enemyTags = 0; // Enemy name tags (0 = never, 1 = limited distance, 2 = always)
However, as there is no rendering on server, we cannot talk
detectedMines = 0; // Detected mines (0 = never, 1 = limited distance, 2 = always)
about frames, and we talk about simulation cycles instead.
commands = 1; // Commands (0 = never, 1 = fade out, 2 = always)
One cycle break down approximately to:
waypoints = 1; // Waypoints (0 = never, 1 = fade out, 2 = always)
tacticalPing = 0; // Tactical ping (0 = disable, 1 = enable)
simulate all units AI
simulate all units movement including collisions and physics
detect visibility between units
simulate scripts and FSMs
receive network updates about remote entities
send network updates about what has changed to the server (if on client) or to other clients (if on server)|BI Forums|http://forums.bistudio.com/showthread.php?p{{=}}1363400}}


== Related comments by Suma ==
/* Personal awareness */


'''Does a 10x times lower MinErrorToSend mean also 10x times the traffic from the server?'''
weaponInfo = 2; // Weapon info (0 = never, 1 = fade out, 2 = always)
stanceIndicator = 2; // Stance indicator (0 = never, 1 = fade out, 2 = always)
staminaBar = 0; // Stamina bar
weaponCrosshair = 0; // Weapon crosshair
visionAid = 0; // Vision aid


In extreme case (provided you have enough bandwidth available) it might mean 10x more traffic. I think it should be easy to measure the effect, using #monitor command or external tools.
/* View */


'''Do lower MinErrorToSend take more CPU processing on the server?'''
thirdPersonView = 0; // 3rd person view (0 = disabled, 1 = enabled, 2 = enabled for vehicles only (Since  Arma 3 v1.99))
cameraShake = 1; // Camera shake


Yes, some more processing, as there are more messages to handle, but I do not expect anything major.
/* Multiplayer */


'''Do basic.cfg settings on clients also have an effect? Like for the player entity itself or the AI under his command (AI local to the player)?'''
scoreTable = 1; // Score table
deathMessages = 1; // Killed by
vonID = 1; // VoN ID


Yes, it affects what client sends to a server as well, but in a different way (the error computation is different, it is not considering any camera position).
/* Misc */


'''Is that correct, that every message contains motion update (or other update) ONLY FOR ONE object? So when we have 1000 AIs near player, and we wish to have update 50x per second for all AIs, so we must set MaxMsgSend to higher than 1000?'''
mapContent = 0; // Extended map content
autoReport = 0; // (former autoSpot) Automatic reporting of spotted enemied by players only. This doesn't have any effect on AIs.
multipleSaves = 0; // Multiple saves
};
// aiLevelPreset defines AI skill level and is counted from 0 and can have following values: 0 (Low), 1 (Normal), 2 (High), 3 (Custom).
// when 3 (Custom) is chosen, values of skill and precision are taken from the class CustomAILevel.
aiLevelPreset = 3;
};


The aggregate message contains multiple logical messages, which are related to multiple objects.
class CustomAILevel
{
skillAI = 0.5;
precisionAI = 0.5;
};
};
</syntaxhighlight>


'''Related comment by Suma'''
== See Also ==


MinErrorToSendNear is used differently from MinErrorToSend.
* [[ArmA: Server configuration|Server Configuration]]
* [[Arma 3: Difficulty Settings|Difficulty Menu]]
When computing the error for MinErrorToSend, the error is divided by (distance_in_m/20m)^2.
* [[Armed Assault:Dedicated Server]]
Because of this, when MinErrorToSend is small enough so that distant units move smooth,the near units move "supersmooth" (the updates are sent even when the movement is so smooth, it makes no gameplay difference).
* [[Operation Flashpoint:Dedicated Server]]
MinErrorToSendNear gives a way to give another absolute (not distance dependent) limit ("never send update smaller than 1 cm, even if MinErrorToSend would allow it to be sent").


[[Category:Startup Parameters]]
{{GameCategory|arma3|Multiplayer}}
{{GameCategory|arma3|Multiplayer}}
{{GameCategory|arma2|Multiplayer}}
{{GameCategory|arma1| Multiplayer}}

Revision as of 10:17, 1 June 2021

Introduction

This article deals with the server.armaprofile, describing all the visual and difficulty settings in ArmA, like friendly and enemy AI quality, HUD, crosshair, 3rd person view, clock indicator and so on.


Extension

Game Extension
Armed Assault .ArmAProfile
Arma 2 .ArmA2Profile
Arma 2: Operation Arrowhead .ArmA2OAProfile
Arma 3 .Arma3Profile

Location

The file's location is different on each operating system:

Windows

The default profile named after the system user can be found at:

  • XP EN: C:\Documents and Settings\%UserName%\My Files\ArmA
  • XP DE: C:\Dokumente und Einstellungen\%UserName%\Eigene Dateien\ArmA
  • Vista/Win7/8/10: C:\Users\%UserName%\Documents\ArmA

User created profiles with a different naming are found at:

  • XP EN: C:\Documents and Settings\%UserName%\My Files\ArmA Other Profiles
  • XP DE: C:\Dokumente und Einstellungen\%UserName%\Eigene Dateien\ArmA Other Profiles
  • Vista/Win7/8/10: C:\Users\%UserName%\Documents\Arma - Other Profiles

Profile name

In there is a folder and within filename based on your profile name:

\ArmA\MyProfileName\MyProfileName.ArmAProfile

You can define the profile to be loaded with the -name parameter.

Define a different location

You can specify the location by using the -profiles parameter.

For example start the server with

arma_server.exe -profiles=D:\ArmA\Users\ -name=server

You can find your file in

D:\ArmA\Users\server\server.armaProfile

Linux

The name depends upon the -name parameter when starting the Arma server. Having started the server with "./server -name=server" (-profiles seems to be useless on Linux) you'll find it as a subfolder of your arma-server directory, for example "/usr/home/arma-server/server/server.armaprofile".

If you're not using the -name parameter, the default name "player" will be used and you'll find the Arma profile in player/player.armaprofile.

Example Configuration File

The server has less values compared to a client version.

Server

Armed Assault

class Difficulties
{
	class regular				// Displayed as "Cadet"
	{
		class Flags
		{
			// These are the settings. Set a value to 0 to disable the feature, or set it to 1 to enable it.
			
			Armor=1;		// Gives you improved body armor, tank armor etc
			
			FriendlyTag=1;		// Displays information on friendly units. ONLY WORKS WITH 'Weaponcursor=0', eg crosshair on.
			EnemyTag=1;		// Displays information on enemy units
			
			HUD=1;			// Shows you leaders location and your position in formation
			HUDPerm=1;		// Shows HUD permanently
			
			HUDWp=1;		// Shows Waypoints right after they're ordered to you
			HUDWpPerm=1;		// Shows Waypoints permanently
			
			WeaponCursor=1;		// Shows the crosshair for your weapon
			AutoAim=1;		// Enables auto aim when you're not looking through your weapon's scope. Also works with crosshair off
			AutoGuideAT=1;		// AT missiles will be automatically guided to their target. If 0, player has to lock onto the target.
			
			3rdPersonView=1;	// This turns 3rd(third) person view and group leader view on or off. Please never talk of this as "3D view" - ArmA is not an arcade game !
			ClockIndicator=1;	// Displays the clock indicator on the left of your screen when giving/receiving orders like "At 11 o'clock, enemy man at 200 meters"
			Map=1;			// Shows symbols for all objects known to your group on the map. This will NOT disable the map itself !
			Tracers=1;		// Displays tracers even of small arms that in real life would not have tracers
			
			AutoSpot=1;		// If you're close enough to an enemy, you'll report it without right-clicking
			UltraAI=0;		// Enables some kind of super AI that hears and sees more and has better tactics. This is for both friendly and enemy sides.
			
			UnlimitedSaves=1;	// Enables saving permanently. For single player missions. But you then can only load the last save state.
			
			DeathMessages=1;	// (1.09 and later) Displays "XXX was killed by YYY" messages in multiplayer
			NetStats=1;		// (1.09 and later) Enables the scoreboard functionality in MP
			VonID=1;		// (1.09 and later) When using VoN, display the name of the player speaking.
		};
		
		// These are the skills. Value may range from 0.000000 to 1.000000
		skillFriendly=0.350000;		// Friendly tactics skill
		skillEnemy=0.350000;		// Enemy tactics skill
		precisionFriendly=0.350000;	// Friendly shooting precision
		precisionEnemy=0.350000;	// Enemy shooting precision
	};
	
	
	class veteran			// Most of the options from above are not available, because they're off by default.
	{
		// Also soldiers/vehicles die sooner upon damage (have no armor or body armor).
		class Flags
		{
			HUD=1;			// Shows you leaders location and your position in formation
			HUDWp=1;		// Shows Waypoints right after they're ordered to you 
			HUDWpPerm=0;		// Shows Waypoints permanently
			WeaponCursor=1;		// Shows the crosshair for your weapon
			ClockIndicator=1;	// Displays the clock indicator on the left of your screen when giving/receiving orders like "At 11 o'clock, enemy man at 200 meters"
			3rdPersonView=1;	// This turns 3rd(third) person view and group leader view on or off. Please never talk of this as "3D view" - ArmA is not an arcade game !
			Tracers=1;		// Displays tracers even of small arms that in real life would not have tracers
			UltraAI=0;		// Enables some kind of super AI that hears and sees more and has better tactics. This is for both friendly and enemy sides.

			DeathMessages=1;	// (1.09 and later) Displays "XXX was killed by YYY" messages in multiplayer
			NetStats=1;		// (1.09 and later) Enables the scoreboard functionality in MP
			VonID=0;		// (1.09 and later) When using VoN, display the name of the player speaking.
		};
		
		// These are the skills. Value may range from 0.000000 to 1.000000
		skillFriendly=0.850000;
		skillEnemy=0.850000;
		precisionFriendly=0.850000;
		precisionEnemy=0.850000;
	};
};
↑ Back to spoiler's top

Arma 2

This is how the default difficulty settings part of the server's .arma2profile file would look:

class Difficulties
{
	class Recruit
	{
		class Flags
		{
			3rdPersonView = 1;
			armor = 1;
			autoAim = 0;
			autoGuideAT = 1;
			autoSpot = 1;
			clockIndicator = 1;
			deathMessages = 1;
			enemyTag = 0;
			friendlyTag = 1;
			hud = 1;
			hudGroupInfo = 1;
			hudPerm = 1;
			hudWp = 1;
			hudWpPerm = 1;
			map = 1;
			netStats = 1;
			tracers = 1;
			ultraAI = 0;
			unlimitedSaves = 1;
			vonID = 1;
			weaponCursor = 1;
		};
		skillFriendly = 1;
		precisionFriendly = 1;
		skillEnemy = 0.55;
		precisionEnemy = 0.3;
	};
	class Regular
	{
		class Flags
		{
			3rdPersonView = 1;
			armor = 1;
			autoAim = 0;
			autoGuideAT = 1;
			autoSpot = 1;
			clockIndicator = 1;
			deathMessages = 1;
			enemyTag = 0;
			friendlyTag = 1;
			hud = 1;
			hudGroupInfo = 1;
			hudPerm = 1;
			hudWp = 1;
			hudWpPerm = 1;
			map = 1;
			netStats = 1;
			tracers = 1;
			ultraAI = 0;
			unlimitedSaves = 1;
			vonId = 1;
			weaponCursor = 1;
		};
		skillFriendly = 1;
		precisionFriendly = 1;
		skillEnemy = 0.7;
		precisionEnemy = 0.5;
	};
	class Veteran
	{
		class Flags
		{
			3rdPersonView = 1;
			armor = 0;		// Cannot be changed
			autoAim = 0;		// Cannot be changed
			autoGuideAT = 0;	// Cannot be changed
			autoSpot = 0;		// Cannot be changed
			clockIndicator = 0;	// Cannot be changed
			deathMessages = 1;
			enemyTag = 0;		// Cannot be changed
			friendlyTag = 0;	// Cannot be changed
			hud = 1;
			hudGroupInfo = 0;
			hudPerm = 0;		// Cannot be changed
			hudWp = 0;		// Cannot be changed
			hudWpPerm = 0;		// Cannot be changed
			map = 0;		// Cannot be changed
			netStats = 1;
			tracers = 0;		// Cannot be changed
			ultraAI = 0;
			unlimitedSaves = 0;	// Cannot be changed
			vonId = 0;
			weaponCursor = 1;
		};
		skillFriendly = 1;
		precisionFriendly = 1;
		skillEnemy = 0.9;
		precisionEnemy = 0.75;
	};
	class Mercenary
	{
		class Flags
		{
			3rdPersonView = 0;	// Cannot be changed
			armor = 0;		// Cannot be changed
			autoAim = 0;		// Cannot be changed
			autoGuideAT = 0;	// Cannot be changed
			autoSpot = 0;		// Cannot be changed
			clockIndicator = 0;	// Cannot be changed
			deathMessages = 0;
			enemyTag = 0;		// Cannot be changed
			friendlyTag = 0;	// Cannot be changed
			hud = 0;		// Cannot be changed
			hudGroupInfo = 0;	// Cannot be changed
			hudPerm = 0;		// Cannot be changed
			hudWp = 0;		// Cannot be changed
			hudWpPerm = 0;		// Cannot be changed
			map = 0;		// Cannot be changed
			netStats = 0;
			tracers = 0;		// Cannot be changed
			ultraAI = 0;
			unlimitedSaves = 0;	// Cannot be changed
			vonID = 0;
			weaponCursor = 0;	// Cannot be changed
		};
		skillFriendly = 1;
		precisionFriendly = 1;
		skillEnemy = 1;
		precisionEnemy = 1;
	};
};
↑ Back to spoiler's top

Arma 2: Operation Arrowhead

class Difficulties
{
	class Recruit
	{
		class Flags
		{
			3rdPersonView = 1;
			armor = 1;
			autoAim = 0;
			autoGuideAT = 1;
			autoSpot = 1;
			cameraShake = 0;
			clockIndicator = 1;
			deathMessages = 1;
			enemyTag = 0;
			friendlyTag = 1;
			hud = 1;
			hudGroupInfo = 1;
			hudPerm = 1;
			hudWp = 1;
			hudWpPerm = 1;
			map = 1;
			netStats = 1;
			tracers = 1;
			ultraAI = 0;
			unlimitedSaves = 1;
			vonID = 1;
			weaponCursor = 1;
		};
		skillFriendly = 1;
		precisionFriendly = 1;
		skillEnemy = 0.55;
		precisionEnemy = 0.3;
	};
	class Regular
	{
		class Flags
		{
			3rdPersonView = 1;
			armor = 1;
			autoAim = 0;
			autoGuideAT = 1;
			autoSpot = 1;
			cameraShake = 1;
			clockIndicator = 1;
			deathMessages = 1;
			enemyTag = 0;
			friendlyTag = 1;
			hud = 1;
			hudGroupInfo = 1;
			hudPerm = 1;
			hudWp = 1;
			hudWpPerm = 1;
			map = 1;
			netStats = 1;
			tracers = 1;
			ultraAI = 0;
			unlimitedSaves = 1;
			vonId = 1;
			weaponCursor = 1;
		};
		skillFriendly = 1;
		precisionFriendly = 1;
		skillEnemy = 0.7;
		precisionEnemy = 0.5;
	};
	class Veteran
	{
		class Flags
		{
			3rdPersonView = 1;
			armor = 0;		// Cannot be changed
			autoAim = 0;		// Cannot be changed
			autoGuideAT = 0;	// Cannot be changed
			autoSpot = 0;		// Cannot be changed
			cameraShake = 1;
			clockIndicator = 0;
			deathMessages = 1;
			enemyTag = 0;		// Cannot be changed
			friendlyTag = 0;	// Cannot be changed
			hud = 1;
			hudGroupInfo = 0;
			hudPerm = 0;		// Cannot be changed
			hudWp = 1;
			hudWpPerm = 0;		// Cannot be changed
			map = 0;
			netStats = 1;
			tracers = 0;		// Cannot be changed
			ultraAI = 0;
			unlimitedSaves = 0;
			vonId = 0;
			weaponCursor = 1;
		};
		skillFriendly = 1;
		precisionFriendly = 1;
		skillEnemy = 0.9;
		precisionEnemy = 0.75;
	};
	class Mercenary
	{
		class Flags
		{
			3rdPersonView = 0;	// Cannot be changed
			armor = 0;		// Cannot be changed
			autoAim = 0;		// Cannot be changed
			autoGuideAT = 0;	// Cannot be changed
			autoSpot = 0;		// Cannot be changed
			cameraShake = 1;	// Cannot be changed
			clockIndicator = 0;	// Cannot be changed
			deathMessages = 0;
			enemyTag = 0;		// Cannot be changed
			friendlyTag = 0;	// Cannot be changed
			hud = 0;		// Cannot be changed
			hudGroupInfo = 0;	// Cannot be changed
			hudPerm = 0;		// Cannot be changed
			hudWp = 0;		// Cannot be changed
			hudWpPerm = 0;		// Cannot be changed
			map = 0;		// Cannot be changed
			netStats = 0;
			tracers = 0;		// Cannot be changed
			ultraAI = 0;
			unlimitedSaves = 0;	// Cannot be changed
			vonID = 0;
			weaponCursor = 0;	// Cannot be changed
		};
		skillFriendly = 1;
		precisionFriendly = 1;
		skillEnemy = 1;
		precisionEnemy = 1;
	};
};
↑ Back to spoiler's top

Arma 3

Since 1.58:
One of the main changes that came with 1.58 is that the difficulty levels were transformed to true presets (Recruit, Regular, Veteran).
Each preset has exactly defined value for each difficulty option. If any of the options doesn't match the preset, the preset is changed to Custom. The particular flags stored in profile are only for the Custom preset, since Recruit, Regular and Veteran are fixed ones and predefined in game's data in CfgDifficultyPresets config class.

Server Difficulty Example

class DifficultyPresets
{
	class CustomDifficulty
	{
		class Options
		{
			/* Simulation */

			reducedDamage = 0;		// Reduced damage

			/* Situational awareness */

			groupIndicators = 0;	// Group indicators (0 = never, 1 = limited distance, 2 = always)
			friendlyTags = 0;		// Friendly name tags (0 = never, 1 = limited distance, 2 = always)
			enemyTags = 0;			// Enemy name tags (0 = never, 1 = limited distance, 2 = always)
			detectedMines = 0;		// Detected mines (0 = never, 1 = limited distance, 2 = always)
			commands = 1;			// Commands (0 = never, 1 = fade out, 2 = always)
			waypoints = 1;			// Waypoints (0 = never, 1 = fade out, 2 = always)
			tacticalPing = 0;		// Tactical ping (0 = disable, 1 = enable)

			/* Personal awareness */

			weaponInfo = 2;			// Weapon info (0 = never, 1 = fade out, 2 = always)
			stanceIndicator = 2;	// Stance indicator (0 = never, 1 = fade out, 2 = always)
			staminaBar = 0;			// Stamina bar
			weaponCrosshair = 0;	// Weapon crosshair
			visionAid = 0;			// Vision aid

			/* View */

			thirdPersonView = 0;	// 3rd person view (0 = disabled, 1 = enabled, 2 = enabled for vehicles only (Since  Arma 3 v1.99))
			cameraShake = 1;		// Camera shake

			/* Multiplayer */

			scoreTable = 1;			// Score table
			deathMessages = 1;		// Killed by
			vonID = 1;				// VoN ID

			/* Misc */

			mapContent = 0;			// Extended map content
			autoReport = 0;			// (former autoSpot) Automatic reporting of spotted enemied by players only. This doesn't have any effect on AIs.
			multipleSaves = 0;		// Multiple saves
		};
		
		// aiLevelPreset defines AI skill level and is counted from 0 and can have following values: 0 (Low), 1 (Normal), 2 (High), 3 (Custom).
		// when 3 (Custom) is chosen, values of skill and precision are taken from the class CustomAILevel.
		aiLevelPreset = 3;
	};

	class CustomAILevel
	{
		skillAI = 0.5;
		precisionAI = 0.5;
	};
};

See Also