Holiday build available!

December 21, 2016

A new build of Ground Branch is now available!


While we have been spending a lot of effort on making sure Ground Branch is stable and performs well before heading into the final push for Early Access, there are a few connectivity issues with this build. We really wanted to get them sorted before putting a new build out, but given family time over Christmas and some personal challenges some of us are currently facing (Please see previous news post), we decided to put one out now instead of holding off any longer. With people being off work or out of school our hope is the added testing will help us work through the problem. We will also be doing a follow up build with more fixes and some new stuff that wasn’t quite ready very shortly after the new year.

Build Version 1015

Build 232311


Approximate Update size: 3.2GB

Steam build Id: 1526238

Dedicated Server Steam build Id: 1527124

Known Issues


Tip to get around online connectivity issues (thanksJeza!)

  • Joining and in progress game (JIP) if the round has started then say if your the 3rd person joining you’ll get the ‘black screen’ then kicked back to ready room, while the other two are on the map. Quick fix is to really just restart the server and make sure all have joined before progressing. Long and short of that is dont start a round until all are ready. As JIP kills its for the last player to join.


Engine Update

We have officially moved Ground Branch to version 4.13.1 version of Unreal Engine.


Check out the full engine release notes here:

We will be utilizing various new features and updates as we go, though we have already seen some performance gains and stability improvements from various engine changes.

General Changes

There has been a lot of work on streamlining and optimizing various systems as well as bug fixing. While that doesn’t usually translate to a lot visually in game or fancy screenshots here, you will notice it while playing. Systems that handle game modes, projectiles, item attachment and player controller have been simplified and improved. Overall, online and Terrorist Hunt sessions should be more responsive and stable as a result.

Dropped Items

The beginning stages of dropped items is now in. At the moment you can just drop an equiped weapon and pick one up from the ground, but this system will eventually allow you to exchange ammo and other gear with other players.

Current key setup is use Z to drop currently equipped item then crouch nearby and look at item on ground to highlight and pick it up.



We added in a new Marksman rifle… the SVD!


Some sound work was done for the AK74 and Galil rifles. We are still limping along with our sounds until we have the funds to do things properly. Expect a complete overhaul of the entire sound system post Early Access.

Muzzle flashes have received a bit of work. Some may be a little over the top now, but they will get dialed back as needed as we go.

The pistol grip was reworked a bit to look better. Previously it looked fine in third person but awkward in first person view.


Breaching charges now consist of the charge itself and a detonator. To detonate a placed charge you will now need to equip the detonator as you would any other weapon.


New Map

The rough out for a new map named Alleyway is included for online play and training. Eventually it will also be setup to work with the Terrorist hunt mode as well. The map is in its early stages and most certainly will go through some changes based on feedback and playtesting.


Terrorist Hunt now on Tanker Ship map

You can now play the Terrorist Hunt game mode on both night and day versions of the Tanker Ship…… We will warn you though, its not easy! Its a lot of fun with a group of friends. This is a good testing map for AI because it is almost a worst case scenario for managing AI resources and placement due to the size and design of the map. The fact that it works at this stage is a big achievement and it will go through many revisions as we go.


UI Improvements

There are some new icons being used in the UI. While the overall UI isn’t final, it is what we will be entering Early Access with so it’s getting a bit more polish.


The Single Player menu is getting streamlined a bit so you will see the latest revision of that. Select a game mode from the dropdown, set a time limit (or other mode specific settings if available) then the map you want to play on.  Be aware, there is a current bug that does not filter out team game modes.


The Terrorist Hunt mode includes various AI setting that allow you to tweak how the perceive things around them. These are there for testing and most likely will not make it to the final game. At least not in that form.


The hit/player damage system is starting to get a bit of work. For now, the blood effect when shot will leave droplets as well as spray onto vertical surfaces.  Lots of work still to do in this area but its better than what was there before!


Lots of work to the AI’s perception and analysis of the surrounding areas. The AI in Terrorist Hunt are now a “smarter” and are starting to act more as expected. Still a very long way to go but they are fun to play against even at this stage.


All in all a pretty big update, though mostly “under the hood”. Thanks to all for the continued support and we hope you enjoy messing around with the new build and have a Merry Christmas and a Happy Holiday!



* FIXED flickering outline when trying to pickup dropped firearm
* FIXED bad rotations on dropped firearms
* FIXED window covers in Small Town being pentratable
* FIXED firearm being put away on spawning
* FIXED missing outline on maps without post process volume
* FIXED being locked into non-engaged position
* FIXED – wrong texture on SVD rail adapter
* FIXED bug in GBRailAttachment::AutoAttach() that incorrectly attached rail returning incorrect results
* FIXED optical sight camera distance calculation
* FIXED camera location based on optical sight camera distance
* FIXED missing icons in radial menu entries
* FIXED bug in GBBulletMovementComponent when simulated trajectory
* FIXED AK74 end firing loop attenuation
* FIXED – Attenuation on AK firing sounds so AI can properly hear them
* FIXED inability to open flipped Door_Swinging
* FIXED bad index check in UTacticalPathFollowingComponent::SetMoveSegment()
* FIXED GetGameModeList() with packaged version of game.
* FIXED GetItemsBy<XXX> with packaged version of game.
* FIXED SurfaceLinks with packaged version of game.
* FIXED BP_MissionTimer in ReadyRoom_BFS (dupicated it as BP_MissionClock, replace references, pissed off original)
* FIXED Killhouse_Timerun_Day/Night
* used new WaitForGameState() BP function to fix level BP
* fixed white board fonts
* fixed operator table
* FIXED missing NVG prompt in SH_TargetTest_Night (removed it)
* FIXED preview mesh warnings reported during packaging
* FIXED GA_Sprint failing to end on server when told to by client.
* FIXED possible nullptr in AGBItem::OnBeingEquipped()
* FIXED clothing not being set as an ‘appearance’ item
* FIXED clothing skins not being replicated via kit info
* FIXED alpha pants & alpha shirt crash duing on LoadAsset call (I hope)
* FIXED dropped items physics being based of previous attach location
* FIXED glove arms using wrong material index
* FIXED arms skin colour not matching head when gloves/head change
* FIXED loading screen displaying map information when going to menu
* FIXED log spam from WBP_SoloTerroristHunt_Settings
* FIXED & improved BP_Head_Master
* FIXED possible none in round state on dedicated server
* FIXED WBP_ServerGameMode_DropDown
* FIXED possible nullptr in AITacticalPerceptionComponent
* FIXED SmallTown_Day player starts
* FIXED BP_Clothing_Master using AttachToComponent() instead of AttachItemTo().
* FIXED BP_TerroristHunt using AISpawnManager as AIDirector
* FIXED possible none in BP_Head_Master
* FIXED icon reference in GBLadderComponent
* FIXED possible null with GBGrenade
* FIXED possible none with BP_TextRenderActor on DedicatedServer
* FIXED being able to place ACOG’s and other sights on firearm or adapter rails
* FIXED being able to have multiple sights of same class on one firearm
* FIXED dropped items not destroying associated items
* FIXED not being able to save as or move existing maps due to level summary
* FIXED Bad lighting on outside of TankerShip main structure
* FIXED popping in of LOD on small objects at front of TankerShip
* FIXED AGBFirearm::GetEmptySlingPoint() returning ‘none’ when it shouldn’t.
* FIXED outline of dropped firearms not being displayed.
* FIXED firearm starting attached oddly to back in ready room
* FIXED bad collision on Elephant Grass and one of the rock pile meshes in Depot
* FIXED looping pasue in ready room ambient sound file
* FIXED hearing ready room ambient sound in maps
* FIXED deprecated functions in menu managers.
* FIXED missing includes in Blueprint function libraries.
* FIXED bad collapsed nodes in M16 Blueprint
* FIXED Arm patches have bad UV and odd shading on both Alpha/Bravo torsos
* FIXED standalone games with teams not initialising player kits for teams.
* FIXED BP_WristDevice being added to saved kits (its a default item!).
* FIXED kits being saved via operator menu without a file name.
* FIXED M16 not releasing bolt.
* FIXED GBGameMode::InitNewPlayer() not being called.
* FIXED LightMapUEr Plugin causing standalone game to crash.
* FIXED Trigger_PrepArea detection of other triggers it encompasses
* FIXED Trigger_PrepArea not adding world prompts in non-round based games.
* FIXED Trigger_Ready not working in non-round base games.
* FIXED need for round manager to dicate when play area is open.
* FIXED ReadyRoom team trigger now set correctly
* FIXED text chat auto-submitting on losing focus
* FIXED inventory not being destroyed when character is when ragdoll is server side.
* FIXED potential none in Mask_Balaclava.
* FIXED camera flipping 180 on death
* FIXED being able to push/move other characters
* FIXED Pothole area in SmallTown map along building wall
* FIXED Collision on cinderblock wall that wouldn’t let you hop through broken area
* FIXED Missing PhysicalMaterial on train car materials. Should get proper hit effect now
* FIXED Bad collision on ivy mesh used in some Depot compount wall corners
* FIXED Getting stuck between bush and tree on SmallTown map
* FIXED waiting for input on initial loading screen
* FIXED reload anim notifiers not taking producing sounds & curve based animation on non-owning clients
* FIXED head collision geometry in Team_Physics
* FIXED jitteriness of dead bodies by modifying Team_Physic bodies & settings.
* FIXED Missing collision on wood fence section (Mainly found in Depot)
* FIXED possible nullptr in GetEyeBias()
* FIXED offset rail with sight usage
* FIXED ladder component not clearing correctly
* FIXED attentuation on Galil & SVD firing sounds
* FIXED TankerShip_Night interior trigger setting that messed up AI
* FIXED Being able to see back into ReadyRoom once walked through door to enter map
* FIXED Untextured pole at front of TankerShip (removed it)
* FIXED Extra door frames on TankerShip bridge doors (removed)
* FIXED projectile ignore bullet warning triggers
* FIXED Black areas on Killhouse ground
* FIXED incorrect map name ni BP_ReadyRoom_Streamer for non-team maps.
* FIXED Play drop down position in WBP_FrontEndMenuManager
* FIXED missing Operator bench in Aircraft Takedown maps
* FIXED Incorrect model name for AK74M in UI
* FIXED M16 not having 3rnd burst
* FIXED misaligned bottom attachment rail setup
* FIXED chat message not showing up
* FIXED chat message text wrapping too much
* FIXED black terrain on Killhouse Night
* FIXED missing map images for Alleyway, Killhouse Night, Shootrange Night and Depot
* FIXED bad framerate in SmallTown map
* FIXED missing GetScreenResolution node reference in WBP_PostLoadingScreen
* FIXED input still being enable on ladder after auto-mounting & climbing ladder
* FIXED dirty quality levels not being detected in WBP_Settings_Video
* FIXED WBP_CenterMessage not fading out properly.
* FIXED quit drop down options
* FIXED spawning in play area on intial player login
* FIXED WBP_PreLoadingScreen
* FIXED GBReadyRoomStreamer streaming in ready room even if one isn’t required.
* FIXED possible None in CoverUpdateServer Blueprint
* FIXED possible nullptr in SquadMemberComponent.
* FIXED possible nullptrs in GBAIController.
* FIXED bad transform when packaging GBReadyRoomStreamer by created a dummy scene component to use a RootComponent.
* FIXED IR Strobe & PEQ Designator icon not showing up in radial menu
* FIXED call to deprecated RemovePlayerStarts BP_TerroristHunt & AITestGameMode

General Changes


* Optimization to Shooting Range maps
* Moved trees/bushes into foliage system
* Combined meshes for fewer draw calls
* updated online plugin VOIP interfaces to fix bugs & add ModifyVoiceAudioComponent() in player controller.
* updated GBGameMode & GBGameSession to fix possible issues with only post-UE413 GameMode::PreLogin() being called.
* disabled net.IgnorePackageMismatch cvar hack due to UE413 change
* added duration check to BannedPlayerList login check.
* new players start wait in spectator mode until player data (kits etc) is up to date, then spawn in.
* changed radio start/end squelchs
* Setup Mk48 to have proper shell ejections
* Added bone and AnimBP control for dust cover manipulation
* Set ejection emitter to have shell casings come out bottom opening and belt clips from the topejection port
* Added in movable bolt for when dust cover is open and weapon is firing
* Renamed old “bolt” bone control to charging handle as that is more accurate
* updated GBItem class
* created ChangeOwnerOnlyRelevancy() to set bOnlyRelevantToOwner and call appropriate network related function
* created CloseNonOwnerChannels() to use to remove item from network for all non-owners when bOnlyRelevantToOwner is set to true.
* updated GBPouch class to call ChangeOwnerOnlyRelevancy(true) when adding a child item
* updated GBMagazine class
* changed Count to replicate for everyone (not just owners)
* added OnCountUpdatedEvent() that is called by AdjustCount() or when Count is replicated.
* simplified & improved GBDroppedItem class
* simplified & improved GBItemProjectile class
* updated BaseFirearm Blueprint
* created copies of game mode, state, systems etc from /Content/Bluerpints/* in /Content/Gameplay/*
* moved base character, player controller etc from /Content/Bluerpints/* to /Content/Player/*
* added ActiveClassRedirects to DefaultEngine.ini to automatically replace Blueprints that have changed locations upon loading map.
* removed fixed/old/unreferenced Blueprints.
* updated Killhouse_Timerun_X to replace old game mode reference
* updated Exampl_Deathmatch_Map to replace old game mode reference
* updated ini & uproject file to enable UE413 version of OnlineSteamSubSystem
* corrected minor issue with GBBasePlayerController::GetApperance/LoadoutString() for clients.
* ENGINE CHANGE * supressed error relating to issue UE-26025
( )
* kits are now saved to & loaded from external files in /Users//Documents/GroundBranch/*
* created GBKitFunctionLibrary::PrettifyKitString() to convert based or condensed kit string to human readable version.
* updated Operator UI to ensure kits are saved in a human readable version.
* created TeamDeathmatch game mode.
* corrected minor logging issue in GBGameMode
* changed game version to 1015
* added time before respawn to Respawn button in DefaultDeathOptions widget.
* added logging to detect when character dies immediately after spawning due to falling damage.
* hacked in *temporary* fix to prevent character dying immediately after spawning due to falling damage.
* added map & game mode to default bug report info.
* began first pass of synchronising server-to-client ragdolls for dragging/looting
* is setup to allow walking on bodies, but it had issues online, so I disasbled it (for now?)
* began first pass of active ragdoll based on Blueprint of same name
* enabled UE4’s GameplayAbilitySystem
* created GBAbilitySystemFunctionLibrary
* added AbilitySystemComponent to GBCharacter.
* updated GBFirearm to replace C++ related to reload with one based on AbilitySystem.
* updated all firearm related Blueprints to use a reload based on AbilitySystem.
* added missing DefaultGameplayTags.ini
* got reload to predict for local client & work on server.
* not seen by other clients (yet)
* ENGINE CHANGE * lots of additional logging in AbilitySystemComponent_Abilities.cpp.
* learnt how to get montage to play for local client, server & non-local clients.
* required some C++ changes
* updated all affected Blueprints.
* greatly improved synchonised bodies.
* added prediction to body instance postiions sent from server.
* moved prediction calc used for bodies to GetPredictionTime() in GBGameplayStatics Blueprint.
* Server to client trip – which is equal to ping in seconds divided by 2.
* moved prediction calc to GBPlayerController (though kept GBGameplayStatics function too).
* Discovered UT4 has its prediction function there for use on server & client, which we need in future, so…
* ENGINE UPDATE * Change particle collision events to use the actual hit result instead of just certain bits of info from it.
* created GBSurfaceTypeImpactInterface to take hit result from particle collision send to game mid-spawn for use after spawn
* updated P_Blood_Small to spawn BloodImpactDecal for every drop of blood (coz its fun!)
* Adjusted collison on dirt road mesh to be closer to mesh shape
* TankerShip work
* Added in some covered conex containers in the front area to provide some more solid cover
* Made soem LOD sull distance adjustments
* Changed scene blur when sengaged with a magnified optic to a vignette/darkening effect
* Testing to see if its a beeter solution than the blur
* Added in screen directional indicator PostProcess material
* Basic implimentation for testing
* ScalarParameter ‘MaskRotation’ controls where indicator shows on screen
* 0-1 starting on top and going counter clockwise. 0.25 is left, 0,5 is bottom and 0.75 is right
* Made ACOG 6x lens bigger so its more useful in game
* Start of new map named StorageFacility
* Firing sounds reworked for AK74 and Galil
* Cleaned up some collision on TankerShip assets
* Tagged some meshes in TankerShip_Day to not be included in navmesh calculation
* removed WhizzCrack checks from GBBulletMovementComponent
* updated GBCharacter class
* added CreateBulletWarningTrigger() that adds sphere collision that generates overlap events when overlapping a projectile.
* added WhizzCrack variables from GBBulletMovementComponent
* updated GBAIController class
* added BulletWarnEndOverlap()
* added call to GBCharacter->CreateBulletWarningTrigger() when possessing pawn which hooks up to it.
* cleared on death
* ignores own or friendly bullets
* determines controller that owns bullet.
* updated all affected functions in GBAIController, SquadActorCompnent etc to take Threat, ThreatLocation & ThreatController.
* changed ITacticalInterface Get functions to be const
* add quick line trace by type to bullet warn check for AI to ensure nothing prevents them hearing the bullet whizz by.
* use closes point on line segment instead of bullet location
* added bullet warning for GBPlayerController
* uses bindable OnPlayerBulletWarn delegate.
* created mono versions of bullet chizz sounds
* updated bullet crack & whiz sound cues to add some randomness to their pitch & volume
* updated BasePlayerController to hook up OnPlayerBulletWarn event.
* updated GBCharacter to destroy bullet warn trigger on death to remove unnecessary overlap events etc.
* Adjusted rifle TacLight to have a larger falloff for more illumination
* Added in new SVD model
* A few new test muzzle flashes… Stop yapping Phil!
* cleaned up firearm related assets based on Allars ue4-style-guide
* See
* moved switch items logic from GBCharacter to GA_SwitchItems ability Blueprint.
* required updating a whole bunch of C++ in both multiple classes
* created GBItemMontage & GBItemMontageManager class
* Temporary-permanent ( 😛 ) solution to find correct montage to use when switching items without hardcoding a list.
* uses source socket names (where item to equip is attached) & target socket names (where equipped item is to be put away too) to determine correct montage to use.
* unarmed / hands = ‘none’ as socket name.
* SVD updates
* Added in working AnimBP
* Added in some basic sounds
* Created rail adapter setup
* Properly configured to use correct magazine
* Changed out muzzle flashes on weapons to new “flashy” versions so old man Phil can see his children of death in the bushes!

* Added in a couple of older vehicle models as placeholders to use in maps
* First pass blockout of new map called Alleyway
* Cleaned up some collision on TankerShip and Depot maps
* Remade some old old meshes used in Depot
* moved SVD assets to Inventory/Firearms/Markesmen/SVD
* updated GBDroppedItem class to add MakeInteractiveEvent().
* created BP_DroppedFirearm Blueprint
* created GA_PickupItem ability
* created WB_PickupFirearm widget
* created Test_Pickup map
* updated BP_DroppedFirearm to use main hand action instead of offhand.
* updated GA_SwitchItems to add event dispatchers when unequip or equip montages finish.
* updated GA_PickItem to auto-unquip hands via GA_SwitchItems call.
* Revised pistol grip
* Cleaned up vertex weighting on hands/gloves
* Adjusted pistol animations to look better in first person view
* Made adjustments to pistol meshes and BP’s to compensate for changes so pisto mesh lines up properly with new hand/animation adjustments
** Hack until working IK solution is usable so we can adjust attachment socket instead
* reverted all SceneCompoent class changes bar crash fix.
* updated GBItem class
* added AttachItemTo() & DetachItemFrom() functions to replace assignable delegate that was added to SceneComponent class.
* updated all affected C++ & Blueprints.
* ENGINE CHANGES * Small fixes/optimisations
* Moves misc smaller maps to new directory.
* Updated GBWorldSettings::PreSave() to copy existing level summary variables from existing level summary (if any) before saving.
* moved target test game mode maps & screen shots to new location
* created default map template specifically for GB
* created GB game mode map template with ready room & team spawns already included.
* created new Example_Map
* created basic of throw item gameplay ability
* changed BP_BreachingCharge from Equipment to Gadget.
* hooked up the gadget radial menu.
* improved inventory list handling & iteration
* added BP_Detonator
* updated .uproject file with GroundBranchEditor added
* created BPI_Breach
* updated Door_Swinging to implement BPI_Breach
* includes CanBreach() & AttachCharge() functions.
* updated BP_BreachingCharge to trace for actor using BPI_Breach
* updated BP_Detonator to add assignal OnUseDetonator for BP_BreachingCharge
* updated BP_DoorChunks
* Created sound sub map and fixed up ambient sounds in SmallTown
* TankerShip updates
* Fixed up audio references due to move
* Added sound sub map
* Removed reference to old door type
* Added stacked containers on deck in night version
* Moved NatureArea map to new location
* Added in streaming RR to NatureArea maps
* Created sound sub map for NatureArea maps
* Moved Depot map to new location
* Added in streaming RR to Depot maps
* Created sound sub map for Depot maps
* Adjust muzzleflash materials to be lit by map lighting and not fully emmissive
* updated UGBCharacterMovement::GerPredictionData_Client()
* merged SmallTown_DayAITest into SmallTown_Day
* updated GBGameInstance::ShowLoadingScreen() to pre-load map screenshots instead of sending string references via CreateLoadingScreenWidget event.
* updated loading screen and related widgets
* renamed, cleaned up etc.
* clean up of old loading screen assets
* updated GBFunctionLibrary
* improved LoadAssetFromPath()
* added LoadAssetFromStringAssetReference()
* improved GetObjectPath()
* cleaned out old/bad door assets
* removed old test maps
* updated GetChildrenOfClass() to added option to return only immedated children.
* removed GBCursor ref from DefaultEngine.ini
* updated GBAISpawnManager to change LogAIDirector to LogAISpawner
* updated GBCharacter class
* cleaned out old code related to pickup, switchitems & torso actions in general
* added support for sprint ability
* removed old sprint handling
* updated UGBAbilitySystemFunctionLibrary
* added IsActive()
* added CancelAbilitiesByTags_Actor/Component
* cleaned up older functions
* created UGBUIFunctionLibrary::InsertChildAt()
* Temporarily disabled AGBAIController::CurrentlyReloading()
* updated AGBPlayerController class
* updated SetSprinting()
* changed the way team killer info is handled
* updated UI assets
* FIXED loading screen map screenshots
* FIXED issues due to Blueprint & Blueprint Macro Library shenanigans
* removed old/bad assets
* updated to new naming conventions
* replaced many temp icons with proper ones.
* changed Solo to Single-Player
* FIXED map screenshots in Single-Player menus
* split front end & in-game menus into own directories
* simplfied WBP_RadialMenu
* updated WBP_TeamKillForgive
* moved to WBP_DeathOverlay
* includes button to forgive.
* changed MapKit references/parents
* created WBP_RoundEnded based on old RoundEnded game message wdiget
* created WBP_RoundStage
* combines older RoundStateManager, RoundState & RoundTime widgets into one
* forms the message over a couple of seconds with audible text blips to get players attention
* fades away during Kit Up & Round In Progress
* updated other BP’s due to UI reference changes
* updated Gameplay Ability Blueprints
* added Cancel tags to ensure different GA’s play nicely together..
i.e. Switching items in the middle of reloading now handled more gracefully.
* ensure EndAbility was called.
* created GA_Sprint
* will cancel other abilities on use
* will in turn be cancelled if other abilities are used.
* updated GA_Reload_Master to prevent reload ability if already reloading.
* updated BP_M1014 to cancel reload upon firing.
* updated GA_M1014_Reload to drop held sheld if ability ends with one in hand
* udpated FrontEndMap due to game mode changes
* updated SH_TargetTest_Day/Night due to UI reference changes
* updated GBCharacter class
* separated body part MIDs
* removed old GetItemsByKitRoot()
* updated clothing Blueprints
* removed need for BP_Clothing_Master
* switched from direct mesh reference to asset id
* switched to using separate body part MID functions
* improved BP_Mask_Balaclava
* set WBP_InGameMenuManager default screen to settings.
* cleaned up WBP_ServerBrowser slightly
* updated UGBUIFunctionLibrary::GetMapList() to get map list from correct location on disk
* FIXME – update to support additional locations for mod support later!
* updated GBLevelSummary to include binding to asset data tags in class
* cleaned up GroundBranch class
* included GBGameInstance missing from last submit (loading screen to menu fix)
* created new functions & a struct in GBFunctionLibrary to replicate streaming levels to client
* FLevelStreamInstanceInfo holds all relevant info from ULevelStreamingKismet instance.
* GetLevelInstanceInfo() will take a ULevelStreamingKismet & spit out a filled in FLevelStreamInstanceInfo.
* AddToStreamingLevels() takes a FLevelStreamInstanceInfo & creates a new ULevelStreamingKismet based on the info & feeds that into the worlds streaming levels.
* updated BP_ReadyRoom_Streamer to use new streaming level functions
* Streams in on servers normally, then replicates the result via a FLevelStreamInstanceInfo.
* On clients, waits until it gets a filled in FLevelStreamInstanceInfo, then calls AddToStreamingLevels()
* updated BP_PlayArea_Door
* stopped it from loading on client separately to server
FIXME – this an issue with the way it was streamed in on client?
* updated AGBGameMode::SendToReadyRoom() to fall back to normal player start if it fails to find a ready room start.
* removed world clock from ReadyRoom_BFS
* added random patch selection for randomly setup shirt
* updated GBKitFunctionLibrary
* renamed ApplyString to Apply()
* added bReplicate option to Apply functions.
* will call FindOrCreate and assign result to character.
* updated affected Blueprints & C++
* updated GBKitInfo to call ApplyKitString() instead of using Apply() to avoid possible circular usage.
* removed references too and deleted AN_Equipped
* updated BP_BloodImpact to add ResetInterface
* updated BP_DroppedCosmetic to ensure no collision between it and pawn.
* removed AN_ClearArmedIfNoPending
* removed old foot step assets & Blueprints.
* updated foot step animation notifier.
* updated GBGameState & GBRoundState to ensure GBGameState instance has a reference to round state.
* created GBGameMode::UsesRounds()
* created GBFunctionLibrary::WaitForGameState()
* replaces need for BP macros combinging Delay nodes/timers
* created GBFunctionLibrary::WaitForRoundState()
* replaces need for BP macros combinging Delay nodes/timers
* renamed BP_TeamTimerun to BP_Timerun
* updated BP_Trigger_ReadyRoom_Master & child BP’s
* stops doubling up on create/remove widget calls
* removes need to use GetAllActorsOfClass() several times each enter/exit
* added timer to constructor to call special ClientBegingPlay event
BeginPlay doesn’t want to be called on clients for some reason…
* moved input blocking from BP_Trigger_Ready to WBP_Transition_FadeOut
* replaced Get Round State BP macro usage with new C++ version
* replaced several instances of BP macro/event loop that waits for game state/round with C++ version.
* improved Apperance/Loadout random generation
* updated GBAISpawnPoint/Volume to prevent creating random kits without a spawn manager present.
* undeprecated BP_SoloTimerun
* updated BuildNumber to 232311
* updated DefaultEngine.ini to remove old ActiveClassRedirects
* updated DefaultGame.ini to updated DirectoriesToAlwaysCook
* removed debug message from GBCharacter::SwitchItems()
* updated GBAIController::BulletWarnEndOverlap()
* added bullet instigator to ignore list
* cleaned up function slightly.
* Went through all materials and made sure they were using a PhysicalMaterial (Speedtrees excluded)
* Added a ‘Default’ PhysicalMaterial that all base master materials use
* Uses same settings as concrete
* Nothing in the game should be without at least that default PhysMat
* updated bullet debug drawing – better entry & exit indicators
* Fixed some missing PhysicalMaterial settings on a few materials and Landscape LayerInfo’s
* Added some water to SmallTown
* Give something interesting to the center area of the map
* Covers up a bug with lingering water volume references that we can’t easily get rid of 🙂
* created new BP_Door_Swinging based of Door_Swinging
* created game ability, widget etc to go with it
* added interactive trace to GBPlayerController
* Got sick of using widgets and other tricks/hacks, so switched to an trace methond updated.
* Traces for any component with Interactive collision – solid or not.
* Verifies trace by tracing against visible components after that.
* The component does not have to be solid or visible, thus giving you the option of add a
component around the intended target that is much larger and easier to trace against.
* forced outline material to be added to Global PostProcessing volume via C++ in GBGameState.
* udpated BP_Door_Swinging
* replaced single widget with a prompt & using widget
* ensured it hides outline during fluid use, but shows it again when done if applicable.
* Added in icons for Breaching charge and detonator
* smoothed out death camera view
* created WBP_Crosshair (not what you think)
* updated BP_Firearm_Master to add WBP_Crosshair if in over the shoulder view.
* changed item icons to asset pointers.
* changed item skin icons & materials to asset pointers.
* updated all item Blueprints to work with asset pointers instead of direct pointers.
* created functions for loading assets from a single asset manager in GBGameInstance
* updated AGBItem::UpdateSkin_Implementation() to use UGBGameInstance::LoadAsset()
* updated operators menus to force loading of skin assets via regular LoadAsset node.
GBGameInstance::LoadAsset() will fail for any item spawned inside a Viewport widget. since there is no game instance.
* created /Core/Engine/T_Missing texture to replace /UI/Common/T_Missing_Thumbnail
* updated GBItem class & FItemSkin struct to ensure their asset pointers default to T_Missing and cannot be cleared.
* removed deprecated functions from UGBKitFunctionLibrary.
* removed redundant functions from UGBKitFunctionLibrary & updated affected Blueprints.
* Adjusted SVD to sit in hand better
* Galil changes
* Added in missing icon
* Changed peep sght to be a bit more usable
* updated icons for several misc widgets
* updated GBRailAttachment::ValidMountPoints() to allow sights to fit further back on firearms
* adjusted M233 & Mk4 mount spacings to allow them to fit on SVD
* Small vertical adjustment to SVD rail adapter position to line up with fixes in previous checkin
* Added icon for SVD rail adapter
* removed old/deprecated functions
* cleaned up and improved GBPlayerCameraManager
* separated view modes into their own functions
* added camera booms to all non-first person views to help smooth them out
* created BlueprintLoadAssetAsync()
* uses the asset streamer on the GBGameInstance.
* uses a bindable callback event instead of latent action with continuation node
(fire and forget or fire & take result and use it)
* updated operator UI to use BlueprintLoadAssetAsync() instead of native LoadAsset.
* should prevent issues updating the character used in the menu out of order,
which was causing issues.
NOTE – seems to be an issue with platforms not loading skin on first try, while headgear etc appears to be fine.
Most like an issue with the platforms item BP’s and not the widget BP.
* updated BP_ReadyRoom_Streamer to support loading different maps based on GameMode class or type.
* updated inventory BP’s that were using LoadAsset to use GB’s LoadAssetAsync instead.
* optmised BP_Door_Swinging
* only ticks as required.
* pre-cached additional variables.
* simplified math
* updated BP_DroppedFirearm
* now longer uses trigger
* properly removes outline from firearm when it is picked up.
* added DropEquipped binding to DefaultInput.ini

* tracked down issue that was causing editor to get stuck loading at 72%
* deleted WBP_’s causing or affected by issue.
* removed need for GameType enumurator
* updated affected Blueprints & C++.
* created new WBP_SinglePlayer screen (programmer art – functional, not pretty).
* updated ServerBrowser to be its own screen (not content for a manager)
* recreated Player Drop down and hooked it up to new Single Player & Server Browser screens.
* small fix to trigger prep area caused by stuck @ 72% fix
* updated BP_ImpromptuLadder_BFS
* replaced InteractComponent with GamePlayAbility.
* created WBP_Ladder_Prompt & WBP_Ladder_Using
* added trigger to auto-mount character at top of ladder if:
– moving backwards
– moving forwards while looking down a lot
* updated BP_Door_Swinging
* replaced Spheral triggers with Box based ones to make it easier to grab handles.
* Added darkening option to vertblend master material using Green channel
* Vert Painted some darkening on walls around water in SmallTown
* Minor adjustment to scope darken PP effect to assure centering on screen in all resolutions
* Small adjustment to scalability settings to make sure players see MeshDistanceField shadows on Medium and High shadow detail settings (was previously only Epic setting)
* ENGINE CHANGE – updated ParticleComponent class to report index of missing emitter
* changed some trigger overlaps to default to Volume collision type in an attempt to fix AI visibility issues
* added ShowTerroristCount option to BP_TerroristHunt game mode
* 0/False = hide enemies remaining message.
* 1/True = show enemies remaining message
* updated code related to Bots to get them functional again
* created GBGameState::GetTeamAttitude() implementable Blueprint function to allow
a game mode to control a teams attitude to another team
* corrected GameModeTags in game mode Blueprints & maps.
* updated WBP_SinglePlayer to only display maps based on primary game mode tag.

* Merged a few meshes in SmallTown as a DrawCall optimization
* Added a few detail meshes in SmallTown
* Cleaned up a few missing material redirects in a marketplace content rock pack
* minor optimsation to AGBAIController::BulletWarnEndOverlap() to remove unnessary secondary debug trace
* minor optimisation to AGBBulletProjectile::SpawnBullet() to ensure bullets ignore bullet warning triggers of owning character
* updated AGBAIController::BulletWarnEndOverlap()
* FIXED occlusion checking against bullet passby location
* added check to skip occlusion checking for bullets passing by in quick succession

* resaved mat_rock_default_MASTER to fix log spam about it.
* updated WBP_Settings_Video to use native implmenetations of Get/SetXQualityLevel etc.
* updated BP_Deathmatch_GameState to set ManualCleanup to false.
* Removing PEQ2A
* Was and old model and not really necessary anymore with the PEQ15
* replaced all ValidIndex node calls with native IsValidIndex nodes.
* updated GBGameUsetSettings audio volume handling.
* works with the SoundMixClassOverride system
* no longer requires hard coded entries
* removed UGBUserSettingsFunctionLibrary & UGBAudioSettings classes.
* added auto-mounting to bottom of ladder for consistencies sake
* Changed collision from complex to simple on very detailed cliff mesh
* Made whiteboard in Killhouse night none emissive so it lights properly
* Removed prototype drone blueprint from SmallTown map because it was causing framerate issues
* Removed water from SmallTown map
* Made smaller standing water/puddle behind end building instead
* updated loading screen
* If not going to the menu, the loading screen will be copied from the movie player to the viewport.
* Once the player is in-game properly, they can manually remove the loading screen by pressing a key.
* Loading screen with fade out nicely.
* renamed WBP_Transition_FadeOut to WBP_Transition
* updated WBP_Transition to support fading in/out.
* added events to GBPlayerController when player manually spectates, restarts or goes to ready room
* updated BP_PlayerController to bind these new events to create WBP_Transition widgets.
* converted core of BP_ReadyRoom_Streamer to C++ class
* reparent BP_ReadyRoom_Streamer when done.
* removed WBP_PostLoadingScreen
* changed loading screen shots from texture references to texture asset references to prevent hitch.
* moved ServerName & ServerMOTD to GBServerManagerment class
* setting name & MOTD now done in DefaultServerManagerment.ini
* increased size of ServerMOTD from 128 to 512
* TEST – MAY CHANGE! – splits the larger string up, assigns it to multiple Steam gametags, rejoins it at other end.
* SmallTown fixes
* Removed bad water plane that had no mesh that was causing water effects in odd places of the map
* Fixed collision on wood walkway to properly register traces

* created GBPlayerStartManager class
* new class to manage and control player starts
* removes need to call GetAllActorsOfClass() every time a player spawns.
* greatly reduces need for spawn collision checks by only updating as required & caching the results.
* updated GBGameMode, GBReadyRoomStart & GBPlayerStart to work with GBPlayerStartManager
* created BP_TeamElimination_PlayerStartManager
* removed BP_PlayerStartGroupManager
* removed deprecated global player start functions.
* created BP_Deathmatch_PlayerStartManager
* added additional player starts to SmallTown_Day for Team Elimination & Deathmatch
* updated FTViewTarget struct to create public GetPlayerState()
* FIXED view next/prev players in spectator mode by updating PlayerController::GetNextViewablePlayer()
* updated Steam plugin to set game name & enable number of connections for Steam server browswer.
* changed radial menu entry background to non-texture base cicrcular material
* adjust radius of radial menu
* created BP_TerroristHunt_PlayerStartManager
* FIXED nullptr caused by GBMenuGameMode
* created GBCharacterVoice class (Not available in game yet)
* holds list of sound cues matched to keys with a display name
* allows playing correct sound between different characters/voice packs
* updated GBCharacter & GBPlayerController to implement
* local voice message is replicated by character
* radio voice message is replciated via player controller


General Changes

* Added suppression to AI tactical perception. Suppressed AI with threat set but no line of sight return suppressing fire in the general area. Added some AI test maps to /developers area. Added some randomization to return fire aim location.
* First part of rigging tankership for AI solo TH use.
* Added suppression and suppression handling to AI
* Fixed cover update service such that only one cover is allowed to be reserved per agent
* Added AI test map for testing suppression etc
* Fixed a minor bug in visual logger (requires engine rebuild)
* Started Solo TH menu for selecting squad
* Added some squad incoming fire suppression support
* Tweaked some priorities on spawners.. still need to do a usability pass on the spawn system as this shows it needs some attention.
* fixed issue with threat not being the pawn for the reaction to incoming fire.
* fixed recast navmesh generation setting causing AI to get snagged on a pipe
* switched something on
* did something so I could test AI using ladders..
* added new GBAISpawnManager to free up GBAIDirector for director stuff later. Which means game modes have changed a bit.
* fix for AI Incoming Fire perception issue caused by move to alternative method. Now AI checks from correct origin for line of sight for incoming fire. TODO: Make the check also scale the incoming fire suppression amount based on distance
* added male hostage (dumb as a brick version), but at least he works.
* added simple service to check LOS to suppress incoming fire location
* Updated debug info for incoming fire to only display if aidebug and in editor.
* changed collision settings on trigger volumes, so they don’t block AI sight sense
* Updated line of sight checking for incoming fire, still got to balance the various situations better. But this should mean that we get some return fire and some attacking even during suppression.
* Fixed bug in AISpawnManager blueprint where it wasn’t calling SetInitialBehavior method (probably due to blueprint getting disconnected during change of C++ class)