"""Arma 3 process configuration: executables, ports, directory layout.""" class Arma3ProcessConfig: def get_allowed_executables(self) -> list[str]: return ["arma3server_x64.exe", "arma3server.exe"] def get_port_conventions(self, game_port: int) -> dict[str, int]: """ Arma 3 derives 3 additional ports from the game port. All 4 must be free when starting a server. rcon_port is separate (user-configurable, not auto-derived here). """ return { "game": game_port, "steam_query": game_port + 1, "von": game_port + 2, "steam_auth": game_port + 3, } def get_default_game_port(self) -> int: return 2302 def get_default_rcon_port(self, game_port: int) -> int | None: return game_port + 4 # e.g. 2306 for default game port def get_server_dir_layout(self) -> list[str]: """Subdirectories to create inside servers/{id}/.""" return ["server", "battleye", "mpmissions"]