BUILD UPDATE #009: Line of Sight

aIt’s been just over a month since our last update, and we’re now nearly a month into 2019, at the end of lovely January. While most of you freeze your asses off and the rest of you—in the southern hemisphere—melt your asses off, this dev team—about 67% frozen asses and 33% melted asses—has been working hard on Build Update #009.

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

This build’s highlights include listen server improvements, some very welcome A.I. adjustments, new controls options and improved default bindings, and fixes galore. Let’s take a closer look at the highlights and, as always, the full change log awaits at the end of the post. Whoop!

Build highlights

Listen servers streamlined

Listen servers have been cleaned up and are a lot more functional with this update. Among the improvements, you can forget about port forwarding and invite your Steam friends directly into your game.

To invite Steam friends into your server, start a listen server (via Host Game in the Main Menu), hit Esc once loaded in and then click Friends in the top menu bar. From there, simply select the friends you’d like to invite and click the Invite button (bottom-right). Once accepted, your friends will be brought straight into your server.

› Listen servers do not appear in the Server Browser. This is intended.

A.I.: Aimbot Interrupted

It took us a while, but we’ve finally managed to tone down the A.I.’s reaction time and accuracy. The days of getting 360-no-scope’d and John Wick’d by seemingly unsuspecting enemies are over, as bots are “much more likely to miss initially and take a moment to correct even after they have turned”, according to Kris. We’ve done quite a bit of testing and those situations where you feel you’ve been unfairly killed were definitely reduced massively.

Vegetation is your friend

Another thing that should make solo and co-op play a lot more satisfying is the fact that foliage will now effectively block the A.I.’s line of sight. It’s a binary system at this point (they either see you or not) with some rough edges to be rounded out, but generally speaking, We can’t see them—they can’t see us™ is now activated. We’ll be upgrading this system with visibility thresholds in the future.

Improved enemy patrol routes

Enemy bots in Power Station, Tanker, Depot and Small Town have received both placement and navmesh updates. Tangos should have more varied spawn points and patrol routes, as well as better overall navigation.

› Storage Facility has not yet been updated with this system.

New enemy skins

We have updated the Depot and Small Town tangos to use new skins and loadouts.

New enemy skins in Depot

New control options and default bindings

Hold Crouch

You can now opt to hold the Crouch key (default C) to remain crouched instead of pressing it to crouch and again to stand up. To select that option, go to Controls > MovementCrouch Type and select Press (Momentary) from the drop-down menu.

Select your preferred reload type

Are you more of a speed reloader than a tactical reloader? You can now invert the control scheme for reloads and make a single press of the Reload key (default R) do a speed reload (where you drop the current magazine) and a double-tap do a tactical reload (where you put the current magazine back into the pouch). To do that, go to Gameplay > Firearm > Reload and select No Retention from the drop-down menu.

New default bindings

We have changed/added the following default bindings:

  • Drop Item (previously Z) is now bound to J to prevent accidental drops.
  • Commo Rose/Radio Menu (previously unbound) is now bound to G.
  • The Console can now also be accessed with Shift + 6 (^).

› You may need to reset your controls and/or delete the files located in %LOCALAPPDATA%\GroundBranch\Saved\Config\WindowsNoEditor for the new default bindings to apply.

The current default control scheme is as follows:

We’ll be adding this key map to the game menus at some point too.

Cleaned up display names for items

We have updated the display names of most in-game equipment for consistency, accuracy and, in some cases, to stay on the safer side of legal matters. We’ll keep updating them as needed.

NEW DEVELOPMENT MAP: City

John has been working on a new urban map called City, accessible in offline play under the “Development” category.

We’re leveraging Epic’s UE4 Marketplace to get more maps in (and playable) faster, though these assets still require a lot of custom work to become GROUND BRANCH maps. Initial focus for “City” will be PvP—as will be the focus of our next major Build Update.

Miscellaneous fixes

  • Aiming down sights no longer defaults to secondary (offset or piggyback) sight.
  • AK-74 MWI iron sights now work properly.
  • The AK Rail Adapter is no longer compatible with the AK-74 MWI.
  • Exorcized Christmas spirit from operators’ facial hair.
  • Purged the insanity-inducing sound loop caused by ejected casings colliding with the environment. [silent fireworks]
  • Radio chat can no longer be heard by the other team while in the Ready Room.
  • Fixed abrupt turning breaking character model spine.
  • Player’s dead body will no longer remain in the map when retrying a solo (offline) Terrorist Hunt.
  • Headset earpieces no longer clip through MICH helmet.

Whoops!

We slipped and a couple of fixes were not checked in before build packaging: Those are the OKP-7 reticle fix and the scope magnification adjustments. We’ll likely release them in a hotfix patch soon. Sorry!

Patch notes

Build version: 1025

Client

Steam Build ID: 3490483
Size: 2.1 MB

Dedicated server

Steam Build ID: 3490501
Size: 45 MB

* FIXED bad material settings on AK suppressor that made it too shiny
* FIXED ability to use AK rail attachment on new AK-74 MWI 
* FIXED ComTac headsets for MICH helmet not fitting properly
* FIXED AK-74 MWI default rear sight getting messed up when no other sights/optics attached
* FIXED incorrect fire selector positions on AK-based weapons
* FIXED white beard in certain lighting conditions
* FIXED initial sight selecting picking secondary sight instead of main
* FIXED incorrect mount setup for PMII 5–25x scope that required only 1 rail slot to mount
* FIXED Small Town Team Elimination spawns being shown outside playable area
* fixed small static mesh actors having simulate physics set to true on server
     * should stop players being shot up in the air randomly on Depot and other maps.
* fixed bug with ToPlayArea/ToReadyRoom admin commands that spawned "puppet" characters (credit Error404)
* fixed SpawnCountMin on GBAISpawnPoint's being set to -1 when SpawnCountMax was 0.
* fixed more misc navmesh issues in Depot
* fixed more misc navmesh issues on Power Station & Tanker Ship
* fixed automatic squad ID assignment in GBAISpawnManager to not use squad id 0 (global squad)
* fixed AI not looping back when reaching the end/start of patrol route that does not branch or loop to itself.
* fixed log spam in GBAIPath
* fixed AGBAISpawnManager::CreateOverDurationTimer() to obey order in which create over duration target spawn points are assigned to it.
* FIXED collision issue on red stairs in Power Station
* FIXED missing steps in Tanker Ship engine room that trapped A.I. in small area
* fixed patrol path on PowerStation that would get AI bunched up
* fixed more misc navmesh issues on PowerStation
* fixed turning quickly causing animation blueprint to break the player's back
* fixed log spam from overly enthusiastic dropped items
* fixed log spam about loadout/appearance reuse
* fixed particle collision causing spamming
* fixed invalid reference in BP_ImpromtuLadder_BFS
* fixed invalid reference in BP_TerroristHunt
* fixed GBGameState() functions GetLightingScenario() & GetLightingScenarioTag() not being public
* fixed possible invalid in BP_RandomProp
* fixed dead body being left behind when click "Try Again" in offline play
* FIXED missing collision on rock near top area on StorageFacility
* fixed own body not having loadout applied on client
* fixed delay on adding name tag to vest platform
* fixed equipped firearm being removed when leaving shooting area in RR
* fixed invalid AI appearances on TH-SmallTown
* fixed navmesh modifier on S_MountainRock
* fixed incorrect collision on American_Elm_Desktop_B_FoliageType
* fixed invite command string not being cleared once used
* fixed name used in for invite screen being blank if no nickname was set by local player
* fixed bug in UWorld that caused NetMode to be standalone when compiled with editor.
* fixed bad placement of red dot in BGLowVis_GunnerM4.kit
* fixed voting commands/server name not showing up
* fixed unexploded breaching charges not being removed on round reset.
* fixed RR roster white boards not showing teams
* fixed nullptr when banning someone that is offline
* fixed LOD not being forced to Zero in item editor
* fixed minor log spam from ZKVote class
* fixed character and items from character editor being replicated to connected clients when listen server host edits their character
* fixed radio being heard by other team when using radio in RR
    * note - can still hear other team talking on radio outside of RR if in close proximity
* fixed angled sights being considered during when picking an initial sight to use.
* fixed VOIP radio not setting last talk time to 0.
* fixed local VOIP in RR when not on a team.
* fixed admin name check in AGBGameMode
* fixed warning about missing game state in WBP_TerroristHunt_Settings while in main menu
* fixed ban message – now just gives expiry date rather than remaining time in seconds.


ENGINE
* wrapped warning about additive animation in AnimNode_SequencePlayer with a WITH_EDITOR define.
    * this is shown in error for GB anyway. This change simply stops the log spam about it.


CONTENT
* Updated holo sight reticles for clearer visuals
* Added in military style laptop prop
    * Can be used for various game modes or as a static map prop
    * BP created that allows for open/close position and on/off

* SmallTown A.I. setup
* Cleaned up some navmesh issues on Small Town and rebuilt lighting

* updated TH-Depot
    * fixed more misc nav mesh issues
    * fixed misc patrol path issues
    * tweaked AI spawn points priorities
    * Did pass on new A.I. paths and setting up spawns
* Optimized plastic hit effect 
* First pass on new City map (Development)
    * SetupLevel streaming volumes so underground isn't rendered at same time as above
    * Cleaned up some LODs and collision on Meshes
    * Added "buffer" areas(stairwells with corners and hallways) between above ground and below ground to mask level streaming
    * Cleaned up a lot of StaticMesh collision and LODs
    * Created DV version of map
* Cleaned up display names for weapons, sights and some attachments.
* Changed collision preset on painted foliage

* Set up proper PhysMaterials on foliage meshes


AI
* added new spline based AI patrol routes on Power Station and Tanker Ship
* improved sorting function in BP_TerroristHunt_AISpawnManager
* tweaked BT_GBAI_Following & BT_GBAI_Patroling update service time.
* tweaked BTService_UpdateTargetPathPosition
* added ShowDebug option "AIaim"
    * shows origin focal point and final focal point adjust for aim error
    * displays aim error info text at AI character.
* added AimErrorAngleDifference curves to AI
    * based on yaw/pitch difference
    * overridden by larger values, ignores small values.
    * after timer based on yaw/pitch difference, leaps to zero.
    * will make AI much more likely to miss initially and take a moment to correct even after they have turned.
* added service to BT_GBAI for determining follow position (BTService_FollowUpdate) instead of just bum rushing them.
* updated AI
    * created BT_GBAI_Patrolling, related service and tasks.
    * created BT_GBAI_Following, related service and tasks.
    * updated BT_GBAI to run new sub-BT's.

* Storage Facility has NOT yet gotten the AI placement reworked with the new system.


CODE
* began updating AI spawning
    * updated GBAISpawnPoint, based of GBInsertionPoint
        * supports from 1 to n AI per point
        * auto-generates spawn offsets allowing for easy squad generation
        * can still be used for individual AI placement
        * supports randomly spawned in min/max range.
        * can be set to active/not active, to enabled or disable their use for spawning AI.
            * useful if you want to disabled a spawn close to a chosen player insertion point.
    * updated GBAISpawnManager
        * only support from GBSpawnActorInterface to GBAISpawnPoint.
        * improved general flow
        * added GetSpawnPoints() with get active only parameter.
* updated TankerShip & PowerStation
    * replaced existing AI Spawns with AI Spawn Points
    * replaced existing way points with new ones.
    * improved nav mesh pathing and pathing in general using nav mesh modifiers and nav link proxies.
    * PowerStation needs some additional fixed spawn points
* moved spatial sound tag support from Blueprint to C++ for Mikson
    * see BP_Firearm_Master OnSpatialSoundTagChanged event.
* added DefaultSpatialSoundTag to world settings
    * use this to set default tag to Inside/Outside as required.
* BP_Firearm_Master: added acoustic space management, firearm type management and fire sound Wwise event (all are currently disabled until the first Wwise update is ready)
* added first set of Wwise events
* updated and moved inventory soundbank (previous one marked for delete)

* added UnfocusedVolumeMultiplier to audio settings (credit lt_delay)
    * Lets you set the volume the game should be at when it loses focus, instead of simply muting everything.
* added press/momentary crouch option (credit AGAM)
* updated GBInsertionPoint based on GBAISpawnPoint
    * default handling of spawn offsets etc is all C++ instead of Blueprint based.
    * updated all affected maps.
* created GBAIPath
    * spline based solution for laying down patrol routes etc
    * supports drag-and-drop branching to other paths or looping to itself.
    * supports basic weighting, with direction and randomised bias.
    * includes in-editor button to validate all path spline points in one go.
    * began laying out new patrol paths in Depot for testing.
* added C++ functions to Get/Set UnfocussedVoulmeMultipliers

* replaced bToggleCrouch=True with CrouchType=1 in DefaultPlayerSettings.ini

* added IAISightTargetInterface to GBCharacter and implemented CanBeSeenFrom
    * needed to be able to quickly test WTF was going on with AI sight traces - this allows for that and more later.

* moved drop default binding from Z to J
* added default binding for radio menu to G
* added Caret as default console key to better support German keyboard layout

* updated GBBulletMovementComponent
    * leveraged unused EPhysicalSurface enumeration to hack in support for ignore bullet collision on certain materials until we update the PM_XXXX assets properly.
    This is to allow us to use complex collision for foliage, but have the bullet ignore collision with leaves.
* created PM_IgnoreBullets for use with materials to make them ignore bullets.
* rigged up GBAIController to read AI sense config sight settings from the AISettings.ini file, based on the lighting scenario (Day/Night)
* updated GBAISpawnManager
    * added bLivingOnly parameter to GetAIControllers.
    * replaced internal AI controller weak pointer array with brute force method using the world controller list.
        * should fix incorrect terrorist count
    * removed OnAllAIControllersDestroyed delegate and related functions.
    * updated all affected C++ and Blueprints.
* added OnCharacterDiedEvent() to GBGameMode
    * FIXME - why not just make the CharacterDied() event a native implementable???

* updated GBGameUserSettings 
    * added ApplyNonResolutionSettings() override.
    * removed need to call ApplySettings(true) GBGameEngine->Init().
* updated GBGameEngine to remove call to GBGameUserSettings->ApplySettings(true) 
* updated copyright date from 2014–2018 to 2014–2019
* added UE_ALLOW_MAP_OVERRIDE_IN_SHIPPING publid definition to GroundBranch.Build.cs
    * should allow the command line from invites to work.
     e.g. steam.123123123123 

* added frame rate limit section under Settings > Video

* added check to BP_Trigger_CustomiseOperator to make sure player is still in trigger before overriding input
    * should fix instances of character editor screen appearing for no reason instead of shooting.
* added check to BP_Trigger_ShootingRangeSafeDirection to make sure player is still in RR and outside trigger before overriding input
    * should fix instances of character not being able to shoot.
* added ServerConnectString to GBPlayerState
* updated WBP_FriendList to use ServerConnectString from GBPlayerState

* added invite loading screen
* setup basic Steam rich presence 
* disabled various stubs to reduce log spam (yay!)
* added stubs to platform to test name tag online (boo!)

* added support for inviting while in-game
* removed need for separate version of loading screen for invites

* updated ZooKeeper to ensure local host of listen server is in the admin list
* updated GBGameSession to ensure local host of listen server is up to date
* improved UGBCharLoadoutFunctionLibrary::DecodeJsonKit_r() error logging when a PrimaryAsset fails to decode
* removed AI Settings stub from GBAIController
* added AI state to GBGameState
* updated WBP_TerroristHunt_Settings to make TerroristCount spinner match current terrorist count
    FIXME - is spinner working properly?

* VOIP icons for other players now appear while in RR or Spectating
* player unique ID's are shown in player list for admins to make it quicker to identify and track trolls/griefers
* added admin check against name changes to prevent trolls/griefers pretending to be an admin
* added additional rosters to RR to show all players near server info and team players inside ops room.
* changed method used to make locker name tags update to one that is more brute force
* added option to player settings to choose what a single tap of reload does (default retention, like it is now)
   * credit to Wächter for the idea

* added radio icon to WBP_VOIPUser
* updated ZKTeamKill
    * team killers list is now properly saved to the TeamKill.ini
    * shortened timers used to check team killer kicking and banning
    * fixed issue in which it would not ban a team killer that was offline
    * added timer to check the last time a team kill was made and reduce the team kill count by one (configurable, default time 30 minutes)

Share this Post: