Launching Alpine Faction Bots

From Red Faction Wiki
Revision as of 19:44, 28 April 2026 by Goober (talk | contribs) (Created page with "{{RF1Tutorial|Goober}} This step-by-step guide will walk you through setting up '''headless bots''' on a '''Red Faction 1''' https://alpinefaction.com Alpine Faction v1.3 dedicated server. Headless bots are Alpine Faction clients running with no rendering or sound, controlled remotely by the dedicated server. Because they connect like real players, the server gets bots that move, fight, and use the network exactly as a human would - without the dedicated server havin...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This step-by-step guide will walk you through setting up headless bots on a Red Faction 1 [Alpine Faction] v1.3 dedicated server. Headless bots are Alpine Faction clients running with no rendering or sound, controlled remotely by the dedicated server. Because they connect like real players, the server gets bots that move, fight, and use the network exactly as a human would - without the dedicated server having to simulate them locally.

NOTE: This guide assumes you have already set up an Alpine Faction dedicated server. If you have not, please see:

Overview

  • The dedicated server does not run the bots locally. Instead, each bot is a separate Alpine Faction process running on a computer that can reach the server.
  • Each bot client connects to the server using the normal multiplayer connection flow, but is identified as a bot via a shared secret it sends in its join request.
  • The dedicated server controls each bot by sending it a profile (personality, skill, name, character) and steering its behaviour over the network.
  • By default, headless bots run with no rendering and no sound, so resource usage per bot is low.

To run any number of headless bots, you need:

  1. A dedicated server configured with a bot shared secret (and optionally one or more bot profiles).
  2. One Alpine Faction client process per bot, launched with the matching secret and the server's address.

Step 1: Configure the dedicated server

Open your dedicated server's ADS config file (the one you pass to AlpineFactionLauncher.exe with -ads).

Add a bot_shared_secret to the top-level (root) section. This is any 32-bit unsigned integer; treat it like a password - clients that don't send the matching secret will be rejected as bot clients.

bot_shared_secret = 1234567890

IMPORTANT: The shared secret value must be greater than 0. A value of 0 disables bot authentication entirely.

IMPORTANT: The number of bots that will be filled in is capped by your server's ideal_player_count. If you want N bots, make sure ideal_player_count is at least N. Bots beyond that count will be rejected on join.

Step 2: (Optional) Create bot profiles

You can leave the rest of the config alone - bots that connect with no profiles configured will use sensible defaults (the balanced personality and the average skill preset, with a randomized name and character).

For more variety, you can define one or more bot profile ADS files and reference them from your server config. Each connecting bot is assigned a profile slot in round-robin fashion.

Step 2a: Write a profile file

Create a new file, e.g. bots/aggressive_alice.toml, next to your dedicated server config:

# Identity (both optional - leave empty to randomize from the default identity pool)
player_name  = "Alice"
mp_character = "miner1"

# Behavioural preset (see "Available presets" below)
personality_preset = "aggressive"
skill_preset       = "hard"

# Optional: tweak individual personality fields
[personality_overrides]
# Many fields are available. This guide will be expanded later to contain them.

# Optional: tweak individual skill fields
[skill_overrides]
# Many fields are available. This guide will be expanded later to contain them.

# Optional: enable specific quirks
[quirks]
# Many fields are available. This guide will be expanded later to contain them.

Step 2b: Reference profiles from the server config

In your main ADS server config, add a bot_profiles array listing the relative paths to each profile file:

bot_profiles = [
    "bots/aggressive_alice.toml",
    "bots/sniper_bob.toml",
    "bots/balanced_charlie.toml",
]

Paths are resolved relative to the directory containing your server's ADS config.

Available presets

Personality presets: balanced, aggressive, defensive, tactician, berserker, objective, sniper, guerrilla, collector, brawler, destroyer

Skill presets: beginner, easy, average, hard, expert, nightmare

If a profile omits personality_preset it defaults to balanced. If it omits skill_preset it defaults to average.

Step 3: Start the dedicated server

Launch your dedicated server normally:

AlpineFactionLauncher.exe -ads my_server.toml -port PORT

Watch the server console output. You should see lines like:

  Bot shared secret:                     1234567890
  Loading bot profile: .../bots/aggressive_alice.toml
  Bot player name:                       Alice
  Bot personality preset:                aggressive
  Bot skill preset:                      hard

If you don't see your bot configuration applied, double-check your ADS file for syntax errors and confirm the file paths in bot_profiles resolve correctly.

Step 4: Launch a headless bot client

For each bot you want, start a separate AlpineFactionLauncher.exe process with these arguments:

AlpineFactionLauncher.exe -url rf://IP:PORT -bot 1234567890

The arguments are:

  • -url rf://IP:PORT - The address of your server. Use rf://127.0.0.1:7755 if the bot is running on the same machine as the server (replace 7755 with whatever port your server uses).
  • -bot <secret> - Enables headless bot mode. The number must match the bot_shared_secret from your server config exactly.
  • -noquit (optional) - Prevents the bot process from quitting automatically when it disconnects.

When the bot is accepted, you'll see it appear in the server's player list (with the name from its assigned profile, or a randomized default name if no profiles are configured).

Running multiple bots

To run more than one bot, simply launch AlpineFactionLauncher.exe multiple times with the same -bot arguments. Each invocation creates a separate process.

Each bot will be assigned the next available profile slot (round-robin), and bots beyond your server's ideal_player_count will be rejected.

Additional information

Debug rendering

If you want to see what a bot is doing - for development, debugging, or just curiosity - replace -bot with -debugbot:

AlpineFactionLauncher.exe -url rf://127.0.0.1:7755 -debugbot 1234567890

This launches a normal rendered Alpine Faction window controlled by the server, with bot debug overlays enabled. Use it sparingly - it's much heavier than a headless bot.

Without a shared secret

If you don't set bot_shared_secret on your server, -bot/-debugbot clients will not be accepted as bots.

Bot count limit

The server will reject incoming bots once the connected bot count reaches ideal_player_count. Bot slots also free up automatically when bots disconnect. To run a server with more bots, raise ideal_player_count in your server rules.

Still need help?