From Spring

About this page

This page holds informations about engine changes that are relevant to game/map makers. The idea is to replace the "make your game ready for next release"-threads with a wiki page because unlike a forumpost, everybody can edit this. So if you find a thread (or mantis post etc) that explains a fix, please add it here. Back-link to forum. Use for bumping.

Spring 98.0

slight changes:

  • fix definitions of UnitDef::Is{Strafing,Hovering}AirUnit b95764cd
  • experience has slightly different effects: 0f59e103 , http://springrts.com/mantis/view.php?id=4446
  • unsynced luarules now recieves all synced luarules callins (could break very lazily coded gadgets, also if game includes gadgethandler then it should be updated to match, or unsynced luarules chatactions will be executed twice)
  • each usage of SYNCED now makes a copy of the whole table
  • types of variables returned from callins are now checked, e.g. MouseMove must return a bool
  • TTL for LightningCannon now needs to be set in weapondefs, as 'beamttl' (see https://github.com/spring/spring/commit/dd7d1f79c3a9b579f874c210eb4c2a8ae7b72a16)
  • Spring.GetUnitCommands/Spring.UnitCommandQueue won't work if they are called to often without a limit on the size of the table they return. Use e.g. Spring.GetUnitCommands(unitID, maxQueueSize)

Spring 96.0

Spring 95.0

NOT COMPLETE: interessting changes from 25 Aug backwards to Aug 09, 2013

  • the folder "mods" isn't supported any more: 7d3830a0


  • change to weapon indexing in lua gadgets: ba9721b4 (likely to cause index out of bounds errors in any gadgets using weapon related API calls) ALL weapon API functions are 1-based now!
  • .moveData has been removed, use .moveDef instead 4e58b8b0 (detecting what type of unit a unit is, isCommander etc)
  • Spring.GetUnitNearestEnemy doesn't return neutral units anymore
  • 90c89739
  • add third return-value to Spring.GetUnitBlocking

new functions:

  • 90c89739
    • add Spring.SetFeatureBlocking
    • add Spring.GetFeatureBlockin
    • add Spring.SetPieceProjectileParams
  • add SetProjectileAlwaysVisible 9435ac70
  • add callins FeatureDamaged and FeaturePreDamaged 85779b57
  • add Spring.GetRadarErrorParams 475828d8
  • add Spring.SetRadarErrorParams see above
  • add Spring.SetUnitPosErrorParams 0f4ed485
  • add Spring.GetUnitPosErrorParams see above
  • add Spring.GetUnitWeaponCanFireunitID, weaponNum 66117e4c
  • add LuaSyncedCtrl: add callouts SetFeatureVelocity and SetFeaturePhysics 765994b4


armordefs.lua MUST be updated. The fix is to simple the converter loop at end of file: Armordefs.lua#Example

  • load only image formats which work on all platforms, current supported image formats are:
PNG, JPG, TGA, DDS, BMP  (note: no more .jp2)
  • make Gaia the default feature team, not -1/0


  • sweepfiring beamlaser works (someone test?) b0295a72

Someone check if relevant: 66a2b96f something with startmoving/stopmoving?

e4dc43a3 something startposition bla

Spring 94.0 (or 93, or 92)

  • gadget:UnitPreDamaged has a new projectileId argument inserted in the middle, so attackerID, attackerDefID, attackerTeam shifted position
  • Bomb weapons need a range, or they won't be fired
  • Spring.AddUnitDamage requires a weaponDefID (may be a bug, may be corrected for 95) http://springrts.com/mantis/view.php?id=3841
  • QueryNanoPiece is called much less often

Spring 86.0, 87.0

mantis 3019
fixed in next release.

  • builders stop reclaiming sometimes.

fixed for next engine release: http://springrts.com/mantis/view.php?id=3012
want it to work right now: use a gadget as workaround

Spring 0.83, 84.0, 85.0

Spring 0.82