Build Update

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'.

BUILD UPDATE #015: Hotfix

This is Build Update #015 bringing you the full patch notes for the second—and last—v1027 hotfix before we move on to v1028. (You can check out the previous v1027 patch notes here and here.)

We’d like to take a few lines to thank everyone who got on board the GROUND BRANCH train in the last couple weeks during Steam® Summer Sale 2019 and all the fantastic feedback. Seeing players enjoy the game we’ve been putting so much hard work into is immensely encouraging, so thanks everyone for keeping the community (and the dream) alive! Rest assured we’ll keep doing our part.

And if you’re new to the GB community, be sure to stay in touch with us via our Discord, the Steam® Community Hub, Reddit, Twitter, Instagram and Facebook. See you there!

› We strongly recommend players coming from an older version of the game (pre-v1027) to delete all files located in %LOCALAPPDATA%\GroundBranch\Saved\Config\WindowsNoEditor. For those who can afford it, a complete reinstall isn’t a bad idea either. If you have control, loadout and other such issues, be sure to try these options.

› NOTE: All dedicated servers must be updated to work with the current build.

Build highlights

Crash (and potential crash) fixes

Kris has taken care of the last few new crashes reported since v1027. We appreciate all the reports and patience!

Improved sight pictures

The first-person player camera has been moved forward slightly in order to provide more realistic “eye relief” and a better sight picture, particularly for magnified optics (scopes). This is a temporary solution while we aren’t able to tackle the more fundamental issue with character postures/poses not having a sufficiently “tight” shooting stance and thus keeping the camera too distant from the sights, while also avoiding an artificial FOV shift to zoom things in.

The camera should also pull back when free-looking (default [Tab]) to make up for the loss of peripheral vision caused by the adjustment.

This is only a first iteration, so we may tweak things further based on further testing and feedback!

› You can read about the more in-depth changes in the raw change log at the end of this post.

New Vertical Grip model

We’ve finally replaced that millennia-old Vertical Grip model, which was based on the venerable SOPMOD vertical foregrip by KAC.

“It is kind of bulbous.” —John

› Not your favorite grip? Don’t worry—we have more coming, and what we don’t make, we’ll let you.

Engaged Run

We’ve setup the Engaged Run (holding Run [Shift] while aiming down the sights [RMB]) to use the walk animation once again so it’s a stable “combat glide” rather than a wobbly jog.

A.I. fixes

  • A.I. are once again able to use doors, so be on the lookout.
  • Enemy placement, navigation and cover use have been improved on both City and 747.

Miscellaneous changes and fixes

  • 747 and City have received another art pass and further cleanup.
  • Fixed Server Browser displaying “Ground Branch” under Game Mode instead of the actual mode being played. The game mode now also shows up in the loading screen.
  • Collision box height for the crouched stance has been increased from 40 to 60, fixing the issue with characters getting under objects they shouldn’t be able to and having their heads clipping into them.
  • Server admins can now allow different Spectator settings (e.g. allow spectating enemies and/or free cam) via command line:
    • SpectateFreeCam <0/1>
    • SpectateEnemies <0/1>
    • SpectateForceFirstPerson <0/1>

Known issues

  • Lighting seems to be acting up with certain character items, which appear very dark-textured or lit up depending on lighting conditions. We’re investigating.
  • We’ve had one tester report an issue with online grenade throws not conforming to player settings to revert to the previous item. Changing the related setting had no effect, but it worked normally offline. If you experience the same bug, please make sure you report it!

What’s next?

We have a lot of exciting stuff planned for the next batch of updates. Although it is too early to officially confirm what will be in v1028, we’re starting work on character model and animation updates, environmental sounds and a functional wrist device that will help provide some much needed navigational and team awareness while playing—just to name a few highlights. Hopefully those will be ready for a first iteration soon enough!

As usual, thank you all very much for your continued support. Version/file info and raw change log below:

Change log

Build version: 1027(.2)

Client

Steam Build ID: 3993411
Size: 563 MB

Dedicated server

Steam Build ID: 3993415
Size: 34 MB

FIXED

* FIXED misaligned large reflex sight with G33 magnifier
* FIXED falling through world in Aircraft_Takedown map due to getting out of playspace
* FIXED wrong PhysMat on road line decals (Was playing metal sound)
* fixed game mode not showing up in server listing
    * added a 'gm' game tag to the Steam server listing which is compared to known game mode classes to find the correct display name.
* FIXED bad LOD setting on Shooting Range terrain that made it deform incorrectly
* FIXED City - falling through scaffolding
* fixed AI not using doors
* fixed nav and cover issues on TH-747
* fixed nav issues on TH-City
* fixed collision on S_Airport_CateringTruck_Raised.
* fixed collision on S_EntryStairway
* fixed crash related to null game mode class / casting in AGBPlayerController::PreClientTravel()
* fixed possible nullptr in GBGrenade
* fixed crash from potentially null AssociatedItem in AGBDroppedItem::OnRep_AssociatedItem().
* fixed crash due to possible nullptr in AGBGameMode::TimeLimitReached().
* FIXED 747 trees not properly setup to block AI LOS
* fixed items that should be hidden in first person showing up when spectating
* fixed not seeing items on your own dead body
* fixed crash caused by sight component being null in sight group
* fixed crash in AGBGameMode::GetReadyRoomStart() due to null ready room start.
* fixed crash/potential crash in UGBFunctionLibrary::GetMatchingSocketNames() by adding nullptr check to SceneComp.
* fixed crash/potential crash in AGBDirectSight::CanBeAddedAsChild() by adding nullptr check to PotentialParent->GetRootComponent().
* fixed errors/warnings related to DonMeshPainterGlobalActor copying a meshes ChildAttachment array.


CONTENT

* replaced very old and very broken Vertical Grip model with a new one
* 747
    * built out stairs in main building
    * Cleaned up some navmesh errors
* City
    * Changed some level lighting settings that were not properly set to give more consistent character lighting throughout map
* Replaced old map images for Storage Facility and City
* Cleaned up some bad geometry on M16 model
* Widened top sight rail on MI AKs to proper size
* More work on finishing up art for areas inside 747
* Changed PhysMat for wood part of killhouse wall so it using the wood hit effects
* Adjusted G33 collision to keep sights at least 2 rail slots away to solve reticles not being rendered (hopefully fixes it)
* Added proper Physical Materials to a few rock types used in 747
* New map images for 747 and SmallTown maps
* City
    * Remade the bus stop to be more solid for better cover and have some breakable glass
* Cleaned up a few navmesh issues around Depot radio tower spawn


CODE

* added game mode to loading screens.
    * uses the set game mode class, prefix of map. If both fail, falls back to current class set by game state.
* adjusted HEAD_Eyes location to be in line with bridge of nose
    * should make optics generally more usable without the need to artificially adjust the FOV while aiming with an optic.
* adjusted the on-target curves for the AK-74 MIs and MK 48 to correct position for stock length.
* modified animation blueprints to take pitch into account and adjust the position of a rifle when aiming up/down to prevent optic clipping through skull
* updated GBPlayerCameraManager to pull camera back when free-looking to compensate for camera being farther forward and compromising peripheral vision

* added support for setting spectate options via command line
    SpectateFreeCam 0/1
    SpectateEnemies 0/1
    SpectateForceFirstPerson 0/1
* added AI-specific functions to GBUseInterface.
* improved AI placement on City and 747.
* changed size of characters crouched collision height from 40 to 60.
    * fixes issues with characters getting under things they shouldn't and having their head clipping into the meshes.
* updated TH-TerroristHunt to automatically start the round editor is simulating.
    * allows debugging of AI more easily.
* adjusted the FastWalkSpeed used by GBCharacter to force use of non-wobbly walk animation when running while engaged.

BUILD UPDATE #014: Hotfix

Hotfix in the house!

We’re fixing the networking issues and broken volume sliders brought in by the previous update, and throwing in a little extra content because why the hell not? “Well, maybe because extra content tends to increase file sizes and you’re calling this a hotfix?”, you might ask rather sarcastically. And to that hypothetical question, we reply: SHUT UP. SHUT UP AND TAKE OUR CONTENT.

Anyway, the rundown is right after this reminder:

📢 The Steam® Summer Sale goes on: GB is 25% OFF!

The Steam® Summer Sale 2019 has another week to burn and our 25% discount is still on.

You know the drill—grab it, gift it, recommend it, share the news.

Every bit helps us get GROUND BRANCH to where we all want it to be.

› We strongly recommend players coming from an older version of the game (pre-v1027) to delete all files located in %LOCALAPPDATA%\GroundBranch\Saved\Config\WindowsNoEditor. For those who can afford it, a complete reinstall isn’t a bad idea either. If you have control, loadout and other such issues, be sure to try these options.

› NOTE: All dedicated servers must be updated to work with the current build.

Build highlights

Networking fixes

Lots of server fixes to address crashes, log spam and various connectivity issues introduced in v1027. Thanks for all the reports!

Fixed audio sliders

Mikson’s new weapon sounds are impressive, but they’re also pretty loud. If you’re not among those of us who gladly risk hearing loss for some extra immersion, you’ll be happy to know the audio sliders are fixed. To make gunshots and related sounds quieter, turn down the SFX slider under Settings › Audio.

Adjustable grenade throw

The grenade arc HUD for estimating throw trajectory can now be adjusted in steps for longer or shorter throws by scrolling up/down with the Mouse Wheel. Let us know how it works for you!

NEW MAP: 747 (Night)

WIP map 747 now has a first implementation of its Night version.

› Terrorist Hunt A.I. placement has been improved for both day and night versions.

NEW GEAR: Shotgun Rail Adapter

Now you can rock the M1014 and SDASS Custom shotguns with a tac light or whatever accessories you wanna fit on them. Simply attach the rail adapter, and then place the desired accessory on either of the side rails.

NEW GEAR: Extended Magazines (G22 and PMAG)

As part of our partnership with Taran Tactical, we’ve added extended base pads for the G22 and PMAG magazines. They’re selectable inside weapon customization under “Magazines”.

  • The G22 magazine extension carries 18+1 rounds.
  • The extended PMAG carries 35+1 rounds.

› We’ll have reasonable trade-offs for these new items once stamina and other systems are implemented.

Gear

Various fixes for kit items and their usage.

Known issues

  • Picking up weapons from the ground is inconsistent and might not work.
  • Running while engaged (i.e. aiming down sights) is using the running animation and may cause a wobbly support arm depending on foregrip location.
  • Game mode Defend is missing Defender spawn boundaries and Attacker freeze period.

Change log

Build version: 1027(.1)

Client

Steam Build ID: 3978385
Size: 1.2 GB

Dedicated server

Steam Build ID: 3978388
Size: 50 MB

FIXES

* FIXED crash if player disconnects shortly after being resurrected by admin
* FIXED crash if a PlayerState without a valid player controller ends up in AGBGameMode::DeadOnlyChat()
* FIXED crash relating to GetGameStateSafe
* FIXED "Too many failures to spawn" causing round to end by removing the related timer all together and just brute forcing all players that can enter play to enter play
* FIXED spawning with a firearm on client, but not on server
* FIXED being able to reload/switch items etc. while sprinting
* FIXED run/walk key cancelling lean when stationary
* FIXED AI attempting to shoot early prevent round from chambering, thus preventing further shooting
* FIXED firearms continuing to fire when put away during full auto
* FIXED change firing mode with trigger pulled
* FIXED missing/bad navigation in areas on 747
* FIXED volume settings for WWise not being applied causing them to reset to 100% next time the game loads
* FIXED 747 map bugs
    * Ability to hop over perimeter fence
    * No texture on wall flag
* FIXED City bugs
    * trash clipping through
    * subway wall poking through street
    * top of ladder collision in way
    * subway walls culling out to early
* FIXED bad shipping container UVs
* FIXED player hanging up on top of truck ladder in 747
* FIXED some missing Physical Material settings on a few rock types in Storage Facility
* FIXED TankerShip insertion info section for player names going offscreen
* FIXED lack of collision on 747 playspace boundary that let players get to non playable areas
* FIXED rifle laser sight allowing multiple versions to be attached to same weapon
* FIXED impassable stair section in City scaffolding
* FIXED odd looking fuel tanks on 747 map (missing textures)
* FIXED potential nullptr in various functions related to character appearance and loadouts by adding IsValid(Character)
* FIXED GBFirearm only binding to reload montages OnMontageEnded() delegate on server/offline, preventing clients from being able to reload more then once
* FIXED game and plugin properties that caused Cooker/UE4 to spam "is not initialized properly" in the log
    NOTE: still need to do a pass on the engine ones
* FIXED references to old/non-existent assets causing cooker to spawn "Unable to find package for cooking"
* FIXED (hopefully) assets causing cooker to spam "X imported blah but it was never saved as an export" in log
    * required opening/saving all maps that use various Blueprints :|
* FIXED missing/bad navigation in areas on 747
* FIXED BP_TerroristHunt_SpawnManager spawn point usage randomisation caused by changing from GB to standard BP macro library
* FIXED green tint in black Field (G2) pants
* FIXED unclamped off-target alpha value in GBFirearm::PrevPosPressed_Implementation()
* FIXED typo in WBP_OpsBoard_InProgressButton preventing from being visible when round was in progress
    NOTE: InPorgress != InProgress
* FIXED WBP_LoadingScreen getting none when trying to access to GameState
* FIXED GBGameMode::GetBestLateComerInsertionPoint() always returning a random insertion point
* FIXED round not ending if player logs out in BP_TerroristHunt, BP_Defend & BP_TeamEilimination
* FIXED "RequestAsyncLoad called with empty or only null assets!" spam caused by call to AsynLoad() in BP_Firearm_Master (doh!)
* FIXED AddDefaultItem() being called on character that is being destroyed causing spawned item to be invalid.
* FIXED being immortal when resurrected by admin (lol)

CONTENT

* Added in shotgun rail adapters to allow for flashlights and other accessories to be used
* Modified aspect ratio and camera angle of main menu
* Small adjustments to player scalability settings so shadows don't go completely away on Low setting causing unfair gameplay advantage
* Adjusted vertical grip hand pose for a better fit 
    * These will get better when the new character meshes/skeleton is in
* City
    * Cleaned up collision around insertion points
    * Added a few solid low walls around center of map for more cover and to reduce long AI sightline a bit
    * Filled in some visible non-playable areas
* Added first go at night version for 747
* Removed odd refraction from default glass material (RR and Depot mainly)
* Added in new Taran Tactical mag extension version of the G22 and PMAG magazines
* Added PhysMat setting to rocks in 747


AUDIO

* added audio sliders functionality for Wwise and music
* assigned all sound effects to SFX class
* Wwise: added missing MK 14 EBR reload sounds
* Wwise: improved unsuppressed MK 14 EBR, AK-74M and AR-15 shots
* lowered falloff distance for FullAutoPunch layer of unsuppressed gunshots


CODE

* assigned outers to all instances of NewObject()
* added validation checks to various methods involving setting/using an insertion point on the player state
* removed usage of gameplay ability system
    * updated all affected C++ and Blueprints
* replaced usage of macros in GB Blueprint Macro Library with native versions
* removed usage of redundant / pointless macros in GB Blueprint Macro Library
* added ToggleRun option to GBPlayerSettings class
* added Reset() Blueprint native function to GBItem
     * causes pouches to refil with last thing they had in them
     * causes firearms to max capacity if not in the process of reloading
* update BP_TargetApplScreen used in some training maps to use new Refill() method on characters items
* replaced usage of GBResetInterface with calls to native AActor::Reset()
* updated BP_Door_Swinging to take player and doors direction into account when incrementally opening
* updated GBGrenade to allow you to adjust throw range using mouse wheel
* removed log spam about montage replication
* removed log spam about player spawning
* improved AI on 747 by correcting Guard points, Patrols routes and the like
* removed DonMeshPainterGlobalActorSpawnParams from GBGameMode - yet to use it server side
* updated player patch support due to DonMeshPainter update
    NOTE : while updated, they are not enabled
* removed stubbs about player patch from GBPlayerController
* updated RBEventManager
    * changed several parameters from TWeakPointers to normal C++ pointers
    * updated FRBListener struct
        * created IsValid() that returns true if object & function are valid
        * changed optional constructor to take normal C++ pointers instead of TWeakPointers
        * removed == operator
* updated RBSurfaceLinkManager
    * changed Get() from using a mutable default to using a SingleTon added to the root set
    * replaced usage of CachedLinkedClasses variable with simply adding the cached classes to the root set
    Both these changes were done to prevent GC issues
* added "Defaults" button to audio, video and gameplay setting screens
* changed default audio volume levels from 10 to 08
* removed stubb from BP_Handgun_Master
* reduced max throw distance in BP_Grenade_Master
* Updated DedicatedServer.bat with all available maps and game types

BUILD UPDATE #013: Jumbo

It’s been 48 days since our last blog entry, and almost 3 months since our last game update, and while we’re sorry we kept you all waiting that long, we hope Build Update #013 makes up for it.

As predicted in the last Intel Update, #013 has taken a lot longer than usual due to an engine update and a bunch of new things we’ve been putting into GROUND BRANCH that simply required the extra time to get implemented, tested, fixed, re-tested and so on. To summarize, this version includes the long-awaited first sound update, a new PvP game mode, new modes for new maps, some obligatory new gear and a sizeable list of fixes we’ll go over in a bit.

We cannot stress enough how grateful we are for all you guys sticking around and patiently supporting us while we do our best to put this thing together. As always, thank you so much!

Before we go over the highlights, we figure we should let you know that…

🚨 GROUND BRANCH is 25% off on the Steam® Summer Sale! 🚨

We’re right on time with this update for the Steam® Summer Sale 2019. If you haven’t already, this is your chance to grab GROUND BRANCH with a magnificent 25% discount—our biggest discount yet—or maybe convince a few stubborn friends to join you in the tacticool bonanza. You’re now armed with compelling case of a juicy update and a sale launching at the same time, so let’s fill up them servers!

All locked and loaded? Let’s move out.

› We strongly recommend players coming from an older version of the game to delete all files located in %LOCALAPPDATA%\GroundBranch\Saved\Config\WindowsNoEditor. For those who can afford it, a complete reinstall isn’t a bad idea either. If you have control, loadout and other such issues, be sure to try these options.

› NOTE: All dedicated servers must be updated to work with the current build.
› NOTE: Some Controls/Gameplay settings have been reset with this build, regardless of whether you removed config files as suggested. Make sure to reconfigure them to your preferences and sorry for the inconvenience!

Build highlights

Finally, new sounds!

Mikson’s diligent work can finally be experienced in-game as the first batch of (mostly) weapon sounds goes public, along with an ominous main theme to kick off soundtrack and ambience work, and several small soundscape adjustments to volume, attenuation and occlusion values.

JustinRed87 aka Cobra493 previews some of the new sounds. Sounds and menu aren’t up to date despite the video being recent, but should help you get an idea of where they’re headed

Weapon sounds

The following weapons have received their own sound effects, with individual gunshot (with indoor and outdoor tails) and reload SFXs, as well as suppressed versions where applicable (marked with [SD]):

PRIMARY
  • MP5N [SD]
  • MP5SD5, MP5SD6
  • MP7A1, MP7A2 [SD]
  • SDASS Custom
  • MK 18 Mod 1 [SD]
  • AK-74M, AK-74 MI [SD]
  • MK 14 Mod 2 EBR [SD]
  • MK 48 Mod 0
SIDEARMS
  • M1911A1 [SD]
  • MK 25 [SD]

Why do all weapons sound different than before, then? Well, we’re carrying over these finished sounds to the other guns while they’re not done, hence the similarity between several of them too. All submachine guns not listed above are now using the MP5N effect as a placeholder, for instance. Similarly, for now all pistols (M1911 aside) are using the MK 25 sounds, all ARs share the MK 18 sounds, the AKS-74U uses the AK-74M sounds and so on.

Keep in mind that this is a first iteration. Mikson will be fine-tuning everything and updating the rest of the armory (and the entirety of the game’s sound design) as we go, and you can expect actual reverb and things like individual tails for urban vs. rural vs. forested environments.

› Sounds that were previously demoed, such as the M4A1/Block II effects, are being reworked with newly acquired libraries for maximum fidelity.

Other sound changes
  • The M67 Frag explosion sound has been updated with a better placeholder that doesn’t have birds chirping in the background. Chirp-less BOOM.
  • While footstep sounds haven’t been updated yet, they now have proper attenuation, volumes and occlusion depending on movement pace, stance and environment, so you will no longer be hearing them across the map or through multiple floors.
  • Radio and local VOIP have been similarly updated.
  • Local VOIP (default [V]) falloff distance is now 15 meters, so make sure you’re within hearing range—otherwise, switch to radio comms (default [B]).
Known issues
  • We realized too late that bullet whiz sounds aren’t replicating online. Balls. (We’ll try to hotfix that soon.)

NEW GAME MODE: Defend [WIP]

Currently available for Small Town and Power Station (both Day and Night versions), this adversarial (PvP) game mode has one team defend an objective (a laptop), while the other team needs to find and secure it.

DEFENDERS
  • Objective: Eliminate all Attackers or prevent the objective from being secured within the time limit (default* 10 min).
  • Spawns near the objective (which can be in several nearby locations around the selected insertion point) and has a 30-second head start to prepare for the attack.
ATTACKERS
  • Objective: Eliminate all Defenders or secure the objective within the time limit (default 10 min).
  • Can move freely after 30 seconds. This time can be used for last-moment preparations and plans.
  • Once the objective is found, one team member must secure it by holding Use/Interact (default [F]) while facing it for 30 seconds (default time*).

* Round time limit and objective capture time can be configured by the server admin. We encourage players to try different values and see what works best. Let us know how it goes!

› Needless to say, this game mode is a major work-in-progress. It will be refined with further testing and community feedback, and then ported over to more maps.

Known issues

Although we could not replicate the issue, we once had multiple objectives spawning in a single round. If you experience this bug, be sure to report it. Thanks!

NEW MAPS: 747 and City [WIP]

Previously playable under the “Development” game mode, 747 and City are now further along in development and playable on Terrorist Hunt, Team Elimination and Deathmatch. They’re not finished maps, however, so expect some unfinished areas and general bugs and issues. John is on them.

747

CITY

› Yep, they will be getting a night version later on too. Speaking of which…

Storage Facility (Night)

Storage Facility now has a night version, playable on Terrorist Hunt. Don’t forget your NVGs.

Adjusted A.I. behavior

  • Enemy A.I. sight and threat detection distance have both been changed from 50 m to 150 m. This was done to make up for longer engagement ranges, particularly on 747. We’re looking into map-specific values (short term) and a more robust system that accounts for more than a binary distance switch (long term).
  • The distance at which they hear footsteps has been changed from 50 m to 25 m.

Movement speeds

  • Walk and Run speeds have been increased and adjusted slightly. (We’re evaluating adding a slower “sneaking” pace.)
  • These values are experimental and, as everything, subject to change.

Gear

NEW SIDEARM: MK 25

A SEAL favorite, the MK 25 (P226) is a 9 mm service pistol carrying 15+1 rounds.

NEW ATTACHMENT: Sidearm Suppressor

Not really a surprise at this point, but you can now attach a suppressor to any pistol and be all… [starts mimicking several copyrighted stealth action characters]

› As with primary weapons, sidearm suppressors are selectable under the “Muzzle Device” tab.

Foregrips are now gripped

We’ve rigged up a basic implementation of “functional” foregrips. They are now gripped by the character’s support hand—as long as you place within reach, anyway.

Known issues
  • Foregrips will cause a floating hand (as well as a wobbling, dislodged arm) if placed too far forward along the bottom rail. It’s only a first pass, damnit!
  • The hand poses have a generic grip that doesn’t really fit the foregrips yet. Don’t worry—we’ll be tackling that in due time too.
Other gear stuff
  • Pistol holsters are no longer stuck in the 2000s and are worn on a belt extension rather than a thigh rig. We might make it an option in the future.
  • We’ve added a basic suppressor for the MK 14 Mod 2 EBR.
  • The AN/PEQ-15 and AR suppressor have been re-scaled to more accurate dimensions.

Miscellaneous fixes and changes

  • Tired of having to run around the Ready Room between rounds? You now spawn back directly at the Ops Room of your selected team and might save up to a whopping 352 calories in a single session.
  • Fixed targets not coming back up on Shooting Range. Or was it them not going down this time?
  • A long, long list of little things you can check out below.

Change log

Build version: 1027

Client

Steam Build ID: 3953210
Size: 2.8 GB

Dedicated server

Steam Build ID: 3953219
Size: 141 MB

FIXES

* FIXED MP5 flashlight foregrip not covering regular front grip properly
* FIXED rear sight texture misalignment on MK 48
* FIXED glowing white inside of suppressors
* FIXED Rail Cover intersecting with side rails on some ARs
* FIXED tracetag when packaged
* FIXED UWorks GetFriends node in BP_GameInstance 
* FIXED overlapping meshes that showed up in Small Town floors
* FIXED bad collision on boulder pile near one of the Small Town spawns
* FIXED suppressor naming convention for to AK suppressors.
* FIXED suppressor thread naming conventions on AK-based rifles.
* FIXED up suppressor redirectors
* FIXED insertion points on TE-SmallTown
* FIXED GetSortedTeamListWithPlayerCounts() not sorting based on living players correctly.
* FIXED AI walking into river and submerging themselves in Depot map
* FIXED small items around fire barrel in Depot shooting players into the air when stepped on
* FIXED getting sorted team list with player counts
    * this fixes BP_Defend game mode not ending when attackers/defenders are killed.
* FIXED G22 slide render issues
* FIXED missing G22 sight dots
* FIXED incorrect lighting being set to visible if player controller is not spawned BEFORE game class is set in game state.
* FIXED firearms not cycling bolts after first shot when non-semi auto
* FIXED up many redirectors (naughty!)
* FIXED lighting scenario loading on training maps
* FIXED incorrectly multiplied round length by 60 when setting it on game state to be replicated to clients.
* FIXED mini-map origin location and dimensions on TE-PowerStation & DEF-PowerStation
* FIXED OnRoundStageSet() delegate not being called on server.
* FIXED TE-PaintBall
* FIXED targets dropping on ShootingRange_Geo
* FIXED sync'd bad guy/hostage targets on tracks in TargetTest_Geo
* FIXED BP_SpawnProtectionActor not unbinding triggers.
* FIXED missing simple collision geo on S_Forklift_Industrial
* FIXED spawning at weird angles using PlayFromHere option in editor.
* FIXED funky refraction on vehicle windows in 747 
* FIXED incorrect mini-map setup on TE/DM-SmallTown
* FIXED missing collision on two trucks on 747
* FIXED showing death overlay twice in TH standalone
* FIXED not seeing attachments and magazines on non-equipped firearms in RR
* FIXED round end not being checked for if a player disconnects mid-round in Defend game mode
* FIXED BP_GameState and child blueprints attempting to updated UI widgets on dedicated servers
* FIXED reference to reload sound cue references that no longer exist in BP_SDASS_Martial
* FIXED looping full auto sound not stopping on character death.
* FIXED BP_AN_PEQ_Master & BP_IRStrobe causing warnings in new FrontEndMenu.
* FIXED crash relating to incorrect use of SetLifeSpan() in GBGameMode::AddDroppedItem()
* FIXED possible nullptr in GBGameMode::GenericPlayerInitialisation()
* FIXED adding possibly invalid skin asset to asset list in UGBCharLoadoutFunctionLibrary::GetPrimaryAssetIdsFromKit().
* FIXED odd collision at bottom of stairs in TankerShip
* FIXED gap in geo at bottom of stairs in TankerShip
* FIXED BP_LightPost in City causing compile errors/warnings
* FIXED using wrong function to read primary asset ids from appearance string in FrontEndMenu-NEW
* FIXED TH-City not showing up in menus (at least in dev build).
* FIXED missing tree collision in City
* FIXED physics props in City causing player to be thrown across map to their death/laughter.
* FIXED incorrect entries in loadouts used from FrontEntMenu-NEW
* FIXED messed up FriendlyTarget(White) impact effect
* FIXED rotation/movement in character editor from front end menu
* FIXED death overlay missing randomly making people unable to respawn etc.
* FIXED missing team kill prompt by adding ShouldCheckForTeamKills() to various game modes that it was missing from.
* FIXED stun effect not pissing off if the map changes while it is in affect.
* FIXED MP5 TacLight not lighting up when light enabled
* FIXED bug in BP_TerroristHunt that would show death overlay if you left mid round to RR.
* FIXED collision with 747 landing gear
* FIXED possible nullptr in GBGameMode::GetSpawnInfo()
* FIXED ability to add suppressor to MP5SD (should not be able to)
* FIXED bug in BP_OpticalSightComponent where render target size could be set greater than screen resolution
* FIXED bug in GBGameMode causing players to be respawned inside the RR if round count down is cancelled by everyone leaving the Ops Room.
* FIXED reloading shotgun online
* FIXED potential crash caused by bad GBInstigator reference in GBFirearm::RecoilCountUpdated()
* FIXED UMP45 having 3 shots heard in 2-shot burst.
* FIXED casting issue in GBFunctionLibarary::GetGameStateSafe() (I hope)
* FIXED firearms collision considering smoke in smoke grenades in its collision checks.
* FIXED EBR reload always being reloaded without retention.
* FIXED potential crash if character dies as they begin to reload.
* FIXED PhysicalMaterials now have correct density settings.
* FIXED items dropped by AI disappearing during round based games.
* FIXED debug collision on smoke grenade being visible (oops).
* fixed WBP_BugsIssues_Feedback not being set to focusable causing log spam.
* fixed WBP_Settings_Manager not displaying WBP_Settings_Controls as default screen.
* fixed GameInfo button not working and add tooltip.


CONTENT

* NEW MAP - City
    * Still a work in progress
* Terrorist Hunt, Team Elimination and Deathmatch game modes added to 747 and City
* NEW GAMETYPE added - Defend
    * Currently available on Small Town and Power Station maps
* Added night version to Storage Facility

* New main menu concept added
    * New main theme music added

* Better internal organization of suppressors
    * Added in new models to replace old meshes
* Cleaned up Ready Room LODs and unused meshes
* Replaced fuel truck in 747 map with new version
* Adjusted suppressor placement on pistols
* Ready Room
    * Small tweak to floor roughness
    * Added simple steam coming from coffee pot
* 747
    * More work on interior or aircraft
    * Remade moveable stairway prop and materials
    * Optimized lighting in cargo area to make framerate more consistent (no longer using IES light profiles)

* Cleaned up geometry and UVs for cinderblock low wall mesh set

* Removed thigh rigs on pants and moved holster to an extended length belt hook position
    * Thigh-rig setup is still in there if we want to go back to it or add in as an option.

* Scale adjustment to AN/PEQ-15
* New Acacia SpeedTree model added

* New weapon added
    * MK 25 (SIG P226)

* Regenerated LODs for some crate meshes that were causing rendering problems in SmallTown
* Cleaned up some misc geometry issues in PowerStation, presumably from new engine build

* Modified firearms attenuations falloff distance (longer falloff distance)
* Lots of cleanup work done to 747 interior
* Added building label decals to SmallTown buildings for better identification
* Added different volume and falloff distance for each movement pace

* Added first pass of night vision option when spectating
* Created LODs for all weapon and character SkelMeshes that didn't have any already
* Cleaned up some lightmap UV setting on various marketplace assets
* Adjustments to fog in 747 to not be so obvious on interiors
* Remade PowerStation overhead map to better match insertion areas
* Changed some StaticMesh settings in vehicle BPs to make them more efficient to render
* Update StorageFacility geometry
    * Fixed a few places you get could get stuck
    * Adjusted use of blocking volumes and convientientyly conveniently placed boulders to prevent getting outside map bounds.

*  Storage Facility
    * Removed SSAO from outside area to gain 1ms rendering

* Added grid to mini-maps
    * The final presentation will change, just a test for now
* Added simple character lighting PhysAsset reference to various character meshes
* Added Roughness power parameter to main RMAO_Master material
* Moved all RR spawns to 900 m below map so you don't hear the RR shooting range while playing

* First pass on foregrip IK and animations (lots more work to do)

* Changed movement speeds (will test some more)
    * Running/walking forward/forward left + right is faster.
    * Backwards + pure strafing is somewhat slower.
    * Engaged running is wobbly AF now.

* Reworked Main Gate insertion in 747 to provide more cover during entry
* Removed dynamic light from barrel fire particle system used in Depot map

* Reworked AI placement and setup on Storage Facility docks to give less chance of insta kills when peeking over ridge

* Rescaled AR suppressor
* Tons of PhysMat fixes on marketplace stuff for correct material settings
* Removed yellow laser warning label from V3 optic


AUDIO

* Changed local VOIP falloff distance from 30 to 15 meters (might lower it to 10 meters if that's not enough)
* Added air absorption to local VOIP attenuation settings (low-pass filter dependent on distance to the source)
* Changed occlusion settings so it impacts local VOIP in more noticeable way

* Increased AI bark falloff distance 

* Wwise: further BP_Firearm_Master modifications (WIP)
* Wwise: modified AM_Reload_AR15 so it's synchronized with audio
* Wwise: added bullet fly-by sound effects
* Wwise: added AR-15-related sound effects (WIP)
* Wwise: added suppressor sound effects for AR-15
* Wwise: changed audio format to Vorbis
* Wwise: added attenuations, distant shots and trigger pull sound effects for assault rifles
* Wwise: added AK-74M sound effects
* Wwise: fixed Switch for fire selector
* Wwise: added AK-74M sound effects for AKS-74U
* Synchronized AK-74M reload sound effects with the animation 
* Wwise: added MK 48 sound effects
* Wwise: synchronized MK 48 reload animations with sound effects
* ReadyRoom: added spatial audio volumes and acoustic portals
* Added Wwise volumes to all maps
* Wwise: added OpenFeedTray and CloseFeedTray events for LMGs
* Wwise: added MP5N, MP5SD and MP7 sound effects
* Wwise: synchronized reload animations for MP5 and MP7
* Wwise: modified some attenuations
* Wwise: assigned MPX and UMP to MP7 sound effects, added WrackBolt for MPX
* Wwise: added MK 14 EBR sound effects and synchronized its animations with audio
* Wwise: added MK 25 sound effects and synchronized it's animations
* Wwise: added MK 18 unsuppressed shots, assigned to all AR-15 rifles (temporarily)
* Wwise: added shotgun sound effects
* Wwise: assigned all handguns to MK 25 (except for M1911)
* Wwise: synchronized shotgun animations with sound effects
* Wwise: added new MP7 reload sound effects, added new AK-74M unsuppressed shots
* Wwise: turned up SMG tails volume


A.I.

* Adjusted AI curves
    * Sight distance from 50 m to 150 m
    * Footstep distance from 50 m to 25 m
    * Threat distance from 50 m to 150 m
* Disabled crouch behaviour branch BT_Flee


CODE

* updated UE4 to version 4.22.x
* created UGBFunctionLibrary::GetAssetSoftObjPtrs() to quickly get a list of asset pointers, mainly for use in mass processing animation sequences.
* changed lag comp from using timestamp from client to using 1/2 ping
* recompiled WBP_CharacteEditor & WBP_ItemEditor to fix Blueprint complaining about changed C++ class
* began updating lag comp check method to use trace vs special collision channel
* updated GBFirearm to use attached actor alongside sphere component for Wwise volume detection.
* moved CoherentUI plugin from engine to game.
* updated to Prysm-1.2.1.1 from Coherent
* updated GBInsertionPoint class to expose TeamId to instances or child blueprints.
* Integrated Wwise middleware 
* updated use of RecoilCount for better use with Wwise
    * required changes to fire ability, firearm and various blueprints.
* updated GBInsertionPoint
    * added delegate that is fired when insertion point is updated
        * used by widgets to hook directly into insertion points instead of relying on game state etc
    * added bIsActive boolean to enable/disable insertion points

* updated GBFirearm
    * removed OnContinuedFiringEvent()
    * rigged up GBFirearm to be more diligent about when it call OnStartedFiringEvent() and OnStoppedFiringEvent().
    * ensured that OnFiremodeChangedEvent() is called when the barrels spatial sound is spawned.
* created GBUseInterface
    * combines with server replicated function in GBPlayerController for simple using of actors without a gameplay ability
* updated GBRoundManager
    * removed last team and last player checks - should now be done by game mode.
    * renamed CheckForLivingPlayers() to CheckAllDead() to better reflect its actual use.
* created BP_Defend game mode
    * temp name - could just be call TAS (Take And Secure) or AAD (Attack And Defend) etc.
    * Alpha = Attackers
        * Can pick any insertion point they like.
        * Attackers must find and secure laptop by using it.
    * Bravo = Defenders
        * Spawn at insertion point that is randomly chosen each round.
        * Must keep attackers from using laptop near insertion point for X minutes.
    * Either team can also win by killing the other.
* updated WBP_TerroristHunt_OpsBoard to work with changes to GBInsertionPoint  and related widgets.
* updated WBP_TeamElimination to implement player deaths checks to end the round when one team is left alive.
* updated GBGameSession to fix how it registers server
* updated WBP_SinglePlayer & WBP_TrainingScreen to use simple console command instead of HostGame function.
* updated GBGameInstance::HostGame() to create a dedicated server process for testing.

* changed BP_DefendTarget_Laptop to start capturing as long as the Interact key is held down and the mouse is over the laptop.
* changed WBP_DefendTarget_LaptopScreen background from a simple white texture to a screen-like material (M_LaptopScreen).
* removed outlines from all actors except those used by the character / item editor.
* removed various NM_ListenServer references from game module.
* removed ElevatedPlayer default entries in the ZKAdmin class.
* updated GBGameInstance
    * renamed HostGame to CreateDedicatedServer().
    * created TerminateDedicatedServer().
* created WBP_WaitingOnServerOverlay to use with WBP_HostGame

* created C++ version of BP_Character's DefaultAbilities in GBCharacter class.
* added WorldGameplayAbilities to GBGameMode to hold non-default gameplay abilities from actors in the world (e.g. doors).
* updated BP_DefendTarget_LapTop to use much simpler, brute force style way of stopping/starting capture timer.

* added IsValid check to inventory bar in BP_PlayerControlled to prevent possible log spam/other issues
* created FActorGroup struct - basically a copy of FRandomPropGroup
* updated BP_RandomProp to use FActorGroup  instead of FRandomPropGroup
* updated Depot_Geo due to BP_RandomProp changes.
* updated BP_DefenderInsertionPoint to randomise the laptop placement based on logic from the BP_RandomProp Blueprint.
* updated GBGameMode & GBGameState based on latest UE4.22.1 source
    * moved a lot of the authority based logic from GBGameState back to GBGameMode
    * moved a lot of the game mode settings from GBGameState back to GBGameMode
        e.g. bTeamGame, TeamNames.
    * removed / replaced redundant variables/functions
        e.g. bCooperative
    * removed usage of GBPlayerStartManager
        * moved basic logic for ReadyRoomStart usage to GBGameMode
        * created native GetSpawnInfo() that returns location & rotation, rather then actor, to spawn player at.
        FIXME - make it return an actor still with spawn offset instead, allowing it to be used to attach players to vehicles etc on spawn???
    * updated all affected Blueprints and deleted any Blueprint based game states that were no longer in use.
* created GBGameMode::IntiCharAppearanceAndLoadouts()
    * brute force method that calls replicated client function to load the them client side.
* replaced usage of GameStateInitEvent with UGBFunctionLibrary::GetGameStateSafe().
    * the GameStateInitEvent became very sequence/timing important, whereas GetGameStateSafe() works regardless of the order GBGameState arrives or gets it GameModeClass replicated.
    * updated all affected Blueprints
* updated UWorks to 22-16 with official UE4.22 support
    * required updating GBVOIPManager

* replaced usage of round manager and round state with system based off native 4.22 GameMode.
    * updated all affected C++ and Blueprints.
* created GBGameMode::RetryStandalone()
    * allows for resetting rounds and anything else required in both C++ and Blueprint based game modes.
* updated BP_Defend
    * renamed teams from Alpha & Bravo to Attackers & Defenders.
    * added DefenderSetup round stage that gives Defenders 30 seconds to prepare while Attackers are frozen.
    * created WBP_DefendTarget_Highlight for use during DefenderSetup to show Defenders where laptop is.
* moved some insertion point related functions from GBGameState to GBGameMode.
* created GBPlayerController::Freeze() 
    * sets the Unfreeze timer locally, which prevents the player from moving or taking damage.
    * replicated the desired end time to the client and sets the Unfreeze timer based on that minus the replicated server time.
* added GBPlayerController::Unfreeze() override to actually clear the unfreeze timer handle.
* cleaned out old GBGameState functions that were no longer in use.
* removed GBPlayerStartManager class 
    * since moving from player starts to Insertion points, it's not really needed as much.
* removed GBRoundManager & GBRoundState classes.
* recompiled all plugins.

* added checks for RF_ClassDefaultObject in various class constructors and related functions to help improve load performance.
* updated GBGameMode
    * removed existing EnterPlayArea() and renamed SendToPlayArea() to EnterPlayArea() 
        * make it clear that it should be used the first time you leave the RR or join a game without an RR.
    * updated RestartPlayer() to have the same basic functionality SendToPlayArea() had, minus RR checks etc and call to PlayerEnteredPlayArea().
    * renamed SendToReadyRoom() to EnterReadyRoom().
    * created PlayerEnteredReadyRoom() Blueprint native function
        * called from EnterReadyRoom().
        * used to reset round in standalone etc.
    * added bUsesRounds check to default implementation of PlayerEnteredPlayArea() to prevent 5 second freeze when entering non-round based games for the first time.
* updated GBGameState
    * created generic delegate to replace usage of event subsystem
        * seems a bit silly to use events when only one object will ever have the information.
        * updated affected C++ and Blueprints
    * created OnDifficultySet delegate
    * created OnRoundLengthSet delegate
* updated GBGameInstance
    * renamed OnRemoveLoadingScreen to OnLoadingScreenEvent and added a FName param.
* updated WBP_LoadingScreen
    * uses OnLoadingScreenEvent to determine when map has loaded BEFORE checking for lighting scenario.
* created BP_SpawnProtectionActor
    * prevents associated team from taking damage
    * displays warning to and prevents non-associated teams from being able to cause damage
    * is enabled/disabled by round stage.
    * can be associated with any actor that can be overlapped (brush based or otherwise).
* moved BP_TerroristHunt_AIState logic to BP_TerroristHunt_GameState and then removed it.
* created DEF-PowerStation
* updated BTService_Shoot
    * increased shot delay by 0.2 seconds.
    * changed burst range when full auto from 3-5 to 2-4.
    * changed shot delay time from game time + X to X - delta time to bring it inline with other timers in service.
* made GBPlayerState::SetInsertionPoint() BlueprintCallable
* updated BP_TeamElimination
    * insertion points are randomised if none have pre-set teams.
* updated WPB_TeamElimination_OpsBoard and WBP_Defend_OpsBoard
    * created from copy TH version, minus support for difficulty & terrorist count.
    * changed to show objective for each team.
* added variables to control spectating
    * bSpectateFreeCam - enable to flying around freely, no-clipping through world and viewing anything/everyone.
    * bSpectateEnemies - enable to allow following enemies
    * bSpectateForceFirstPerson - enable to force first person mode only when following another player.
    * updated game mode Blueprints where appropriate.
* updated BP_DefendTarget_Laptop to play typing noises locally when in use.
* updated default kits for Alpha, Bravo, Attackers & Defenders.
* updated BP_Deathmatch to add support for randomised player starts with bias based on distance.
* updated BP_StunAffect to remove itself when local player dies.
* updated WBP_ServerPassworldOverlay to submit on pressing Enter (Yay, finally!)
* modified UUWorksInterfaceCoreUser::DecompressVoice() to use older method using MAX_UNCOMPRESSED_BUFFER_SIZE
    * should make VOIP sound better since it was updated.
* updated BP_OpticalSightComponent
    * updated math used to determine RTT size - was still assuming screen would be filled.
    * updated logic to checked what the RTT size should be each tick and re-size accordingly
    FIXME - tweak to remove generating too many RTT's????
* Changed bUseSimpleShadowsForCharacters to True as default
     * Helps performance and can easily be changed by end user

* updated WBP_Tab_Master to add event to more easily set the tab to selected and fire off internal events nicely.
* updated WBP_InGameMenuManager
    * now uses soft class pointer in order to find or create proper screen to switch to
    * should slightly improve load times in editor, game & server.
    * reduces potential issues with Blueprints.
* updated WBP_SwitchScreen_Tab
    * now uses soft class pointer in order to find or create proper screen to switch to
    * should slightly improve load times in editor, game & server.
* updated admin screens.
    * now uses soft class pointer in order to find or create proper screen to switch to
    * should slightly improve load times in editor, game & server.
    * reduces potential issues with Blueprints.
    * updated GBPlayerController::AdminRequest() to use an event delegate, removing the Blueprints to reference each other back and forth.
* updated GBPlayerController
    * changed widget class variables to soft class pointers
    * now async loads widget classes when HUD is first created
    * should slightly improve load times in editor, game & server.
* updated GBGameViewportClient to only bind OnScreenshotCaptured() when requesting a screenshot.* added LadyBugTracker
    * replaced old bugs/issues with simple Report Bug screen using LadyBugTracker.
    * modified LadyBugTracker C++ to support jpg screenshot and additional info in its feedback option.
* removed RBTrelloPlugin (no longer required)
* removed LightMapUEr plugin (no longer used)
* moved ImageUtils.h out of WITH_EDITOR define in Runtimeutilitis.cpp in LadyBugTracker plugin.

* updated GBGameState
    * moved default character appearance/loadout logic to GBGameMode
    * renamed FReplicatedCharRestrictions to FReplicatedPlayerCharProfile and now use it ensure correct profiles are loaded by clients AND for restrictions.
    * created OnRep_PlayCharProfiles() to call InitCharAppearance() and InitCharLoadout() on local player controller for every profile required by game mode.
* updated GBGameMode
    * updated ApplyCharAppearanceAndLoadout() to always requires profile name.
        * fatmarrow pointed out that a blueprint that uses this function is the point of failure, hence the update.
    * updated calls to GBGameState in relation to default character appearance/loadouts
    * changed all calls to ApplyCharAppearanceAndLoadout() in C++/Blueprints to always supply a profile name based on current game mode/team combinations.
    * updated GenericPlayerInitialization() to call InitCharAppearance() and InitCharLoadout() on local player controller for every profile required by game mode.
        * required in stand alone games since the player controller will not be valid at the time when OnRep_PlayCharProfiles() is called.
        * almost identical logic to AGBGameState::OnRep_PlayCharProfiles()
    * removed InitCharAppearancesAndLoadouts() - profiles now replicated on GBGameState.
* removed GBPlayerController::ClientInitCharAppearancesAndLoadouts() - no longer required.
* updated GBPlayerController::InitCharAppearance()
    * only tries to verify skins on user appearance file.
    * will load default if it fails to load user appearance file, fails to generate char appearance or skin validation fails.
    * will error out instead of attempting to generate a random appearance if the default appearance is not found.
    * no longer uses LastUsed subdirectory - updated all affected Blueprints.
* updated GBPlayerController::InitCharLoadout()
    * only tries to verify skins on user loadout file.
    * will load default if it fails to load user loadout file or fails to generate char loadout 
    * will error out instead of attempting to generate a random loadout if the default loadout is not found.
    * no longer uses LastUsed subdirectory - updated all affected Blueprints.
* updated LadyBugTracker
    * changed AddScreenshot() to a latent function
    * changed Feedback() to generate its save directory based on the user saved directory instead of project saved directory (means it should work packaged).
* created GBGameMode::SetRoundLength()
* updated defend game mode support changing capture time via ops board etc
* updated all ops boards to make sure changes worked in standalone for all settings, not just lighting and terrorist count.
* updated BP_DefendTarget_Laptop
    * added server multicast start/stop typing sounds on clients.
    * increased volume of typing sound on.
* removed exec meta from GBPlayerController::SetGodMode() & SetNoTarget()
* updated GBGameMode::GetReadyRoomStart()
* created A_AIBarkWrap_Cue to use as BP_BadGuy's VoiceWrapSoundQue.
* modified FBugTrackingSystem_MantisSoap functions to make sure they call SetLoginData() if username and token is present.
* removed stubs from GBGameMode relating to RR start usage.
* updated GBPouch
    * placed ModularPouchClass reference with ModularPouchId.
        * updated or removed related functions.
    * made UIReplaceWithModular BlueprintCallable,
    * updated character and item editor blueprints to add/remove modular pouches as required.
       * this fixes ammo being listed as "Primary Ammo" and of shotguns multiplying said ammo over and over again.
* updated BP_ModularAmmoPouch_Master
    * changed reference to SetModularPouchClass() to SetMoudularPouchId().
    * added comments to some of the logic to make it easier to follow.
* created BP_Pouch_Ammo_LMG and assigned it to the MK48.
* updated GBGamePlayStatics::NukeActor() function to ensure target is detached from parent and parent is updated.
* updated GBTubeMagComponent to use soft class pointer for its base/default bullet item rather the hard class reference.
* updated GBPlatform to not force defaults if no pouches are attached to it.
* added bSecondShot parameter to GBFirearm::OnContinuedFiringEvent()
* replaced usage of native UE4 audio in BP_Firearm_Master with Wwise events.
* updated GBFirearm
    * no longer calls OnSetFireModeIndex() when BarrelSpatialSoundActor is created.
    * fixed OnStopFiringEvent() being called after an empty shot.
* updated BP_Firearm_Master
    * cleaned up logic around various wwise nodes.
    * created SetFireModeAudioSwitch event and called it from OnEquippedEvent.
* added some Wwise related settings to DefaultGame.ini
* added missing UE4Editor-LadyBugTrackerRuntime.dll from earlier submit.
* updated GBFirearm
    * combined OnStartedFiringEvent() and OnContinuedFiringEvent() in OnFiringEvent() with a NumberOfShots param.
    * added NumberOfShots param to OnStoppedFiringEvent().
* updated BP_Firearm_Master
    * updated to use OnFiringEvent() and check the NumberOfShots param to decide which audio event to post.
    * updated usage of OnStoppedFiring() to not post audio event unless the NumberOfShots is greater than 1.
* updated montage replication code 
    * added support for changing the next section.
    * added support for replicating client play montage to server.
* added DefaultBugTracker.ini & DefaultPlayerSettings.ini to WhitelistConfigFiles for Staging.

* created GBFunctionLibrary::IsGameWorld() - returns true if in a game world, editor or otherwise.
* updated FrontEndMap-NEW
    * add async load step before applying appearances and loadouts.
    * added macro to take out primary/other item, set off target and engaged alphas.
    * added macro to enable laser.
    * added randomised timer to toggle night vision equipment and post process effect.

* updated BP_DefaultHandgunAmmoPouch
     * listens for handgun to be added with magazine, the adds appropriate magazines and stops listening.
* updated BP_ModularAmmoPouch_Master
    * copies actor tags to ensure anything set to DefaultItem is not encoded into a kit.
    * will fail gracefully if it cannot find associated firearm type.
    * removed unnecessary logic
* updated WBP_CharacterEditor
    * will now do the add/remove modular pouches thing and update the summary for everything.
    * added slight delay to UpdateSummary() to allow magazines etc to be spawned in.
    * fixes incorrect secondary mag counts
* updated GBItem
    * will no longer encode items with the actor tag 'DefaultItem'.
* updated GBPouch
    * copies actors tags when replacing itself with modular version
    * will not attach to character if an existing pouch is already attached in the same location (fix for multiple default handgun mag pouches)
* updated GBCharacter
    * removed usage of bCanTakeDamage when in Ready Room.
    * updated CanT
    * removed AddDefaultItems() call in PossessedBy() - now only called once a loadout is applied somewhere.
    * removed bAddedDefaultItems variable and option to not destroy default items from DestroyInventory().
    * added ReadyRoom check to FellOutOfWorld()
    * added ReadyRoom check to Suicide()
    * added CheckStillInWorld() override to ignore KillZ if in ReadyRoom.
    * updated ShouldTakeDamage() to ignore damage if in ReadyRoom.
* updated GBGameMode
    * removed usage of bCanTakeDamage when in Ready Room.
* created BP_GBStaticLightPost to replace related Blueprints in City_Geo.
    * deleted GB versions of said Blueprints and related audio assets.
    * single Blueprint no handles light post, traffic lights and crosswalk, though the latter two do no animate.
* change default PlayerEnteredReadyRoom_Implementation to only change round stage to WaitingForReady if it was PostRoundWait when standalone
* made sure defend laps tops are all hidden when BeginPlay() is called, then randomised when round stage changes to WaitingForReady.
* slightly adjusted spawn protection area in DEF-PowerStation
* changed default setup of BP_M14_EBR_MOD2
* removed usage of gameplay ability based firing and reloads
    * added Pressed/Released() to directly to GBItem class
    * updated all affected C++ and Blueprints.
    * Firemode action is now known as ChangeFiringMode – you've been warned!
* updated firearm reload animations
    * sounds related to reload are now done here instead of inside the firearm Blueprints.
    * logic for reload is now handled by different animation notifiers
* updated GBCharacter
    * updated montage replication based on the system used by the gameplay ability system
* updated GBGameMode
    * new players are put into a waiting list and started as spectators.
    * a timer is used to spawn them in properly once their char appearance and loadouts arrive.
* added Maps/City, Maps/747 & Maps/Test to DirectoriesToAlwaysCook in DefaultGame.ini
* updated TE-Paintball
    * added character editor related actors
    * added triggers to prevent firing outside of the play area
    * added screenshot
* updated WBP_Settings_Controls to update Firemode bind to ChangeFiringMode
* updated WBP_TerroristHunt_Settings to include a Defaults button to reset custom AI settings.
* updated GBPlayerInput version number to 12
* updated GBPlayerController
    * switched from TSoftClassPtr to FSoftClassPath for widgets.
    * renamed FSoftClassPath  to FSoftClassPath 
    * added DeathOverlayWidgetClass as a UPROPERTY() based variable to make sure it isn't GC'd.
    * made sure both in game menu and chat overlay widgets are loaded when client hud class is set.
   * added log warnings if caching GBPlayerState fails.
* updated GBFirearm
    * changed RecoilCountUpdated() to accept RecoilCount as a parameter so it no longer has to have a valid GBInstigator.
    * switched from TSoftClassPtr to FSoftClassPath for montages.
    * added  as a UPROPERTY() based variables to make sure it related montages are not GC'd.
    * improved async loading of Montages in OnBeingEquipped().
    * updated all affected Blueprints.

* changed colour of defend target markers to prevent Scopey beating me
* updated BP_Character to prevent it binding OnPlayerStateReceived() on dedicated server.
* changed all the drag and drop operation colours from green & orange to green & pulsing-green
* changed platforms to use sphere as proxy mesh instead of existing pouch meshes to make it easier to select platform MOLLE points
* improved GBGuardPoint GroupName variable tooltip
* disabled friends buttons from In Game menu.

BUILD UPDATE #012: Creep

Another intended hotfix feature-creeped into a proper update, Build Update #012 is here with difficulty level selection (including custom settings) for Terrorist Hunt, a shorty version of that sweet Midwest Industries tactical AK, and the usual assortment of quality-of-life fixes and additions.

Read on as we highlight the cooler stuff, and don’t forget to leave your feedback, whether it’s in the comments below, forums (BFS · Steam), Discord or any of our social media channels.

› NOTE: All dedicated servers must be updated to work with the current build.
› NOTE: Some Controls/Gameplay settings have been reset with this build.
You will also need to set your Player Name again.

Build highlights

A.I.

Difficulty settings and customizable parameters

Terrorist Hunt now has four A.I. difficulty presets: Untrained, Trained, Experienced and Ludicrous. You can also create a custom A.I. difficulty setting by individually modifying each parameter. How you set up the A.I. difficulty depends on the mode you’re in. Let’s go over them:

Play Offline / Host Game

For single player and listen server multiplayer, simply use the “AI Skill Level” drop-down menu when setting up the Terrorist Hunt game. By selecting “Custom”, you can modify each parameter individually. For information on what each parameter does, simply hover the mouse over the line and it’ll display a tooltip.

› The Center of Mass Bone parameter (which defines what part of the character model the A.I. bots aim for) has 3 “b_Spine” options: b_Spine is closer to the hip, b_Spine2 is near the neck, and b_Spine1 is in between those two points.

The Ops Board (a.k.a. the insertion selection LED Panel) in the Operations Room has also received some configurable settings:

The map’s time of day—as well as the enemy’s expected resistance and difficulty level—can now be set directly from the Ops Board. Please note that these options are only accessible to server admins or offline (single player)!

The difficulty level can be set to any of the four presets, as well as “???”, which uses the custom A.I. preset drawn from whatever values you set in AISettings.ini (located in %LOCALAPPDATA%\GroundBranch\Saved\Windows).

Dedicated servers

For dedicated servers, the server admin can simply use the Ops Board (explained above) or modify the AISettings.ini file manually (%LOCALAPPDATA%\GroundBranch\Saved\Windows).

Distance threshold for aim error

The aim error code has been updated so that the deliberate missing now happens beyond a set distance, controlled by the DeliberateMissDistanceThreshold parameter. Within the set distance, A.I. are not likely to miss. Beyond that distance, the usual deliberate missing (determined by DeliberateMissTime and DeliberateMissBlendOutTime) kicks in.

› Want to disable the deliberate miss property entirely? Simply set DeliberateMissTime to 0 (zero).

It’s worth reminding that the default A.I. presets are, as everything else, subject to change. So make sure to share your experience with the presets and custom A.I. values, as it might be useful for further tweaks.

AK-74 MI CQB

Little sister to the AK-74 MI (formerly MWI), the AK-74 MI CQB has been added to the armory. For now, it’s essentially a better option for close quarters with no drawbacks. Don’t worry: proper stats (range, accuracy, weight etc.) will be worked out in the future for all weapons.

“I like how it’s like the AK but smol” —Jeza (also the author of the above screenshot, shockingly)

Controls guide and loading screen tips

In order to help new players get the grasp of GROUND BRANCH’s less conventional controls schemes, we’ve added a guide for the default controls to the main loading screen. All loading screens now also carry valuable gameplay tips. We’ll be adding more tips as we go—feel free to suggest some of yours!

› The default controls graphic might appear distorted on non-standard (16:9) aspect ratios, despite us specifically telling the engine to account for those. Damn you, UE4! *shakes fist*

Miscellaneous fixes

  • Foliage no longer blocks firearms, nor prevents leaning.
  • The Offset Rail can again be mounted anywhere along the top rails (rather than only the forearm top rail).
  • Mouse sensitivity settings will now be preserved upon change and no longer reset to different values.
  • You can (once again) select the default zero for individual weapons and optics. Go to SettingsGameplay and look under Default Zeros (right-hand column). Add an optic/weapon with the [+] button underneath the list, then set the desired custom zero for it.
  • Fixed broken character and weapon movement/rotation in the Customize Operator screen when it was accessed from the Main Menu. Nope, it’s done broke again. [REDACTED] [home office being trashed in the background]

That’s it for Build Update #012. Until the next time!

P.S. We’d like to thank Rangda for the badass screenshots he’s always providing for the vast majority of announcements and social posts we make. Tier 1 screenies, dude!

Change log

Build version: 1026

Client

Steam Build ID: 3679830
Size: 662 MB

Dedicated server

Steam Build ID: 3679833
Size: 33 MB

FIXES

* FIXED radio volume issue on SmallTown
* FIXED bush in Power Station missing proper bullet collision settings
* FIXED Bush in Power Station with bad visibility collision
* FIXED firearms being obstructed by foliage
* FIXED foliage blocking ability to lean
* FIXED various collision bugs in Storage Facility
* FIXED see through boulder in Storage Facility
* FIXED rendering issue with blinking light in Storage Facility tunnel
* FIXED offset rail being restricted to top rails instead of sight & top rails.
* FIXED mouse sensitivity appearing to reset to some other value when changed in UI while engaging a sight.
    * for such a seemingly small change, it required a lot more work then expected :P
* FIXED not being able to add or edit a default zero entry in the settings menu.
* FIXED Always Run not toggling on/off when set and already in game until you hit Run again
    * will still need to release run key if it is set while run key is held down (get over it)
* FIXED not being able to move/rotate in the character editor from the main menu.
* FIXED crash due to destroying ability system component while an ability had it locked.
* FIXED breaching charges being able to kill targets through a wall.


CONTENT

* small tweaks in radio-related assets
* experimenting with new water material in Depot
* slight update to splash screen


A.I.

* updated GBAIController
    * replaced AimErrorPeriod with simpler AimErrorUpdateInterval
        * controls how often we the aim error alphas are changed (random between -1.0 to 1.0).
    * changed target distance aim error from blend to new to instant switch
    * added aim error based on AI movement speed
    * changed target velocity aim error from blend to new to instant switch
    * added distance threshold to deliberate miss code
        * below this distance the deliberate miss is blended away due to being too close.
    * added SkillLevel support
        * added 4 skill level presets to DefaultAISettings.ini (1-4)
        * added defaults for custom skill level to DefaultAISettings.ini (actual custom saved in AISettings.ini in save directory)
* added Difficulty to GBGameMode
    * currently only controls the AI skill level
        1-4 corresponds to the skill level presets.
        < 1 makes it use what ever custom skill level is defined in by default or under save directory.
    * value is replicated on GBGameState for use with UI elements etc.
* updated WBP_TerroristHunt_Settings to exposed all AI settings
    * required some updates to WBP_Config_XXX widgets to allow settings to be instantly saved.

* updated GBAIController
    * exposed ReactionTimeBase and ReactTimeRandom to settings
    * added bBeSuspicious BB boolean that is set when a non-hostile/non-friendly actor is sensed
        * this is a simple quick solution to getting AI to react to explosions, doors etc for now
        * updated to Blackboard and affect behavior trees.


CODE

* modified DamageMeleeWeapon
    * added option to use mutl instead of single trace
    * added list of surfaces to ignore during trace.
* removed unused animation notifier
* updated WBP_InGameMenuManager to use a single C++ function instead of looping through all child widgets :|

* updated GBPlayerSettings
    * changed all settings to config values and class to a config class
    * forced LoadSettings() to reload the config from disk.
    * created ApplySettings() to ensure config values were applied without the need to called LoadSettings() first.
    * changed default zero struct to use PrimaryAssetDataId instead of a string to hold the info about what item to zero for.
    * removed unneeded default zero functions.
    * changed CrouchType & GrenadeSwitchType from enums to int values so they work with UI widgets more easily.
    * updated all WBP_Settings_XXX to reflect changes
* updated GBAIController::InitSkillLevel() to use a full path to the AISettings.ini
* changed "Ridiculous" to "Ludicrous" to describe skill level 4 for AI
* updated UGBGameplayStatics
    * created new functions CanDamageStaticMesh(), CanDamageSkeletalMesh() & SphereOverlapDamageableComponentsSorted() based of functions prototyped in grenade explosion Blueprint.
    * created ConeOverlapDamageableComponentsSorted() based on SphereOverlapDamageableComponentsSorted() that checks that the component origin OR bounds are within a cone.
* created GBCharacter::CanDamageRadial() as a shortcut to call UGBGameplayStatics::SphereOverlapDamageableComponentsSorted() with require skeletal mesh & appropriate bones
    NOTE: reduce bones checked?
* updated GBGameInstance 
    * added bShowDefaultControls bool with function to clear it.
    * added OnRemoveLoadingScreen delegate for loading screens to use.
    If not bound, will remove any loading screen present.
* rigged up WBP_StartupScreen to show up on initial load
* created WBP_RandomHint
    * used by start up and loading screens to display hints 
    * randomly picks a hint that isn't used until it has gone through all over them, then reset
* fixed initial loading screens defaulting to 1280x720
* re-imported default key map texture at proper resolution
* quick grammar/spelling pass on random hints
* added pulse animation to "Continue" button on WBP_StartupScreen to draw the eye slightly more