// Property keys are case insensitive // == IP Support == // IP properties accept: // - IP v4 addresses like 127.0.0.1 or 123.123.123.123 // - IP v6 addresses like :: or fe80::1 // - NO host-names // A minimal client example // If spring is started as client, it needs the following information to work properly [GAME] { HostIP=xxx.xxx.xxx.xxx; // which IP the server is hosting on. see "IP Support" at the start of this document. HostPort=xxx; // (optional) default is 8452 SourcePort=0; // (optional) default is 0. set this if you want a different source port (as client), 0 means OS-select and should be preferred. MyPlayerName=somename; MyPasswd=secretpassword; IsHost=0; // tell the engine this is a client } // A host example // note that the same values for clients also need to be set here [GAME] { MapName=; // with .smf extension GameType=Balanced Annihilation V6.81; // the primary mod NAME (archive works too, but name is prefered) GameStartDelay=4; // optional, in seconds (unsigned int), default: 4 // The number of seconds till the game starts, // counting from the moment when all players are connected and ready. ScriptName=Commanders; StartPosType=x; // 0 fixed, 1 random, 2 choose in game, 3 choose before game (see StartPosX) DemoFile=demo.sdf; // if set this game is a multiplayer demo replay SaveFile=save.ssf; // if set this game is a continuation of a saved game HostIP=xxx.xxx.xxx.xxx; // (optional) which IP to host on. omit or use an empty value to host on any local IP. see "IP Support" at the start of this document. HostPort=xxx; // (optional) default is 8452. where clients are going to connect to. SourcePort=0; // no effect for host AutohostIP=xxx.xxx.xxx.xxx; // communicate with spring, specify which IP the autohost is listening on. see "IP Support" at the start of this document. AutohostPort=X; // communicate with spring, specify the port you are listening (as host) MyPlayerName=somename; // our ingame-name (needs to match one players Name= field) IsHost=1; // 0: no server will be started in this instance // 1: start a server NumPlayers=x; // not mandatory, but can be used for debugging purposes NumTeams=y; // same here, set this to check if the script is right NumAllyTeams=z; // see above // A player (controlls a team, player 0 is the host only if IsHost is not set) [PLAYER0] { Name=name; // pure info, eg. the account name from the lobby server Password=secretpassword; // player can only connect if he set MyPasswd accordingly Spectator=0; Team=number; // the team this player controlls IsFromDemo=0; // use only in combination with Demofile (see above) CountryCode=; // country of the player, if known (nl/de/it etc.) Rank=-1; } // more players // A skirmish AI (controlls a team) [AI0] { Name=name; // [optional] pure info, eg. the name set in the lobby // the name actually used in game will be: // "${Name} (owner: ${player.Name})" ShortName=RAI; // shortName of the Skirmish AI library or name of the // LUA AI that controlls this team. // see spring.exe --list-skirmish-ais for possible values Team=number; // the team this AI controlls Host=number; // the player whichs computer this AI runs on // eg. for [PLAYER0] above, this would be 0 Version=0.1; // [optional] version of this Skirmish AI [OPTIONS] // [optional] contains AI specific options { difficultyLevel=1; } } // more skirmish AIs // players in this will share the same units (start with one commander etc.) [TEAM0] { TeamLeader=x; // player number that is the "leader" // if this is an AI controlled team, TeamLeader is the // player number of the AI controlling team // see AI.Host AllyTeam=number; RgbColor=red green blue; // red green blue in range [0-1] Side=Arm/Core; // other sides possible with user mods i suppose Handicap=0-100; // Percent bonus on all resources collected ? StartPosX=0; // Use these in combination with StartPosType=3 StartPosZ=0; // range is in map coordinates as returned by unitsync (NOT like StartRectTop et al) LuaAI=name; // name of the LUA AI that controlls this team // Either a [PLAYER] or an [AI] is controlling this team, or LuaAI is set. // DEPRECATED: The TeamLeader field indicates which computer the Skirmish AI will run on. } //more teams // teams in ally team share los etc and cant break alliance, every team must be in exactly one ally team [ALLYTEAM0] { NumAllies=0; Ally0=(AllyTeam number); // means that this team is allied with the other, not necesarily the reverse StartRectTop=0; // Use these in combination with StartPosType=2 StartRectLeft=0; // (ie. select in map) StartRectBottom=1; // range is 0-1: 0 is left or top edge, StartRectRight=1; // 1 is right or bottom edge } // more ally teams // something for selecting which unit files to disable or restrict NumRestrictions=xx; [RESTRICT] { Unit0=armah; Limit0=0; // use 0 for all units that should be completely disabled Unit1=corvp; Limit1=50; // >0 can be used for limiting, like build restrictions in TA //... } [MODOPTIONS] { StartMetal=1000; StartEnergy=1000; MaxUnits=500; // per team GameMode=x; // 0 cmdr dead->game continues, 1 cmdr dead->game ends, 2 lineage, 3 openend LimitDGun=0; // limit dgun to fixed radius around startpos? DisableMapDamage=0; // disable map craters? GhostedBuildings=1; // ghost enemy buildings after losing los on them NoHelperAIs=0; // are GroupAIs and other helper AIs allowed? LuaGaia=1; // Use LuaGaia? LuaRules=1; // Use LuaRules? FixedAllies=1; // Are ingame alliances allowed? MaxSpeed=3; // speed limits at game start MinSpeed=0.3; } }