Jump to content
Sign in to follow this  
Citizen_Dan

PSA: Linux Dedicated Server - Custom difficulty settings through custom server name

Recommended Posts

Hi everyone,

Just a heads-up regarding custom difficulty settings, as specified in the .Arma3Profile, on a Linux dedicated server. Some people out there may have had problems getting these to load. At the very least I had.
I did some testing and eventually got the settings to load through the creation of a custom server profile with a new name. It is quite a strange story, so I apologise in advance for approaching this from an entirely empirical perspective. I absolutely can not give any insights as to why this is working. And I am probably embarrassing myself a little with such a superficial post (BIS difficulty programmer guy, are you reading this?) - but perhaps it does help a few people out there.
 

The problem:

The Linux dedicated server would routinely ignore changes to the entries made in $HOME/.local/share/Arma 3 - Other Profiles/server.Arma3Profile. The custom difficulty could be enforced through the server.cfg but "default" values for "class CustomDifficulty" were loaded regardless1.


The solution:

Launched the server under a new name, using the parameter "-name=servername", then replaced the automatically created "servername/servername.Arma3Profile"2 with the user-modified Arma wiki template. Subsequently restarted the server and selected/enforced "Custom" difficulty.

 

 

Example:
Originally, I would launch the server via:

./arma3server -name=server -config=server.cfg -mod=@mod1;@mod2;@mod3;

In this case, any user-made changes specified under "class CustomDifficulty" were not used, even when saved in a write-protected .Arma3profile.
After some tinkering, the server would be launched under a new name using "-name=" - and, optionally, with the additional "-profiles=" parameter:

./arma3server -profiles=/home/apps/steam/arma3/profiles -name=custom -config=server.cfg -mod=@mod1;@mod2;@mod3;

By launching the server a new folder ("/arma3/profiles/home/custom") was created in arma3 root. It contained a tiny "custom.Arma3Profile", ordinarily consisting of 6-10 lines of basic option entries (soundFX=1, etc.)2.
The content of .Arma3Profile would now be replaced with a test profile using exclusively the exact example server difficulty profile template, but with all values set to 1 (or 2, if applicable) to easily check for changes.



class DifficultyPresets
{
 

class CustomDifficulty

{

class Options

{

/* Simulation */


reducedDamage = 1; // Reduced damage


/* Situational awareness */


groupIndicators = 2; // Group indicators (0 = never, 1 = limited distance, 2 = always)

friendlyTags = 2; // Friendly name tags (0 = never, 1 = limited distance, 2 = always)

enemyTags = 2; // Enemy name tags (0 = never, 1 = limited distance, 2 = always)

detectedMines = 2; // Detected mines (0 = never, 1 = limited distance, 2 = always)

commands = 2; // Commands (0 = never, 1 = fade out, 2 = always)

waypoints = 2; // Waypoints (0 = never, 1 = fade out, 2 = always)


/* 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 = 1; // Stamina bar

weaponCrosshair = 1; // Weapon crosshair

visionAid = 1; // Vision aid

squadRadar = 1; // Squad radar


/* View */


thirdPersonView = 1; // 3rd person view

cameraShake = 1; // Camera shake


/* Multiplayer */


scoreTable = 1; // Score table

deathMessages = 1; // Killed by

vonID = 1; // VoN ID


/* Misc */


mapContent = 1; // Extended map content

autoReport = 1; // Automatic reporting

multipleSaves = 1; // 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 = 2;

};


class CustomAILevel

{

skillAI = 1;

precisionAI = 1;

};

};



The server would then be restarted, which automatically reformatted the "custom.Arma3Profile" to this:



class DifficultyPresets
{
 

class CustomDifficulty

{

class Options

{

reducedDamage=0;

groupIndicators=0;

friendlyTags=0;

enemyTags=0;

detectedMines=0;

commands=0;

waypoints=0;

weaponInfo=0;

stanceIndicator=0;

staminaBar=0;

weaponCrosshair=0;

visionAid=0;

squadRadar=0;

thirdPersonView=0;

cameraShake=1;

scoreTable=0;

deathMessages=0;

vonID=0;

mapContent=0;

autoReport=0;

multipleSaves=0;

};

aiLevelPreset=3;

};

class CustomAILevel

{

skillAI=1;

precisionAI=0.36000001;

};

};
volumeCD=5;
volumeFX=5;
volumeSpeech=5;
singleVoice=0;
soundEnableEAX=1;
soundEnableHW=0;



Running a test mission at custom difficulty, all settings were loaded correctly. There was a crosshair, third person mode (yuck!), a stance indicator, and a score table. In previous tests, using the original .local/share/[name].Arma3Profile none of these options were ever loaded3. Repeating this process, a new "freshly"-named server was then created with our desired custom difficulty setup.

Is anybody able to reproduce this? I would like to hear some feedback, in particular from people who tried to make changes to their Linux dedicated server .Arma3Profile.

Thanks!




1 It is not clear to me where these defaults are coming from.
2 Oddly enough, the number of lines in this file varied each time a new profile is created.
3 However, changing entries within this file a second time and restarting the server would always result in reverting to the reformatted file and its settings. A new server name ("-name=custom_2") had to be created to enforce new custom difficulty settings.

  • Like 2

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×