SPRING-LEGACY(6)

πŸ“¦ version 105.0.1, in ubuntu jammy

πŸ’– NAME πŸ’–

spring-legacy β€” an open source RTS game engine, and this one's the Legacy Engine build. That's it, that's the whole identity. It's the manual page SPRING-LEGACY(6), filed under Games, and bestie we are going to read the whole thing together. πŸŽ€


✨ SYNOPSIS ✨

okay so here's every way you can yell at it:

spring-legacy [-f|--fullscreen] [-w|--window] [-m|--minimise]
[--safemode] [-s|--server IP_OR_HOSTNAME] [-p|--projectiledump]
[-t|--textureatlas] [--benchmark TIME [--benchmarkstart TIME]]
[-i|--isolation] [--isolation-dir PATH] [-n|--name STRING] [-C|--config
FILE] [SCRIPT]

spring-legacy --list-ai-interfaces

spring-legacy --list-skirmish-ais

spring-legacy --list-def-tags

spring-legacy --list-config-vars

spring-legacy [-h|--help]

spring-legacy --sync-version

spring-legacy [-V|--version]

🌸 DESCRIPTION 🌸

Spring is a versatile 3D RTS game engine, periodt. The way it does this is by using Lua extensively for scripting game-specific code, which makes basically every aspect of the engine customizable β€” from the GUI, to unit AI, to pathfinding. literally all of it. πŸ’…

It's mainly designed around online multiplayer games, but you can also play it in single-player mode against AIs. no friends online? no problem, the bots will humble you just as fast.

This engine version runs graphics and simulation in a single thread, and it may marginally increase the performance on single-core systems. ✨


πŸ‘‘ OPTIONS πŸ‘‘

okay so this is the menu, read it carefully bestie:

  • -h, --help β€” prints the options help message and exits. bye πŸ‘‹
  • -V, --version β€” displays the program version and exits.
  • --sync-version β€” displays the program sync version (the one for online gaming) and exits. important if you're playing with other people, iykyk.
  • --nocolor β€” disables colorized stdout. no more rainbow in the terminal, tragic 😭
  • --quiet β€” ignores unrecognized arguments. it simply does not perceive them.
  • -f, --fullscreen β€” runs in fullscreen mode.
  • -w, --window β€” runs in windowed mode.
  • -b, --minimise β€” starts in the background (minimised). shy girl behaviour, love that.
  • --safemode β€” turns off many things that are known to cause problems (like on PCs/Macs with lower-end graphic cards). your lil GPU says thank you 🫢
  • -s, --server IP_OR_HOSTNAME β€” runs as a server on the address you hand it.
  • -t, --textureatlas β€” dumps each finalised textureatlas into textureatlasN.tga.
  • --benchmark TIME β€” enables benchmark mode (writes a benchmark.data file). The number you give specifies the timespan to test.
  • --benchmarkstart TIME β€” benchmark start time, in minutes.
  • -i, --isolation β€” limits the data-dir (games & maps) scanner to one directory. see --isolation-dir and the SPRING_ISOLATED env var.
  • --isolation-dir PATH β€” specifies the isolation-mode data-dir. see --isolation and the SPRING_ISOLATED env var.
  • --write-dir PATH β€” specifies the directory used for all saving.
  • -n, --name NAME β€” sets your player name. choose wisely, it's your whole brand. πŸ’…
  • -C, --config FILE β€” exclusive configuration file.
  • --list-ai-interfaces β€” dumps a list of available AI Interfaces to STDOUT.
  • --list-skirmish-ais β€” dumps a list of available Skirmish AIs to STDOUT.
  • --list-def-tags β€” dumps a list of available Definition Tags in JSON-format to STDOUT.
  • --list-ceg-classes β€” dumps a list of available Projectile classes in JSON-format to STDOUT.
  • --list-config-vars β€” dumps all default config vars in JSON-format to STDOUT.
  • -g, --game GAME β€” instantly starts 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.
not me noticing the SYNOPSIS and the OPTIONS list disagree on which letter does what πŸ’€ both are in the docs, so both are here, exactly as written. we don't editorialize on the source, we just report it. πŸŽ€

πŸ¦‹ FILES πŸ¦‹

  • ~/.config/spring/ β€” the default data-directory (see section DATA DIR).
  • ~/.config/spring/springsettings.cfg β€” contains the user's 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 🌈

yes bestie, that's how it's spelled in the page, we keep it. πŸ’œ

  • SPRING_LOG_SECTIONS β€” selective functionality to change the verbosity (separated by ,).
  • SPRING_WRITEDIR β€” define custom primary write DATA DIR. The place where spring saves logs, settings, ...
  • SPRING_DATADIR β€” adds additional DATA DIRs Spring will search for files in (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, that path gets used as the isolation directory. See the --isolation and the --isolation-dir options.
  • SPRING_NOCOLOR β€” same as spring --nocolor.

πŸŽ€ SCRIPT πŸŽ€

SCRIPT can be any one of these four things:

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

πŸ“ PORTABLE MODE πŸ“

An all-in-one-folder setup, which lets you run Spring without installing anything. To do that, all the relevant files (binaries & basecontent) have to live in a single folder β€” especially spring(.exe), libunitsync.so/unitsync.dll and springsettings.cfg. Spring will then use that all-in-one-folder for writing and won't write anywhere else on the system, but it may still open other files & directories for reading.


🧚 ISOLATION MODE 🧚

Not to be confused with Portable Mode, okay? Different thing, similar name, classic. This mode disables all automatic Data Dir scanning and limits reading & writing to a single folder. It's very 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, they may contain:

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

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

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ priority β”‚   section   β”‚     normal      β”‚    portable     β”‚    isolation    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          β”‚             β”‚                 β”‚                 β”‚                 β”‚
β”‚     high β”‚ custom user β”‚ -e directory    β”‚ -e directory    β”‚ -e directory    β”‚
β”‚          β”‚ write       β”‚ defined via     β”‚ defined via     β”‚ defined via     β”‚
β”‚          β”‚             β”‚ --write-dir     β”‚ --write-dir     β”‚ --write-dir     β”‚
β”‚          β”‚             β”‚                 β”‚                 β”‚                 β”‚
β”‚          β”‚             β”‚ SPRING_WRITEDIR β”‚ SPRING_WRITEDIR β”‚ SPRING_WRITEDIR β”‚
β”‚          β”‚             β”‚ envvar          β”‚ envvar          β”‚ envvar          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          β”‚             β”‚                 β”‚                 β”‚                 β”‚
β”‚          β”‚ automatic   β”‚ -e CONFIG_HOME  β”‚ -e INSTALL_DIR  β”‚ ISOLATION_DIR   β”‚
β”‚          β”‚ scanned     β”‚                 β”‚                 β”‚                 β”‚
β”‚          β”‚             β”‚ ETC_DIRS        β”‚ CONFIG_HOME     β”‚                 β”‚
β”‚          β”‚             β”‚                 β”‚                 β”‚                 β”‚
β”‚          β”‚             β”‚ USR_SHARE       β”‚ ETC_DIRS        β”‚                 β”‚
β”‚          β”‚             β”‚                 β”‚                 β”‚                 β”‚
β”‚          β”‚             β”‚                 β”‚ USR_SHARE       β”‚                 β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚          β”‚             β”‚                 β”‚                 β”‚                 β”‚
β”‚      low β”‚ custom user β”‚ -e              β”‚ -e              β”‚ -e              β”‚
β”‚          β”‚ read        β”‚ SPRING_DATADIR  β”‚ SPRING_DATADIR  β”‚ SPRING_DATADIR  β”‚
β”‚          β”‚             β”‚ envvar          β”‚ envvar          β”‚ envvar          β”‚
β”‚          β”‚             β”‚                 β”‚                 β”‚                 β”‚
β”‚          β”‚             β”‚ SpringData      β”‚ SpringData      β”‚ SpringData      β”‚
β”‚          β”‚             β”‚ configtag       β”‚ configtag       β”‚ configtag       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

CONFIG_HOME

Config directories in the 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-legacy 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 part one, hold on bestie, part two is coming πŸ’–

πŸŽ€ CONFIG FILES πŸŽ€

okay bestie so here's the tea β˜• Spring doesn't just read one config file, it loads a whole squad of them and merges them together. So basically the same energy as DATA DIRs β€” there's one file the engine actually writes to, and a bunch of read-only files it just reads from. πŸ’–

It goes scanning through these directories looking for config files:

  • exclusive β€” the file you define with --config (and when that's defined, it's the only one loaded, periodt)
  • high β€” the write DATA DIR
  • - β€” -e (skipped when you're in Isolated mode)
    • *nix/MacOSX: ~/.springrc
    • Windows: C:\Users\USER\AppData\Local\springsettings.cfg
  • low β€” all read DATA DIRs
The one with the highest priority is the one that gets used for writing. πŸ‘‘

And the filenames of these config files can be, from most to least important:

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

(like, a real-life example of a versioned config file would be springsettings-94.1.cfg, iykyk πŸ¦‹)


🌈 SEE ALSO 🌈

spring(6) spring-headless(6) spring-dedicated(6)


πŸ¦‹ HOMEPAGE πŸ¦‹

Want more info about Spring? It's all right here, bestie: https://springrts.com ✨


πŸ’œ 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 it may be used by others too, no gatekeeping here 🫢).


πŸ“ NOTES πŸ“

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

and that's the whole page, bestie!! πŸŽ€ this was the Spring package manual, dated 11/23/2021, and the page itself is SPRING-LEGACY(6) β€” go forth and configure slayfully πŸ’–βœ¨πŸ‘‘

πŸ“¦ where this page comes from