Release candidate: Spring 0.82.0

Release candidate: Spring 0.82.0

Discuss Spring news, such as fresh releases and press coverage, here.
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Release candidate: Spring 0.82.0

Post by Tobi » 27 Jul 2010, 19:42

This version is not yet deployed on the server. For online play, 0.81.2 is still needed.

After almost 1500 changes we're proud to announce the first release candidate of the Spring 0.82 series.

Thanks everyone for their contributions!

Download links: We will put these links on the download page once the release is live on the lobby server.

Please, test this release candidate and report any bugs you may find (in particular regressions since the last release,!) on mantis. If no blocking issues are reported, we will officially release this in one - two weeks, though not earlier than on the 3rd of August.

We'd also like to remember game developers to test their games against this build of Spring, and in particular think about the following breaking changes:
Players, due to these changes it may happen that old games are not listed anymore in your lobby client, or that no start units are spawned. In both cases, this is not your fault nor a bug in Spring, but the result of the game not being up to date with these breaking changes in Spring.

Additionally I'd like to highlight that this release will allow mid-game join and rejoin (by replaying the game up to the point where the real game is).

Detailed changes since the bugfix release:

Engine / General:
  • added HeadLess version of the engine (no graphics, no sound) by hughperkins
  • better overall handling of connection problems, with highlighting of uncontrolled units
  • players in startscript may reconnect to a running game, even with changed IP address
  • players can choose server speed throttling algorithm by voting (/speedcontrol)
  • do not crash on AI Interface error
  • MT/GML: now a separate build target: make spring-multithreaded
  • fix linking under Fedora 13
  • allow choosing between available sound devices through config (snd_device)
  • add missing /skip variants to word completion
  • use new dependency system for maphelper.sdz (by Beherith)
  • OS X fixes
  • hardcoded startscripts removed (Air Test, etc.)
  • more default intercept types added
    EmgCannon -> 1, AircraftBomb -> 8, Flame -> 16, TorpedoLauncher -> 32
    LightningCannon -> 64, Rifle -> 128, Melee -> 256
  • engine does not spawn start unit anymore
  • engine does not use StartUnit tag in sidedata.lua anymore (but still passes it to Spring.GetSideData)
  • engine does not read `Script' map tag anymore
  • engine does not read `ScriptName' modoption anymore
  • engine does not deal with `StartMetal' and `StartEnergy' modoptions anymore
  • pathfinder debugging views can be rendered now when spectating (and not cheating)
  • dropped modinfo.tdf support (only modinfo.lua is supported now)
  • clients now compare their path-cache CRCs and warn about differences instead of updating their running checksums with them
  • Spring's CPU affinity can now also be set on non-win32 platforms, use the SetCoreAffinity ~/.springrc parameter as a bitmask
Engine / Simulation:
  • new unit tag: cloakTimeout, int, default 128 frames
  • fixed the featureVisibility mod-option
  • fixed calls to the engine path-finder to be sync-safe when run in unsynced context
  • reduced frequency of units ending up in "can't reach destination" situations
  • fixed units not inheriting orders from factories and piling up (due to having their paths aborted)
  • removed the TEDclassString UnitDef parameter (side-effect: hub-like units will break if they have a yardmap)
  • changed the semantics of the holdSteady UnitDef tag
    true ==> slave transportees to orientation of transporter attachment piece
    false ==> slave transportees to orientation of transporter body (default)
Engine / Rendering:
  • fixed alpha-masked shadows for S3O models
  • fixed far-textures (caused changing teamcolors and disappearing units)
  • support the OBJ model format (
  • support specular lighting, multiple blendable detail textures, and sky reflections on SMF maps ("SSMF") (slightly outdated wrt. the SMD parameters)
  • converted all shadow, tree, grass, model, and map shaders to GLSL
  • vertex-animated grass; maps can specify the grass blade- and shading-textures and the dimensions/angle for blades
  • refactored and abstracted unit/feature/projectile drawing to be format-agnostic
  • increased global decoupling between simulation and rendering code
  • fixed model specular lighting (most visible on units)
  • S3O model normals are now auto-scaled to unit-length
  • maps with mis-specified skybox textures will now load (without crashing Spring)
  • use OpenAL Soft 1.11 under windows (was Creative)
  • air-absorpion: absorb high frequencies when sound effects are far away (config-key & default value: snd_airAbsorption=0.1)
  • no-sound support through NO_SOUND compile time define or NoSound config-key
  • list of data-dirs for engine & unitsync are now always equal
  • API cleaned: no more void*, all structs deprecated
  • data dirs read from /etc/spring/datadir (separator is now ":" instead of " ")
  • added a new inline ctrl command '\008' which resets the TextColor to the
    color that was active when Print() got called, as in the following example:
    font:SetTextColor(0, 0, 1); -- blue
  • LuaLobby:
    • callouts:
      • Script.CreateLobby() -> userdata lobCon
      • lobCon:Connect(string url, int port)
      • lobCon:Disconnect()
      • lobCon:Login(string username, string password)
      • lobCon:Rename(string newname)
      • lobCon:ChangePass(string oldpassword, string newpassword)
      • lobCon:Register(string username, string password)
      • lobCon:ConfirmAggreement()
      • lobCon:JoinChannel(string chan_name [,string password])
      • lobCon:LeaveChannel(string chan_name)
      • lobCon:Say(string chan_name, string message)
      • lobCon:SayEx(string chan_name, string message)
      • lobCon:SayPrivate(string user_name, string message)
      • lobCon:StatusUpdate(bool ingame, bool away)
      • lobCon:Channels()
      • lobCon:KickChannelMember(string chan_name, string user_name, string reason)
      • lobCon:ChangeTopic(string chan_name, string topic)
      • lobCon:Poll()
    • callins:
      • lobCon.DoneConnecting(bool sucess, string error_message)
      • lobCon.ServerGreeting(string server_version, string spring_version, int udp_port, int mode)
      • lobCon.RegisterDenied(string reason)
      • lobCon.RegisterAccepted()
      • lobCon.LoginDenied(string reason)
      • lobCon.LoginEnd()
      • lobCon.Aggreement(string text)
      • lobCon.Motd(string text)
      • lobCon.ServerMessage(string text)
      • lobCon.ServerMessageBox(string text, string url)
      • lobCon.AddUser(string user_name, string country, number cpu)
      • lobCon.RemoveUser(string user_name)
      • lobCon.UserStatusUpdate(string user_name, bool away, bool bot, bool ingame, bool moderator, int rank)
      • lobCon.ChannelInfo(string chan_name, int num_users)
      • lobCon.ChannelInfoEnd()
      • lobCon.RequestMutelist(string chan_name)
      • lobCon.Mutelist(string chan_name, table {"userABC","userXYZ",...})
      • lobCon.Joined(string chan_name)
      • lobCon.JoinFailed(string chan_name, string reason)
      • lobCon.ChannelMember(string chan_name, string user_name, bool joined)
      • lobCon.ChannelMemberLeft(string chan_name, string user_name, string reason)
      • lobCon.ChannelMemberKicked(string chan_name, string user_name, string reason)
      • lobCon.ChannelTopic(string chan_name, string author, int time, string topic)
      • lobCon.ChannelMessage(string chan_name, string text)
      • lobCon.Said(string chan_name, string user_name, string text)
      • lobCon.SaidEx(string chan_name, string user_name, string text)
      • lobCon.SaidPrivate(string user_name, string text)
      • lobCon.Disconnected()
      • lobCon.NetworkError(string message)
  • added a new los checking argument to Set..RulesParam()
    e.g. new syntax is SetUnitRulesParam(int unitID, string paramName, float paramValue, { public = true } )
    possible values for the table are:
    `private` : only readable by the ally (default)
    `allied` : readable by ally + ingame allied
    `inlos` : readable if the unit is in LOS
    `inradar` : readable if the unit is in AirLOS
    `public` : readable by all
    note: if one condition is fulfilled all beneath it are too (e.g. if an unit is in LOS it can read params with `inradar=true` even if the param has `inlos=false`)
    note2: all GameRulesParam are public, TeamRulesParams can just be `private`,`allied` and/or `public`
  • new Spring.GetUnitMetalExtraction(unitID) -> nil | number
  • new synced Spring.ShareTeamResource(teamID_src, teamID_dst, type = ["metal"|"energy"], amount) -> nil
  • new Spring.GetTeamResourceStats(teamID, resourcetype = ["metal"|"energy"]) -> nil | used, produced, excess, recv, sent
  • added Spring.SetProjectileMoveControl(number pid, boolean b) --> nil callout; if <b>, makes all piece/weapon projectile movement fully Lua-controllable
  • improved Spring.GetTeamStatsHistory. It retuns now also the most recent data, not just the data of the cached stats which get updated only all 16 seconds.
  • fixed incorrect scaling in Spring.SetUnitResourceParam
  • fixed Spring.GetAIInfo, it returned incorrectly the given teamID as first argument
  • fixed a bug in Script.RemoveSyncedActionFallback
  • added missing `coroutines` module and missing `select` function to unsynced LuaGadgets
  • added os.setlocale to LuaUI
  • added Save/Load callins, both get a userdatum representing a save file as single argument
    Save is unsynced, Load is synced (both gadget only)
    Should allow implementing savegames mod side with less hacks
    /reloadgame chat command added for development purposes, this fires the Load event again
  • modified base {armordefs|movedefs|sidedata}.lua to follow pattern of icontypes.lua
  • added a ShieldPreDamaged call-in to LuaRules, triggered before any engine shield-vs-projectile logic executes
  • UnitDefs.model.textures now actually contains the names of the model textures for unit-type i
  • script.txt: Engine ignores GAME\\ModOptions\\LuaRules & interprets GAME\\ModOptions\\LuaGaia just as a boolean now
  • fixed GetScreenGeometry on win32 platforms to return the proper screenSizeY, not screenSizeY
  • taskbarSizeY
  • moved Spring.SetUnitRulesParam, Spring.SetTeamRulesParam, Spring.SetGameRulesParam from LuaRules-only to LuaSyncedCtrl
  • removed evaluator functions from LuaOpengl
  • removed Spring.MakeFont
  • removed Spring.SetRulesInfoMap, Spring.GetRulesInfoMap, Script.GetConfigString
  • removed Spring.CreateUnitRulesParams, Spring.CreateTeamRulesParams, Spring.CreateGameRulesParams
  • removed AllowUnsafeChanges("USE AT YOUR OWN PERIL"), it's always enabled now

Engine / Unit Scripts:
  • LUS: SetSignalMask raises error now when called outside thread
  • LUS: Signal/SetSignalMask support arbitrary objects as `signal names' now, bitwise logic is still applied to numbers
  • LUS: _G in a Lua Unit Script points to the environment of that Lua Unit Script now
  • LUS: TargetWeight and BlockShot are actually called now
  • COB: Added KSIN (135, 1024*sin(x)), KCOS (136), KTAN (137) and SQRT (138) get constants.
  • LUS: Fixed a desync bug.

  • fixed middle click scroll speed on linux
  • added new MiddleClickScrollSpeed option
  • more responsive mouse movement
  • made it easier to select units in factories
  • added new command "/buildwarnings [0|1]", analogous to "/movewarnings [0|1]"
  • improved unit type mix in front moves
  • new middle click scroll icon

  • added various new debug-draw callouts for profiling, state visualization, etc.
  • make sure the Release event always reaches dieing-state AI's
  • added a GetUnitVel callback, returns a unit's velocity vector
  • new Python AI Interface by theGeorge & abma
  • E323AI bug-fixes, logic- and performance enhancements
  • AAI: fix some crashes (one on death) & a logic error
  • RAI, KAIK and AAI: support unit captured&given from&to them
  • RAI, KAIK and AAI: config-, log- & cache-files now compatible with pool archived mods
  • KAIK: switched to .lua config-file format, added a basic mod whitelisting mechanism
  • KAIK: event-based TM updates
  • fix a crash on Skirmish AI death
  • fix Java AI Interface loading on Debian
  • fix Java compilation on some systems
  • fix Java crash: increase initial java heap size (by cranphin)
  • send an Update event before the first UnitCreated (when initializing mid-game)

  • LightingCannon (sic) finally isn't supported anymore, use LightningCannon instead (default weapondef_post.lua includes backward compability)
  • fixed a bug in LuaParser, so you can know use booleans in lua CEG configfiles (before it just accepted "1"/"0" for some tags)
  • fixed occasional bug where countdown time went into negative numbers and game never started
  • fixed impactOnly ignored features
  • improved error handling on network packet level
0 x

User avatar
Posts: 2456
Joined: 11 Jul 2007, 17:47

Re: Release candidate: Spring 0.82.0

Post by aegis » 27 Jul 2010, 20:29

  • fixed canDGun+commandfire to properly reproduce commander-like DGun behavior without script hacks
0 x

Spring Developer
Posts: 1358
Joined: 16 Dec 2006, 20:59

Re: Release candidate: Spring 0.82.0

Post by zerver » 27 Jul 2010, 20:39

  • Fixed ATI alpha masked shadows too (trees, features)
0 x

User avatar
Posts: 126
Joined: 03 Jan 2010, 18:32

Re: Release candidate: Spring 0.82.0

Post by d-gun » 27 Jul 2010, 23:17

Awesome work guys
0 x

Super Mario
Posts: 814
Joined: 21 Oct 2008, 02:54

Re: Release candidate: Spring 0.82.0

Post by Super Mario » 28 Jul 2010, 03:24

Explanation about the new model format in the "Art & Modeling" section would be nice you know.
0 x

Engines Of War Developer
Posts: 583
Joined: 09 Jun 2005, 23:39

Re: Release candidate: Spring 0.82.0

Post by SeanHeron » 28 Jul 2010, 10:33

@Super Mario - you can write there as well, you know (and the thread linked to goes into considerable detail on the format/usage)

Great to see this, big fat list of great new features, thanks devs!
0 x

User avatar
Zero-K Developer
Posts: 3803
Joined: 19 May 2006, 19:13

Re: Release candidate: Spring 0.82.0

Post by Licho » 28 Jul 2010, 12:36

It has problems detecting .NET version I will talk to hoiui when i see him.
0 x

Posts: 2436
Joined: 12 Oct 2007, 09:24

Re: Release candidate: Spring 0.82.0

Post by Google_Frog » 28 Jul 2010, 16:13

What does new "unit tag: cloakTimeout, int, default 128 frames" do?

And you forgot to mention fixing the blip at the end of movectrl bug. It's great!
0 x

Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Re: Release candidate: Spring 0.82.0

Post by Tobi » 28 Jul 2010, 16:16

it specifies the minimum time between decloak and subsequent cloak
0 x

Posts: 137
Joined: 13 Jun 2005, 16:37

Re: Release candidate: Spring 0.82.0

Post by cranphin » 28 Jul 2010, 18:52

No pureint ;.;

Join and rejoin looks cool tho, wonder how that works with AI's :)

'll see if I can run this on my machine :)
And make some others try it too ;)
0 x

User avatar
Kernel Panic Co-Developer
Posts: 7015
Joined: 16 Nov 2004, 13:08

Re: Release candidate: Spring 0.82.0

Post by zwzsg » 28 Jul 2010, 21:50

I get the same errorbox when restarting as with the previous RC.

- Spring works correctly and restart without errorbox.
- The two RC 0.82.0 and have this error box when restarting.

Step to reproduce:
- Get that mod: AutoRestart631.sd7
- Play it (any way)
- Wait 1s after game start
- Click the big green "Restart" button
- The newly launched Spring instance starts correctly
- But the previous, to be closed, Spring instance crash

I mantised it:

I only tried under Win2k. Woud like to know what happens under XP.
0 x

AI Developer
Posts: 626
Joined: 17 Mar 2008, 19:03

Re: Release candidate: Spring 0.82.0

Post by slogic » 28 Jul 2010, 23:09

Google_Frog wrote:...And you forgot to mention fixing the blip at the end of movectrl bug. It's great!
I still noticed a blip when unit just enters radar edge being as spectator. Then blip disappears.
PS. Ah, i see it is already reported:
0 x

Posts: 137
Joined: 13 Jun 2005, 16:37

Re: Release candidate: Spring 0.82.0

Post by cranphin » 29 Jul 2010, 00:10

Seems to work ok, tho I had very little time to test :)
My Java ai works fine, with very minor modifications (only had to change ai option handling, seems booleans are now passed as true/false instead of 0/1 :) ).
Seems to have stopped crashing when exiting a game with Java AI, yay :) (Well, mayby, only one test run ;) ).
This is with the 'beta' BA 1.13 hoijui seems to have made :)

Btw. (for hoijui :) )something for future improvements, OOAIFactory right now does this:
} catch (Throwable t) {
ret = 2;
Which prints to std-err.
It would be really usefull if that could go to a log file, since in windows you don't normally see the stderr ;)

Oh, and I like the blinking 'unowned' units, but I think they need an epileptic warning or so :D
0 x

User avatar
Former Engine Dev
Posts: 4342
Joined: 22 Sep 2007, 09:51

Re: Release candidate: Spring 0.82.0

Post by hoijui » 29 Jul 2010, 10:31

for this RC, you need this version of BA:
mirror 0 -
mirror 1 -
0 x

Posts: 137
Joined: 13 Jun 2005, 16:37

Re: Release candidate: Spring 0.82.0

Post by cranphin » 29 Jul 2010, 19:51

Hmm, I found one small strange thing, I've tested this with BA7.12 (and 7.13) on the previous release version, and this RC. It only occurs on the RC.

On a T1 air factory (ARM), the following ships strangely vibrate on the platform while being built:
Banshee (Light gunship)
Atlas (Air Transport)
Construction aircraft (T1)

Did something change in collision detection or so ? :)

It's not a big issue, seems only optical (makes it hard to watch the progress bar tho :D ). Can someone else see if they see the same happen?

Again, I tested this on the same BA version (cheating on the RC to add a commander), with the RC it happens, with latest release it does not.

PS: Vibrating = very fast moving up and down 1-3 or so pixels :)
0 x

Posts: 137
Joined: 13 Jun 2005, 16:37

Re: Release candidate: Spring 0.82.0

Post by cranphin » 29 Jul 2010, 20:13

Well that's fast :D
0 x

Spring Developer
Posts: 1358
Joined: 16 Dec 2006, 20:59

Re: Release candidate: Spring 0.82.0

Post by zerver » 30 Jul 2010, 01:02

Very fast. Actually, it was a coincidence that I fixed this at the same time you were writing the bug report. According to Mantis, other unit types have similar problems, but less severe it seems.
0 x

AI Developer
Posts: 626
Joined: 17 Mar 2008, 19:03

Re: Release candidate: Spring 0.82.0

Post by slogic » 30 Jul 2010, 11:33

Anybody noticed shadows flickering?
0 x

Posts: 2
Joined: 15 Jul 2010, 14:36

Re: Release candidate: Spring 0.82.0

Post by unclebb » 30 Jul 2010, 11:39

Intel x3100 graphics(yeah, I know that's shitty). works fine
0 x

Post Reply

Return to “News”