Scopey

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

BUILD UPDATE #016: Double Tap

Mondays, huh?

Well, at least we got Build Update #016 with everything you need to know about v1028 of GROUND BRANCH. This is a big one, so sit back and read on for all the highlights and deets. As usual, the raw change log is at the end of the post, right after the version info.

Remember you can stay in touch with us via our Discord, the Steam® Community Hub, 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.

Build highlights

Gameplay

New (WIP) damage model

This build brings the first iteration—Phase 1, if you will—of the new damage model that generally ramps up lethality. Kris explains it better than the rest of us ever could, so let’s quote him:

[Initially] We added a method that took penetration, internal organs, bleeding and such into account. Unfortunately, it was pretty horrible due to lack of feedback, i.e. it lacked decent reaction animations, bleeding effect, on-screen “messages” for the player.

Quickly replaced it with a temporary measure that bases the damage on the kinetic energy of a round, scaled by how much it penetrates and in what location.

This value is not the correct way to do damage from a bullet, but it ended up with values for the handgun that were similar—2 to 3 shots to the chest—while making everything else more powerful, e.g. one-shots with a decently placed 7.62 mm, shotguns ruining your day etc.

So while the approach we arrived at is not final by any means, the one we’re aiming at for the future requires visual feedback in order to work. Nonetheless, this new stand-in damage model beats what we had before, which was essentially a 3-body-shots or 1-headshot affair with no caliber differentiation.

It is important to note that armor has not yet been implemented, so the higher lethality brought on by this new damage model will be partly offset by working armor somewhere down the road.
Reticle brightness adjustment

You can now increase and decrease the brightness of most illuminated reticles. Use [Home]/[End] respectively to increase/decrease brightness. These key binds can be changed under Settings › Controls; they’re listed at the bottom of the command list, under “Other”.

Known issues
  • Brightness settings aren’t optic-specific and are set to 10 levels that may be inconsistent across different sights.
  • Depending on lighting conditions, the lowest brightness setting on some optics may display a dark dot rather than an illuminated one.
N is for Night Vision

We’ve moved the NVG toggle from the Equipments Menu ([4] key) to the [N] key. You can change that bind to something else under Settings › Controls.

Fire to Ready

Now when you press Fire (default [LMB]) while in High Ready or Low Ready, your primary weapon position will be changed to Ready (shouldered, sights not engaged; aka the “point-shooting” position). This makes it easier for some players to change to Ready, as previously you had to gauge how much you scrolled up or down from an off-target weapon position. It also prevents the silly firing into the air/ground allowed by the previous control scheme. Nothing has changed otherwise: scrolling up once from Low Ready (or down from High Ready) will still bring your weapon to Ready.

Holding the Fire key while in High/Low Ready will ready the weapon and start firing as soon as the weapon and view are aligned.
Auto-Close Ready for Sidearms

Handgun obstructed while aiming down the sights? Your character will now automatically switch to the Close Ready position (pistol held close to the chest and pointed forward) so you can still fire, making sidearms more useful in very close quarters.

Door interaction
Incremental opening

Incremental door opening is now done by holding Use/Interact (default [F]) and scrolling up/down, so you can now change weapon positions without accidentally interacting with that stupid door you’re getting ready to crack open.

Hell, let’s recap that for good measure:

INCREMENTAL DOOR OPENING

› HOLD Use/Interact (default [F]) + [Mouse Wheel]
Pushing doors

Walking into doors that aren’t fully shut will swing them open/closed.

Pick up that ammo

You can now take the magazine from a dropped weapon by looking at it and holding Use/Interact (default [F]). So tap key to pick up weapon, hold key to pick up magazine. Easy. Intuitive.

Re-equip loadout

When facing a Ready Room locker or training area workbench, hold Use/Interact (default [F]) to re-equip your loadout and restock your ammo and grenades.

Audio

New suppressed sounds

Suppressed gunshot sound effects for the M416Ds, M4A1s, MP7s, MP5s, AK-74M and MK 14 Mod 2 EBR were updated. New suppressed weapon tails were also added for assault rifles, submachine guns/PDWs and sniper rifles/DMRs. Be sure to try them out!

Bullet crack

Supersonic rounds now produce a characteristic “crack” sound when flying past you. Scary, but what did you expect in a firefight?

Content

NEW SIGHT: Specter DR 1x/4x

We have teased the model on Instagram way back in January, and now the Specter DR 1x/4x (the DR is for Dual Role) is finally here with variable magnification (you can switch between 1x and 4x on the fly), as well as a Picatinny rail mount on top for secondary red dots. The center reticle dot can also be illuminated and has adjustable brightness.

The Specter DR 1x/4x, seen here with the new RMR model mounted on the top rail

Here’s the sight picture:

Left: 1x and no dot illumination; right: 4x and max dot brightness

With the quick zoom switch and illuminated dot that assists target acquisition—plus a top rail to boost—the Specter makes for an incredibly versatile sight. We recommend mounting it close to the eye for better reticle clarity and optimal field of view.

You can alternate between 1x and 4x with [Page Up] and [Page Down]. Increase dot brightness with [Home] and decrease it with [End]. (These key binds can be changed under Settings › Controls. They're at the bottom of the command list. These controls are valid for every sight with similar functionalities.)
NEW SIGHT: AccuPower 1–8x

Our first true LPVO (Low-Power Variable Optic) is the Trijicon® AccuPower 1–8x. It offers 1x (no magnification) all the way to 8x.

While the real thing offers “fluid” zoom (i.e. you can analogically set it to any magnification between 1x and 8x), our current version offers 1x, 2x, 3x, 4x, 5x, 6x, 7x and 8x in steps—at least until we figure out a more faithful approach.

The reticle’s red sections (a center cross and 4 semi-circumferences) can be illuminated with 10 brightness settings. Let’s take a look at the sight picture:

Left: 1x with max brightness; right: 8x with illumination turned off

The 1–8x variable magnification makes the AccuPower more versatile and capable of longer ranges than the Specter, but all the different zoom levels you’re able to cycle through also make it less agile than the DR’s quick 1x/4x switch. To offset that, however, you can mount an RMR (ACOG) on the front scope ring’s integrated RMR mount.

Hint: Try binding the increase/decrease magnification commands to [Mouse Wheel Up] and [Mouse Wheel Down] respectively, making sure you add [Alt] as a modifier key for both. That will make [Alt] + [Mouse Wheel] your go-to bind for zooming in/out with all your variable power optics.
Known issues
  • On first use, the AccuPower reticles may appear at a low resolution and require a second or two to load correctly. Once you have cycled through all zoom levels, they will remain at full resolution.
  • At higher brightness settings, the illuminated sections of the reticle may bleed/glow through.
  • The RMR (ACOG) doesn’t visually touch/connect with the scope ring mount and will appear to float a few millimeters from it.
NEW SIGHT: AN/PVS-22 UNS

Sick of trying to shoot through a scope in a night map and having your NVG’s fixed focal range blur out your entire sight picture? We got you covered with the AN/PVS-22 UNS (Universal Night Sight).

See the mystery tube in front of the PM II scope?

If mounted right in front of your preferred magnified sight, this “clip-on” night vision optic essentially turns it into a night vision scope. Pretty damn sweet, right? It is a rather large optic, however, so make sure you have the rail space for it and your magnified sight too.

Here’s the PVS-22 in action:

Prowlaz quickly demos the AN/PVS-22 in co-op Terrorist Hunt (while sounding clearly aroused, which we can’t blame him for)

Notes
  • The PVS-22 will not work with non-magnifying optics like red dot and holo sights. This is intended and based on how the optic works in real life.
  • The PVS-22 is not a standalone sight. It is only usable in conjunction with a magnifying sight.
In real life, clip-on night vision optics are typically used in sniper and designated marksman roles due to their size and weight. It is likely to follow suit in GROUND BRANCH when stamina and other such mechanics are implemented.
Known issues

IR laser beams (as emitted by the AN/PEQ-15) and the Marker Strobe‘s IR flashing light aren’t visible through the PVS-22 when they should. We’ll have to figure out how to mask out the effect as it’s currently a full-screen “rule” that makes it visible through NVGs.

NEW SIGHT: ACOG 4×32 with RMR Mount

We’ve replaced the old ACOG 4×32 model with a new one that can fit the new RMR (ACOG) optic on top. Sweet.

NEW SIGHT: MRO

The Trijicon® MRO (Miniature Rifle Optic) is a small red dot sight with a large FOV for quick target acquisition.

NEW SIGHT: SRS

The SRS (Sealed Reflex Sight) is another red dot sight by Trijicon®. Go check it out.

NEW PLATFORM: Battle Belt

The Battle Belt can now be selected in the Platform slot of the Operator Customization screen. Don’t worry: it will be made an add-on to the actual vest platforms in the near future, so you won’t have to pick one or the other. The Battle Belt can hold up to 7 item pouches.

Because we have no functional armor yet, the Battle Belt has no real disadvantages in relation to vests other than pouch capacity. But we think it might be a helpful hostage/VIP asset to you role-players out there experimenting with custom game modes, plus everyone gets to look a little more casual on the range.

Other gear updates
  • The RMR mini red dot sight has a new model and is available in 3 versions: RMR (standard Picatinny mount), RMR (ACOG) (flat mount for mounting on the ACOG 4×32 and AccuPower 1–8x) and RMR (Raised) (raised Picatinny mount for AR-15-type rifles). At the moment, they work interchangeably. We’ll hotfix it so each version only fits where it’s supposed to.
  • The MK 14 Mod 2 EBR has received a small accessory rail under the handguard especially for foregrips.

UI

On-screen hints

In addition to the loading screen tips—which we’ve added to—pop-ups now show hints for basic gameplay functionalities that players are often left wondering about in GB.

Hints are enabled by default to assist new players. To disable them, look under Settings › Gameplay › Other › Enable Hints and select "No" from the drop-down list.
Usage prompts and highlights

Usage prompts and highlights have a new look, and both elements can be toggled on/off. Usage highlights can be edited for size and color as well. Usage UI customization settings are under Settings › Gameplay › Other.

Quick reminder that you can now take magazines from dropped weapons by holding the Use/Interact key (default [F]).
Grenade arc

The HUD arc showing the grenade’s trajectory has been altered and can now be customized under Settings › Gameplay › Firearm. You can pick individual color and alpha (transparency) values for both the arc itself and the predicted impact point marker.

To make either the arc or the impact point marker invisible, simply turn the alpha value to 0 (zero).
Shortcut to edit your weapon/vest/headgear

Editing your current weapon, vest or headgear build should be a little easier with this update. Once you click your current selection, the list should automatically open the relevant category and scroll down to the correct section of your item on the list. Much better.

Miscellaneous

New weapon attachment restrictions

Some attachments have received limitations in order to prevent issues with animations, performance and other underlying systems:

Foregrip placement

Foregrips can now only be placed down to a certain position on bottom accessory rails. This was done to prevent the wobbly “spaghetti arm” effect that resulted from the character’s support arm being stretched out too far, as well as the issue where he would grip an invisible foregrip placed out of reach. The restriction ensures your character will always grip properly. We may adjust or remove this limitation in the future as we improve character poses and animations.

Sight placement

We have limited how far back you are allowed to mount certain sights on certain weapons’ top accessory rails. This restriction should prevent sights from clipping through the character’s eyes/camera. As with foregrips, this may be changed as new poses, animations and systems make their way into the game.

No more offset scopes

You can no longer mount a magnified optic onto an offset rail. A lot of players were reporting sight pictures being tilted when aiming through offset scopes and, because scopes aren’t meant to be mounted offset (and wouldn’t function correctly in such a configuration), we simply got rid of the ability to do that. See, you ain’t gotta fix it if you throw it away. *wink*

Other changes, fixes and additions
  • Multiple crash and server issues were purged.
  • Mouse sensitivity can now have a separate value for each magnification level from 2x to 8x.
  • First pass on Terrorist Hunt mode for the User Generated Arena map.
  • Fixed flashbangs double-dipping local player. Looking away should also reduce the effect by up to 25%.
  • Red dots have generally been increased in size and adjusted for better visibility.
  • The MK 4 10×40 scope has been removed due to its model being too old. An updated version will be added at some point.
  • Fixed burst fire mode getting “stuck” when clicking rapidly.
  • 747 gate insertion has been reworked to reduce bottleneck.
  • Some general map cleanup—especially on Tanker Ship and 747.
  • Tanker Ship‘s bridge now has glass on the windows. Yeah, they’re breakable.
  • AKs should now have the fire selector in the correct position.
  • … and a whole lot more you can check out in the raw change log below.

We hope you enjoy this update! Make sure to let us know what you think in the comments below or in any of our official channels (links at the beginning of this post!). Feedback is very appreciated.

As always, thank you all so, so much for your continued support of this passion project. It means a lot to us.

See you on the next one!

Change log

Build version: 1028

Client

Steam Build ID: 4098294
Size: 1.7 GB

Dedicated server

Steam Build ID: 4098305
Size: 68 MB

FIXES

* FIXED metal hit effect smoke showing polygon edges
* FIXED collision blocking pipe entrance to Depot compound
* FIXED colliding with tarp in Storage Facility
* FIXED ACOG 6x48 scale 
* FIXED possible infinite loop in UGBGameplayStatics::ResetActors() if resetting an actor adds another actor to the actor iterator
* FIXED mesh references in materials in Props/PhysMatTesting.
* FIXED issues with AlaskaCedar tree that was causing some collision and LOD problems
* FIXED improper PhysicalMaterial setting for Acacia billboard material
* FIXED S_MERGED_UKH_WalkwaySupport_A4 blocking bullets
* FIXED Power Station "death door" and its friends.
* FIXED incorrect render texture scale on optical sight components
* FIXED incorrect AK safety positions on new AK74's
* FIXED not calling UpdateSightComponent() on owning client.
* FIXED GBFrontSightPostComponent not showing up as placeable component in Blueprints
* FIXED PiP setup for 1P78 Kashtan scope 
* FIXED possible nullptr in GBBulletMovementComponent::HandleImpact()
* FIXED wrong texture on rear Land Rover door window
* FIXED log spawn about organ damage type not init'ing damage variable properly.
* FIXED crash caused by calling ShowDebug Game on client
* FIXED swapping back to previous weapon after throwing a grenade 
* FIXED not being able to see grenade arc when adjusting it before being ready to throw
* FIXED being able to see through the start of the grenade arc
* FIXED collision on stairs in User Arena map
* FIXED incorrect setting on ElectronicsShelter asset material that didn't render reflections correctly
* FIXED incorrect collision on Ural truck when no back section present
* FIXED missing InstancedMesh flag not being set in AlaskaCedar material
* FIXED target skin replication
* FIXED buzzer going off in training maps with randomised targets if you join during/after run
* FIXED stun grenade double dipping local player
* FIXED looking away from stun source NOT reducing stun affect
    * will now be reduced up to 25% by looking away
* FIXED red dot and holo sights not showing up on bright backgrounds
    * also reduces shimmer when moving on holo sights
* FIXED Guns with no default sights attached
* FIXED light in RR disappearing when moving away from it
* FIXED can't shoot through wire fences
* FIXED doorframe gap in RR
* FIXED battle belt showing wrong color names
* FIXED mirrored texture on747 cargo container
* FIXED being able to place optical sights on offset rails
* FIXED burst mode sticking when clicking rapidly
* FIXED OKP-7 red and green reticle after changing colors
* FIXED getting stuck between pipes on tanker ship
* FIXED getting out of bounds near Ridgeline West in Storage Facility
* FIXED tarps blocking movement on containers outside of tunnel and on docks
* FIXED terrain collision issue near ladder on D in SmallTown
    * grenades, bullets and dead bodies will no longer fall through there.
* FIXED Tanker Ship bridge has no windows
* FIXED low pipes on Tanker Ship deck stoping AI from navigating
* FIXED inverted OKP-7 reticle
* FIXED missing collision and reversed seat meshes on left side of 747
* FIXED you can fall through the front staircase on the 747 map
* FIXED texture "swimming" effect on broken fence section of Power Station
* FIXED section of Power Station  fence that could not be shot thru
* FIXED M68 CCO sight picture to small (Good as its going to get)
* FIXED IR designator beam to dark after night vision effect changes
* FIXED being able to place M233 12x too far back
* FIXED being able to place LT608 riser too far back
* FIXED being able to place foregrips too far forward.
* FIXED radio/voice buttons spamming when used in character editor
    * if character editor is in focus, VOIP and chat should work
* FIXED incorrect glass density value to glass PhysMat
* FIXED sight adjust sounds playing when sight hasn't been adjusted at all
* FIXED AGBPlayerController::ReapplyCharLoadout() not working on server
* FIXED colour picker not starting at initial colour
* FIXED weird bullet penetration behaviour against thin single components
* FIXED incorrect materials on various assets used in City
* FIXED BP_Door_Rollup - now operable and no longer sparks when shot
* FIXED crashes/bugs with back button widget by removing it entirely
    * yay, manually re-creating UMG layouts and Blueprint logic... not
* FIXED AccuPower reticle not scaling with magnification level
* FIXED out of index crash related to seamless traveling between maps
    * Gah! This one has been bothering me for a while! Die fucker!
* FIXED crash in UGBVOIPManager::TickVOIPData() caused by null player state.
* FIXED head not casting shadow when hidden (I hope)
* FIXED grenade distance not syncing to server
* FIXED issue with LMG sight rail
* FIXED default magnification level being 1 instead of 0 in C++
* FIXED being able to place optics with deep shrouds around there lenses too far back
* FIXED not being able to change weapon position while aiming at a swinging door
* FIXED being able to use binoculars when night vision goggles are in use
* FIXED default grenade arc and impact colours being too translucent
* FIXED controller movement keys appearing in settings menu when not using controller
    * removed controller movement default binds until you select that as an option from the defaults drop down.
* FIXED missing sensitivity index array in various optics - they should obey custom sensitivity values now.


CONTENT

* Cleaned up rail placement settings on ACOGs
* First pass at adding Terrorist Hunt game type to User Arena map
* OpticalSightComponent
    * Removed debug
    * Cleared out unneeded nodes dealing with overriding Capture Source stuff
* Added small rail to MK 14 EBR rifle for vertical grips
* M_OpticalSight_Master material
    * Cleaned up some unneeded nodes
    * Set lens distortion as a parameter to control from MICs. Default is 0
* Changed customization menu background color to value that fits game's color scheme better 
* Added new Trijicon sights
    * ACOG TA31 – to replace old 4x32
    * MRO
    * RMR – Regular, Flat (for ACOG) and Raised
    * SRS
    * AccuPower 1–8x

* Added in PVS-22 night vision optic
    * work in progress (doesn't currently show IR lasers or strobes)
    * works with most scopes
* New battle belt platform 
* Adjusted placement of dump pouch to fit better
* Moved default primary pistol ammo pouches from left thigh to be attached to holster ( There wasn't an actual thigh rig for them to be attached to)
* Adjusted holster to better fit when Battle Belt platform is equipped
* Fine tuned the character pose in the customization menu to the arms don't clip pouches as much
* Added adjustment for reticle size in non magnified optics
    * adjusted all red dots to be roughly 2x size (Not user controllable)
* Cleaned up incorrect LOD materials for Trijicon AccuPower scope mount
* Condensed and consolidated optic reticle materials down to 2 common master materials
* Made optic glass materials into common single material with multiple settings for unique instances
* removed BP_Reflex_Small - redundant with new Trijicon sights
* Cleaned up reticle material setups for EXPS3 and OKP-7 sights
* Removed secondary peep sight on Specter DR sight
* Added in proper reticle for Trijicon AccuPower scope
* 747 map
    * Reworked airport entry insertion area to provide more option of entry and be less of a bottleneck
* Removed MK 4 10x40 scope as it was a very old model (A new version will return at some point)
* Iteration on night vision PostProcess
    * Attempting to standardize the look across all maps
    * Still more work to be done
* Added default grenade arc colors to DefaultPlayerSettings.ini with a neutral grey semi transparent default setting
* Adjustments to night time lighting on Aircraft Takedown and User Arena to bring in line with other night maps
* changed default grenade arc impact indication colour to include some red.
* Clamped lowest reticle brightness setting to still have color and not turn black
* Removed older ACOG 4x as it was redundant with newer model
* Setup MP5N to work with sight rail as an attachment(Not fixed on the weapon itself) to be consistent with how other MP5s work in game
* Added breakable windows to 2nd floor of building in center of City map
    * Testing to see if it effects performance. If not will then add to rest of the windows there
* Started to add more details to buildings in center of City map
* Finished off texturing area in lower level of 747 and adjusted some lighting
* Flattened out lens on a few scopes to get rid of unwanted fisheye effect
    * M233 12x
    * Specter DR
* Added a UV scale parameter to M_OpticalSight_Master for future use
* Cleaned up AccuPower reticle texture
* New reticle texture for SpecterDR
* Reduced diameter or grenade arc mesh and tweaked material settings
* Made illuminated part of magnified optic reticles visible in bright areas
* Reduced default optic brightness from level 5 to 3
* Adjusted reticle illumination color on AccuPower and ACOGs to be slightly less red for better readability
* Updated display names of several attachments for consistency


AUDIO

* Added scope magnification switch sound effect
* Added reticle brightness switch sound effect
* Added weapon transition sound effects
* Added MPX, AKS-74U, FAL, M16A4, M4A1 and M416D unsuppressed gunshots
* Improved Mk18, AK-74M, MP5N, MP7 and Mk48 unsuppressed gunshots
* Lowered volume of other unsuppressed gunshots to match the new values
* Added new suppressed gunshots for M416D, M4A1, MP7, MP5, AK-74M and MK 14 EBR
* Added new suppressed weapon tails for assault rifles, submachine guns and sniper rifles
* Removed speed of sound parameter (needs polishing)
* Changed resupply sound effect
* Changed InventoryBar sound effects
* Added sonic crack sound effects


CODE

* updated BP_OpticalSightComponent
    * added bindings for OnEngaged/OnRetired
    * added debug to show RTT / ticking.

* updated GBBulletMovementComponent
    * updated HandleImpact() to contain the entire penetration loop, regardless of impact type (BSP, static mesh or skeletal mesh)
    * updated TickComponent() to match UE4.22.x ProjectileMovementComponent, but with debug bullet support.
    * removed HandlePenetration()
* temp disabled AGBBulletProjectile::CharacterImpact()
* reduced lifespan of BP_BulletImpact_Master
* moved bullet warning trigger from GBCharacter to each actual bullet and updated affected C++ classes
* disabled bleeding/wounds due to lack of feedback
* removed organs from BP_Character since they are not being used.
* made bullet damage be based on depth penetrated / depth it can penetrate x 1/5 kinetic energy in damage
    * simple temp measure until we developer the feedback required to make bleeding/wounds work
* added VelocityMultiplier parameter to SpawnBullet() to adjust the speed.
* added VelocityMultiplier to BarrelComponent for use with SpawnBullet() changes.
    * updated BP_UMP45 to test it out
* removed BulletPenetration collision channel etc from DefaultEngine.ini - no longer needed.

* reverted DefaultEngine.ini to bring bullet penetration overlap back (oops)
* changed bullet penetration back to using bullet penetration overlap - which I'd done for a reason in the first place.
* updated character bullet verification
* tweaked bullet penetration testing against surfaces it should ignore and edge cases with overlapping static meshes.
* cleaned up BP_Door_Swinging to correct issue with destroyed core mesh
* added the ability to change reticle brightness level, reticle colour indexes and sight magnification levels
   * by default, bound to Del, Home/End and PageUp/PageDown
* updated firearm to automatically become ready/engaged if you try to fire when it is off-target
* created BP_NonOpticalSightComponent for use with red dot or similar that requires brightness changes, but doesn't use a scene capture component.
* added Default Reticle Brightness Level to player settings
* added support for reticle colour cycling
* updated BP_TerroristHunt to change Suicide call to OptOut.
* added CycleReticleColour to control binding UI.
* added BrightnessLevelMultiplier to BP_OpticalSightComponent & BP_NonOpticalSightComponent
    * combines with BrightnessLevel to produce final value in material instance.
* ensured DefaultReticleBrightnessLevel was applied to firearm
* deleted unused C++ classes GBInventorySettings & GBPlacedItem
* enabled media player related plugins
* created ShowHint() method on GBPlayerControllerBase.
    * created related BP_Hint_Test etc to try with it.
* updated sight component and firearm to allow non-active sight to update the current active sight
* updated BP_AN_PVS22 to use new code to allow it to update the active sight components post processing etc
    tl:dr - night vision on existing magnified optics placed BEHIND the PVS22
* added icon for BP_Shotgun_Rearsight
* added MinSightRelativeX to GBFirearm to control how far back you can place sights on each firearm.
    * updated affected C++ and Blueprints
* updated GBGameState::AllowCheats() to not require a playstate.
* updated GBHud::ShowDebug() to return if cheats are not enabled
* updated WBP_InGameMenuManager to hide Debug button if cheats are not enabled.
* updated RBEventManager
    * changed timer delegates to use SetTimerForNextTick() instead of just SetTimer().
    * removed usage of DelayedModificationTimerHandles array.
    * added IsValid(this) check to timer delegate used to call InternalAddListener.
    * updated InternalRemoveListener() to change IsValid() checks to (Object != null) && (Object->IsValidLowLevelFaster()) in attempt to fix odd crash relating to IsValid() failing.
        Seems that the objects index in GUObjectArray is invalid, which IsValid() doesn't check for - hence, crash.
* updated GBGameSession & GBGameMode to change the way it converts the UniqueId to a string value.
    Old : const FString UniqueIdString = UniqueId.ToString();
    New : const FString UniqueIdString = (UniqueId.IsValid() && UniqueId->IsValid()) ? UniqueId->ToString() : TEXT("");
    Hopefully this change will prevent any crash related the unique ids shared pointer.
* updated AGBPlayerState::IsLocal() 
    * added GetOwner() != nullptr check 
    * changed casting target class from AGBPlayerController to APlayerController.
* added Rama's colour picker UMG widget
* added support for customising the grenade arc and grenade impact indicator colours.
* updated BP_Grenade_Master to not auto-hide arc when adjusting throw distance while aiming
* updated GBSightComponent to wait to set default zero when firearm tells them to zero.
* updated GBRailComponent & GBRailAttachment
    * removed rail type from component and made it auto-determine "face type" by the its relative rotation.
    * added allowed on sight only rail variable.
    * added allowed on offset rail variable.
    * updated all affected C++ and Blueprints (*ugh*)
* combined MP5N & MP5SD5 rail adapters into one generic MP5 rail adapter
* changed log and screenshot submission in bug reporter to 'No'.
    * getting a lot of bugs with attached logs/screenshots that add or show nothing to do with the bug etc
* updated AGBPlayerController::ClientOnCharLoadoutApplied_Implementation() to ensure it doesn't try to equip a primary firearm if you're already in the middle of switching items
* updated AGBFirearm::UseMainHandPressed_Implementation()
    * rifles will become ready if not obstructed and off-target
    * handguns will become ready if obstructed or off-target
    NOTE: handguns much more useful up close and personal, as they will auto adjust so you can keep shooting.
* updated UGBRailComponent::GetRailFace() to change how rail face value was determined
* updated UWorks based on old code to support QueryPort command line option
* changed incremental door opening from Next/Prev Pos to Interact + Next/Prev Pos
    * updated associated widgets
    * holding F and using Next/Prev pos no longer changes weapon position
* updated BP_Firearm_Master to use semi-auto firing sound during burst fire instead of looping full-auto sound.
* added option to remove mag from dropped firearm by Tapping F
    * changed firearm pick from F to Hold F
* changed customise operator prompt key from 'click' to F
    * tap to customise
    * hold to reapply
* updated GBVOIPManager
    * updated location used by local player to fall in line with other players.
    * ensured location of audio component location is offset if the player is not currently viewing their character
* ensure AGBPlayerState::PlayerLocation variable is replicated to ALL clients instead of just the owner (dickhead)
* updated ReadyRoom to add a bullet blocker to preventing bullets leaving shooting range towards prep areas
* updated AGBPlayerController::AddCharLoadout() to call ReapplyCharLoadout() if trying to reapply current char loadout.
* updated bullet warn delegate to include bCanSnap if bullet is going fast enough
* changed grenade arc from showing when preparing to throw to only showing when use Next/Prev pos bindings.
    * if you start a throw with the arc visible, the arc will stay visible until grenade is thrown or throw is cancelled.
* made all pickup and usage prompts use the same style and placement
* second pass at hint system
    * moved from GBPlayerControllerBase to GBPlayerSettings & GBPlayerController
    * added Enable Hints option to Gameplay settings
    * created hints for sight usage, grenade arc, grenade cancellation and G33 usage
* updated WBP_Ladder_Prompt to bring it inline with other usage prompts
* updated BP_Door_Swinging to add some basic overlap checking to help prevent door clipping through characters and allow them to be pushed.
* Updated DefaultInput.ini to make Gamepad_LeftX/Y (thumb thingy) was bound to move forward/right.
* Added icons from Xbox controller back in, but under non-restricted folder name: XBone.
* Changed hard coded usage of left/right/mouse wheel when dealing with in-game widgets and inventory bar
    * use Main/Off Hand now doubles as left/right.
    * Next/Prev pos now doubles as mouse wheel
    Done to support using movement on the mouse buttons (freaks!) and improve controller support.
* Added IgnoreUseInput array to GBPlayerController to nicely control ignoring user input based on a reason, rather then relying on a +/- byte value syncing up.
    * updated affected Blueprints and C++.
* Updated WBP_Settings_Controls and related widgets
    * switched to using icons instead of text to show bindings, though text is added as a tool tip
    * hidden turn right/left & look up/down - making it hard to bind controllers.
    * added default controller bind support.
    * default button now shows drop down to pick mouse and keyboard defaults or controller defaults.
* Updated WBP_InventoryBar and related
    * cycling via Next/Prev position will now cycle to next category once it reaches the end/start of the current one
    Allows using Next/Prev position with controller a bit better.
   Still a shit method, but better then nothing :|
* Cleared TransitionMap entry - going by the code is not actually needed.
* Updated character editor
    * closes open item buttons if loadout is selected while they one is open.
    * if an item list has several categories, the category matching any currently equipped similar item is selected,
    e.g. you're using an MP5SD, so the SMG/PDW category is opened.
    * once a list is open, list will scroll to the section containing the same item type,
    e.g. You're using a a customized MP5SD, so the SMG category is opened and item list scrolls to the first MP5SD on the list.
   NOTE: Would like to go to the exact build, but that requires more work under the hood to record the name of each item build you choose.
   If this method isn't good enough, will see about getting loadouts to remember the exact item builds :|
* corrected bullet velocity for MP5SD5 and MP5SD6
* improved Use Main Hand switching firearm to Ready if not Ready
    * tap should always be to Ready
    * tap and hold should be to Ready AND Fire
* removed unused EPlayerFOV enum
    * updated affected C++ and Blueprints
* added sensitivity levels for 8 different levels of magnification
* third pass on hint system
    * added hints to the RR, as well as for reloading, magnification levels etc.
* removed floating input prompts
* made input prompts optional
* added usage highlight hint - a simple circular floating widget over the useable target
    * can be disabled
    * size and colour can be customised.
* moved all prompts to UI/Prompts directory
* cleaned up prompts slightly based on Scopey's input
* added hint for ladder climbing
* reimported fixed versions of AccuPower reticles using 
* updated AccuPower Blueprint to apply reticle texture after async load has finished.
* replaced original AccuPower reticle texture with new reticle x1 texture
* added missing keyboard key icons
* changed GB_INPUTSETTINGS_VERSION from 12 to 13 to force input ini reset
* changed AGBPlayerController::SpectatorToggleNightVision() into ToggleNightVision() and made it work for both spectator and normal NVG
    * updated all affected C++ and Blueprints.
    Had several bug reports where people kept seeing telling me night vision didn't work when they pressed "N", without realising that was the binding for SPECTATOR night vision.
* changed bCastHiddenShadow on the players head mesh to just always be 'true'.