1
0
mirror of https://github.com/parkervcp/eggs.git synced 2024-10-07 08:07:09 +02:00

Merge pull request #957 from lilkingjr1/arma-patch

Arma 3 - Bug Fixes / Security Patch / Headless Client Integration
This commit is contained in:
Michael (Parker) Parker 2021-01-30 19:09:10 -05:00 committed by GitHub
commit 714389e439
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 49 additions and 200 deletions

View File

@ -4,4 +4,3 @@ ARMA is a series of first-person tactical military shooters, originally released
## Arma 3
* [Arma 3](arma3)
* [Arma 3 Headless Client](arma3_headless_client)

View File

@ -1,16 +1,23 @@
# Arma 3 (32 or 64-bit)
# Arma 3
### From their [Site](https://arma3.com/)
Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PCs premier military game. Authentic, diverse, open - Arma 3 sends you to war.
### Egg Capabilities
- Configurable to run 32 or 64-bit versions of the server.
- Configurable to run Beta/Performance binaries of the server (if desired; advanced users only).
- Able to download server updates.
- Able to download Steam Workshop mods\* and move `.bikey`'s to the `/keys/` directory (\*see Installation Requirements).
- Configurable to run up to 5 Headless Clients in parallel with the main server (may require additional performance overhead).
### Installation Requirements
- A valid, real Steam account, with Steam Guard turned off, is required to install the server (default "anonymous" login cannot be used). For security reasons it is recommended that you create a new Steam account just for your dedicated servers. This account *does not* need to own Arma 3.
- For automatic Steam Workshop mod downloading to work, the Steam account *does* need to own Arma 3. This is, of course, optional functionality, and mods can be manually uploaded to the server if desired.
- A valid, real Steam account, with **Steam Guard turned off**, is required to install the server (default "anonymous" login cannot be used). For security reasons it is [recommended](https://developer.valvesoftware.com/wiki/SteamCMD#With_a_Steam_account) that you create a new Steam account just for your dedicated servers. This account *does not* need to own Arma 3.
- For automatic Steam Workshop mod downloading to work, the Steam account *does* need to own Arma 3. This is, of course, optional functionality, and mods can be manually uploaded to the server if desired. Hosts may feel free to delete the "Steam Workshop Mods to Download/Update" variable if they would not like to offer it's functionallity.
### Minimum RAM Warning
This server requires about 2048 MB to run properly.
This server requires about 2048 MB of RAM to run properly. If used, every Headless Client uses an additional 2048 MB of RAM as well.
### CPU Usage Information
ARMA 3 is mainly CPU intensive. Contrary to popular belief, the server binary *can* run on multiple cores/threads. However, it's ability to manage asynchronous tasks and hyperthread is *very* limited, meaning additional cores/threads reach diminishing returns very quickly. In addition, it's ability to utilize all of the CPU alloted to it for AI processing seems to be limited as well. Therefore, a [headless client](https://community.bistudio.com/wiki/Arma_3_Headless_Client) ***and*** a properly written mission file are highly recommended if large amounts of AI units will be used. An Arma 3 Headless Client Egg can be found [here](arma3_headless_client).
ARMA 3 is mainly CPU intensive. Contrary to popular belief, the server binary *can* run on multiple cores/threads. However, it's ability to manage asynchronous tasks and hyperthread is *very* limited, meaning additional cores/threads reach diminishing returns very quickly. In addition, it's ability to utilize all of the CPU alloted to it for AI processing seems to be limited as well. Therefore, a Headless Client ***and*** a properly written mission file are highly recommended if large amounts of AI units will be used.
### Additional Settings
Additional server flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters).
@ -19,11 +26,11 @@ These can help you fine tune how the server will behave during runtime.
*Note: The `-maxMem=` flag is currently known to cause an unknown segmentaion fault crash on startup. Other hardware related flags may cause similar behavior.*
### Server Ports
Default server ports. It is [recommended](https://community.bistudio.com/wiki/Arma_3:_Dedicated_Server#Port_Forwarding) that each server be 100 ports seperate from each other.
Default server ports. **All ports are required.** Ports after the Main port are relative to the main port (For example: The BattlEye port is always 4 ports higher than the main port). It is [recommended](https://community.bistudio.com/wiki/Arma_3:_Dedicated_Server#Port_Forwarding) that each server be 100 ports seperate from each other.
| Port | Default |
|---------|---------|
| Arma 3 Game & VON | 2302 |
| **Arma 3 Game & VON (Main)** | 2302 |
| Steam Query (+1) | 2303 |
| Steam Port (+2) | 2304 |
| BattleEye (+4) | 2306 |

View File

@ -4,7 +4,7 @@
"version": "PTDL_v1",
"update_url": null
},
"exported_at": "2021-01-26T21:50:23+00:00",
"exported_at": "2021-01-30T22:22:39+00:00",
"name": "Arma 3",
"author": "rehlmgaming@gmail.com",
"description": "Experience true combat gameplay in a massive military sandbox. Deploying a wide variety of single- and multiplayer content, over 20 vehicles and 40 weapons, and limitless opportunities for content creation, this is the PC's premier military game. Authentic, diverse, open - Arma 3 sends you to war.",
@ -12,7 +12,7 @@
"images": [
"quay.io\/parkervcp\/pterodactyl-images:game_arma3"
],
"startup": ".\/{{SERVER_BINARY}} -ip=0.0.0.0 -port={{SERVER_PORT}} -profiles=.\/serverprofile -bepath=.\/battleye -cfg=\"{{BASIC}}\" -config=\"{{CONFIG}}\" {{STARTUP_PARAMS}} -mod=\"{{MODS}}\" -serverMod=\"{{SERVERMODS}}\"",
"startup": ".\/{{SERVER_BINARY}} -ip=0.0.0.0 -port={{SERVER_PORT}} -profiles=.\/serverprofile -bepath=.\/battleye -cfg=\\\"{{BASIC}}\\\" -config=\\\"{{CONFIG}}\\\" -mod=\\\"{{MODIFICATIONS}}\\\" -serverMod=\\\"{{SERVERMODS}}\\\" {{STARTUP_PARAMS}}",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Host identity created.\",\r\n \"userInteraction\": []\r\n}",
@ -34,7 +34,7 @@
"default_value": "233780",
"user_viewable": false,
"user_editable": false,
"rules": "required|numeric"
"rules": "required|integer"
},
{
"name": "Steam Username",
@ -61,13 +61,13 @@
"default_value": "arma3server_x64",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
"rules": "required|string|in:arma3server,arma3server_x64,arma3serverprofiling,arma3serverprofiling_x64"
},
{
"name": "Extra Startup Parameters",
"description": "See https:\/\/community.bistudio.com\/wiki\/Arma_3_Startup_Parameters for more info.",
"env_variable": "STARTUP_PARAMS",
"default_value": "",
"default_value": "-noLogs",
"user_viewable": true,
"user_editable": true,
"rules": "string|nullable"
@ -93,7 +93,7 @@
{
"name": "Mods",
"description": "Mod folders to be used with the -mods startup option. NO capital letters, spaces, or folders starting with a number! Each folder must be followed with a semicolon (ex. @123456789;@987654321;etc;)",
"env_variable": "MODS",
"env_variable": "MODIFICATIONS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
@ -108,18 +108,9 @@
"user_editable": true,
"rules": "nullable|string"
},
{
"name": "Extra Flags for SteamCMD",
"description": "Only used when checking for server updates, and typically used for grabbing beta builds.\r\nExample: -beta profiling -betapassword CautionSpecialProfilingAndTestingBranchArma3",
"env_variable": "STEAMCMD_EXTRA_FLAGS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
},
{
"name": "Check for Server Updates",
"description": "Check for server updates on server start.\r\n1 True | 0 False",
"description": "Check for server updates on server start. (1 True | 0 False)",
"env_variable": "UPDATE_SERVER",
"default_value": "0",
"user_viewable": true,
@ -128,7 +119,7 @@
},
{
"name": "Steam Workshop Mods to Download\/Update",
"description": "[*Only works if the host owns Arma 3] Comma separated list of Steam Workshop mod IDs to download\/update on server start. (ex. 450814997,463939057) Each mod will be downloaded to the root directory with the folder format: @ModIdNumber",
"description": "[*Only works if the host owns Arma 3] Comma separated list of Steam Workshop mod IDs to download\/update on server start. (ex. 450814997,463939057) Each mod will be downloaded to the root directory with the folder format \"@ModIdNumber\". NOTE: Particularly large mods (ie. RHS, CUP, typically anything over 3 GB) may not download properly due to limitations of SteamCMD.",
"env_variable": "UPDATE_WORKSHOP",
"default_value": "",
"user_viewable": true,
@ -143,6 +134,33 @@
"user_viewable": true,
"user_editable": true,
"rules": "boolean"
},
{
"name": "[Advanced] Extra Flags for SteamCMD",
"description": "Only used when checking for server updates, and typically used for grabbing beta builds.\r\nExample: -beta profiling -betapassword CautionSpecialProfilingAndTestingBranchArma3",
"env_variable": "STEAMCMD_EXTRA_FLAGS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
},
{
"name": "[Advanced] Headless Clients (HC)",
"description": "Number of Headless Clients (0 - 5) to launch parallel with the server. Be sure to set the following \"HC Connect Password\" variable if your server is password locked. PLEASE NOTE: Using a headless client is only recommended for advanced users, adds extra overhead to your permitted server resources, and is only beneficial if a properly written, HC compliant mission file is provided. See https:\/\/community.bistudio.com\/wiki\/Arma_3:_Headless_Client for more info.",
"env_variable": "HC_NUM",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "required|integer|between:0,5"
},
{
"name": "[Advanced] HC Connect Password",
"description": "If Headless Clients are used, this is the password used to connect to the server if the server is password locked.",
"env_variable": "HC_PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
}
]
}

View File

@ -1,27 +0,0 @@
# Arma 3 Headless Client
### From their [Site](https://community.bistudio.com/wiki/Arma_3_Headless_Client)
What is a Headless Client (HC) used for?
* Headless Client is used to offload AI calculations from the server [to improve the main server's performance].
* Headless Client is integrated into dedicated server executable, and uses the `-client` parameter to activate.
* The server doesn't allow arbitrary connections from headless clients if you do not define the headless clients' IPs in the `server.cfg`.
### But why?
If you host an Arma 3 Server with lots of AI in it, the Server FPS will drop fast. The headless client helps alleviate the AI's stress on the server.
### Installation Requirements
- A valid, real Steam account, with Steam Guard turned off, is required to install the client (default "anonymous" login cannot be used). For security reasons it is recommended that you create a new Steam account just for your dedicated servers. This account *does not* need to own Arma 3.
- The Arma 3 server this client is connecting to **must** be running a properly written mission file that accepts and utilizes headless clients. If you want to know how to implement, take a look at the Wiki [here](https://community.bistudio.com/wiki/Arma_3_Headless_Client#Spawning_the_AI) or at a guide in the A3 Forums [here](https://forums.bohemia.net/forums/topic/178434-arma3-headless-client-guide/).
- For automatic Steam Workshop mod downloading to work, the Steam account *does* need to own Arma 3. This is, of course, optional functionality, and mods can be manually uploaded to the client if desired.
### Minimum RAM Warning
This client requires about 2048 MB to run properly.
### Additional Settings
Additional client flags can be found [here](https://community.bistudio.com/wiki/Arma_3_Startup_Parameters).
These can help you fine tune how the client will behave during runtime.
*Note: The `-maxMem=` flag is currently known to cause an unknown segmentaion fault crash on startup. Other hardware related flags may cause similar behavior.*
### Server Ports
Since this is basically a client, this Egg does not need a port.
Therefore, the port assigned to this Egg goes unused.

View File

@ -1,148 +0,0 @@
{
"_comment": "DO NOT EDIT: FILE GENERATED AUTOMATICALLY BY PTERODACTYL PANEL - PTERODACTYL.IO",
"meta": {
"version": "PTDL_v1",
"update_url": null
},
"exported_at": "2021-01-26T21:54:10+00:00",
"name": "Arma 3 Headless Client",
"author": "rehlmgaming@gmail.com",
"description": "Headless Clients are used to offload AI calculations from the Arma 3 Server.",
"features": null,
"images": [
"quay.io\/parkervcp\/pterodactyl-images:game_arma3"
],
"startup": ".\/{{SERVER_BINARY}} -client -connect={{CONNECT_IP}} -port={{CONNECT_PORT}} -password=\"{{CONNECT_PASSWORD}}\" -profiles=.\/serverprofile -bepath=.\/battleye {{STARTUP_PARAMS}} -mod=\"{{MODS}}\"",
"config": {
"files": "{}",
"startup": "{\r\n \"done\": \"Client connected\",\r\n \"userInteraction\": []\r\n}",
"logs": "{\r\n \"custom\": true,\r\n \"location\": \"latest.log\"\r\n}",
"stop": "^C"
},
"scripts": {
"installation": {
"script": "#!\/bin\/bash\r\napt -y update\r\napt -y --no-install-recommends install curl lib32gcc1 ca-certificates\r\n\r\n## download and install steamcmd\r\ncd \/tmp\r\nmkdir -p \/mnt\/server\/steamcmd\r\ncurl -sSL -o steamcmd.tar.gz https:\/\/steamcdn-a.akamaihd.net\/client\/installer\/steamcmd_linux.tar.gz\r\ntar -xzvf steamcmd.tar.gz -C \/mnt\/server\/steamcmd\r\ncd \/mnt\/server\/steamcmd\r\n\r\n# SteamCMD fails otherwise for some reason, even running as root.\r\n# This is changed at the end of the install process anyways.\r\nchown -R root:root \/mnt\r\nexport HOME=\/mnt\/server\r\n\r\n## install game using steamcmd\r\n.\/steamcmd.sh +login ${STEAM_USER} ${STEAM_PASS} +force_install_dir \/mnt\/server +app_update ${STEAMCMD_APPID} ${STEAMCMD_EXTRA_FLAGS} validate +quit\r\n\r\n## set up 32 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk32\r\ncp -v linux32\/steamclient.so ..\/.steam\/sdk32\/steamclient.so\r\n\r\n## set up 64 bit libraries\r\nmkdir -p \/mnt\/server\/.steam\/sdk64\r\ncp -v linux64\/steamclient.so ..\/.steam\/sdk64\/steamclient.so\r\n\r\n## ARMA III specific setup\r\ncd \/mnt\/server\/\r\n\r\nmkdir -p \"\/mnt\/server\/.local\/share\/Arma 3\" \"\/mnt\/server\/.local\/share\/Arma 3 - Other Profiles\"",
"container": "debian:buster-slim",
"entrypoint": "bash"
}
},
"variables": [
{
"name": "Arma 3 Dedicated Server App ID",
"description": "Used for installation and updates.",
"env_variable": "STEAMCMD_APPID",
"default_value": "233780",
"user_viewable": false,
"user_editable": false,
"rules": "required|numeric"
},
{
"name": "Steam Username",
"description": "Used for installation and updates. Account does not need to own Arma 3, but must be a valid Steam account (anonymous login cannot be used). For security reasons it is recommended that you create a new Steam account just for your dedicated servers. *This info is not visible to the server owner.*",
"env_variable": "STEAM_USER",
"default_value": "your_steam_username",
"user_viewable": false,
"user_editable": false,
"rules": "required|string"
},
{
"name": "Steam Password",
"description": "Used for installation and updates. Steam Guard must be TURNED OFF for install to complete successfully. *This info is not visible to the server owner.*",
"env_variable": "STEAM_PASS",
"default_value": "your_steam_password",
"user_viewable": false,
"user_editable": false,
"rules": "required|string"
},
{
"name": "Server Binary",
"description": "Server binary to call on server start. (32-bit: arma3server | 64-bit: arma3server_x64)",
"env_variable": "SERVER_BINARY",
"default_value": "arma3server_x64",
"user_viewable": true,
"user_editable": true,
"rules": "required|string"
},
{
"name": "Connect IP",
"description": "IP address of the server to connect to.",
"env_variable": "CONNECT_IP",
"default_value": "127.0.0.1",
"user_viewable": true,
"user_editable": true,
"rules": "required|ip"
},
{
"name": "Connect Port",
"description": "Open port of the server to connect to.",
"env_variable": "CONNECT_PORT",
"default_value": "2302",
"user_viewable": true,
"user_editable": true,
"rules": "required|numeric"
},
{
"name": "Connect Password",
"description": "If the server you are connecting to has a password, enter it here.",
"env_variable": "CONNECT_PASSWORD",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
},
{
"name": "Mods",
"description": "Mod folders to be used with the -mods startup option. NO capital letters, spaces, or folders starting with a number! Each folder must be followed with a semicolon (ex. @123456789;@987654321;etc;)",
"env_variable": "MODS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
},
{
"name": "Extra Startup Parameters",
"description": "See https:\/\/community.bistudio.com\/wiki\/Arma_3_Startup_Parameters for more info.",
"env_variable": "STARTUP_PARAMS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
},
{
"name": "Extra Flags for SteamCMD",
"description": "Only used when checking for server updates, and typically used for grabbing beta builds.\r\nExample: -beta profiling -betapassword CautionSpecialProfilingAndTestingBranchArma3",
"env_variable": "STEAMCMD_EXTRA_FLAGS",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
},
{
"name": "Check for Server Updates",
"description": "Check for server updates on server start.\r\n1 True | 0 False",
"env_variable": "UPDATE_SERVER",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "boolean"
},
{
"name": "Steam Workshop Mods to Download\/Update",
"description": "[*Only works if the host owns Arma 3] Comma separated list of Steam Workshop mod IDs to download\\\/update on server start. (ex. 450814997,463939057) Each mod will be downloaded to the root directory with the folder format: @ModIdNumber",
"env_variable": "UPDATE_WORKSHOP",
"default_value": "",
"user_viewable": true,
"user_editable": true,
"rules": "nullable|string"
},
{
"name": "Set Mods to Lowercase",
"description": "On server start, goes through all the mod folders listed in \"Mods\" & \"Server Mods\", and makes sure every folder and file is lowercase (to prevent errors). This is particularly useful to run ONCE after copying a mod from a Windows machine to the server, or if mods seem to not be loading.",
"env_variable": "MODS_LOWERCASE",
"default_value": "0",
"user_viewable": true,
"user_editable": true,
"rules": "boolean"
}
]
}