Changes 2016/10/03

  • Replay desync: mortar reload timer out of sync
    • Add weapon reload timers, timeout and rounds remaining to checksum
    • Fix: Force reload timer to zero during construction and reset reload timer when weapon is complete
  • Fix: Amended fort recording still failing in 204
    • Link and device creation translate node Ids
  • In Debug configuration enable optimisation for utility projects and physics inner loop, line segment intersection and structure painting
  • Fix: support > 1000 replays in MapSelect
  • Remove device splash damage on mortar destruction, slightly bump up structure splash damage of incendiary mortar
  • Auto refresh local and lobby tabs
  • Start and stop an environmental studio effect
  • World environment effect runs indefinitely

Changes 2016/10/02

  • Replay desync: door closing too early
    • CF Alpine @7900
    • Order of two scheduled calls reversed
    • TrackedProjectile member AntiAirWeapons using unordered set has unreliable deserialisation order, consume random numbers in different order
    • Fix: use ordered list with InsertUnique
  • Fix: interrupt ai recording on 204 team 2 – nothing is actually built
    • Map was changed, next node Id must be taken from the map not the AI Fort script
  • Fix: AI Fort on 204 unable to build past line 27
    • Disabled first part of UnstableColinear as it was blocking the link creation and didn’t make much sense
  • Fix: If structure is edited after an AI Fort is recorded, amended structure commands don’t work
    • For recording to work the original and actual nodes of the structure must be equal
    • Fix: Have CommandInterpreter query the AI script for the translation (if available)
  • Fix: Campaign victory music not playing
  • Fix: AI misbehaving in weapons and repair tute
  • Fix: updated fmod and msvc DLLs in installer

Changes 2016/10/01

  • Replay desync: laser hits mortar, platform has slightly more HP in bad state
    • N187-N232 goes from 4 to 6 fire segments a frame late in the bad state frame 4033
    • Mortar goes in frame 4033 Preceding frame
      • node/link parameters to PNode::IgniteAt are reversed
      • Mortar’s device platform nodes are reversed in the keyframe, no way to find out why
      • Order is 187, 232 in the AI script discovery
      • Reversed for orientation, so device is attached to secondary link
      • Platform must not be set correctly when AI builds device
      • Fix: reverse platform node IDs when adding device to secondary link

Changes 2016/09/30

  • Fix: Crash in ClientDatabase::SendToAll called from PlayerController::GameWon in instant replay after client had quit
    • Don’t send JoinUnavailableMessage during replay
  • Desync: sniper changes direction to left while neutral on one but not the other
    • Dated client selection used to turn neutral weapon
  • Desync: Creation of link allowed for one client but not the other after selected node turns neutral
    • Cannon projectile isolates selected node, turning it neutral
    • Link created frames later for one client but not the other
    • Should have been rejected by distance on both clients
    • Desync must have happened on the node position first
      • Force applied to selected isolated node ignored when standin link connected?
      • Temp bracing must still be operating on isolated node due to standin

Changes 2016/09/29

  • Fix: Crash near end of PlayerController::StartInstantReplay(), Replay::Seek at mReplayFile->GetPos,
  • dereference NULL pointer, starting instant replay
    • Replay file corrupt. Show error message instead of crashing.
    • Workaround: show console message that replay is corrupt, quit to main menu
  • Fix: Crash in PhysicsManager::UpdateStructureState at float filteredStress = state.StressDeltaFilter.GetCurrentOutput();
    • Something to do with the inline virtual function?
    • Unlikely that state is a corrupted reference since it is referred to earlier without a crash
    • Work around: remove inlining of GetCurrentOutput, add exception handler, log state to console

Changes 2016/09/20

  • node_pointer effect animated the arrow towards the node
  • Ground devices will snap to the edge of an overlapping device anywhere within its width
  • Increase snap threshold for devices
    • Move TerrainManager::mEdgeSnapDistance parameter used by IsPointOnGroundSurface into SnapConfig
    • Add new constant for DeviceManager to override this when placing ground devices
  • Added shorter/lesser shake to cannon and missile impacts, including ground
  • Appended username to end of mailinglist.csv to avoid Dropbox conflicts
  • Added environmental variants of Cannon Fodder for EGX
  • Disabled rain in Fields environment for EGX

Changes 2016/09/12

  • Add offset and reference control constants to transaction effect
  • If reference control not set, draw transaction at the previous world-space location
  • Add constant to set scrap time of materials rather than reusing build time; reduce time to scrap materials to 3 or 4 seconds
  • Reduce time to scrap devices and weapons by ~20%
  • Reduce size on struct construction icons (View.ProgressIcon.MaterialScale)
  • Increase size of temp bracing icon
  • Cannon Fodder adjustments for EGX
    • Disable transactions
    • Swapped sniper and ap-sniper to better facilitate late missile launching
    • Added some additional bracing to reduce impact of heavy mortar
  • Fix: map name empty in Map Editor
  • Camera shake effect
    • Constantly generate shake offset using 1D Perlin noise function
    • Add new effect type which defines an envelope, setting the scale of the shake actually used
    • Add quadratic envelope parameters
    • Add PlayForEnemy for coarse filtering
  • Reverse team associated with effect: projectile impacts belong to the hit structure
  • Anti-air projectile collision and ground impact effects are associated with team None
  • Add camera shake to mushroom cloud, cannon fire, heavy impact, medium impact and missile structure hit effects
  • Fix: Chatroom AI checkboxes and force start layout incorrect