Build Update

BUILD UPDATE #021: Patch 1029.1

This is a small patch mainly intended to fix the various game crashes and connectivity issues introduced in version 1029.

⚠️ Coming from a previous version of the game? Issues with controls, loadouts, assets or settings?

We strongly recommend players coming from an older version of the game to delete all files located in %LOCALAPPDATA%/GroundBranch/Saved/Config/WindowsNoEditor (paste file path onto your File Explorer address bar and hit Enter to go to folder).

For those who can afford it, we suggest a full reinstall: it may fix broken/missing features introduced in this version, as well as issues with controls, assets, settings and even performance. To ensure a clean reinstall, you need to manually delete all files located in …/steamapps/common/Ground Branch and %LOCALAPPDATA%/GroundBranch/%UserProfile%/Documents/GroundBranch/

⚠️ Update your dedicated server

All dedicated servers must be updated to work with the current version. Make sure yours is updated so players can enjoy the latest version of GROUND BRANCH!

Fixes and updates

  • Kris went over the code side of things to fix the crashes and connectivity issues brought on by 1029. Thanks for all the reports and crash logs!
  • Cleaned up some bad navmeshes in Depot, Small Town and 747 so bots won’t get stuck in (or not go to) certain areas. Bad navmeshes!

What’s next?

Patch 1029.2 will fix a few less pressing issues from 1029 that didn’t make the cut.

This has been Build Update #024!

If you missed our last update, be sure to check it out here as it has some important news and some nice previews.

Don’t forget to keep in touch with us and the GROUND BRANCH community via Discord, the Steam® Community HubRedditTwitterInstagram or Facebook—hit us up and we’ll get back to you as soon as we can. For those with a lot questions and not enough answers, we’ve also put out an official FAQ that’s well worth checking ou

Be safe, be well, and we’ll see you on the next one.

—The BlackFoot Studios Team

Version info & change log

Game version: 1029.1

Client

Steam Build ID: —
Size: — GB

Dedicated server

Steam Build ID: —
Size: — MB

FIXES

* FIXED various AI navigation issues in 747, Depot and Small Town


CODE

* cleaned out unused functions from GBGameViewportClient
* removed usage of ConstructorHelpers from GBBotManager to fix related crash
* updated GBFirearm
    * moved some logic from OnBeingUnequipped() to OnRemoveFromCharacter() to ensure that logic is called even if the firearm being equipped isn't detected.
    * added check in BeginDestroy() to prevent it trying to stop sounds on a dedicated server to hopefully fix a crash related to the server removing listeners in Wwise when there are none.
* updated GBItem::UpdateSkin_Implementation() to try to fix crash related to a MID not being created correctly by engine due to the primitive component owner being invalid in some way.

* created M_Widget3DPassThrough based on suggestion to correct washed out look for web-based MOTD
    * see https://forums.unrealengine.com/development-discussion/rendering/91810-browser-3d-widget-looks-washed-out
* created UGBGameplayStatics::IsNetReady()
    * takes PlayerController, finds the matching net connection (if any) and returns the value of IsNetReady()
* updated GBGameMode
    * moved adding players to waiting queue from  HandleStartingNewPlayer() to PostLogin().
    * updated NewPlayerWaitingTimer() to use UGBGameplayStatics::IsNetReady() to make sure a player can received RPC's before attempting to call ClientInitialSync().
* updated GBCharacter::NetMulticastPlayVoice_Implementation()
    * added IsAlive() check to prevent trying to start playing voice for dead/dying character
    * changed check(VoiceAudioComponent) to return if VoiceAudioComponent is a nullptr instead.
        * VoiceAudioComponent could be null if the character is out of range of any players that can hear it or sound is disabled :|
    * Fixes crash related to VoiceAudioComponent coming back as null and the check() failing.
* updated GBPlayerController to only created a VOIPManager if sound is enabled.
* updated GBVOIPComponent
    * instead of emptying entire audio queue into buffer if not enough samples are ready, it will now only dequeue enough to meet the current requirements.
    * also changed loop to use !IsEmpty() instead of return value of Dequeue().
    * hopefully fixes Dequeue() causing crash for some reason :neutral_face:
* updated GBGameMode
    * removed call to PlayerController->ClientInitialSync() in HandleStartingNewPlayer().
    * added !WaitingPlayer->IsUnreachable() check to NewPlayerWaitingTimer()
    * Should fix crash related to calling ClientInitialSync on a player who did not connect correctly resulting in the "Unreachable" flag being set and no RPC's working (hence the crash).
* updated GBFirearm
    * moved sight sorting to FSightGroup::AddSight()
    * updated FSightGroup::GetActiveSight() to use IsValidLowLevel() instead of nullptr check and IsValidLowLevelFast()
    * added UPROPERTY() macro to SightGroups member variable
    * hopefully these changes fix the crash related to GetActiveSight()

* attempted fix for crash related to using ConstructorHelpers in GBGameMode
    * classes used by game mode are now null by default when game mode is created.
    * PostLoad() and PreSave() will check if these classes are still null and set if them to the proper defaults they actually are.
    * removes the need for the ConstructorHelper function that was failing, so fixes the crash

BUILD UPDATE #020: Gear Up

After a lengthy and grueling period of bug smiting since the last UE4 engine update broke way too many things (we’re now on UE4.23.1), version 1029 of GROUND BRANCH is finally rolling out.

Name of the game for this update is content: We have both added and updated several weapons and attachments, made a few map improvements and rebuilt Depot from scratch with dynamic lighting. But it’s not all content—enemy A.I. sight is more complex and no longer spots players in a binary fashion, audio has been added to and improved further, and a first pass on the Mission Summary screen has been implemented, among many other smaller and under-the-hood changes and fixes that you can check out in the highlights below and the raw change log at the end of the page.

Sit tight and buckle up, ’cause there’s a lot to cover.

⚠️ Coming from a previous version of the game? Issues with controls, loadouts, assets or settings?

We strongly recommend players coming from an older version of the game to delete all files located in %LOCALAPPDATA%/GroundBranch/Saved/Config/WindowsNoEditor (paste file path onto your File Explorer address bar and hit Enter to go to folder).

For those who can afford it, we suggest a full reinstall: it may fix broken/missing features introduced in this version, as well as issues with controls, assets, settings and even performance. To ensure a clean reinstall, you need to manually delete all files located in …/steamapps/common/Ground Branch and %LOCALAPPDATA%/GroundBranch/%UserProfile%/Documents/GroundBranch/

⚠️ Update your dedicated server

All dedicated servers must be updated to work with the current version. Make sure yours is updated so players can enjoy the latest version of GROUND BRANCH!

Build highlights

A.I. perception tweaked

Previously a binary system, the enemy A.I. sight has been upgraded to no longer spot and engage players immediately upon seeing, for example, a glimpse of the character’s arms, head or leg sticking out of cover from a light-year away. This new setup takes different body parts into consideration and applies an individual value to them based on distance and amount of exposure—so you may be able to pop your head out from afar and not be instantly recognized by tangos as a hostile.

On the flip side, they should now react more appropriately to loud noises and are more likely to investigate and adjust their search location if they hear gunfire and explosions.

It’s all a first pass and a work in progress, but it should make things a lot less frustrating. Oh, and Kris says “[The system] is setup to allow further adjustments based on lighting, camo etc.” We’ll still have to figure out a good approach for those.

Audio

Gunshot sounds

Mikson has added/updated gunshot sound effects for the following weapons:

  • MK 25 / MK 25 (Suppressed)
  • M1911 / M1911 (Suppressed)
  • G22 Custom / G22 Custom (Suppressed) [model since replaced by the G19 Customs, which will use the G22 sounds for now]
  • MP5 / MP5 (Suppressed)
  • MP7 / MP7 (Suppressed)
  • MPX SBR
  • UMP45 / UMP45 (Suppressed)
  • M16A4
  • M416D
  • MK 18 Mod 1
  • AK-74M / AK-74 MI
  • MK 14 Mod 2 EBR / MK 14 Mod 2 EBR (Suppressed)
  • MK 48 Mod 0
  • M1014
Note: the G22 Custom has since been replaced by the G19 Custom, which is using these same sounds for the time being
Footstep and movement sounds

A first pass on brand-new, all-original footsteps has been implemented and we can officially kiss the de-synced horseshoes and clogs goodbye. Gear “rattle” from movement has also been updated and it’s all sounding real nice.

Other audio changes
  • New bullet impact sounds.
  • Added sound for reticle brightness change on non-magnified optics.
  • Fixed burst fire sound not stopping when magazine empties mid-burst.
  • New grenade bounce sound (WIP!).
  • New, more authentic radio squelch and filter effects.
  • Decreased falloff distance for gear rattle sounds.

Depot 2.0 (aka Depot v2)

River Bend insertion point
Northeastern area of the compound wall

Arguably the biggest deal about 1029, the rebuilt Depot map now features a completely new and expanded surrounding area, as well as several big changes to the central compound—including a new internal layout for one of the warehouses. It has a very different atmosphere, not only because of the new woods, but also because of the…

Dynamic lighting

Depot 2.0 is our first map to use fully dynamic lighting, which offers benefits such as more stable framerates, uniform lighting across the map (meaning no jarring lighting scheme changes between separate sections like it happens with “baked” static lighting) and a much easier time making shootable lights in the future. But dynamic lighting is not without cons: it may worsen the “ghosting” effect that Temporal Anti-Aliasing (TAA) has, offers less control over interior lighting—which may appear bland/flat/overly lit—and may affect overall performance negatively, particularly on lower- to mid-end PCs.

We are still testing things out and will be adjusting according to feedback, but be prepared to upgrade your rig or turn video settings down if your specs are too far in the low end.

Train Bridge insertion point: The expanded map boundaries include the now accessible bridge over the tracks
Known issues
  • When using FXAA, you may notice “shadow flickering” on foliage and vegetation. Using TAA instead will help blend that in, but as noted, will cause “ghosting” effect associated with it—most visible with scopes. We will be tweaking things to try and address these issues.
  • Dynamic lighting can affect the appearance of reticles, night vision and scopes considerably when compared to static lighting (which is what they’ve all been made to work with originally). We’ll be tweaking those as we move maps to the new lighting scheme so that everything is consistent.
  • The map is still a work in progress, so there may be gaps in the play area, places you may get stuck in and parts that are missing collision. If you come across any of those, please file a bug report.

Other map shenanigans

Small Town

Small Town‘s Bravo (B) building has received a reworked staircase with roof access, a roof hatch door and a catwalk joining its roof to building Charlie’s (C). You’ll find some sandbags up there as well so you’re not too much of a fish in a barrel for the enemy while prone isn’t in the game.

More places to shoot and get shot from? Sign me up

The map now also uses dynamic lighting for both day and night scenarios, so let us know how it runs for you.

747

In addition to several refinements and asset updates, the map’s eponymous aircraft has received an enterable upper deck with a fully modelled cockpit.

Credits: Prowlaz (captured with NVIDIA Ansel)
City

The previously empty pub’s upper floor is now a roomy lounge…

Pretty comfy

…and you can look near the alleyway insertion point for a little workout room too:

NEW MAP: User Arena Two

A new User Arena map is now available for quick Terrorist Hunt and PvP games.

moar cqb pls

New and updated gear

No gear?

The Platform, Primary and Sidearm item slots now have a “None” option, so you can choose to play without a vest or either of the weapons. This should aid the role-players and “custom” game mode crowds while we haven’t added more official game modes, as well as allow players to voluntarily handicap their loadouts.

NEW SIDEARMS: G19 Custom

The venerable G19 comes in two flavors, both with custom Agency Arms® slides: the G19 Custom (Patrol) has a Patrol Series slide and regular-height iron sights for a more traditional look, while the G19 Custom (Urban) is fitted with the Urban Combat slide and suppressor-height sights (taller sights to clear the added height of a mounted suppressor).

Bottom-left: G19 Custom (Patrol) with standard-capacity magazine and sights / top-right: G19 Custom (Urban) with extended magazine and suppressor-height sights. Not gonna lie, this shot took way too many attempts and it kinda turned out just okay

The G19 Custom pistols have replaced the G22 Custom as the G19 is a far more common sidearm in the special operations community, due both to its more compact size and its vastly more popular 9 mm ammunition. The models are also of a better quality, so it’s a win-win.

Both handguns have a standard capacity of 15+1 rounds. If fitted with the Taran Tactical® extended base pad magazine, capacity goes up to 20+1.

NEW SIDEARM: M17

Another new sidearm in the armory: the U.S. Army’s new service pistol M17. It carries 17+1 rounds of 9 mm ammo and also has a rail for mounting lights under the barrel.

“No, you’re ugly but functional” —The M17, probably
NEW SIDEARM: M9A3

The latest model in the M9 series has also been added: the M9A3 has a 17-round magazine, accessory rail and Vertec-style thin grip.

NEW SIGHT: Vudu 1–6x

The Vudu 1–6x is an LPVO by EOTech®. This variable-power scope goes from no magnification (1x) all the way to 6x. Like the AccuPower 1–8x, its first focal plane reticle scales with the zoom. At 1x, you see the recognizable EOTech® reticle shape for fast target acquisition, and as you zoom in the reticle expands to reveal the detailed crosshair with MIL/MRAD hash marks.

Left: sight picture at 1x / right: sight picture at 6x. Both shown with max reticle illumination

The Vudu is equipped with the same mount as the AccuPower, meaning you can also attach an RMR (Flat) on top of it. Like the AccuPower, it also offers 10 levels of reticle brightness, including a no-illumination setting.

NEW SIGHT: Micro T-2

Younger sibling to the T-1, the Micro T-2 can now be selected under Sights. Both Micros are functionally identical, so pick the one you feel the most tacticool with.

NEW/UPDATED SIGHT: M68 CCO

We’ve replaced the very ancient CompM2 model with a CompM4s—the current red dot sight under the U.S. Army’s M68 CCO designation.

New M68 CCO (CompM4s) seen here alongside the new Tac Light (WMLx) model

If you had any saved loadouts that included this item, make sure to re-equip it. It’s an entirely new item entry, so the previous version will be gone!

NEW SIGHT: EKP-8-18

The EKP-8-18 is a Russian optic from the Kobra series of red dot sights. This particular version is meant for Picatinny rail mounts. Although the real thing offers 4 reticle patterns that can be changed on the fly, we’ll be sticking with just one option until we can work that functionality in.

UPDATED SIGHT: HWS EXPS3

The EXPS3 holographic sight has received a worthy model with EOTech® branding and all. Farewell, “V3 NavTech”.

Yes…
NEW ACCESSORY: Tac Light (M300C)

A new compact light has been added and it looks damn good. Look for Tac Light (M300C) under Accessories.

Tac Light (M300C) seen here mounted on an Offset Rail alongside the new AN/PEQ-15 (read on) and Stubby Grip (keep reading, keep reading)
UPDATED ACCESSORY: Tac Light (WMLx)

Another model that was updated is the Tactical Light (Compact), now called Tac Light (WMLx). It was an old model, so we replaced it with a much more detailed one, complete with Inforce® branding.

If you had any saved loadouts that included this item, make sure to re-equip it. It’s an entirely new item entry, so the previous version will be gone!

NEW/UPDATED ACCESSORY: Tac Light (X300)

The handgun light is a brand-new model: the Tac Light (X300) has replaced the Tactical Light (Pistol) attachment.

UPDATED ACCESSORY: AN/PEQ-15

The trusty “PEQ box” also has an updated model, which you’ve just seen. You can also check out the tan/FDE version if you select the Snakeskin camo on either the MK 18 Mod 1 or the M4A1 Block II carbines.

Attachments will have multiple skins you can select individually in the future.

Also, the IR laser now shoots out of the correct hole orifice aperture. It was previously projecting out of the IR illuminator lens, and now emits from the right-hand side (from the shooter’s perspective), next to the visible laser.

NEW FOREGRIPS: Vertical Grip (RVG) and Stubby Grip

Two new foregrip models are available in the Underbarrel category of weapon attachments: Vertical Grip (RVG) and Stubby Grip (pictured a few items above).

Tac’d out M416D CQB: Vudu 1–6x + RMR (Flat), AN/PEQ-15, offset Tac Light (M300C) and Vertical Grip (RVG)

Mission Summary

At round end, a Mission Summary board will now appear upon being transported back to the Ready Room. It displays a randomly generated codename for the mission, as well as map name, time elapsed and a few individual stats (from left to right: player name, status, number of kills, hit percentage, shots fired and number of hits) along with the team’s average stats:

The Mission Summary board is a first pass in every sense: the overall appearance, as well as which stats are shown to whom and in which game mode are all subject to change.

Miscellaneous fixes and updates

  • The different versions of the RMR red dot sight have been renamed RMR (Flat), RMR (Short Rail) and RMR (Tall Rail).
  • Only the RMR (Flat) can be mounted on the flat RMR mounts available on the ACOG 4×32, Specter DR 1x/4x, AccuPower 1–8x, Vudu 1–6x etc. The other versions are fitted with Picatinny mounts and can only be mounted on Picatinny accessory rails.
  • Enlarged the interaction box around dropped items so that they’re easier to interact with.
  • Lots of map cleanup (collision, textures, gaps etc.).
  • No more doing a slow 360° when mounting certain ladders like an awkward square dance move.
  • A.I. should now leg it if reloading out in the open, as well as look down sights when engaging beyond 15 meters.
  • Adjusted the scale and texturing of a few items.
  • Renamed the “Risers” tab of weapon attachments to “Rails” as it included rail covers, offset mounts and other items that weren’t risers.
  • Attempted to make night vision a bit more consistent across maps and sections thereof.
  • A whole lot of stuff you can check out in the raw change log.

Other known issues

Here are the main known issues introduced in this version. Most should be fixed or improved in an upcoming hotfix:

Audio
  • When playing online, gunshot tail sounds sometimes don’t update properly and result in the external (outdoors) tail being triggered inside buildings.
  • When playing online, the sound effect from magazines dropping to the ground is missing.
  • Occlusion for the grenade bounce sound effect is faulty.
Cosmetic and customization
  • The Offset Rail cannot be mounted over the receiver portion of weapons, only over the handguard/fore-end.
  • The stupid holsters have gone invisible (online).
  • When accessed via the Ready Room lockers, the operator customization screen will display a weird background.
  • The Watch Cap is not accepting the Headset attachment, but you can still use the combination from previously saved loadouts.
A.I.
  • The perception tweaks can cause varying degrees of unresponsiveness and odd behavior from enemy bots. Please bear with us.

What’s next?

A hotfix patch or two in the upcoming weeks should hopefully take care of most of the issues that slipped and/or weren’t worth holding back the release for.

In the meantime:

Toadie has been working on animations for 1030 (here’s another WIP one); Mikson‘s shortlist has a few sound bugs to fix and some dedicated weapon sounds for newly added weapons to implement. In the longer run, he’ll be restarting work on ambient sounds; John will keep working on optimization, tech, maps and new content (we’ve got a few more pieces of gear in the pipeline); and Kris will continue to assist everyone in implementing stuff while code-slashing his way through all the nasty bugs we keep flinging at him.

This has been Build Update #024!

If you missed our last update, be sure to check it out here as it has some important news and some nice previews.

Don’t forget to keep in touch with us and the GROUND BRANCH community via Discord, the Steam® Community HubRedditTwitterInstagram or Facebook—hit us up and we’ll get back to you as soon as we can. For those with a lot questions and not enough answers, we’ve also put out an official FAQ that’s well worth checking ou

Be safe, be well, and we’ll see you on the next one.

—The BlackFoot Studios Team

Version info & change log

Game version: 1029

Client

Steam Build ID: 4479668
Size: 4.3 GB

Dedicated server

Steam Build ID: 4479675
Size: 199 MB

FIXES

* FIXED MP5A5 front sight alignment
* FIXED G33 front lens texture distortion
* FIXED unhooked node in WBP_MapList
* FIXED warnings about invalid primary asset ID's in reference to BP_XXX_Master classes
* FIXED missing collision on 747 wheel well/cargo area
* FIXED resolution of 747 loading screen images so no longer distorted
* FIXED missing collision to interior wall in Depot warehouse 1
* FIXED AK mag being used by LMG gunner in Depot TH
* FIXED missing collision for various trees on Depot v2
* FIXED missing collision in SF's elevator
* FIXED out of bounds access in Storage Facility 
* FIXED missing ceiling collision in various Power Station static meshes
* FIXED terrain collision allowed player to "float" in stairway B
* FIXED various static meshes that were clipping geometry
* FIXED up misc redirectors 
* FIXED floating tree in Depot_Geo
* FIXED getting out of bounds and other misc exploits in SmallTown_Geo
* FIXED floating flag in UserArena_Geo
* FIXED 360° spin before mounting a ladder
* FIXED being pushed into wall next to ladder when going to mount ladder from the bottom
* FIXED missing ceiling collision in subway section of City
* FIXED DOF effect in Storage Facility that happened in some places
* FIXED Depot v2 out of bounds gap
* FIXED Depot v2 road rendering issue near bridge
* FIXED Depot v2 floating fence
* FIXED overlay large collision on RadioTower_A feet
* FIXED looping drop left hand item montage when switching items mid-reload.
* FIXED spamming reload mid-item switch.
* FIXED playing drop left hand item montage unnecessarily after reload abort.
* FIXED Mission Summary/AAR displaying a team accuracy as a total of percentages instead of the average.
* FIXED grey rectangle on side of EXP3 sight
* FIXED standing in air in Tanker Ship engine room
* FIXED shadow bug on the face of the Tanker Ship tower
* FIXED not being able use 'Simulate' in editor unless there is spawn point
* FIXED aiming / sprint interactions
* FIXED another out of bounds entrance in SF – damn you, tjl9987612!
* FIXED various 747 wall hacks
* FIXED walked into plane (747) wall off of front stairs
* FIXED pass through airplane fuselage near first class
* FIXED Tanker Ship pipe support in position that doesn't make sense
* FIXED trashcan placed where door clips on Tanker Ship
* FIXED Tanker Ship railings doubled
* FIXED glass in Tanker Ship bridge windows shattering in one big chunk
* FIXED hard to see red dot sights. Should now be much more visible
* FIXED bad RPC in SetMagnificationLevel()
* FIXED blown out sun on Power Station
* FIXED possible crash in GBInsertionPoint if GameState is replicated after InsertionPoint info.
* FIXED P_WaterCharge being occluded all the time.
* FIXED misaligned mountains in 747 map
* FIXED bugged lightmap on 747 cargo container
* FIXED RR map super bright
* FIXED different shade of color for world when looking outside 747 door (still happens a small amount due to post process settings being different between inside and outside)
* FIXED RMR dot too small
* FIXED visible crack between Depot warehouse roof and side wall allowing you to see inside building
* FIXED AI navigation in TH-Depot V2
* FIXED AK mag for LMG in BGLowVis_GunnerLMG.kit
* FIXED nav collision geo being visible on BP_Door_Rollup
* FIXED Kobra_EKP-8 reticle brightness not changing
* FIXED burst mode being slower than actual ROF of given firearm
* FIXED reload animation notifiers relating to ammo usage being called multiple times
* FIXED M1014 ammo levels and shot count going out of sync between client and server (I hope)
* FIXED AR-15 and MP5 bolt release not chambering round
* FIXED SDASS not cycling fore-end during reload
* FIXED call to UGBAISense_Hearing::ReportNoiseEvent() using the character as the instigator even if they had a valid controller
* FIXED the usage of Mission Adjectives/Noun string table Keys as Source Strings (oops)
* FIXED potential usage of nullptr in GBPlayerState::OnRep_InReadyRoom()
    Note: I was checking for the nullptr a few lines later :|
* FIXED floating bridge anchors in Depot
* FIXED ReadyRoom lighting errors
* FIXED road blockage in Depot
* FIXED getting stuck in slightly out of bounds rock in Storage Facility
* FIXED Gas Can in City map has bad lighting
* FIXED spectators getting no lighting scenario when the starting to spectate an in-progress round based game mode
* FIXED handgun reload montage to fix slide not going fully into battery
* FIXED blocking volumes in Tanker Ship engine room blocking weapon collision erroneously
* FIXED disconnected node in ABP_mk48_mod1 - dust cover etc should now open
* FIXED bad texture on front lens of Vudu 1-6x scope
* FIXED Vudu 1–6x reticles correctly set for each level
* FIXED Vudu front lens texture misalignment
* FIXED out of scale folding backup sights
* FIXED clipping magazines for M416D, M4s and MK 18
* FIXED out of scale Offset Rail
* FIXED marksman suppressor texture with blue hue
* FIXED angle of MK 14 magazine
* FIXED AK-74 MI CQB texture issues along top of receiver and top rail
* FIXED issue with 747 shadows culling out to soon
* FIXED player movement continuing when mission summary appears
* FIXED insertion points being too hard to see on Ops Board map
* FIXED missing Ops Board map in DM/TDM/LMS
* FIXED missing start count down button on LMS ops board
* FIXED PP changing color grading on balcony area in 747 map
* FIXED magazines clipping through M416D mag well
* FIXED collision and overlapping geometry on top of Small Town building trim pieces
* FIXED missing collision on M300C light
* FIXED IR laser coming out of incorrect aperture on AN/PEQ-15
* FIXED RR roster not redrawing correctly
* FIXED RR locker room name plates not redrawing correctly
* FIXED audio freeze issue with older AMD processors
* FIXED misplaced fence mesh on 747 ground
* FIXED harsh lighting change when moving out main entrance of 747 to outside
* FIXED small gap in wall that let you see outside in 747 cargo area
* FIXED missing collision on ceiling of 747 cockpit
* FIXED Depot bad landscape collision issue along road
* FIXED bad cast to GBPlayerController in WBP_NetworkFailureOverlay
* FIXED Specter top mount not working
* FIXED various typos and punctuation errors in map/UI names and descriptions
* FIXED running footstep sounds on dirt surface
* FIXED WBP_DeathOverlay not being removed from FullScreenWidgets properly, causing player to be locked to a non-visible widget
* FIXED team kill notification not coming up on death
* FIXED characters playing equip sounds in front end menu
* FIXED characters not having NVGs down in front end menu
* FIXED GBGameMode::ChangeName using wrong length when clipping duplicate names
* FIXED M17 using wrong magazine; now has proper model with 17 rounds
* FIXED missing M17 icon
* FIXED lighting change when going from inside main 747 building to outside in day scenario
* FIXED bad node in Aircraft_Takedown_Audio
* FIXED bad nodes in A_SFXVolumeChangeTest_Cue
* FIXED picking up mags preventing your from aiming anymore
    * they were actually not being put away once picked up due to another bug fix
* FIXED size and placement of interaction box that surrounds magazines to make them much easier to target and pickup
* FIXED large area of floating foliage in Depot
* FIXED Depot parking block mesh doubled
* FIXED cannot lean while standing on rock near insertion point in Small Town
* FIXED ground clutter hanging over cliff edge on Depot
* FIXED various gaps between slide and frame on M17, M9A3 and G19 Custom (Urban) handguns
* FIXED NE insertion point on TH-SmallTown
* FIXED AAR/Mission Summary not appearing in Defend game mode
* FIXED not being able to place Headset on Ball Cap
* FIXED being able to place multiple socket based attachments on single parent item
* FIXED MOTD not showing up on WBP_ServerInfoBoard 



CONTENT

* Depot - complete map rework
    * Finished off warehouse rework
    * Replaced old bush with new model
    * Various cleanup and smoothing off rough landscape areas 
    * Changed procedural foliage boxes to volumes so they don't collide with weapon
    * Tweaked lighting options a bit for performance
    * Cleaned up some PhysMat setting on newly used materials
    * Cleared out duplicate doors
    * Made sure all newly used foliage had proper settings for AI

* Added proper PhysMat to marketplace foliage, rock and ground materials used in Depot
    * Properly sets up foliage for AI LOS

* Added in new weapon attachments
    * TangoDown Stubby Vertical Grip
    * Aimpoint CompM4s optic
* New models added for 
    * Ural 4320 truck
* New optics
    * Kobra EKP-8
* Updated Trijicon RMR Flat in game name from RMR (ACOG) to RMR (Flat) to allow use with any flat style mounts
* New map: UserArena_Two
    * Different layout focused on more close quarters fighting
* Depot
    * Added some blocking volumes around edges of playable space
    * More general work cleaning things up while moving around map
    * Created TE version
    * Created Compound only TE version
    * Updated overhead map image for full version of map
    * Cleaned up TH version in preparation for adding in TH spawns
* UserArena_Two
    * Finished off art side of things
    * Finalized lighting for Day and Night
    * Initial placement for TH mode

* Added new weapon attachments
    * RVG vertical grip
    * M300C tactical light
* Updated AN/PEQ-15 model
* Added icon for Kobra EKP-8 sight

* ReadyRoom
    * Rebuilt RR to work with dynamic lighting
    * setup as fully dynamic lit
* UserArena_Two
    * Added red lights in player spawn area for night version
* Adjusted RVG Vert Grip LOD settings so top LOD is used in customization menu

* Removed CompM2 sight (old and replaced with newer CompM4s version)
* Optimization pass on metal impact effect
* Added tan version of new AN/PEQ-15
* Updated overhead maps and map UI images
    * Depot
    * Depot_Compound
    * UserArena_Two
* UserArena_Two map
    * Expanded Spawn areas to provide more cover and not be initially exposed to AI in TH mode
    * Added in red lighting to spawn areas in night version 
    * Small lighting tweaks for night version 
* ReadyRoom
    * Moved all geometry back into persistent map and removed "geo" streamed map (Was causing player to fall through floor)
* Made some adjustments to shadow casting for foliage
* Cleaned up some wall UVs on RR meshes
* Adjusted some RR reflection capture setups

* Adjusted default scalability settings in DefaultScalability.ini

* Depot
    * Added in randomness to some object placement throughout compound of map (can do that now with dynamic lighting)
    * Reduced sound of rooftop vent units by 50%
    * Cleaned up some bad foliage placement

* Replaced Vudu reticles with new ones from Scopey
* Renamed UserArena_Two map images so they show up in UI

* Made upper windows in the Depot garage building actual shootable glass (User request)
* Removed SHIPPING text from shipping containers
* Removed emissive component of basic glass material (was glowing at night)
* 747
    * Added some more detailing to plane interior
    * Added in upper deck/cockpit areas
    * Cleaned up bad UVs and set proper PhysMats on 747 meshes

* Updated EXPS3 model (from "V3 Holo Sight")
* Removed V3 Holo Sight BP 
* Loaded and saved all master materials to make sure they were up to date
* Darkened new EXPS3 sight color texture a little

* 747
    * Added cockpit glass
    * Moved reflection captures into lighting scenario maps
    * Tweaked lighting in both day and night maps along with post process settings
    * Added doorframe mesh to main 747 entrance

* Moved reflection captures into lighting scenario map for Ready Room
    * Hopefully solves bright RR lighting issue
* Properly centered MRO GbSight component 

* Cleaned up reflection captures and built lighting for Power Station and depot
* Cleaned up Storage Facility reflection capture placement and built lighting
* Cleaned up some bad collision volumes around Depot bridge spawn
* Ready Room
    * Cleaned up some lighting issues
    * Turned down eye adaptation effect
* added physical material to M_SandbagXXX materials.

* Small Town map changed over to dynamic lighting
    * Cleaned up some foliage settings
    * Added a few small ground plants to fill some space
    * tweaked outside lighting slightly and added more reflection captures to help with some rendering artifacts that come from the dynamic lighting change

* Set default Sharpen setting to 0.0
    * Makes sure its not used when FXAA is selected unless user decides to use it
    * Still easily used for TAA if so desired
* Made default reticle brightness half what it was (better in majority of lighting conditions)
* Target Test Map
    * Converted to dynamic lighting
    * Tweaked lighting setup for better testing
* Removed ambient sounds in maps in hopes it fixes freezes in game for some users
    * Depot, Small Town, Killhouse and Aircraft Takedown training map

* Deleted development version of 747
    * Map is now no longer "in development"
* Small Town
    * Optimized interior lighting
    * Added access to second rooftop
* Adjusted bloom in RR to fix blurry reticle issues
* updated insertion points locations and nav mesh on TH-UserArena_Two
* removed unused M_NewMaterial asset

* regenerated nav mesh on TH-Power Station due to AI trying to walk through fences (again)
* updated TH-747
    * regenerated nav mesh due to AI trying to walk through fences (again)
    * added nav proxies to stairs in terminal building
    * tweaked internal ladder nav proxy and changed its nav type to obstacle
    * added obstacle nav mesh modifiers near internal ladder
    * added correct nav proxy to cockpit
    * slightly cleaned up Blueprints used for cockpit glass

* Added hatch/ladder to roof of Small Town building
    * Will look at making it an actual door later
* Depot
    * Tweaked various settings in PP, directional light and fog for better performance
* Expanded holo sight reticle brightness setting min/max
* Cleaned up some audio volumes in SmallTown
    * Were not straight

* Disabled Sharpen UI & PPI until further notice

* added sockets to support flat mount RMR to Trijicon AccuPower, EOTech Vudu and MK 25

* changed RMR Flat from rail-based item to Direct Sight
* Set all tree bark/trunk materials to use Wood_Thick PhysMat for Mikson

* City map
    * Detailed out building interior room near alley insertion

* corrected display names of HWS EXPS3, EKP-8-18 and M68 CCO according to the items list

* Small change to AO setting in PP of Small Town and Depot night maps
* Removed P250 and Tac light (Compact) as they were older models that were replaced by newer assets
* Tweaked AN/PVS-22 night vision PP material to be more consistent across all maps
    * Still needs more work to fine tune per map

* Greyed out Unlimited framerate setting for now
    * To many reports of "lag" in game as a result of allowing unlimited framerates

* New Optic
    * Micro T-2 regular and tall versions
* Moved Micro T-1 to use new T-2 version mount

* UserArena_Two
    * Fixed some out of bounds DM spawn points
    * Cleaned up some material color setting on walls
* Power Station
    * Small optimizations to Post Process settings and some lighting

* Adjusted CompM4s positioning on rail (was sitting to high)
* Made Power Station work in TH mode again (dumb mistake on game mode setting)
* Added simple collision to roof hatch door used in Small Town and Depot

* Small optimization to Small Town Post Process settings
    * Lowered AO distance – saves about 0.75ms on GTX 1070 

* Added Night to Depot_Compound

* Storage Facility 
    * Cleaned up PP DOF settings in all game modes (previously just fixed in TH) 
    * Moved PP volumes into proper geo levels

* Changed the lighting type on master magnified optic material so it is purely emissive
     * Should take care of dark view in some maps with some scopes and off bloom that happens sometimes

* Adjusted UI naming of RMR models for clarity and accuracy
* Adjusted SightComponent on EKP-8-18 (was not centered)
* Unticked a PP setting box on M-233 12x scope in hopes it make it behave (render) like the rest 
* Standardized map author text for all maps to "BlackFoot Studios"
* Depot
    * Broke out materials in garage office are for proper PhysMat assignments
    * Added glass to garage office windows
* Cleaned up some geometry and material issues with M300C light

* New SureFire (X300) handgun tactical light to replace old one
* Reduced size of holo reticles' center dot by about 50%
* Replaced G22 with G19 Custom with 2 slide/sight options:
    * G19 Custom (Urban) – based on Agency Arms Urban Combat slide + suppressor-height sights
    * G19 Custom (Patrol) – based on Agency Arms Patrol Series slide + standard-height sights
* Created LODs for M9A3, M17 and G19s


AUDIO

* new gunshots for assault rifles
* new gunshots for submachine guns
* new gunshots for SVD and MK 14
* new gunshots for MK 48
* new gunshots for M1014
* new gunshots for handguns
* new weapon tails
* new bullet impact sounds 
* added reticle brightness change sound for non-magnified optics 
* re-imported sounds in hopes of cleaning up some sound-related bugs
    * lots of sounds were very old
* burst mode: fixed burst not stopping when the weapon is empty
* changed grenade bounce sound (WIP)
* added pin sound for grenade throw animation
* new gear movement sound effects
* new footstep sounds
* added first iteration of VOIP handled via Wwise (Local & Global)
* new radio squelch sounds
* decreased falloff distance of gear movement sounds
* slightly increased footsteps volume
* increased footsteps falloff distance
* limited gunshots voice count
* lowered grenade explosion volume so it's more consistent with current values


A.I.

* updated AI sight sense custom sight interface
    * using the interface, the target can decide what to trace against, how often and how much each part is worth.
    e.g. up close, seeing a characters head may be enough for the AI to recognise an enemy.
    At long distance, the head may be worth much less, requiring the AI to also see torso and legs before recognising a character, let alone an enemy.
    * updated all affect C++ and Blueprints.
* updated GBAIController
    * fixed AI not recognising other barks properly
        * upon hearing another friendly AI bark, the AI will become suspicious/alert and attempt not to repeat the same bark too soon.
        Should fix the "CONTACT!" spam
    * AI no longer reset suspicious to false if they no longer have an enemy.
    * temp removed LastBulletWarnOcclusionCheck so AI don't automatically assume each round is suppressing them.
    * created Curve_AISight
    * updated bullet impacts, grenade impacts etc to ensure AI can sense them (even if they don't react).
* updated GBCharacter
    * created struct to define which bones to trace against and what curves to use for the various values.
    * implemented new AI sight interface
    * created Curve_CharSightParts 
* updated GBTimeProjectile
    * tweaked friction related settings
    * changed BounceVelocityStopSimulatingThreshold to 50 from 10.
    * added min speed and time check to OnBounce() to prevent spamming particles / sounds
    * enabled impact events on dedicated servers so that grenades etc will alert AI
    * created GrenadeImpact surface links and impact blueprints.
* tweaked AI behaviour trees
    * removed various artificial delays/pauses to make AI harder to kill when taken by surprise while patrolling/idle.
    * fixed AI getting stuck in firearm obstruction loop.
    * fixed AI not legging it when reloading if exposed.
    * taught AI to actually engage a firearms sights when target is beyond 15m.
* changed default part score in FGBAISightTargetPart from 1.0 to 0.0 (dickhead)
* updated GBAISense_Sight to set the stimular location and tag based on the highest scoring seen part.
* updated GBAIController
    * made AI aim at last seen part instead of always at spine
    * added additional sight and hearing thresholds for when AI is alert or not.
    * added check to make AI become alert if they spot a friendly is alert and they are not.
* created BTTask_SetSquadAIState
* updated BT_Patrol to use set the entire squads AI state when anyone sees the enemy etc
* reduced max peripheral vision in Curve_AISight
* reduced value of individual parts and distances in Curve_CharSightParts
* updated GBAIController
    * changed EnemyLastSeen/Heard into EnemyLastStimulus
    * updated BT_Search to update SearchLocation based on EnemyLastKnownLocation when stimulus updates


CODE

* Moved codebase to Unreal Engine 4.23
* updated WBP_MissionSummary to separated it out in its various child-widgets
* created Test_MissionSummary map to test it out.
* updated GBGameState to add support for replicated game stats from the server to clients using a replicated array
* updated GBPlayerState to add support for replicated player stats from the server to clients using a replicated array
    FIXME: use RPC instead? Not sure :|
* updated BP_TerroristHunt
    * increments TerroristKill stat when a terrorist is killed rather then relying on Kill stat
    FIXME: should the kill stat include the person that was killed in it?
    * created ServerPrepMissionSummary() in BP_TerroristHunt_GameState to gather relevant stats together for replication

* created shared NAME_PM_Water def into shared GBTypes.h and removed non-shared defs.
* renamed GetMapThumbNails() to GetMapScreenshots() and added ability to specify the filename prefix.
    * updated affected Blueprints / C++
* exposed GB level summary variables to Blueprint
* updated GBGameMode
    * added random mission name generation using localised adjective and noun string tables
    Adjectives/nouns currently pulled from those available here: https://github.com/kmkingsbury/xcom-mission-name-generator
    All credit should be given to them for piecing them together.
    * added GameStartTime to track when game/round is started.
    * updated OnRoundStageSet_Implementation() to call GBGameState->SetTimeElapsed()
* updated GBGameState
   * created ServerPrepMissionSummaryEvent() to prep all the replicated game/player stats
   * created ClientBecameInactiveEvent() to handle which menu to display for the client upon becoming inactive/dead.
    * added MissionName replicated variable.
    * added TimeElapsed variable.
* updated BP_GameState to add default handling of ServerPrepMissionSummary
* updated BP_TerroristHunt_GameState to add TH handling of ServerPrepMissionSummary
* updated GBPlayerState
    * changed logic related to DeathOverlay into ClientBecomeInactive that calls the game state instead.
    * added ClientShowMenu() to allow server to tell client to display as certain menu/widget.
         * useful for modding.
* updated WBP_MissionSummary
    * added the randomly generated mission name to top left
    e.g. Operation Haunting Flame
    * added map name to top right
    * added time elapsed
    * player entries now display operator status : OK, WIA, KIA or MIA
* updated all ops boards to show the randomly generated mission name
* removed usage of macro in Example_Map to stop editor complaining about it
* updated ZKTeamKill to added name of team killer and victim to team kill logging
* updated GBGameMode to ensure all chat is logged

* replaced CustomAnimNode plugin with stripped down version of TCPE plugin
    * updated all affected Blueprints
* removed RBAnimPlugin
    * updated all affected Blueprints and animation sequences.
* updated GBinsertionPoint to automatically clear references to itself if no longer active or the teams do not match
    * die weird bug die!

* replaced usage of macros in BPML_Firearm_Master & BPML_Item and removed deleted both.
* deleted unused EItemPickup & EItemThrow Blueprint enumerations

* added RemoteStaminaAlpha to GetLitetimeReplicatedProps
* added BloodVolume to GetLitetimeReplicatedProps
* updated character emote system to use PlayNetworkedMontage instead of custom FEmoteInfo struct
* removed DM-Depot_Compound from AlwaysCookMaps list
* removed unused AGBAIState class
* created BP_AnimNotify_AKEventCustom 
    * replaced references of AnimNotify_AKEvent_CustomVector with BP_AnimNotify_AKEventCustom 
    * saved all affected animations
* added TracerItemClass to GetLifetimeReplicatedProps() in GBMagazine
* fixed up misc redirectors
* updated GBReadyRoomStreamer
    * updated code for handling lighting scenario based on code in GBGameStates
    * looks for XXX_Scenario maps now, instead of hard coded _Lighting
    * takes Day/Night tag in GBGameState into account
    * if no Day/Night tag is found, defaults to first _Scenario it finds.
* cleaned up AGBPlayerController::ClientUpdateLevelStreamingStatus_Implementation()
* cleaned up AGBReadyRoomStreamer::ToggleReadyRoomLighting()
* removed unused variables from LevelStreamingStatusEvent

* updated GBVOIPManager
    * attempted to fix crash by adding IsLowLevel() checks before trying to use VOIP audio components.
    * improved logic in TickVOIPData().
* enabled TheCurviestCurves plugin for use with AI, firearm recoil etc.
* updated DisplayDebug() in GBCharacter & GBCharacterMovement so that it displays info about current floor/base.
* changed SwitchItem gameplay tag to SwitchingItems
* added Reloading gameplay tag.
* removed stubs from BP_GrenadeImpact_Master
* changed AttachItemTo() from Component, Rules, Socket to Component, Socket, Rules to make it fall inline with BP_AttachItemTo().
* changed switch item notifiers in transition animations to from Queued to Branching.
* updated GBCharacter 
    * cleaned up various editable category variables.
    * hid unneeded categories
* updated ZooKeeper
    * vote over logic switched to in-progress logic – majority rules
    Exception: if only 2 players, both need to vote yes.
    Previous version only looked at Yes vs No votes, meaning that if only 1 person voted yes, that would pass after the time ran out.
    * voter TMap changed from FString, bool to APlayerState*, bool.
* updated WBP_XXX_OpsBoard widgets to wait for valid GameState & PlayerState before continuing construction.
* updated BP_Door_Swinging to use destruction meshes
    * similar to what windows use.
    * replaces 'chunk' system that kept f'ing up.
    * updated all maps that were not already checked out.
* updated BP_BreachingCharge
    * corrected rotation while being held.
    * added arrow component to make it easy to determine which direction the effect and damage cone should go.

* updated GBSightComponent to call SetMagnificationLevel() in BeginPlay() regardless of whether it has multiple magnification levels or is active.

* updated GBPlayerController
    * keys are now flushed when becoming inactive.
    * delay before calling ClientBecomeInactiveTimer() increased from 0.1 to 1.0 seconds to allow for ping/lag etc.
* attempted to make ReadyRoomStreamer play well with PIE by making lighting use a unique instance number as well
* updated BP_GameState to check for dead character before showing death overlay
    * should stop it from showing death overlay for spectators
* updated TH-UserArena_Two
    * rebuild nav mesh
    * rebuilt cover points
* number suffixes from keys in ST_MissionNameNouns
* added extension check in GBAISpawnPoint so it doesn't matter if you do/do not add .kit to file names.
* updated TH-Depot V2
    * updated/fixed/added patrol routes, spawn points and guard points.
    FIXME - need to swap out from hard coded to system that be easily changed in-game and loaded at runtime.

* Changed max smooth framerate value to 90

* removed GetDefaultObject() usage in GBItem::GetPrimaryAssetId()
* removed GetDefaultObject() usage in GBCharLoadoutInfo::BuildReplicatedCharLoadout()
* added hack to GBGameInstance constructor to fix client side default objects conflicting with non-default object NetGUID,
    which the leads to the issues replicating related actors from the server.
* updated GBFirearm, GBMagazine & GBRailAttachment's EncodeKit_Implementation() to ignore encoding if for replication
* updated BP_PlayerController, WBP_ServerBrowser, WBP_SinglePlayer, WBP_TrainingScreen & WBP_HostGame to prepare a loading screen widget even if no map screenshots are found.
* updated GBPlayerController
    * updated PreClientTravel() to create a loading screen even if seamless travel is false
    * updated PreClientTravel() to look for TN based map screenshots if LS ones are missing.
    * IgnoreUseInput is now authority-based, replicating result to client via RPC.
* updated GBPlayerState::OnRep_InReadyRoom() to add/remove ignore input reason when entering/leaving the ready room.
* updated GBGameMode::ChangeName() to validate the characters in a name against the INVALID_NAME_CHARACTERS macro string before setting the name.
* fixed up some redirectors relating to bull whizz/sonic cracks
* updated BP_SpawnProtectionActor due to IgnoreUseInput changes

* moved net.AllowClientRemapCacheObject from GBGameInstance constructor to GBEngine::Init()
* changed AGBPlayerController::SetIgnoreUseInput() server check from Role == ROLE_Authority to GetNetMode() == NM_DedicatedServer (oops!)
* correct some misc bad geo on Depot v2
* regenerated nav mesh and cover points on Depot v2

* updated AGBCharLoadoutInfo::BuildReplicatedCharLoadout() to add relevancy check back in, but against instance of item instead of the CDO
* added AGBItem::IsNetRelevantFor() to change try a different relevancy for bOnlyRelevantToOwner items

* updated AGBCharacter::UpdateRecoilOffset() to split up long ticks to prevent recoil from being framerate limited

* updated ReadyRoom.
    * moved bullet blocking volume to shooting range window only to stop sudden annoying weapon collision near shooting range
    * adjusted placement of shooting range volume so it isn't possible to fire in to prep area
    * changed RR cinder block physical material to stop all bullets
* change async loading of default/item editor related attachments of firearms to sync load

* updated GBFirearm 
    * removed timer that destroys the spatial sound actor.
    * changed spatial sound overlap to only kick in if the firearm is equipped
    * added manual calls to UAkGameplayStatics::StopActor() when removed from character and unequipped coz I'm paranoid.
* tweaking notify timings in AM_Reload_PumpAction
* tweaking timelines used by BP_SDASS_Martial

* added called to OnRep_InReadyRoom() in GBPlayerState::ClientInitialize().
* updated GBCharacter
    * added StopVoice() call in PlayDying() to stop characters talking while dying
    * changed non-radio voice replicated from a variable to a NetMulticast

* created BP_PointLightToggleActor to handle toggling points lights on/off as you enter / leave specific triggers.
* updated Tanker Ship
   * fixed windows on stopping bullets.
   * attempted to fix floating bits of glass
   * created PM_Glass_Shattered for destructible glass debris that spawns FX, but otherwise ignores bullets
   * created versions of the trigger volumes used to control lights in the day and night lighting scenarios
   * copied out lights in _Audio to lighting scenarios.
   * added BP_PointLightToggleActor's to handle all the point lights to lighting scenarios
   * removed handling of point lights from _Geo
* added hack to GBBullet impact delegate to prevent spawning impact effects if the last impact hasn't changed enough.
    FIXME: need to create an FX handler of some sorts to handle all this more effectively.

* updated WBP_FirearmCustomisation_XXX to include TOPMOUNT_RMR based mounts by default
    * FIXME: change this later.
* updated BP_NamedSocket_DragDropOperation to support looking for sockets on child items
* attempted to updated GBItemDragDropOperation to get it to hide editor only meshes (and failed).
* updated GBDirectSight to support specifying the component it attaches too.

* updated more inventory assets to bring them inline with style guide
* updated character assets to bring them inline with style guide
* removed old/unused firearm and related sound cues/waves
    * most, if not all, have been replaced by Wwise event based ones anyway
* removed test RMR support from MK 25

* continued working on tightening up collision meshes of rail attachments, sights etc
* took care of missed A_Menu_Click24 redirector from previous submit
* renamed mk48_mod1_Mag_BeltAnim to A_Mk48_Mod1_CycleBelt and edited it to actually feed rounds
* checked/updated firearm default setups

* added option for 'None' to everything.
    * FIXME: not sure if you can actually select none for everything and apply it. May need *something*.
* updated GBPouch
    * now saves Comp & Socket instead of MOLLE when on a platform and Socket when not.
   * required due to being allow to attach to non-platform items, such as the holster.
* updated GBHolster
    * encodes Comp & Socket instead always being manually attached to the right/left thing
    * is no longer a 'default item' and should be included during replication.
* updated GetChildren() & GetAllChildren() to allow for optional item class parameter
* updated GBPlatform to fail Decode if it supposed to attach to a character, but failed to do so.
* updated GBPlayerController to attempt to selected a sidearm if no primary firearm is found when loadout is first applied.
* updated GBPlatform based Blueprints (except BP_BattleBelt) to add a dump pouch if one is missing when encoded.
* updated BP_Holster to to add BP_DefaultHandgunAmmoPouch if one is missing when encoded.
* updated WBP_SelectItemButton to call OnClear() if/when cleared
* updated WBP_CharacterEditor
    * will remove holster & attached handgun pouch when sidearm is cleared.
    * will add holster & attach a handgun pouch when sidearm is selected
* updated BP_Character to disable adding BP_Holster & BP_DumpPouch as a default item
* updated loadout version from 6 to 7 due to changes above

* updated RBEventManager
    * removed all usages of TWeakPointers
    * simplified removal of invalid listeners during InternalCallEvent()

* updated RBEventManager
    * changed from using IsValidLowLevelFast() to IsValidLowLevel() to determine if objects and functions are still usable.
* first pass at removing RBEventSubsystem
    * took my time and updated all affected C++ and Blueprints., replacing usage of RB events with UE4's delegates.
    Hope it's worth it :|
* first pass at adding Last Man Standing game mode
    * Will be in v1030

* updated AGBGameMode::DiscardPawn()
    * Moved un-possess call until after dealing with character so that anything bound to character died or similar that may require a valid controller and/or playerstate can still do so.
    * Added comment explaining this.
* updated GBItem
    * RemovedFromCharacter() will call OnBeingUnequipped() without calling IsEquipped() if it detects that the item is attached to a hand socket of some kind.
    * updated IsEquipped() to determine if it is equipped based on where its base item (base item = item attached directly to character) is attached.
    * removed bIsEquipped variable.
* updated GBFirearm
    * added variable to track current looping gunshot, if any.
    * updated OnBeingUnequipped() to call UAkGameplayStatics::ExecuteActionOnEvent() on the current looping gunshot with a 'break' event type instead of just killing all sounds.
    * commented out logic in OnRemovedFromCharacter_Implementation() - was copy of OnBeingUnequipped() anyway
* moved lighting scenario visibility handing from GBGameState & GBReadyRoomStreamer into GBPlayerController
    * updated all affected C++ and Blueprints
    * fires off a timer, so if called multiple times in quick succession it will only fire once after the last call.
    * used Paintball test bed for lighting changes above, so split out geo from TE-Paintball to _Geo and created _Day/_Night_Scenario maps.
* added AkFootstepComp to GBCharacter for use with foot step sounds.
* updated BP_Footstep_Master to use AkFootstepComp off GBCharacter for Wwise based footsteps
* replaced BarrelSpatialSoundActor on GBFirearm with a AkGunshotComp
    * updated affected C++ and Blueprints
* updated quick admin menu 
    * changed to use correct visibility
    * checks admin status and commands as required.
* updated BP_Firearm_Master to prevent log spam on dedicated server about missing GunshotComp
* updated GBGameState to add missing UFUNCTION() for OnRep_LightingScenarioTag().
* updated GBVoipManager to make the 'outer' GBPlayerController the owner of any spawned audio components
* added debug to BP_AnimNotify_AkEventCustom to report animation that is missing an Ak event.
* updated GBCharacter to ensure AkFootstepComp calls SetUseSpatialAudio(true).
* updated BP_Footstep_Master to remove SetUseSpatialAudio(false) call for local viewer.
* updated GBFirearm to ensure AkGunshotComp calls SetUseSpatialAudio(true).
* updated AM_Throw_Grenade to use BP_AnimNotify_AkEventCustom instead of AnimNotify_AkEvent to prevent log spam.
* updated TH-UserArena_Two
    * fixed bad AI spawn
    * fixed cover point debug being displayed
* updated BP_LastManStanding, BP_TerroristHunt & BP_Defend to use the same style InternalReadyUpCheck() as BP_TeamElimination
    * in either WaitingForReady or ReadyCountDown the round will start if the number of people that can enter play is equal to the number of people on the server.
* updated GBCharacter
    * split up Equipped & PrevEquipped arrays into EquippedLeft/Right & PrevEquippedLeft/Right and updated affected C++.
    * created UpdatedEquippedLeft() & UpdatedEquippedRight() to handle EquippedLeft/Right separately.
    * updated SetEquipped() to remove Item == EquippedLeft/Right check to prevent replicated values stopping UpdateEquippedLeft/Right being called.
        * should fix collision proxy not being setup correctly online.
* updated GBPlayerController 
    * added TimerHandle_AutoSwitch to use with SetSwitchGrenadeCheck() instead of using a dummy timer handle.
    * created ClearAutoSwitchTimer() to be able to cancel said timer.
        * updated GBCharacter::SwitchItems() to call this.
    * updated OnGrenadeThrowEnd() to return early if character is already switching items.
* updated BP_SDASS_Martial & BP_Suppressor_Master to use AkGunshotComp instead of BarrelSpatialSoundActor.

* added call to UpdateSpatialAudioVolume() AGBFirearm::OnBeingEquipped() to ensure firing sound has the correct spatial tag.
* adjusted AKFootstepComp relative location slightly to prevent occlusion
* updated BP_Footstep_Master to check for IsRunning() and IsSprinting() when determining if the louder footstep should be played.
* created GBVOIPAudioComponent based off AkAudioInputComponent
* updated GBVOIPManager to use GBVOIPAudioComponent instead of UE4's procedural audio comp.

* updated GBVOIPManager
    * changed VOIP audio component owner from local player controller to senders player state.
    * re-enabled VOIPType check that sets spatial audio if local and calls SetSwitch(VOIP, Global/Radio/Local) based on type.
* updated logic related to entering the play area or ready room.
      * Game mode will begin the process before calling a client RPC begin updating the lighting scenario, change the players RR status etc, 
    which uses a server RPC to let the game mode know when to finish to process.
        e.g. GBGameMode::EnterPlayArea() > GBPlayerController::ClientEnterPlayArea() > GBPlayerController::ServerEnterPlayArea() > GBGameMode::FinishEnteringPlayArea().
    * uses transition screen fade in/out as required, removing the sudden jarring from changing locations and helping to hide the lighting scenario change.

* added SampleRate as a variable on GBVOIPAudioComponent
* updated GBVOIIPManager
    * changed default DesiredSampleRate to 44100
    * made sure new GBVOIPAudioComponent has its SampleRate set based on DesiredSampleRate.
* updated WBP_Transition
    * reconnected heading to RR message when mission summary will be appearing
    * moved pre-round count down message from BP_GameState to appear when view fades back in.

* changed bUseSeamlessTravel to false by default in GBGameMode
* added EReadyRoomType enumerator to GBGameState to ensure server & client are looking for the same things.
* updated AGBPlayerController::UpdateLightingScenario()
    * added more logging.
    * waits if lighting scenario tag or RR type hasn't been received from server.
    * added more logging.
    * waits if it can't find a RR streamer and its supposed to have one.
    * logging for days!
* updated IsFocusable value on various WBP_X that are used as fullscreen widgets

* added Widget->IsInViewport() check to UpdateFullScreenMenuFocus() to make it skip widgets that are valid but have been removed from the viewport
* updated BP_GameState to call RemoveFullscreenWidget() on the player controller for any WBP_DeathOverlay before removing it from its parent.
* updated WBP_DeathOverlay to remove Destruct() event - pointless
* updated WBP_DeathOptions to call RemoveFullscreenWidget() on the player controller for its parent WBP_DeathOverlay before removing it from its parent.
* cried a little, went to bed.

* updated GBVOIPManager
    * changed call to associated event to only happen when voice type changes/voice is first received.
    * added Stop() call to VOIP input comp when when voice type changes
    * changed default value of NumBytesPerSample from 4 to 2.
    * removed stubs.

* updated GBVOIPManager
    * added asyn loading of AK events
    * added PostEvent() for radio start and radio end events.
    * cleaned out old/unused code
* updated various BP/WBP's to make sure Add/Remove full screen widget is being called where appropriate.
* updated GBPlayerControllerBase
    * added parent check in AddFullscreenWidget() to prevent trying to make already parented widget a fullscreen widget.
    * added IsInViewport() warning to void UpdateFullScreenMenuFocus() rather than simply blocking a widget from working.
    * created exec debug ListFullScreenWidgets() for use in quickly debugging problem fullscreen widgets
* removed lighting scenario visibility stubs from GBPlayerController - no more log spam :)
* removed TOPMOUNT_RMR from sight type list in firearm customisation if its a sidearm (no RMR support for sidearms currently enabled)

* updated T_DefaultLoadingScreenBackground to be a high res 4k screenshot of current front end menu
* improved blending from WBP_LoadingScreen to view when going back to front end menu.

* updated GBGameInstance
    * instead of using GEngine->GameViewport->AddViewportWidgetContent(LoadingScreenSlateWidget->AsShared(), 9999); am now using LoadingScreenUserWidget->AddToViewport(9999);
    Essentially the same thing - they both end up calling AddViewportWidgetContent() :|
    * renamed RemoveLoadingScreenFromViewport() to HideLoadingScreen().
    * removed LoadingScreenSlateWidget member variable
    * updated affected Blueprints.
* removed SetPawn() requirement before UpdateLightingScenario() is called in GBPlayerController.

* created GBPlayerController::Server/ClientSyncLightingScenarios()
    * called by ReivedPlayer on non-dedicated server
    * will loop on server until GBPlayerState is valid.
    * will loop back to server on client if GBPlayerState is not valid.
    * calls UpdateLightingScenario() on a timer on the client once everything is valid.
* updated GBPlayerController::ServerSyncLightingScenarios() to use GBGameMode to determine ready room status rather than playerstate.
* replaced GBPlayerState bInReadyRoom bool with a EReadyRoomStatus enum

* adding Client/ServerInitialSync() usage to prevent trying to sent player anywhere until they have all the info the client needs to actually set the correct lighting scenario.
* replaced up usage of IsInReadyRoom() and SetInReady() with GetReadyRoomStatus() & SetReadyRoomStatus()
    * besides making things consistent, also fixed training map loading screens offline :)
* rigged up death overlay to be removed if a player controllers state changes and they are now alive

* updated chat overlay
    * corrected scaling/spacing of emojis
    * finished adding popup emoji menu
* added SwitchingItems gameplay tag check for local controller in GBCharacter::SwitchItems()
* removed DV-747 from AlwaysCookMaps list.
* removed A_RandomSimulatedFiring_Cue and replaced its usage in TR-ShootingRange_Simulation
* re-saved ShootingRange_Geo to fix bad references to old/missing foliage in foliage actor.

* rearranged logic and added check to ensure that the RateOfFire RTPC value is always set BEFORE posting the Ak Audio Event for looping gunfire.
* slightly enlarged size of interaction box that surrounds firearms to make them much easier to target and interact with.
* added version & build number to bug reports

* implemented ProcessAutoLogin() in GBGameSession to return 'false' to fix dedicated servers without Steam from not starting correctly.
* added support for web-based server info board
     * if the ServerMOTD text begins with http or www, it'll use a web browser widget and load the URL
* added server info boards to Paintball_Geo

BUILD UPDATE #019: v1028 Hotfix 3

Last patch was meant to be the last update to version 1028, but we’ve decided to put out another hotfix to fix some lingering issues and improve a couple things while version 1029 is in the oven. Build Update #019 here will detail the changes, so keep scrolling for the highlights and raw change log ↓

· · ·

› Coming from a previous version of the game? Issues with controls, loadouts, assets or settings?
We strongly recommend players coming from an older version of the game to delete all files located in %LOCALAPPDATA%\GroundBranch\Saved\Config\WindowsNoEditor (copy and paste the underlined path onto your File Explorer address bar and hit Enter to go to folder). For those who can afford it, a full reinstall isn't a bad idea either: it may fix broken/missing features introduced in this version, as well as issues with controls, loadouts, assets and settings.
› Update your server!
All dedicated servers must be updated to work with the current version. Make sure yours is updated so players can enjoy the latest version of GROUND BRANCH.

Build highlights

  • Mouse sensitivity for the Engaged (ADS) position works again.
  • Fixed new G33 Magnifier (3x) being off-center.
  • You can now place most red dot and holographic sights on the closest rail slot to the G33 and still see the reticle; T-1 Micro is the exception, but we’ll figure that out.
  • Corrected issue with the A.I. being able to see through foliage at certain angles.
  • Cleaned up the code for PvP insertion points for better stability and selection.
  • Improved randomization for Team Elimination insertion points.
  • Also cleaned up code for dead bodies and dropped items, which should now consistently stay in the map for the remainder of the game for round-based modes.
  • Grenade throwing code has been reworked for stability and faster/more responsive throws.
  • Rebuilt lighting on all maps to ensure everything is up to date. This is the culprit for this update’s file size, if you were wondering where to point that pitchfork.
  • Removed invisible ramp from Nature Area map and mailed it back to Rockstar Games.
  • A lot of under-the-hood schtuff.

In other news…

John has been working diligently on the rebuilt DepotMikson has been tweaking gunshot sounds, Kris has been body-slamming all kinds of code into submission as usual, and toadie2k has officially begun work on the new character poses and animations, which is heckin’ excite. Next up is version 1029 (for real this time!) and we’re psyched about it. How about you?

Change log

Build version: 1028.2

Client

Steam Build ID: 4244997
Size: 1.5 GB

Dedicated server

Steam Build ID: 4245005
Size: 37 MB

FIXES

* FIXED crash relating to null Blackboard component
* FIXED Engaged sensitivity not being used
* FIXED binoculars not obeying selected aim mode
* FIXED G33 magnifier being off-center and not rendering reticles if too close (fingers crossed)
* FIXED NatureArea ramp by syncing Perforce depot to local depot.
* FIXED UserArena night lighting scenario
* FIXED TE-UserArena missing lighting scenarios
* FIXED URBSurfaceLinkManager::GetLinkedClass() failing due to incorrect name of physical material water (was PhysMat_Water - should have been PM_Water)
* footsteps, body impacts etc. all work in water now.


CONTENT

* built lighting on all maps to make sure everything was up to date (been a while on some)
* City map
* changed skylight setting to Stationary so dynamic parts of BPs (vehicle doors, for example) don't render as black
* cleaned up some lightmap UVs on vehicles
* set Double-Sided Geometry flag on foliage meshes
* corrects issue where AI could see through foliage at certain angles when they shouldn't


CODE

* updated AGBGameMode::GetBestLateComerInsertionPoint()
* added IsActive() and ONSAMETEAM() checks against selected insertion points.
* added brute force method if no selected insertion points are found
* changed InsertionPointCounts sort to be randomised if two counts are the same
* will now log a warning instead of randomly picking an insertion point if one isn't found with previous methods.
* updated all affected Blueprints
* updated BP_TeamElimination
* changed SetupInsertionPoints from an event into a function.
* predetermines how many insertion points each team is allowed, compensating for odd amounts by rounding down.
* randomisation now done in a more brute force method in one pass, using the predetermined values from SetupInsertionPoints().
* insertion points within appropriate ranges are set to active with team 0 or 1.
* the left over insertion point (if any) is set to inactive and team 255 (no team).
* all insertion points have ForceNetUpdate() called immediately.
* updated AGBInsertionPoint::SetActive()
* if an insertion point is no longer active, it will automatically make sure not one has us selected as an insertion point.

* added checks to AGBPlayerState::SetInsertionPoint() when selecting an insertion point to make sure it is active and on the same team.

* removed AGBGameMode::RemoveDeadBody() - redundant logic since AddDeadBody() runs the same checks before adding new dead body.
* added Max() to various AISettings in GBAIController to prevent possible divide by zero errors.
* updated AGBGrenade 
* changed usage of GetViewRotation()/GetControlRotation() to GetBaseAimRotation() to make things more universal
* made CheckWantsToThrow() timer value configurable 
* renamed CheckWantsToThrow() to WindupTimer
* changed default WindupDelay from 0.5 to 0.29 to more closely match animation and make grenade throws quicker.
* ensured that all timers for a grenade are cleared when it is dropped or the pin is replaced.
* changed several public functions to protected to prevent using them incorrectly.
FIXME - logic could still be clearer. Damn industrial blindness.
* removed unused BP_AnimNotify_PostGrenade
* updated GBGameMode
* delayed dead body / dropped item handling to improve performance when dealing with many instant calls.
* ensured dead body isn't tracked when leaving ready room
* updated GBWaterVolume
* disabled bPhysicsOnContact - actually needs actor inside volume before messing with your movement.
* changed brush component collision to ensure bullet collision against water.
FIXME - anything hit while inside a water volume will currently be **immune** to bullets :(
* updated NatureArea_Geo to correct placement of water volumes
* removed duplicate primary / secondary ammo listings from Ammunition List when editing platform.
* added icon for MP444 mag.
* changed game mode dead body handling to only worry about players/bots with valid player states.
i.e. not AI controller NPCs/terrorists, but players and fake players.
* changed game mode dropped item handling to only worry about players/bots with valid player states.
i.e. not AI controller NPCs/terrorists, but players and fake players.

BUILD UPDATE #018: v1028 Hotfix 2

The second and final hotfix update for GROUND BRANCH Alpha v1028 is now available with general fixes, some cleanup and a little dash of content update. But before we go over this Build Update, gather around the bonfire and allow us to do a little recap. Not in the mood? Skip to Build Highlights ↓

Recap: 1st Early Access Anniversary

August marked the first anniversary of our Steam® Early Access (EA) launch. It was far from a smooth launch, with many players feeling the game wasn’t EA-worthy, turned off by the lack of polish and limited content. Others immediately became active members of the community—some even forming units for regular sessions—but, overall, not many stuck around. Regardless of player adherence, however, one word was common throughout the vast majority of reviews: potential. Whether or not players “got it” and kept playing, GROUND BRANCH’s potential was clear to most fans of the tactical shooter genre that tried the game.

The decision to release GB to the general public at the time was a very risky one, but the fact that so many players shared our vision and saw the same potential we did was enough encouragement to keep working on it as hard as we could. It goes without saying that the financial support brought on by sales (even if very modest in comparison to immensely more popular games) has greatly helped us along the way, allowing us to purchase development assets, hire contractors and get a little compensation for all the effort we’ve been putting in. So if on the one hand we might have come out in the open too soon, Early Access has also exposed GROUND BRANCH to a much larger audience and feedback pool, forcing us forward—right out of the “closed doors” development comfort zone—and providing essential funding.

At the time of Early Access launch, we were 5 team members. A.I. programmer Phil Carlisle (aka zoombapup) has since departed the team, with A.I. work since circa October 2018 having been done by Kris. But Early Access has also brought us sound man Mikson straight from the community, and we’ve just recently secured the long-coveted animator: she goes by toadie2k, is based in Australia, and you might know her from the prolific Arma 3 modding scene. All in all, we feel like we’ve made steady progress since launch, but things should hopefully pick up pace a lot more from here on out.

In conclusion, we’d like to thank everyone who ever gave GROUND BRANCH a try—but especially everyone who stuck with it and have kept our community alive over the last 12+ months. We truly appreciate your support.

· · ·

How do you feel GROUND BRANCH has progressed over the last year? Let us know in the comments! Also…

Please consider updating your Steam® review! (Or leaving one)

For many players, the decision to buy or pass on GROUND BRANCH lies heavily on customer reviews. The game has changed considerably since EA launch, so make sure you customer review reflects the most recent feature set, stability and content. And, most importantly, your most recent opinion.

We currently hold a “Mostly Positive” rating for All Reviews (recommended by 78% of them), and a “Very Positive” rating for Most Recent (92% approval over the last 30 days). Your review update might make a difference!

· · ·

Are you interested in following development a little closer or interacting with us?

You can do that via our Discord, Steam, Reddit, Twitter, Instagram and Facebook presences.

· · ·

› Coming from a previous version of the game? Issues with controls, loadouts, assets or settings?
We strongly recommend players coming from an older version of the game to delete all files located in %LOCALAPPDATA%\GroundBranch\Saved\Config\WindowsNoEditor (copy and paste the underlined path onto your File Explorer address bar and hit Enter to go to folder). For those who can afford it, a full reinstall isn't a bad idea either: it may fix broken/missing features introduced in this version, as well as issues with controls, loadouts, assets and settings.
› Update your server!
All dedicated servers must be updated to work with the current version. Make sure yours is updated so players can enjoy the latest version of GROUND BRANCH.

Build highlights

Content updates

UPDATED: MP5 family
The MP5A4: fixed stock, 3-round burst option
  • MP5 models and textures have been updated to be consistent across all variants.
  • Added MP5A4: fixed-stock variant with 3-round burst capability.
  • MP5A5 (sliding stock, 3-round burst) has replaced the MP5N.
UPDATED: AN/PVS-22 UNS textures

The AN/PVS-22 UNS night vision optic has received new textures that include markings and improved materials.

Worn out, but it works
UPDATED: G33 Magnifier model and textures

A new model and textures for the G33 Magnifier have been added. It now features the EOTECH® logo and markings.

Might as well make use of the licensing, right?

KNOWN ISSUE: The front lens has a texturing error, but remember it’s rude to stare.

Optic placement

The placement of optics has been further adjusted to reduce instances of clipping.

Keep in mind that weapon builds created before this version will not be affected.

Ultra-widescreen support for NVG/Binoculars overlays

The screen overlays for the AN/PVS-15 and Binoculars should now display correctly on ultra-widescreen monitors.

General cleanup and bug fixes

Fixes and cleanup form the bulk of this update. You can read the full list in the raw change log, but here are some of the main ones:

  • The sound bug where a full auto loop goes off forever should hopefully be gone. Again.
  • The grenade throw arc should no longer be affected while holding Use/Interact (default F) + Mouse Wheel for incremental door opening.
  • Aim / Use Off Hand (default Right Mouse Button) should now consistently close the top Inventory bar.
  • Magazines will no longer take their skin from the pouch/vest color and should now match the weapon’s skin selection—when applicable, of course.
  • Fixed Shooting Range targets not dropping consistently. (Told you this f***er keeps creeping back in!)
  • Power Station has two less exploits: being able to jump over fence out of bounds and being able to look through ceiling inside A tunnel.
  • You will no longer go through the wall when jumping off the ladder in City. Thanks for the reports!
  • City has also received a little optimization pass for textures.
  • Window panes on 747‘s namesake aircraft no longer appear through other elements in map (e.g. the aircraft’s wings).
  • Hints should now always display at the top layer on the screen.
  • Added hints for the Binoculars usage (zooming in/out and NVG incompatibility).
  • After Grenade Throw option should again correctly follow player settings under Gameplay › Firearm; in particular, “Switch to Previous Item” should now do as it says.
  • Improved foregrip hand pose and location for the MP7A1.
  • Various crash fixes.
  • A bunch of code and under-the-hood stuff only Kris really understands.

What’s next?

Version 1029 will be a big gear-oriented content update. Expect a lot of new and updated attachments, a remade Depot map and maybe a taste of the new character assets.

The groundwork for the new character skeleton—which will allow for new, clean animations—continues to be implemented in a separate development branch and is still set to have its first working iteration ready for the big v1030 update.

Stay tuned!

Change log

Build version: 1028.2

Client

Steam Build ID:
Size: — GB

Dedicated server

Steam Build ID: —
Size: — MB

FIXES

* FIXED spawn protection actor not removing its "ignore use input" entry
* FIXED GBPlayerController not resetting the ignore use input array when reset on map change
* FIXED ZooKeeper server settings not updating without restarting server when changed at runtime by admin
* FIXED Shooting Range targets not falling consistently
* FIXED Power Station – view through the ceiling when on top of the box in the A tunnel nears the stairs to A hallway
* FIXED Power Station – being able to jump over the fences into the areas considered outside of the map
* FIXED 747 – invisible obstruction in front of car that blocks way forward
* FIXED little crack on the wall on Power Station stairs (east side)
* FIXED distorted texture on Power Station wall near stairs
* FIXED binocular overlay ultra-widescreen support
* FIXED night vision overlay ultra-widescreen support
* FIXED calling switch items on an item you're already switching to
* FIXED grenade switching to primary firearm instead of last used item
* FIXED binoculars not scaling sensitivity
* FIXED hints being displayed behind other widgets
* FIXED being unable to holster sidearm
* FIXED UseOffHand not hiding inventory bar
* FIXED log spam about invalid player states in WBP_GameInfo
* FIXED order in which night vision post process is enabled and overlay is faded in/out.
* FIXED incorrect target hands for dropped firearm and magazine
* FIXED PrevEquipped[X] being cleared incorrectly as item was put away
* FIXED AGBCharacter::PlayNextSwitchItemStage() called equip montage if item still in target hand.
* FIXED AGBCharacter::PickupItem() not clearing equip hand targets
* FIXED possible usage of nullptr in UGBItemDragDropOperation::CreateTargetProxyFromItem()
* FIXED crash in lambda used by AGBPlayerState::OnRep_InReadyRoom() to delay event call
* FIXED crash in IUWorks::StartupModule() due to SteamGameServerUtils() returning nullptr
* FIXED bad logic in AGBGameMode::HasReachedTimeLimit()
* FIXED looping full auto sound when firearm is destroyed while full auto sound is playing
    * changed PostEvent calls to set stopWhenAttachedToDestroyed to 'true'
    * added C++ code to call UAkGameplayStatics::StopActor() when firearm is destroyed
* FIXED AlaskaCedar_Desktop_Branch_Mat blocking bullets
* FIXED Next/Prev Position input working on door even if Use/Interact isn't held down due to overlap not resetting last Use/Interact time
* FIXED grenade showing arc on Next/Prev Position input even if door was being interacted with
* FIXED placement of flashlight handguard on MP5A4 and A5
* FIXED incorrect icon for MP7A1
* FIXED clipping through wall when jumping off ladder in City map
* FIXED 747 windows and doors rendering through wings and other geometry in map
* FIXED gap in City map pub area wall
* FIXED grass showing through City map street
* FIXED MP7A1 grip pose and location
* FIXED magazines taking skin from pouch/platform instead of related firearm (at least with modular pouches)
* FIXED BP_MP5SD5_SuppressorRail bottom rail acting as top rail
* FIXED UGBSightComponent::GetMatchingFrontSightPost() finding the lowest front sight post instead of the front sight post with the closest matching height to the rear sight post
* FIXED grenade arc being adjusted while Use/Interact key is held down
    * stops arc changing while opening door incrementally 


CONTENT

* exposed shootable target's take hits variable so can be set per placed target in maps by level designers
* finished off AN/PVS-22 textures
* City map
    * texture usage optimizations 
    * downsized a lot of 4k textures that were being used
* reworked flashing light setup on SWAT truck to look a lot better… and actually flash 
* adjusted blocking socket on ACOG 6x and M233 scopes to stop clipping
* adjusted AK-74 sight rails to be a bit more forward
* removed development version of User Arena map
* adjusted placement of various optics
* updated MP5 models to be consistent in design, scale and material usage
    * no longer have the MP5_Navy
    * added MP5A4 and MP5A5 versions
* updated G33 Magnifier mesh and materials 
 

CODE

* updated handling of switch items, pickup item and drop items
    * more unified approach that is more brute force in its handling
* added hints for binocular usage – zoom and not working when night vision goggles are down
* updated GBGameMode to make it wait until round stage is WaitingForReady before ending game based on time limit
* added TimeLimit > 0 check to AGBGameMode::HasReachedTimeLimit() to stop it thinking we've hit a time limit when none was ever set (oops)
* changed usage of DetachFromComponent() to ensure UActorComponent::Modify() is NOT called
* removed erroneous usage of TWeakObjectPtr in various classes
    * replaced them with UPROPERTY() versions
    * added additional checks when required
    * should fix crash related to TWeakObjectPtr - can't crash if it doesn't exist
* ensured UniqueId.ToString() uses same logic
    * created UGBGameplayStatics::GetUniqueIdAsString() for those that use PlayerState
 for all others, made sure they followed the same logic
    * should fix crash related to IsValid() error in UniqueId somewhere…
* updated BP_ANPVS_15
    * rearranged logic to fix bug introduced by animation change
    * cleaned up turn on/off play raise/lower animation events
* updated GenerateBuildNumber.bat to use P4_Tickets as password if defined for both login check and change list info
* updated C++ & Blueprints to change references to RoundLength and RoundDuration to RoundTime
* changed "roundlength" entry in DefaultGame.ini to RoundTime
* updated DefaultZooKeeper to add "roundtime" as a valid command
* updated BP_TacLight_MP5 to look for socket on potential parent rather than at the class of the potential parent
* updated GBRailComponent to use different colors to show rail face
    Blue = top
    Orange = bottom
    Green = side
    Cyan = angled
* created AGBGameState::CanChangeLightingScenario() event to allow/disallow lighting change mid-round
* removed unused WBP_StunOverlay
* updated BP_StunAffect to disable itself when destroyed
* changed CanChangeLightingScenario() from BlueprintImplementableEvent to a BlueprintNativeEvent and created native implementation in GBGameState C++
* removed ExampleDeviceProfileSelector from EnabledPlugins array in DefaultGame.ini
* removed additional Tilde (~) key from ConsoleKeys array in DefaultInput.ini
* removed support for MouseSensitivityMagnified2-8 – no longer needed
* added bDisableInputScaling setting to GBPlayerSettings
    * allows you to disable the 2.5 scaling that is done to all input by default
      NOTE: may simply scale mouse/controller sensitivity to compensate later
* added ControllerSensitivityScale variable to GBPlayerController
* scales controller input based on the sensitivity change caused by aiming/using magnified optics
* removed hint time limit constraint
    * hint manager now supports multiple hints and removes any hint of a similar class if another one is added
* moved grenade hints to same location as all other hints
* updated all hints to flow same format
    * heading, then description with button usage, if any
* added support for TeamKillWarning 
    * uses hint system to warn the player when they have teamkilled
      NOTE: means it only comes up 3 times before not showing up anymore

BUILD UPDATE #017: v1028 Hotfix 1

Build Update #017 will cover this small hotfix update for v1028, which is mostly focused on quality-of-life improvements for scopes—or magnified optics, as we pedantically call them.

Read on for highlights and raw change log at the bottom—and don’t forget you can stay in touch with us via Discord, Steam, Reddit, Twitter, Instagram and Facebook.

› Coming from a previous version of the game? Issues with controls, loadouts, assets or settings?

We strongly recommend players coming from an older version of the game to delete all files located in %LOCALAPPDATA%\GroundBranch\Saved\Config\WindowsNoEditor (copy and paste the underlined path onto your File Explorer address bar and hit Enter to go to folder). For those who can afford it, a full reinstall isn’t a bad idea either and may fix missing features introduced in this version, as well as issues with controls, loadouts, assets and settings.

› Update your server!

All dedicated servers must be updated to work with the current version. Make sure yours is updated so players can enjoy the latest version.

Build highlights

Scope (re)work

PiP rendering

We’ve reworked the PiP (picture-in-picture) scope rendering to correct a few issues, including:

  • Lack of sync between scope sight picture and the original scene outside of it (e.g. your weapon’s forearm “lagging behind” when seen through the scope).
  • Optics displaying different magnification (at the same power) depending on scope placement along the rail.
  • Recoil at higher magnifications not appearing to “scale up” correctly from lower magnifications.
  • Scope reticles no longer move along with the scope shadow. This is based on real-life behavior (and is a work in progress).
Mouse sensitivity scales based on magnification

Mouse sensitivity is no longer set individually per magnification level. It now scales automatically, proportionately to the magnification: the more magnified your optic is, the less sensitive your mouse movement will be.

Other changes and fixes

  • Added reticle brightness change sound effect for non-magnified sights.
  • PM II scope now has variable 5–25x magnification.
  • The Specter DR 1x/4x‘s lever switch (on the left-hand side) and the AccuPower 1–8x‘s rear ring now reflect the current magnification setting, which is dope.
  • AccuPower 1–8x now has an additional 1.5x zoom step.
  • Lasers beams now follow weapon recoil.
  • Red dot reticle sizes were reduced by roughly 35%.
  • Updated Specter DR 1x/4x model.
  • Fixed being able to kick/ban server admins (sorry it happened, FUBAR).

Known issues

  • Aiming down sights may default to secondary sight (offset or piggybacked) if one is equipped.
  • Some optics still cause clipping when placed too close to the camera, particularly when shooting and reloading while Engaged (ADS).
  • We’ve fixed the floating RMR on the AccuPower 1–8x, but the scope’s top adjustment turret now obscures it. Derp.
  • PM II 5×56‘s display name doesn’t reflect the variable magnification (5–25x).

What’s next?

We might do a small gear-oriented update within the next couple of months while character work—new skeleton, character assets and animations—is being done on a separate branch for the next big update. We’ll keep you guys posted!

Change log

Build version: 1028(.1)

Client

Steam Build ID: 4113861
Size: 98 MB

Dedicated server

Steam Build ID: 4113864
Size: 35 MB

FIXES

* FIXED placement on Defaults button in WBP_Settings_Gameplay
* FIXED warning in BP_M1014 & BP_SDASS_Martial about bad reload tags
* FIXED being able to kick/ban an admin
* FIXED not seeing kick/ban message as a client that is kicked/banned
* FIXED slightly off-center AK-74 MI iron sights
* FIXED excessive scope shadow when Specter DR was attached too close to camera
* FIXED floating RMR on AccuPower 1–8x


CONTENT

* Reduced red dot reticle size roughly 35% (closer to true MOA)
* Added functionality for magnification indicator ring to rotate based on what magnification is set on the AccuPower scope
* Added 1.5x magnification for AccuPower
* Updated Specter DR to new model
    * 1x–4x lever moves based on setting
* Added variable magnification level handling to BP_Optical_PMII_5_25x


AUDIO

* Added reticle brightness sound effect for non-magnified sights


CODE

* Added check to prevent disabling night vision as a spectator while following
* Updated bullet warn functions to take use a cached subsonic value from the bullet movement component instead of trying to calc it on the fly
* Changed AccuPower reticle mipmap generation to "no mip maps" to hopefully prevent pixelation issues
* Hid Tutorials menu option from front end menu manager
* Removed night vision option from spectator controls when following (no longer doable)
* Reduced AI sight distance from 150 m to 100 m
    * temp fix
* Removed friendly check from bullet cracks/whizzes - watch your fire
* Removed impact check that prevent bullet cracks/whizzes - should hear both apparently :shrug:
* Change bullet warning to be both whizz and crack if crack is an option
* Updated ZKBan class 
    * will reload the ban list next login if it hasn't been updated in more then 10 minutes
    * added DefaultBanDuration option to use instead of permanent ban if no ban duration specified
    Defaults to 12 hours if not already set
* Updated the network failure, travel failure and save failed overlays to look glaringly out of place and official to really get the players attention
* Updated all alert/notification messages to be based on WBP_ServerBrowserMessageOverlay at request of Scopey
* Improved server/client mismatch message
* Updated UGBSightComponent::GetMagnificationSensitivityLevel() to return the highest sensitivity level instead of 0 if magnification level is greater than the number of sensitivity levels
* Updated BP_TargetViewer – way old Blueprint
* Removed BP_TargetViewCamera – unused Blueprint
* Magnification levels to calc FOV instead of manually setting FOVs
* Cleaned up sight C++/Blueprints after switch to magnification FOV
* Removed 2–8x magnified sensitivity UI entries from WBP_Settings_Controls – not use in current dev test
* Cleaned up and recompiled BP_FenceMaster Blueprint
    * rebuilt nav meshes and cover on maps using it
* Changed tick update time on BP_AN_PEQ_Master & BP_AN_PVS22 to PostUpdate
* Updated M_OpticalSight_Master to handle scope shadow via material rather then external calculations
* Adjusted scope shadow values used by MI_PMII_Lens