SPRING-HEADLESS(6)

πŸ“¦ version 105.0.1, in ubuntu jammy

okay so bestie, pull up a chair πŸ’– this is spring-headless β€” section 6, the Games corner of the manual β€” and it's the headless build of Spring, an open source RTS game engine. No graphics, no sound, all vibes. Let's get into it. πŸ¦‹


✨ NAME ✨

spring-headless β€” an open source RTS game engine, the Headless Engine era. πŸ’…


πŸŽ€ SYNOPSIS πŸŽ€

okay so here's every single way you can summon her, verbatim, no cap:

spring-headless [--safemode] [-s|--server IP_OR_HOSTNAME]
[-p|--projectiledump] [--benchmark TIME [--benchmarkstart TIME]]
[-i|--isolation] [--isolation-dir PATH] [-n|--name STRING] [-C|--config
FILE] SCRIPT

spring-headless --list-ai-interfaces

spring-headless --list-skirmish-ais

spring-headless --list-def-tags

spring-headless --list-config-vars

spring-headless [-h|--help]

spring-headless --sync-version

spring-headless [-V|--version]

🌸 DESCRIPTION 🌸

Spring is a versatile 3D RTS game engine, and the way she does it is by using Lua extensively for scripting the game-specific code β€” which means nearly every single aspect of the engine is customizable. GUI? Lua. Unit AI? Lua. Pathfinding? You guessed it, bestie. Lua. πŸ˜­πŸ’œ

She's mainly designed around online multiplayer games, but she can absolutely also be played in single-player mode against AIs. main character energy either way.

This is the engine version without graphics or sound output. She still runs the full simulation, while spring-dedicated basically only redirects network traffic. So if you wanna test and simulate AI-only games at high speeds on systems that don't have graphics and sound output support β€” this is the one. periodt. πŸ”₯


πŸ’… OPTIONS πŸ’…

  • -h, --help β€” prints the options help message and exits. short, sweet, helpful.
  • -V, --version β€” displays the program version and exits.
  • --sync-version β€” displays the program sync version (for online gaming) and exits.
  • --nocolor β€” disables colorized stdout. sad, but okay.
  • --quiet β€” ignore unrecognized arguments. she's unbothered fr fr.
  • --safemode β€” turns off many things that are known to cause problems (i.e. on PC/Mac's with lower-end graphic cards). safety first, bestie 🫢
  • -s, --server IP_OR_HOSTNAME β€” run as a server on the given address.
  • -i, --isolation β€” limit the data-dir (games & maps) scanner to one directory (see --isolation-dir and the SPRING_ISOLATED env var).
  • --isolation-dir PATH β€” specify the isolation-mode data-dir (see --isolation and the SPRING_ISOLATED env var).
  • --write-dir PATH β€” specify the directory used for all saving.
  • -n, --name NAME β€” set your player name.
  • -C, --config FILE β€” exclusive configuration file.
  • --list-ai-interfaces β€” dump a list of available AI Interfaces to STDOUT.
  • --list-skirmish-ais β€” dump a list of available Skirmish AIs to STDOUT.
  • --list-def-tags β€” dump a list of available Definition Tags in JSON-format to STDOUT.
  • --list-ceg-classes β€” dump a list of available Projectile classes in JSON-format to STDOUT.
  • --list-config-vars β€” dump all default config vars in JSON-format to STDOUT.
  • -g, --game GAME β€” instantly start the GAME with a minimal setup. Requires --map to be present, too. Sets the modoption minimalsetup = 1.
  • -m, --map MAP β€” requires --game to be set, too. see --game.

πŸ“ FILES πŸ“

  • ~/.config/spring/ β€” the default data-directory (see section DATA DIR).
  • ~/.config/spring/springsettings.cfg β€” contains the users settings for the engine, for things like graphic and sound.
  • /etc/spring/datadir β€” contains the : separated paths to additional data-dirs (see section DATA DIR).

🌈 ENVIROMENT VARIABLES 🌈

(that's how the section is spelled, and I'm not gonna fight her on it πŸ’€)

  • SPRING_LOG_SECTIONS β€” selective functionality to change the verbosity (separated by ,).
  • SPRING_WRITEDIR β€” define custom primary write DATA DIR. Place where spring saves logs, settings, ...
  • SPRING_DATADIR β€” adds additional DATA DIRs Spring will search for files (separated by :).
  • SPRING_ISOLATED β€” if defined, Spring will stop searching files outside of the binaries directory. If it is set to a valid directory path, it will be used as the isolation directory. See the --isolation and the --isolation-dir options.
  • SPRING_NOCOLOR β€” same as spring --nocolor.

🧚 SCRIPT 🧚

The SCRIPT argument can either be a:

  • Spring URL (spring://[username[:password]@]host[:port])
  • start script (often named script.txt)
  • replay file (*.sdfz)
  • save game (*.ssf)

πŸŽ€ PORTABLE MODE πŸŽ€

An all-in-one-folder setup, which allows you to run Spring without installation. To do so, all relevant files (binaries & basecontent) must be in a single folder β€” esp. spring(.exe), libunitsync.so/unitsync.dll and springsettings.cfg. Spring will then use the all-in-one-folder for writing and won't do so anywhere else on the system β€” but it may open other files & directories for reading. she stays in her lane, mostly. πŸ™ˆ


πŸ¦‹ ISOLATION MODE πŸ¦‹

Not to be confused with Portable Mode, this mode disables all automatic Data Dir scanning and limits reading & writing to a single folder. This is super useful when games want to run separate from other Spring games. Isolation mode can be enabled by placing an empty isolated.txt next to the spring executable, or by setting the SPRING_ISOLATED env var. πŸ’…


πŸ‘‘ DATA DIRS πŸ‘‘

Data directories are searched for content, and among other things, may contain:

  • config files
  • logs
  • games
  • maps
  • AIs
  • cache

Sorted by priority, the engine may use multiple data directories β€” but it will use only the one with the highest priority as writable, to write cache & log files to. The hierarchy the engine loads DATA DIRs in can be grouped into 3 sections:

  • high priority β€” section: custom user write
    • normal: -e directory defined via --write-dir, SPRING_WRITEDIR envvar
    • portable: -e directory defined via --write-dir, SPRING_WRITEDIR envvar
    • isolation: -e directory defined via --write-dir, SPRING_WRITEDIR envvar
  • priority: (blank in the original table) β€” section: automatic scanned
    • normal: -e CONFIG_HOME, ETC_DIRS, USR_SHARE
    • portable: -e INSTALL_DIR, CONFIG_HOME, ETC_DIRS, USR_SHARE
    • isolation: ISOLATION_DIR
  • low priority β€” section: custom user read
    • normal: -e SPRING_DATADIR envvar, SpringData configtag
    • portable: -e SPRING_DATADIR envvar, SpringData configtag
    • isolation: -e SPRING_DATADIR envvar, SpringData configtag

πŸ’œ CONFIG_HOME πŸ’œ

Config directories in user's home.

*nix/MacOSX:

  • ${XDG_CONFIG_HOME-"~/.config"}/spring
  • ~/.spring

Windows:

  • C:/.../My Documents/My Games/Spring/
  • C:/.../My Documents/Spring/
  • C:/.../All Users/Applications/Spring/

⭐ INSTALL_DIR ⭐

Location of the spring-headless binary.


🌸 ETC_DIRS 🌸

Additional : separated DATA DIRs defined in /etc/spring/datadir.


πŸŽ€ USR_SHARE πŸŽ€

  • *nix/MacOSX: /usr/.../share/spring & binary dir if is Data Dir
  • MacOSX: .../Spring.app/Contents/Resources/share/games/spring/base/
  • Windows: Install directory

πŸ”₯ ISOLATION_DIR πŸ”₯

  • Mode A (--isolation): INSTALL_DIR
  • Mode B (--isolation-dir): supplied dir

okay that's the whole data-dir tea for now β€” and bestie, we're only like halfway πŸ’€ part 2 is coming, don't go anywhere 🌈✨

πŸ’Ύ CONFIG FILES πŸ’Ύ

okay so bestie, Spring can load configurations from multiple files and merge them. so it's literally the same vibe as DATA DIRs β€” there's one file where the engine writes to and multiple read-only files. one writer, many readers, main character and the supporting cast, you know how it is πŸ’…

It scans following directories for config files:

  • priority: exclusive β€” the file defined via --config (when defined, only this is loaded, like it's the only one invited to the party)
  • priority: high β€” write DATA DIR
  • priority: (blank) β€” this one has no priority label, it's just vibing:
    • -e (skipped in Isolated mode)
    • *nix/MacOSX: ~/.springrc
    • Windows: C:\Users\USER\AppData\Local\springsettings.cfg
  • priority: low β€” all read DATA DIRs

(The one with highest priority will be used for writing.) so like, the loudest one in the group chat gets the pen ✍️


The filename of such config files can be as following:

  • priority: high β€” springsettings-%Engine_Version%.cfg
  • priority: (blank) β€” springsettings.cfg
  • priority: (blank) β€” springrc-%Engine_Version% (*nix/MacOSX only)
  • priority: low β€” springrc (*nix/MacOSX only)

(An example for a versioned config file is "springsettings-94.1.cfg".) πŸŽ€


πŸ‘€ SEE ALSO πŸ‘€

spring(6) spring-legacy(6) spring-dedicated(6)

go read those too, they're the rest of the friend group 🫢


🌈 HOMEPAGE 🌈

More information about Spring can be found at link: https://springrts.com

https://springrts.com β€” bookmark it bestie, fr fr ⭐


πŸ‘‘ AUTHOR πŸ‘‘

Spring was written by the Spring developers.

This manual page was written by Marco Amadori <marco.amadori@gmail.com[1]>, for the Debian project (and may be used by others).

so much respect to them, iconic behavior honestly πŸŽ€


πŸ“ NOTES πŸ“

  1. marco.amadori@gmail.com mailto:marco.amadori@gmail.com

and that's the whole page bestie!! πŸ¦‹ this was the Spring package, dated 11/23/2021, and you just finished reading SPRING-HEADLESS(6) πŸ’– no cap, you ate that. go run something slay βœ¨πŸ’…

πŸ“¦ where this page comes from