Arma 3 is a FPS military game that takes place in a massive map.
Hey community, I am wondering if there is any possibility to use the submachine guns (String, Vector.) in the pistol slot of our inventory. I know for sure there was a mod, that made this possible, in Arma 2, but I couldn't find one for Arma3. The reason I am asking this is very simple. Submachine guns have the exact same damadge models as pistols but because of their higher rate of fire. The City Life RPG 3 MOD is an Online RPG built on the Armed Assault 3 engine offering an online community for you to enjoy. What sets us aside from other RPG missions is custom made addons built around our new code. I compiled a list of the best laptops for Arma 3 so you can enjoy playing the game smoothly without any stuttering. Especially if you want to benefit from a high refresh rate displays at 144Hz to have a big advantage over other players online. First, of course, it depends on the budget you are willing to spend on a new gaming machine.
The dedicated server component can be run as a Windows Service using FireDaemon Pro, which allows you to have the dedicated server start automatically at boot prior to login, start multiple instances of the dedicated server and more. This HOWTO will show you how to set it up. You can also use Fusion to manage FireDaemon and other Windows services via a web browser.
You must install the server with SteamCMD outlined in this guide. If you try to run the server through Arma 3 in your Steam client, the server will not stop properly.
Arma 3 Dedicated Server Setup Under FireDaemon Pro
The easy way to install the server files is via Steam's SteamPipe servers, but the caveat to this is that the server must use a Steam account to download the files. We suggest that you do not use your local Steam account as it will be logged out when you install or update the server files. You also risk having your Steam account hijacked or stolen should your server ever be hacked since the hackers could then get access to your Steam account.
Step 1: Download and Install SteamCMD for Windows
SteamCMD is a command-line version of the Steam Client. Its primary use is to install and update various dedicated servers available on Steam using a command-line interface.
- Create a folder on your system, for SteamCMD, C:SteamCMD
- Download SteamCMD to this folder. A single ZIP file steamcmd.zip is downloaded.
- Extract the contents of the ZIP file into the folder. A single program file, steamcmd.exe, is extracted.
- Double-click steamcmd.exe. This will download SteamCMD and corresponding support files into the C:SteamCMD folder.
Step 2: Download and Install FireDaemon Pro
- Download FireDaemon Pro installer
- Double-click installer and follow the installation wizard to complete the installation.
- For more information about installing FireDaemon, see the FireDaemon Pro Users Guide.
Step 3: Download and Install Arma 3 Server
Download the Arma 3 server files via the Steam SteamPipe servers. Go to the directory where you installed SteamCMD and create a shortcut to 'SteamCMD.exe'. In the shortcut, edit the properties and in the target box, at the end of it (with a space before the following), put:
Note: Replace USERNAME with your Steam username and PASSWORD with your Steam password. You will need to enter a verification string if your Steam account has SteamGuard enabled. The verification string will be sent to the email you set up as your steam account email. This string only needs to be filled in once.
If Arma 3 successfully downloads, the command window will close on its own. Otherwise it will stay open and tell you what went wrong (most likely you don't have enough free disk space).
Step 4: Set Up Arma 3 as a FireDaemon Pro Service
Double click the FireDaemon Pro icon on your desktop, then click on the New (i.e. +) button in the toolbar (or type Ctrl + N) to create a new service. Enter the information into the fields as you see below. Adjust the path names to suit your installation. Note the required parameters.
The most important field on the tab is the Parameters. The Parameters define the initial setup of your server. The minimum parameter list should be as follows:
- '-profiles=C:arma 3A3Master' Loads the profile from your Arma 3 server directory instead. If you dont define this, than it will be located in your C:Users directory instead which makes configuration more complicated. If your path contains spaces, you must enclose the entire command in double quotes.
- '-bepath=C:arma 3BattlEye' Loads the BattlEye from your Arma 3 server directory instead. If you dont define this, than it will be located in your C:Users directory instead which makes configuration more complicated. If your path contains spaces, you must enclose the entire command in double quotes.
- '-ip' It's useful to define this if your server is behind a NAT router or if your server machine has multiple IP's and you only want the server to listen on one IP. If you are hosting the server from home or do not know your server IP, then on the server, go to the following website to find your external IP address: http://WhatIsMyIp.com
- '-port' This set's the server port. It should be left on default unless you are running multiple servers on the same IP.
- '-config' Loads the server config file.
- '-world' Loads the world (map).
The next few parameters are performance related and may be too low or high depending on your server specs. You should research them before using. If you don't know about them, then do not use them. - '-cpuCount 2' Limits the number of cores your server uses to 2. This is usefull to prevent your whole machine from locking up should your server ever use 100% cpu.
- '-exThreads 7' Limits the number of threads your server uses to 7.
- '-bandwidthAlg 2' Changes the bandwidth algoritm to a better optimized one. This may improve bandwidth usage and management.
- '-maxMem=2047' Limits the maximum amount of memory to 2GB. Arma 3 servers in general use 512 to 1536 MB (even for 50 slot servers), this command is usefull to prevent memory leaks.
- '-noSound' Disables sound output when the server starts.
Next, click on the FireDaemon Pro Settings tab:
Enter appropriate values in the fields on the Settings tab as follows:
- (Required) Job Type: You must set job type to 'Global Job'.
- (Optional) Logon Account: Enter the Windows account under which the Arma 3 is to be run, e.g. the current user account.
- Password / Confirm Password: Enter the logon account's password twice.
- (Optional) Interact with Desktop: If this setting is enabled (default), the Arma 3 server's output messages can be seen in the console window on Windows Session 0. To switch to Session 0, it may be necessary to install FireDaemon Zero and ZeroInput. Alternatively, this setting may be disabled, in which case the Arma 3 server's messages will be hidden.
- (Optional) Priority: To allocate more CPU time to the Arma 3 server, select a higher scheduling priority in this field.
- (Optional) CPU Bindings: To run the Arma 3 server on a specific CPU, specify the appropriate CPU in this field.
Next, click in the Lifecycle tab. Set Shutdown By to Forceful Termination and check 'Console Program'.
Lastly, click the Save and Close (ie. the tick) button on the toolbar. If the service's Startup Type is set to Automatic or Automatic (Delayed-Start), it will start immediately.
Step 5: Verify that Arma 3 is Running Correctly
The Arma 3 Arma 3 server's status can easily be checked on the main FireDaemon Pro Services List - look for a Running Status value and a numeric Process ID (PID) value.
If the service's Interact with Desktop setting is enabled, the Arma 3 status can also be verified by switching to Windows Session 0 to view the Arma 3's messages.
- Headless Client is used to offload AI calculations from the server instance
- Headless Client is integrated into game client and dedicated server executable (WIndows and Linux, use -client parameter)
- The server doesn't allow arbitrary connections from headless clients if you do not define the headless clients IPs in the server.cfg, the below value defines accepted IP Addresses from Headless Clients.
Multiple Connections and Addresses are allowed in the case of more than one Headless Client
Additionally to define clients with unlimited bandwidth and nearly no latency you must include theirs IPs in the server.cfg too:
- Missions need to be changed a little to support headless clients:
- extract AI to separate AI script
- edit init.sqf to execute an extracted AI on headless client
- place headless client unit
- in scripts the headless clients may be identified by its name, multiple headless clients are supported
- next sections will show you how to use Headless Client
Prerequisites
Read Headless Client Guide by Monsoon.
Spawning the AI
Slot_machine Arma 3
- Add a Headless Client entity to the mission:
- Add a player unit
- Then you can insert a Headless Client unit:
SIDE: Game Logic, CLASS: Virtual Entities, UNIT: Headless Client, CONTROL: Playable, NAME: somename
- Don't forget to set NAME property as the name can be used to identify Headless Clients in scripts (by checking it against player)
- Each Headless Client unit will add one Headless Client slot - missions may contain multiple Headless Client units
- Create a script that will spawn AI (in the examples below we will use 'init_HC.sqf'). To execute it on the Headless Client you have the two following options.
- Execute the script at mission start
- This method will make your mission spawn the AI only if a Headless Client is present. However it is the most simple to set up.
- Add the following to the beginning of init.sqf:
if (!hasInterface && !isServer) then
{
execVM 'init_HC.sqf';
};
- Execute the script via a mission parameter
- If you intend to share your mission this method is more desirable as it means players do not need a Headless Client to play it.
- First define a function to be used to run the headless client script file. Here's what it should look like in description.ext: The reason we want to define a function is because it can be used within the mission parameter framework to execute the AI spawning script as soon as possible while still allowing the mission to reliably work with or without a headless client.
- Add the following code to your function:
if ((_thisselect 0) 1) then
This code will be passed the value of the mission parameter defined in the next step, which is where the magic variable _this comes from. It executes the AI spawning script based on the value of the parameter and whether the local machine is the server or a headless client.
{ // Run on the HC only
if !(isServerorhasInterface) then
{
execVM 'init_HC.sqf';
};
} else {
// Run on the server only
if (isServer) then
{
execVM 'init_HC.sqf';
};
}; - Finally define a mission parameter that players can use to enable/disable use of the headless client. Here's what it should look like in description.ext:
The two important values here are 'function' and 'isGlobal'. The function value must correspond to the name of the function defined in step 1. The isGlobal value must be set to 1 so that the function is ran by all machines. This means that the function is executed on any headless clients as well as the server so that it can decide where it is suitable to execute the AI spawning script (based on the value of the parameter).
- Repeat step 1 for the amount of Headless Clients your mission is designed to use. For multiple you must use the NAME property from step 1 to identify them individually within init_HC.sqf
Server
- add headless client IP address into server.cfg (you can use more than one address):
- to run Arma3 Dedicated Server use one of these commands:
Windows: arma3server.exe -config=server.cfg
Windows: arma3.exe -server -config=server.cfg
Linux: arma3server -config=server.cfg
Headless Client
- to run Arma3 Headless Client use one of these commands:
Windows: arma3server.exe -client -connect=xxx.xxx.xxx.xxx -password=yourpass
Windows: arma3.exe -client -connect=xxx.xxx.xxx.xxx -password=yourpass
Linux: arma3server -client -connect=xxx.xxx.xxx.xxx -password=yourpass - your client will be automatically connected to a free headless client slot
- you can run arbitrary number of headless clients on the same machine
Overview of running options
- Main game executable (windows only)
arma3.exe
arma3.exe -server
arma3.exe -client - Windows server executable
arma3server.exe
arma3server.exe -client - Linux server executable
arma3server
arma3server -client
Mods
Headless clients are excluded from signature verification, therefore any mod can be used with the '-mod=' option.
'-serverMod=' does not work when used alongside '-client'.
GUI
- Headless clients can be seen in the Role assignment display when creating a MP game
- If you are admin (host)
- You will see HCs listed in the Players list on the right
- You will see a category called Virtual (it can contain both Zeus and HCs) on the left
- Note: HCs are automatically assigned to their slots
- If you are normal player
- You won't see any HCs anywhere
- You won't see any Virtual category (if the mission contains Zeus then there will be Zeus category)
- If you are admin (host)
- In-game UI
- HCs are listed with other players only if you are admin (map, tasks, kill statistics, ...)