SPRING(6)

๐Ÿ“ฆ version 105.0.1, in ubuntu jammy

๐Ÿ’– SPRING(6) โ€” Games ๐Ÿ’–

okay bestie, sit down, hydrate, because this is the manual page for spring (section 6, Games) and she is long. It's the Default Engine build of an open source RTS game engine, and she's iconic, she's customizable, she's a whole ecosystem. Let's go ๐Ÿฆ‹


โœจ NAME โœจ

spring โ€” an open source RTS game engine, Default Engine edition ๐Ÿ’…


โœจ SYNOPSIS โœจ

spring [-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 --list-ai-interfaces

spring --list-skirmish-ais

spring --list-def-tags

spring --list-config-vars

spring [-h|--help]

spring --sync-version

spring [-V|--version]

like yes, she has that many modes. main character energy fr fr ๐Ÿ‘‘


โœจ DESCRIPTION โœจ

Spring is a versatile 3D RTS game engine. She uses extensively Lua for scripting game-specific code, which is the whole reason nearly every aspect of the engine is customizable โ€” from the GUI, to unit AI, to pathfinding. literally everything is a vibe you can tweak ๐Ÿ’…

She's mainly designed around online multiplayer games, but no cap, you can also play her in single-player mode against AIs. solo queen behavior ๐ŸŽ€

The engine can run graphics and simulation in two separate threads, depending on the game and engine settings. On multi-core systems this will typically boost the performance. threads slay, periodt ๐Ÿ”ฅ


โœจ OPTIONS โœจ

  • -h, --help โ€” Print the options help message and exit ๐Ÿซถ
  • -V, --version โ€” Display program version and exit โœจ
  • --sync-version โ€” Display program sync version (for online gaming) and exit ๐ŸŒˆ
  • --nocolor โ€” Disables colorized stdout ๐Ÿ™ˆ
  • --quiet โ€” Ignore unrecognized arguments ๐Ÿคซ
  • -f, --fullscreen โ€” Run in fullscreen mode ๐Ÿ–ฅ๏ธ
  • -w, --window โ€” Run in windowed mode ๐ŸชŸ
  • -b, --minimise โ€” Start in background (minimised) ๐Ÿ’ค
  • --safemode โ€” Turns off many things that are known to cause problems (i.e. on PC/Mac's with lower-end graphic cards) ๐Ÿ›Ÿ
  • -s, --server IP_OR_HOSTNAME โ€” Run as a server on the given address ๐ŸŒ
  • -t, --textureatlas โ€” Dump each finalised textureatlas into textureatlasN.tga ๐Ÿ–ผ๏ธ
  • --benchmark TIME โ€” Enable benchmark mode (writes a benchmark.data file). The given number specifies the timespan to test โฑ๏ธ
  • --benchmarkstart TIME โ€” Benchmark start time in minutes โณ
  • -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 ๐Ÿ—บ๏ธ
heads up bestie: the synopsis says -m|--minimise but the options list says -b, --minimise and -m is --map. I am not touching that, I'm just reporting the lore as it was written ๐Ÿ™ˆ

โœจ 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 โœจ

(yes that's how the section is spelled in the real page, we respect her ๐Ÿซถ)

  • 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 โœจ

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 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. ๐Ÿงณ


โœจ ISOLATION MODE โœจ

Not to confuse with Portable Mode, this mode disables all automatic Data Dir scanning and limits reading & writing to a single folder. This is 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 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 in 3 sections: ๐Ÿ‘‘

๐ŸŒˆ the priority tea (normal / portable / isolation)

  • priority: high โ€” 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: (none listed) โ€” automatic scanned
    • normal: -e CONFIG_HOME, ETC_DIRS, USR_SHARE
    • portable: -e INSTALL_DIR, CONFIG_HOME, ETC_DIRS, USR_SHARE
    • isolation: ISOLATION_DIR
  • priority: low โ€” 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 spring 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 bestie, there's more coming, don't go anywhere ๐Ÿ’–

๐Ÿ’– CONFIG FILES ๐Ÿ’–

okay so bestie, plot twist: Spring doesn't just read one config file โ€” it can load a whole lil squad of them and merge them together โœจ. So like, super similar to how DATA DIRs work: there's one file where the engine actually writes to, and then a bunch of read-only files it just vibes with. ๐Ÿ’…

Here's the directory scan situation โ€” it goes hunting through these, and priority decides everything:

  • exclusive โ€” the file you define via --config. When that's defined, ONLY that one gets loaded, no cap. Main character energy, honestly. ๐Ÿ‘‘
  • high โ€” the write DATA DIR ๐Ÿ’พ
  • (middle vibes, no fancy label) โ€” these ones:
    • -e โ€” skipped in Isolated mode, just so you know ๐Ÿซถ
    • *nix/MacOSX: ~/.springrc
    • Windows: C:\Users\USER\AppData\Local\springsettings.cfg
  • low โ€” literally all the read DATA DIRs ๐ŸŒˆ
The one with the highest priority is the one that gets used for writing. So if you're wondering "where did my setting go bestie" โ€” that's the answer. ๐Ÿ™ˆ

And the filenames of these config files can be any of these, again in priority order:

  • high โ€” springsettings-%Engine_Version%.cfg
  • springsettings.cfg
  • springrc-%Engine_Version% โ€” *nix/MacOSX only ๐Ÿ“
  • low โ€” springrc โ€” *nix/MacOSX only ๐Ÿ“
An example for a versioned config file is springsettings-94.1.cfg. cute right? the version number is literally right there in the name, iconic. โœจ

๐ŸŒธ SEE ALSO ๐ŸŒธ

go read those too bestie, they're the whole friend group ๐Ÿซถ


๐Ÿฆ‹ HOMEPAGE ๐Ÿฆ‹

More information about Spring can be found at link: https://springrts.com โ€” yes it's a real link, go click it, it's giving official ๐Ÿ’…


๐ŸŽ€ 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). ๐Ÿซถ


โญ NOTES โญ

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

okay that's the whole thing, bestie!! this page is from the Spring package, version date 11/23/2021, and it's SPRING(6) โ€” go forth and config responsibly, no cap ๐Ÿ’–โœจ๐ŸŽ€๐Ÿฆ‹๐ŸŒธ๐Ÿ’…๐Ÿซถ๐Ÿ˜ญ๐Ÿ”ฅ๐Ÿ‘‘๐ŸŒˆโญ๐Ÿ’€๐Ÿ™ˆ๐Ÿ“๐Ÿงš๐Ÿ’œ

๐Ÿ“ฆ where this page comes from