spring更新了【很长】

Spring change log

0.76b1

Installer:

  • Add new installer SideBanner, Spring icon and ArchiveMover icon all
    contributed by AF.
  • Put springcontent.sdz and bitmaps.sdz in upgrading installer.
  • Installer greatly improved - all content is downloaded from the internet based
    on which mods and maps you choose to install.
  • No more updating installer because updating and full one would be nearly
    identical (in size and functionality).
  • Added the following original content mods to the installer (downloads):
    -Gundam
    -Kernel Panic
    -Evolution
    -Spring: 1944
    -Simbase
  • Added springsettings.exe by koshi.
  • Added ArchiveMover by zizu. Automatically moves .sdz and .sd7 files to the
    correct place (Spring folder\maps\ or Spring folder\mods)
  • Moved to Satirik’s lobby, huge amount of changes.
  • Moved shaders into springcontent.sdz
  • Replacement Bark, bleaf and foam images.

Spring engine varying changes:

  • A lot of networking code was refactored.
  • Reintroduced heightMod to TryTarget.
  • New aircraft command CMD_IDLEMODE, it switches between landing when idle
    and not landing.
  • Cache input and output of GetWantedDir to save a lot of expensive calculations
    for a little loss of accuracy.
  • Tiny speedups in LosAdd and SafeLosAdd.
  • Optimized unnecessary sqrt in GuiTraceRay.
  • Made the replay format better:
    • It has a proper header now with version field instead of the entire file
      being just a data blob.
    • The header has made the gameSetup script.txt modifications redundant: the
      UnixTime and Spring Version are in the header, and the gameSetup script is
      stored unmodified now.
    • It stores a game ID, this can be used to match replays of the same game together.
    • It stores the winning ally team, if any.
    • It stores player stats.
    • It stores team stats.
    • It stores game duration, both in game time and wallclock time.
  • Small messages are once again send together in one packet.
  • Stop animations when network lags (timeout set to 0.5 sec).
  • Added some OGGVorbis sound support.
  • Added behavior to mobile units so that they will start chasing when the target
    is running away, but before the target exits weapons range, allowing the unit
    to fire continuously at the retreating unit, instead of the cycles of firing,
    then running to catch up that existed prevously.
  • Added client side network traffic tallying (per packet type).
  • Lasers no longer use their full texture on shots that hit before their full length.
  • Negative damage now allowed.
  • Log the version of some of the major libraries (SDL, GL, GLEW, AL)
  • Bump the unit-limit to 10000.

Lobby interface (unitsync, game setup):

  • Added new start positions mode Choose Before Game. Useful for AIs, you can
    select the starting position of players from the client.
  • Gap removal in GameSetup, players/teams/allyteams can now be given
    with gaps in the numbering, e.g. PLAYER10 and PLAYER14 in an 1 vs 1.
    Ordering does still matter.
  • Unitsync Java bindings now have a version number.
  • Checksum is now read from 7z/zip archive header instead of checksumming entire
    file, making things like map list reloading faster by a huge amount.
  • Added GetPrimaryModVersion() to unitsync.
  • Bumped to ArchiveCache version to 6 … ArchiveCacheV6.txt
  • Applied patch by tc making Spring’s configuration variables available through
    unitsync.
  • Disabled recursive directory scanning for .sdd and omitted files within
    …/hidden/* directories from the scan.
  • Added the following unitsync calls:
    int GetModValidMapCount()
    const char* GetModValidMapCount(int index)
    • Valid maps are listed in the mod’s “ValidMaps.lua” file.
    • A valid map count of 0 means that any map can be used with the mod.
    • This can be used in concert with LuaRules to setup multi-player scenarios
      and tutorials.

AI interface:

  • Exposed unit->maxSpeed to the AI interface.
  • Added CallLuaRules() to CAICallback.
  • Added ‘AIDLL=LuaAI:’ → CTeam::luaAI handling for LuaAI.
  • Added AI unloading after team is destroyed.
  • Allow GlobalAIs to send a startposition.

User Interface:

  • Added the CTRL modifier to area reclaims to allow reclaiming your own wrecks
  • Removed some hard-coded key bindings and replaced them with:
    edit_return
    edit_escape
    edit_complete
    edit_backspace
    edit_delete
    edit_home
    edit_end
    edit_prev_line
    edit_next_line
    edit_prev_char
    edit_next_char
    edit_prev_word
    edit_next_word
  • Added some reasonable default keybindings for all/ally/spec chat messaging:
    enter → send to
    Ctrl+enter → send to All
    Alt+enter → send to Allies
    Shift+enter → send to Spectators
    (Note that the modifier versions can be used to change the send mode ever
    while typing the message.)
  • Added the CTRL modifier to area reclaims for reclaiming all features.
  • /specfullview 3 is the new default for spectating and watching demos.
    (can view and select all units)
  • Added the ctrlpanel.txt “frontByEnds” option. (let’s you use the endpoints to
    define a front instead of the midpoint and one of the ends.)
  • When a factory is set on repeat, alt+build-click inserts the order as a
    no-repeat and right after the currently built unit. Behavior is unchanged
    if repeat is off.
  • Added water lines while placing unit builds.
  • Moved the clock and fps indicators to the upper right hand corner.
    (the default setup results in overlaps with the player info text.)
  • Modified the LOS view to better show the los-only and radar-only conditions
    dark = no los, no radar
    white = los + radar
    blue = los-only
    green = radar-only
    red = jammed area
  • Disabled shadow generation when using LOS viewmode. (would be better to add
    shadows in LOS mode, but might as well avoid the shadow generation overhead
    until the shadows are added.)
  • Make Fight be able to be given a line command, like move already can be.
  • Only add the SelectAI button if the current selection has valid GroupAIs.
  • Change default keybinding for createvideo to Ctrl+Shift+F10 (was Any+F10),
    so it is less easy to accidentally hit it.
  • Change savegame default keybinding from Any+F8 to Ctrl+Shift+F8,
    for the same reason as the createvideo keybind change.
  • Improved view centering for the Free Camera mode.
  • Made nano-particles unsynced. (and respect maxParticles)
  • Added ‘/cross [size]’.
  • Added .godmode [0|1] – allows all players (even specs) to control all units.
  • Added a team parameter to .give: .give [amount] [team] @x,y,z
  • .kick and .kickbynum messages are filtered.
  • Changed ‘/grabinput’ to ‘/grabinput [0|1]’, and added state reporting.
  • Added the “/grounddecals [0|1]” command.

Modinfo / modrules tags:

  • Allow for the modder to define whether the crashing planes (and/or units
    running long Killed() scripts) can be fired on via modrules.tdf new section:
    [FIREATDEAD]
    {
    fireAtKilled=0;
    fireAtCrashing=0;
    }
    The defaults are to disallow both (Spring 0.75 behaviour, both variables set
    to 0). Spring 0.74 behaviour (allow both) can be emulated by setting both
    variables to 1.
  • Added modinfo.tdf ‘version’, ‘mutator’, and ‘shortName’ tags.
  • Added the following to modrules.tdf (default values shown):
    [DISTANCE] {
    builderUse2D=0;
    }
    [EXPERIENCE] {
    powerScale=1.0;
    healthScale=0.7;
    reloadScale=0.4;
    }
  • Adds [experience] { experienceMult = 1.0; } to modrules.
  • Adds [flankingBonus] { defaultMode = 1; } to modrules.
  • Replaces the old bonus shield system with flanking bonus

Unit / feature definition tags:

  • The TDF tags MetalStorage and EnergyStorage now override the StartMetal and
    StartEnergy specified in the startscript, instead of the other way round. If
    MetalStorage or EnergyStorage isn’t specified the default values for commander
    units are StartMetal and StartEnergy. For other units the default remains 0.
  • Moved the buildOptions definitions into the unitDef definitions, LuaParser
    handles backwards compatibility.
  • Changed init_cloaked to initcloaked.
  • Add a tag ‘pushResistant’ to UnitDef. If set to true, a unit will not be
    pushed out of the way by another when their footprints overlap, nor will
    it respond to BuggerOff directives when the other party has an important
    move order. Defaults to false.
  • Added a per-soundfile volume control format for unitdefs
    sounds = {
    ok = ‘oksound’,
    cancel = {
    ‘cancel1’,
    ‘cancel2’,
    },
    select = {
    { file = ‘selsound1’, volume = 2.0 },
    { file = ‘selsound2’, volume = 2.5 },
    etc…
    },
    }
  • Features have new tag “reclaimTime” defining how long they take to reclaim,
    default is metal+energy.
  • Added tags:
    transportUnloadMethod = ; // 0 - land unload, 1 - flyover drop, 2 - land flood
    fallSpeed =
    unitFallSpeed =
    These dictate the speed of units being dropped from the transport.
    fallSpeed is used on the transports FBI file, to dictate the speed of all
    units it drops, unitFallSpeed is used on each transported unit to override
    fallSpeed.
  • Added flighttime functionality to cannons.
  • Added flighttime to bombdroppers.
  • Added FBI tag cantBeTransported=0|1, if set to 1 no transport can load this unit.
  • Added FBI tag minTransportSize=int, determines the smallest size footprint
    that the transport can load
  • Added FBI tag minTransportMass=float, determines the smallest mass unit that
    the transport can load.
  • Removed the check for Air movetype for holdSteady FBI tag, so now ground
    transports can use it too.
  • New FBI tag for transports; float unloadSpread: Controls the spacing between
    units in an area unload command, works as a multiple, default is 1.
  • Added the ‘decloakSpherical’ unitDef tag (defaults to true).
  • Added optional 3D ranging for all builder operations.
    (build, repair, reclaim, etc…) (per-unitdef buildRange3D=true)
  • New unitDef parameters:
    int flankingBonusMode
    float flankingBonusMax
    float flankingBonusMin
    float flankingBonusMobilityAdd
    float3 flankingBonusDir
  • Added the “canSelfDestruct = true” unitDef tag.
  • Enable CEGs to be tied to pieces of exploding units
    (CEG replaces the default smoke if used, but not the miniscule fire-effect)
  • Added CEG opcodes y, x, a, p and q. Except for p those operate on a set of 16
    buffers that store a float value each.
    y# - Yank: Stores the running value in the buffer # and returns 0.
    x# - Multiply: Multiplies the value with the contents of buffer #.
    a# - Add: Adds the contents of buffer #.
    p# - Pow: Returns the #th power of the value.
    q# - Buffer Pow: Like Pow but uses the contents of buffer # as the exponent.
  • Add a tag “factoryHeadingTakeoff” (on request of the SWS folks to prevent some
    clipping issues) which controls the takeoff behavior of TAAirMoveType aircraft.
    True (default) means planes start matching their factory’s heading right after
    taking off from the pad, false means they maintain the heading of the pad
    until reaching wantedHeight.
  • Added [CONSTRUCTION] section to Modruless.tdf:
    constructionDecay (bool, default true): Should constructions decay if noone is working on them?
    constructionDecayTime (float, default 6.66): How long until the decay starts?
    constructionDecaySpeed (float, default 0.03): The speed of the decay,
    whereby buildTime*decaySpeed = time for a total decay so higher = slower decay
  • Added unit FBI collide tag (boolean, default: 1), currently affects only planes:
    If set to 0 the plane will not collide with any other unit. Most notably this
    saves the CPU-heavy collision checks every frame (big performance boost!) and
    avoids the damage planes normally take from bumping into each other.
    Projectiles will still collide with the units normally.

Weapon definition tags:

  • Added heightBoostFactor - a float tag that gives control of cannon height
    range boost (more than 1 means increased range, 0 means the cannon has fixed
    range regardless of height difference to target. default is a magic value
    calculated on weapon init, based on range tag and theoretical max range.)
  • Added heightMod tag (height difference is multiplied by this value before
    checking range), default 0.8 for Cannon weapon type, 0.2 for everything else
    (i.e. stays as it was). Beamlasers have heightmod=1 by default so they use
    pure spherical targeting.
  • Added GroundBounce, WaterBounce, NumBounce, BounceSlip, BounceRebound, and
    bounceExplosionGenerator tags.
  • New tags beamttl (default: 0) and beamdecay (default: 1) for the beamlaser.
    Beamttl defines the time (in frames) the beam will stay after being fired and
    beamdecay defines the speed of the fadeout (each frame the beam’s intensity is
    multiplied with that value). This applies to the single-frame beams the weapon
    emits, if it has a beamtime it will emit one such beam every frame, which is
    only useful if the source of the beam moves a lot (gives a cool trail effect).
    It’s primarily intended for beams with a beamtime of one frame (which often
    simulate very fast shots instead of constant streams, e.g. railguns) so they
    don’t disappear immediately.
  • Added fixedLauncher tag (bool) for missiles, starburst missiles and torpedoes,
    this makes the projectile spawn with the orientation of the shooting piece
    instead of their normal orientation. The weapon will not properly check if
    allies are in the way so make sure you align the launchers in a way that
    won’t hammer right into your own forces and perhaps use collideFriendly=0.
    FixedLauncher conflicts with trajectoryHeight and IMO combining them is
    pointless anyway so don’t use both on a weapon.
  • Added projectiles tag (int), each time a weapon fires this many projectiles
    are spawned (on the same frame). Make sure you put them on different
    trajectories somehow (sprayangle or different firepoints) because otherwise
    they’ll all be clumped in one shot. Can be set to 0 as well for script trigger
    weapons and can be combined with burst.
  • Missiles and starburst missiles now obey smoketrail, set it to 0 to disable
    the smoke. To get a missile without smoketrail you have to define the weapon
    as a missile with WeaponType=MissileLauncher in the tdf.
  • Missiles, starburst missiles and torpedoes now use flighttime if present
    instead of the hardcoded formula (which is still used if flighttime is not
    present)
  • Added SubMissile tag (bool) for TorpedoLaunchers, if set to 1 the torpedo will
    travel like a missile outside of water. It will not emit a smoketrail, though.
    When fired from a plane it will behave the same way but the plane will
    probably be considered a fighter, not a bomber.
  • Added fireSubmersed tag (bool), defaults to the value of waterweapon. If set
    the weapon can fire underwater, if not then not. Use it for weapons that
    cannot fire underwater but can hit underwater targets. Works even for
    torpedoes.
  • Starburst missiles now obey turnrate for the turn at the peak of their flight
    (if supplied, otherwise the old value is used).
  • All weapons (save for the Rifle which noone uses anyway) can now attack
    underwater targets if they have waterweapon=1 set.
  • Bombs can use manually defined burst and burstrate values instead of
    autogenerated ones by using the new manualBombSettings tag (bool). Keep in
    mind that (roughly) burst*burstrate defines the area in which the bomber is
    willing to drop the bomb so if you make it too small the bomber might miss
    the drop area and not drop any bomb.
  • Added myGravity tag (float) for ballistic weapons (Cannon and Bomb), it
    overrides the map gravity if used. Regular map gravity is around 0.2.
  • Bombs now obey Accuracy and SprayAngle.
  • Added ShieldStartingPower tag (float) for shields, if set the shield starts
    with this much power instead of 0.
  • Renamed flareEfficency → flareEfficiency.
  • Added the weaponDef ‘cameraShake’ tag.
  • Added the dance tag for missilelaunchers that makes the missile move around
    randomly. Unlike wobble it doesn’t rotate the missile and it prevents the
    missile from going too far off course so a dancing swarm will remain coherent.
  • Beamlasers ignore beamtime if new tag “beamburst” is set. (for emulating
    weapons that do damage in bursts)
  • New weapon FBI tags:
    WaterBounce and GroundBounce: (default: false)
    Boolean to allow a projectile to bounce off of a surface.
    BounceSlip: (default: 1)
    Amount of lateral speed kept by the projectile after it bounces.
    BounceRebound: (default: 1)
    Amount of vertical speed keeps and reverses.
    NumBounce: (default: -1)
    The number of bounces a weapon will make. -1 indicates no limit.
  • Added the ability to bounce for Torpedos, Missiles, Lasers, Cannons, and Emgs.
  • Added bounceExplosionGenerator tag, which defines an explosion generator to
    run when a projectile bounces.
  • Added the tag “hardStop” (bool, default 0) which, if used, makes the laser not
    fade if it doesn’t hit before hitting its range limit and instead has the
    laser stop immediately and contract, as if it had hit something. This looks
    better with really long lasers, especially those that are longer than their range.
  • Weapon projectiles can now spawn a CEG at their position every frame using
    the cegTag weapon tag.
  • ProximityPriority tag - acts as a multiplier for the distance to the target
    in the priority calculation. Note that negative values make weapons prefer
    distant targets.
  • Adds three opcodes to the CEG definitions:
  • m (modulo or sawtooth wave) returns the remainder of the running value
    divided by m’s parameter (100 m24 returns 4),
  • s (sine) returns the sine of the running value with the parameter acting as
    the amplitude,
  • k (discrete) returns the running value floored to an integral multiple of
    the parameter.
  • All weapon projectiles that have a TTL now supply their remaining ttl-value as
    the damage param to their trail CEG (Flame projectiles use curTime instead).
  • Added alwaysVisible weapon tag, makes the projectile visible, even without LOS.
  • Added the weapon tag leadLimit that limits the maximum distance a unit will
    lead a target (default is -1 which means infinite).
  • Added the weapon tag leadbonus which is multiplied with the unit’s experience
    and added to the lead limit.
  • Added the weapon tag predictBoost (default 0 for non-burnblow, 0.5 for
    burnblow weapons).

Bugfixes:

  • Fixed cannons not able to shoot as far from high ground as they should.
  • Fixed infinite lower cylinder when cylindertargetting is active.
  • Loaded air transports no longer land on stop command .
  • Fixes in glBallisticCircle. (use heightmod also in drawing range circles.)
  • Spring now returns 0 when started with -V, -h or -p.
  • Fix random start positions. (positions are handed out before gaia team is added)
  • CMD_REMOVE also works for idle factories (with move/patrol queues)
  • Changed Cannon::GetRange2D so it uses something closer to real-world physics.
  • Fixed Melee weapon always aiming west.
  • Do not allow commands with out-of-map destinations.
  • “Connecting to server” message now does not pop up when starting without startscript.
  • Commandline is now parsed before the filesystemhandler starts up (speedup
    starting with arguments like -V or -h).
  • Fixed builders with area reclaim sometimes going out of their designated circle
  • Bombs now obey Accuracy and SprayAngle.
  • Fixed lightning weapons having a hardcoded inaccuracy, made it obey accuracy
    and sprayangle tag instead.
  • Fixed Lightning weapons not doing damage to shields.
  • Possible fix for the disappearing healthbars.
  • Fixed crashbug when exiting the GroupAI, sharing and quit boxes in an unusual way.
  • Fixed starburst missiles so they stop their engines after they travel out of range.
  • Fixed a possible load/save bug.
  • Fixed crash in DamageArray() copying constructor.
  • Don’t say ‘content error’ if modrules.tdf isn’t found.
  • Improved error reporting in GetTDFName and LoadMap.
  • Fixed replays.
  • Fixed savefiles on non-Windows OSes.
  • Fixed the run-time Spring.MakeFont() call-out.
  • Fixed beamlasers so they don’t ignore CollideFriendly.
  • Fixed both CollideFeature and CollideFriendly for weapontype=Rifle.
  • Fixed unloading of aircraft.
  • Fixed crash when sharing units with a GroupAI other player doesn’t have.
  • Fixed .team, .setminspeed and .setmaxspeed when playing a demo locally.
  • Fix groundscars turning white after using LOS overlays or enabling shadows.
  • Better error reporting in case of global AI version mismatch.
  • Fix SM3 when resizing windows.
  • Don’t profile the water renderer on voidwater maps.
  • Weapons now use AimFromWeapon to determine the part to aim from, this prevents
    waggling and failing to aim at close ranges. To simulate the old behaviour
    make AimFromWeapon return the same piece as QueryWeapon does.
  • Melee weapon now reports a proper angle to AimWeapon.
  • Made starburst missiles obey startvelocity and weaponacceleration.
  • Try to minimize damage caused by LuaUI crashes until cause is found by
    disabling LuaUI after several errors happen.
  • Hackish fix for units sometimes not going to factory designated rally point
  • Install the game/fonts/*.ttf files to fonts/.
  • Handle a missing argument to .skip a little better.
  • Fix error message for missing font.
  • Take screenshot of entire window (rather than left half only) in dual-screen mode.
  • Lua stack was changed to fix some segfaults.
  • Prohibit spectators (except for the host) from changing the gamespeed unless
    cheating is enabled.
  • Fix an exploit where partially reclaimed corpses that are turned into wreckage
    end up being worth more than the remaining value of the corpse itself.
  • Fix weaponAcceleration typo causing major bugs with nukes and vlaunch weapons et al.
  • Fix two “unknown net msg” errors in CPreGame when playing certain demos.
  • Fixed a crash bug (lastColWarning == NULL) in TAAirMoveType.
  • Fixed a crash in AirMoveType.cpp.
  • Removed the automatic ‘userInputPrefix’ tracking for incoming messages
  • Fixed the unitsync GetUnitFullName().
  • Ignore used writing keypresses (for bindings like: ‘bind a+u edit_next_word’)
  • fixes a bug in LuaUnsyncedRead::TraceScreenRay() when using dualscreen mode
    and minimap is on left.
  • Unit pieces inherit alpha threshold from owner.
  • Fixed jittery falling units.
  • Fix timeout while loading / pathing
  • CommandFallback was broken wrt return values, fixed.
  • Improved dgun responsiveness. (still not perfect, but at least shoots through
    features now)
  • Construct a proper orthonormal basis for muzzle-flame bitmaps.
  • Gracefully handle missing script failure.
  • Fixed speed and pause in replay.
  • Fix for teleporting units when area-unloading out of map.
  • Fix for uadded tracking of PushMatrix and PopMatrix Lua call-ins to reduce
    number of gl errors.
  • Fix ghosted buildings always being drawn with default facing.
  • Fixed weapon TDF ‘fireStarter’ tag, for all weapon types.
  • Units, when they are within range, but unable to hit the target of an attack
    command, will move sideways.
  • Fixed the bug where laserprojectiles had weird garbage on the front if the
    projectile was within lod distance.
  • Fixed set HEADING COB variable so it updates unit direction.
  • Fixed giving commands while recording a video.
  • Fixed bug where after load all moving ground units stops with message
    “Can’t reach destination”.
  • Fix for patrolling builders repairing stuff that’s being reclaimed
  • In the tooltip displayed on mouseover, deconstructing nanoframes didn’t show
    how much metal they are producing on mouseover.
  • Don’t set the default shareTeam to a dead team ever.
  • Fixed random mod.
  • Made glPrintOutlined() almost 50% faster by lowering quality.
  • Reclaimers list is now saved.
  • Now error messages are broadcast to all clients.
  • Paralyzers no longer damage features.
  • Fixed the wait/teleport factory bug.
  • Fix flying/underground units bug.
  • Unhide the gaia team, and colorize by allegiance.
  • Made demo not found / demo corrupt / format outdated exceptions instead of logOutput-warnings
  • /quit will now quit immediately if you are the only active player.
  • Fixed a ‘bad team’ segv in Spring.CreateUnit().
  • Added the ScopedMapLoader helper to unitsync.
  • Paralyzers no longer shake the camera.
  • Fixed the missile and starburst texture2 only applying to the first segment of
    the smoketrail (the segment that’s still part of the projectile, not a
    CSmokeTrailProjectile). Now the entire trail uses the texture.
  • Fix possible segmentation faults after loading a shared object failed.
  • Fixed bug where server dont send remaining data (including NETMSG_QUIT) to server
  • Set ACTIVATION issues CMD_ONOFF instead of activating/deactivating, fixing
    issues with on/off not showing correct state.
  • Added a check for weapon ‘slavedTo’ values (content_error).
  • Fixed some bugs in gl.TexEnv / gl.MultiTexEnv / gl.TexGen / gl.MultiTexGen
  • Used the decoyDef ghost building models when appropriate.
  • Fixed CAirMoveType planes not rotating on factory pads.
  • Fixed CTAAirMoveType planes always taking off from labs facing south.
  • Fixed missile-gunships from being unable to force-attack ground.
  • Fixed CTRL-MOVE group orders causing units to move at snail’s pace.
  • Fixed mid-air explosions that occur over water triggering a water splash effect.
  • Fixed the isAttackCapable() check.
  • Prevent CMissileProjectile weapons with trajectoryHeight from over- or
    undershooting when firing at targets below or above attack position.
    Based the angular correction factor on missile speed.
  • Not being able to lock the config file on linux is not a fatal error anymore.
  • Remove the (bestDist < radius) bugs.
  • Make sure the (paralyzeDamageTime >= 0).
  • Added bestDist method for all area searches.
  • Added a check for immobile builders that will stop internal.
    commands for when the unit has moved out of the build range.
  • Fixed FlareProjectile. (flare projectile was always removed after one Update.)
  • Allow for “non-decloakable” units.
  • CGameHelper::GetClosestEnemyUnitNoLosTest() now includes the target’s radius
    for spherical tests.
  • Stunned factories don’t open, build, or close.
  • Players from demo once again can’t change speed / pause.
  • Factored out some glGetDoublev() calls (may be faster on certain GPU architectures)
  • Fixed issue that some people can only get sound when hosting.
  • Fixed bug in map damage loading from savegame.
  • Fixed possible bug in explosions map damage.
  • Fixed crash with saving after nuke was intercepted.
  • Fixed ground-transports being unable to unload units on certain maps.
  • Units that are still inside a non-firebase transport do not destun.
  • Fixed units whose state is floating but are not in water taking water-damage.
  • Print “spectator left” rather than “player left” if the guy
    leaving is a spectator.
  • Added serializing for InMapDraw.
  • Fixed bug with saving builders that terraform ground.
  • Fixed stunned units being unhittable if pushed.
  • Made a seperate update thread while the game loads to prevent network timeouts
    on slow computers. (thread is joined when loading finished.)
  • CCobInstance::RealCall now checks if stack is big enough before getting
    arguments from stack.
  • made StartBuilding measure the pitch from the center of the unit instead of
    the base to deal with units with large vertical offset.
  • Put CMinimap always on back so it does not draw over the user interface.
  • Moved the QueryNanoPiece COB call into synced code to hopefully fix a desync.
  • Fixed the bug where a repair order on a construction whose terraforming is
    incomplete will start construction anyway.
  • Fixed units terraforming the ground under units being built by factories.
  • Added some protection against .wav’s whose headers contain a garbage datalen.
    (was causing SEGV’s with XTA 9.2)
  • Change lots of printf calls to logOutput.Print().
  • Don’t send NETMSG_GAMEOVER when watching a demo with only 1 allyteam left.
  • Throw content_error if a mod/map archive can not be found instead of only
    printing a warning in the log. This should stop the ‘missing default cursor’
    message actually meaning ‘missing a mod archive’.
  • Added minimap ping on game start and set lastMsgPos to something meaningful.
    Notably this fixes F3 zooming to top left corner before something interesting
    happens.
  • Fixed crash when singlestep was executed in client mode.
  • Spring and ArchiveMover.exe requires administrative privileges now on Windows,
    as a workaround until user directories can be specified as data directories.
  • “Can’t reach destination” message spam should be reduced a bit.

Lua:

  • Added call-in gl.Smoothing(point, line, polygon).
  • Added Spring.GetViewSizes() to LuaOpenGL.
  • Added the SetLosViewColors() call-in.
  • Added the StockpileChanged() call-in.
  • Added the DefaultCommand() call-in.
  • Added the LuaUI WorldTooltip() call-in.
  • Added the LuaUI GameSetup() call-in.
  • Added GetUnitHeight() call-out.
  • Added GetFeatureHeight() call-out.
  • Added GetFeatureRadius() call-out.
  • Added GetFeatureResurrect() call-out.
  • Added SetTeamColor() call-out.
  • Added GetTeamColor() call-out.
  • Added GetTeamOrigColor() call-out.
  • Added the Spring.SetDrawSky() call-out.
  • Added the Spring.SetDrawWater() call-out.
  • Added the Spring.SetDrawGroud() call-out.
  • Added the gl.UnitMultMatrix() call-out.
  • Added the GetLuaAIDesc() call.
  • Added the Spring.AddUnitDamage(
    number unitID,
    number damage,
    number paralyzeTime,
    number attackerID,
    number weaponID,
    number impulseX, number impulseXY, number impulseZ) lua call-out.
  • Added the gl.UnitPieceMultMatrix() lua call-out.
  • Added the gl.EdgeFlag() lua call-out.
  • Added the Spring.GetCameraFOV() lua call-out.
  • Added the Spring.GetCameraDirection() lua call-out.
  • Added unit count protection to Spring.CreateUnit().
  • Added the DrawUnit() LuaRules unsynced call-in. (for SetUnitLuaDraw())
  • Added the Spring.SetUnitLuaDraw() LuaRules call-out.
  • Added the GameFrame() call-in to LuaUI.
  • Added the AICallIn() LuaRules unsynced call-in. (for CallLuaRules())
  • Added the Spring.GetTeamLuaAI() lua call-out.
  • Added LuaUI Spring.GetGatherMode().
  • Added LuaUI Spring.GetInvertQueueKey().
  • Added Spring.SetUnitLineage(unitID, teamID[, bool isRoot]).
  • Added Spring.GetBuildFacing() for LuaUI.
  • Added Spring.GetBuildSpacing() for LuaUI.
  • Removed the color info from GetTeamInfo().
  • Added GetHasLag(), returns true if currently lagging behind host.
  • Added PlaySoundStream and StopSoundStream for OggVorbis audio.
  • Added the rank parameter to GetPlayerInfo(). (arg 7)
  • Added ‘autoland’ to GetUnitStates().
  • Added the UnitCmdDone() call-in.
  • Added the UnitCloaked() call-in.
  • Added the UnitDecloaked() call-in.
  • Adedd the MapDrawCmd() call-in. (only for LuaUI)
  • Added the unsynced Spring.GetVisibleUnits([teamID] [,radius] [,useIcons]) call-out
  • Added the following to both UnitDefs[] and FeatureDefs[]
    height, radius
    minx, midx, maxx
    miny, midy, maxy
    minz, midz, maxz
  • Disabled the lua DrawScreen() call-in when the interface is hidden. (note that
    the DrawScreenEffects() call-in remains active.)
  • The majority of mod files are now loaded via LuaParsers, which can be edited
    to load different types of files. The default LuaParsers simply load the
    normal style files with improved error checking and speed.
  • Game.armorTypes[] was changed to a bidirectional map.
  • WeaponDefs[x].damages.damages[] was replaced with WeaponDefs[x].damages[index]
    (starts at 0 for the default armorType)
  • Added the ‘teamcolors.lua’ local team recoloring LuaParser script.
  • Added the gui_game_setup.lua GameSetup widget.
  • Added ‘ghostedBuildings’ to Game[].
  • Changed Game.modName to use the humanName value.
  • UnitDef names are always lower case now.
  • Added on-the-fly lua font texture / specfile generation.
  • Added localization support in the lua tooltips and ctrlpanel.
  • Generated local speed-ups for some of the installed widgets.
  • Created FeatureDefNames and WeaponDefNames for LuaUI.
  • Added Spring.SetUnitNeutral(unitID, bool) and Spring.GetUnitNeutral(unitID).
  • Neutral units (mainly for gaia and fake features), will not be attacked.
    automatic when the attacker to be has its fireState set to “Fire At Will”.
  • Added a hidden fourth fireState level (3) that will shoot at neutrals.
  • Added SetCustomCommandDrawData.
  • Added ‘extractorRadius’ to the LUA Game table.
  • Added Spring.IsGodModeEnabled() to LuaSyncedRead.
  • Added the “gamedata/LockLuaUI.txt” check for LuaUI. If this file exists in
    the mod, then LuaUI can only load its gui.lua" file from the archive
    filesystem, thus putting the mod in full control of what LuaUI can be used
    to do (including disabling all user widgets).
  • LuaAI is now supported.
  • Added custom mod / map options via Lua:
  • MapOptions.lua is to be used with LuaGaia, and belongs in the map archive,
  • ModOptions.lua is to be used with LuaRules, and belongs in the mod archive.
  • Renamed cmdDesc iconname → texture for LuaUI LayoutButtons() input.
  • Renamed cmdDesc mouseicon → cursor for LuaUI LayoutButtons() input.
  • Changed the cmdDesc double texture format to:
    ‘&x&&’
    (both textures can use either the named textures or ‘#’ format)
    • Added the Spring.RequestPath() lua call-out
  • RequestPath(<number moveID | string moveName>,
    startX, startY, startZ, endX, endY, endZ [, goalRadius]) → nil | path
  • it returns a lua userdata or nil
  • the userdata has the following calls:
    path:Next([currX, currY, currZ[, minDist]]) → nil | x, y, z
    path:GetEstimatedPath() →
    {[1] = {x,y,z}, [2] = {x,y,z}, etc… }, – waypoints
    {[1] = index, [2] = index, etc… } – resolution start points
  • Added Spring.GetUnitEstimatedPath() – same return as path:GetEstimatedPath()
  • Added GetEstimatedPoints() to CPathManager
  • Added the NETMSG_LUAMSG net packet type
  • Added the following calls to LuaUI:
    Spring.SendLuaUIMsg(msg [,mode = ‘’|‘a’|‘allies’|‘s’|‘specs’])
    Spring.SendLuaCobMsg(msg)
    Spring.SendLuaGaiaMsg(msg)
    Spring.SendLuaRulesMsg(msg)
  • Added the RecvLuaMsg(msg, playerID) call-in to all lua scripts
  • Added the weaponID to the lua UnitDamaged() for fullRead scripts
  • Removed imageSizeX and imageSizeY (potential desync). The gl.TextureInfo() call can be used instead
  • Made decloakDistance a per-unit property, and made it accessible to
    synced lua scripts as the third parameter to SetUnitCloak().
  • Added GetModOptions() and GetMapOptions()
  • Added UnitSeismicPing() (with a sound)
  • Added the ability to set the stockpile percent
  • Added the Spring.SetUnitTarget(unitID, targetID | <x,y,z>, bool userTarget) call-out
  • Added the Spring.SetExperienceGrade(number) call-out (sets the experience
    steps that will trigger the UnitExperience() call-in, based on the
    limExperience varible value (exp / (exp + 1)))
  • Added the UnitExperience() lua call-in
  • Added VFS.UseArchive(filename, function(…) … end, …)
  • allows for packaged widgets (source, textures, sounds, etc…)
  • currently only works for raw filesystem access (limited to LuaUI)
  • Added the following lua call-outs to allow unsynced read access to COB global variables:
    GetCOBUnitVar(unitID, varID)
    GetCOBTeamVar(teamID, varID)
    GetCOBAllyTeamVar(allyTeamID, varID)
    GetCOBGlobalVar(varID)
    (varIDs start at 0)
  • Added FBO objects to lua GL, with MRT (multiple render targets) capability, and blitting
  • Added RBO objects to lua GL, which should allow for depth + stencil format
  • Added lua Scream objects, which can call a function when they are garbage collected
  • Added VFS.SubDirs(), to get a list of subdirectories
  • Spring.SendMessage() and friends can now be used by unsynced lua code
  • added Lua SyncedCtrl function Spring.SetUnitMoveGoal(unitID, posX, posY, posZ[, radius[, speed]]),
    this makes the unit move closer to the target location, to a distance of (default 0).
    This is mostly for custom commands that should have the unit moving into range,
    it doesn’t affect the order queue. It’s marked as unsafe.
  • New Lua call-out (SyncedCtrl): Spring.SetUnitWeaponState(unitID, weaponNum, stateTable)
    StateTable is a table containing one or more of reloadstate, reloadtime (this time in seconds),
    accuracy, sprayangle, range, projectilespeed. Obviously the values will be assigned to the
    variables the keys refer to.
  • Added the Spring.GetMapList() call-out to the mod ValidMaps.lua script
  • Added the Spring.GetMapInfo() call-out for the ValidMaps.lua script
  • Added mapSizeX and mapSizeZ to the lua Game table
  • Fix GetCmdDescIndex()
  • Added a seventh parameter to AllowCommand, “synced”. It’s a bool that is true
    when the command was sent by either a Spring-internal action or synced Lua and
    it’s false if the command came from the user or LuaUI. This should facilitate
    preventing user commands to a unit while allowing LuaRules commands.
  • Removed the third return value of Spring.GetTeamInfo (active) since it was broken.

COB

  • Give a COB error instead of crashing for invalid explosion generator indices
    or weapon indices in emit-sfx. #
  • Added COB call to “ShotX” that happens shortly before weaponX uses
    QueryWeaponX, use this for switching firepoints in bursts or when using
    multiple projectiles.
  • StartBuilding now supplies the pitch as the second parameter to help with
    custom build FX.
  • Fixed cob bitwise not operator (was logical not.)
  • Added a MOD COB opcode for modulo division
  • Introduces the COB get/set variable 103, ALPHA_THRESHOLD. It ranges from 0-255
    and changes the glAlphaFunc to use that alpha value as its minimum. In
    practice this allows disintegration-style effects or the reverse for build animations.
  • Transport AI now calls the cob function ‘StartUnload’ which is called once
    when transport starts to lower during land flood method.
  • Dropped units call the cob functions ‘falling’ and ‘landed’ so that you may
    start and stop a parachute animation.
  • Added the ‘cobID’ unitDef tag, and the COB_ID (100) COB GET type
  • Added the BlockShot#(unitID, block) COB call-in - set block to non-zero to
    block the unit firing at unitID
  • Added the cob GET/SET STEALTH command (96)
  • Added CRASHING (97) get/set constant to COB. Can be used to get/set whether an
    aircraft is crashing. Is ignored for non-CAirMoveType units.
    (including CTAAirMoveType aircraft)
  • Added global, team, and ally GET/SET variables to COB scripts
    1024 - 2047: 1024 global variables
    2048 - 2175: 128 variables per team (the COB script unit’s team)
    2176 - 2303: 128 variables per allyteam (the COB script unit’s allyteam)
  • Added 8 shared per-unit variables (example: GET UNIT_VAR_START -unitID value)
  • Added the SET_WEAPON_UNIT_TARGET (106) and SET_WEAPON_GROUND_TARGET (107)
    COB GET codes (used GET because of its extra parameters)
    • GET SET_WEAPON_UNIT_TARGET weaponID unitID userTarget
    • GET SET_WEAPON_GROUND_TARGET weaponID xzCoord yCoord userTarget
  • Added TargetWeightX COB call-in and CHANGE_TARGET cob set var.
    COB call-in TargetWeightX(targetID, weight), weight defaults to 65536 which
    represents 1.0 and is multiplied with the target’s value to determine priorities.
    Set CHANGE_TARGET to Y makes weaponY pick a new target.
  • Adds the COB set constant CEG_DAMAGE (99), which defines the damage value for
    all CEGs triggered by emit-sfx 1024 + x to allow for some variability in the
    emitted effects (to e.g. make a charging energy ball grow larger or have smoke
    get progressively darker as the unit’s HP decreases).
  • Added a new get call, PLAY_SOUND, to play a sound that can be heard only by
    allies, enemy, in los, etc. GET PLAY_SOUND(sound number, volume,
    who hears the sound, where to play the sound) (see r4974 for full docs)
  • Get health now allows a unit ID to be passed.
  • Added COB and Lua access to some more weapon variables.
    New COB constants, all get-only (but not read-only):
    WEAPON_RELOADSTATE 125 (frame number of the next shot/burst)
    WEAPON_RELOADTIME 126 (in frames)
    WEAPON_ACCURACY 127
    WEAPON_SPRAY 128
    WEAPON_RANGE 129
    WEAPON_PROJECTILESPEED 130
    All of these use the first param (starting at 1) as the weapon index whereby positive
    means read and negative means write the second param to the value. In the latter case
    the previous value is returned.
  • New COB GET/SETS
    FLANK_B_MODE 120 // set or get
    FLANK_B_DIR 121 // set or get, set is through get for multiple args
    FLANK_B_MOBILITY_ADD 122 // set or get
    FLANK_B_MAX_DAMAGE 123 // set or get
    FLANK_B_MIN_DAMAGE 124 // set or get


对于玩家而言,那几点比较重要?

正想来发帖
结果只有帮顶了

我晕,更新这么大?

首先
安装程序有变化。大小很小,但是很多内容,包括mod和地图都由这个程序从网上即时下载,[烂网]所以安装的时间较长。[/烂网]

下面来看它的变化列表。

第一条 A lot of networking code was refactored.重新改写了大量的网络代码。似乎对我们意义很大。

Cache input and output of GetWantedDir to save a lot of expensive calculations
for a little loss of accuracy.

  • Tiny speedups in LosAdd and SafeLosAdd.
  • Optimized unnecessary sqrt in GuiTraceRay.
    若干代码优化

Replay中包含了很多相关数据,有利于方便观看。

Lobby interface
游戏大厅的界面的若干变化,这个有点多,体验一下就知道了。

AI interface:添加了若干操作接口,mod有用。

用户界面,改动若干
不是看不懂的就是觉得意义不大的…总之就是有一些改动吧,其中
包括Ctrl + 回收指令,工厂repeat生产时插入新任务的设置,雷达显示改动,SelectAI 按钮自动隐藏,一些快捷键的改动,

Bugfixes:
太多了。提一些感兴趣的。

  • Bombs now obey Accuracy and SprayAngle.
    炸弹现在支持随机性参数,可能会出现真正的地毯轰。

  • Fixed lightning weapons having a hardcoded inaccuracy, made it obey accuracy
    and sprayangle tag instead.
    电波武器现在也支持随机性参数。

若干可能导致崩溃的bug。

武器瞄准近距离目标的bug。

修正某尸体回收金属过多bug。

修正了单位被炸飞的时候剧烈振动的bug。

半透明显示的敌军建筑,现在显示的方向是实际方向。

麻痹武器对中立物体现在没有伤害了,并且不会晃屏幕。

飞机在水上爆炸时现在不会溅水了。

其它几个主要部分都是mod用,所以基本不翻了。但是这一块实际上是最重要的。有时间的话仔细看看。

不知道新版的lobby server0.35哪儿能下载?

地毯式轰炸倒是以前就可以实现了,20来架T2轰炸机,一次投弹然后返航的操作对于一个可观的范围内敌非少数厚血建筑以及T1,和T1单位血量相似的T2单位,几乎全灭,非常爽。、。。

那是supcom吗?

Unit / feature definition tags:
单位和物体的新的参数。
添加了一个叫’pushResistant’ 的参数,表示某个单位不会被其它单位推走。

尸体加了一个reclaimTime参数,表示其回收需要的时间。默认=金属+能量含量。

运输舰的卸载方式参数:
transportUnloadMethod
0:着陆卸载,1:空投,2:land flood 什么意思?
另外:fallSpeed 和 unitFallSpeed 定义单位下降的时候的速度。

为火炮和轰炸投弹器添加了 flighttime 武器飞行时间参数。

cantBeTransported参数限制其是否能被运输。
minTransportSize表示装载这个单位,需要的最小的运输机的体积。
minTransportMass和上面类似

unloadSpread参数控制运输机卸载时,单位之间的间隔。

CEG,自定义爆炸生成器,添加了若干功能,希望能带来更好的爆炸效果。

collide 参数,控制飞机是否相互碰撞。据说,此举能极大地提高CPU运算速度,并且更接近原来的TA。

还有
Weapon definition tags:
新支持的武器特性:挑一些似乎重要的说一下

heightBoostFactor 使火炮的高度提高其射程。

heightMod 似乎是控制武器瞄准俯仰角度的参数。

GroundBounce, WaterBounce 武器是否触地反弹,触水面反弹。
BounceSlip 粘性反弹,BounceRebound 弹性反弹。(貌似)
bounceExplosionGenerator 反弹时的爆炸效果。
NumBounce反弹次数。
可以反弹的武器包括 鱼雷,导弹,激光,炮弹,EMG

beamttl 控制激光的持续时间,beamdecay 激光的渐隐时间。

SubMissile 控制鱼雷是否先像导弹一样飞行一段时间。
之前是鱼雷轰炸机,之后,有可能出现 鱼雷战斗机 类似的兵种了。

waterweapon 陆地武器是否能直接攻击水下。

myGravity 控制武器自身的重力加速度。滑翔武器!

炸弹现在支持Accuracy and SprayAngle参数。地毯式轰炸!

ProximityPriority 参数可以控制武器选择目标的距离远近偏好。

极好!极强大!

好像还可以自定义快捷键的组合

嗯嗯,所以说TAS的系统是很好的,TA中轰炸机只能沿途手动,但TAS不仅可以范围设置轰炸,还可以预先设置,这样可以直接完成类似与现代的空中打击的一次性空中轰炸支援,然后直接返航,而且这样实现起来,轰炸机是侧飞甩弹,能大大减少防空的杀伤时间,减少折损率,当飞机数量较多的时候,例如偶在上面提到的20来架,其实一般不到10架就足够了,可以对前线敌军造成大规模打击。

我比较希望有人能够做个Widget,实现轰炸机编队在指定的圆心和半径内自动均匀分配攻击地面命令以达到编队的地毯式轰炸效果。而不是靠一个轰炸机的Spray Bombing来实现,而且这样的话看起来也更壮观,做视频的话更有吸引力。 :lol :lol :lol

Edit:刚才用了AreaAttack试了一下,发现攻击虽然达到了随机轰炸,但是貌似阵形很混乱,大概是我先前准备的不好或者飞行距离太近了吧

[ 本帖最后由 honeyfox 于 2008-1-5 13:45 编辑 ]

话说如此便利的地毯式轰炸,会不会导致轰炸机兵种过于强大?
:lol

现实世界中的轰炸机有载弹量的问题。。。也就是来回轰两三个回合应该要回去补充燃料与弹药。。。游戏里么。。。:L

[

很久前spring的NOTA等mod就有轰炸机载弹量属性了,扔完自己就回平台补充的

[

根据概率论原理,我们不难得出,当数量较少时,分布是很不均匀的,但是,当数量较大的时候,结果则比较趋近於期望值。
总之,由亲身实践,对于前线的地毯式轰炸非常爽!!!!新版的TAS如果能均匀的话就更爽了。。因为数量较少的时候经常出现甩了好多炸弹到无人区的情况