New Ground Branch build available – version 1012 build 150605

June 5, 2016

A new build of Ground Branch is here and it is gigantic! Partly due to the move to engine version 4.11 and partly due to us just being stubborn and wanting to get things working right before releasing, we went way to long in between builds as well as the first go at a Terrorist Hunt mode with A.I.! The result is this one is packed with a ton of changes and its hard to do this news post without it being a wall of text. So here is the condensed version, with all the fine details at the end……..


To get started, please see our previous news post for some more specific information on some new features that we mentioned were coming in this build:

The biggest addition is the switch to engine version 4.11.2. There were many rendering updates and engine optimizations that should provide most with some framerate increases. It also allowed us to rewrite some core systems to run cleaner and more efficiently. One thing you will notice immediately is more on screen information in game. It is colorful and looks “gamey” but don’t worry… the point is to get the information across right now. We will make it fit visually as we go.

Build Version 1012

Build 150605


Approximate Update size: 3.2GB

Steam build Id: 1165171

Known Issue

It is possible that the input ini config file from a previous version won’t get overwritten resulting in the radial menu not working. Here is a workaround if that happens for you:

Delete the Documents\GroundBranch folder and also these 2 files (not folders):


Path: …\Steam\steamapps\common\Ground Branch\GroundBranch\Saved\Config\WindowsNoEditor

Path: …\Steam\steamapps\common\Ground Branch\GroundBranch\Config


New Weapons and Gear

We added in a few new weapons… an M16, Glock 22 (.40) and the UMP .45


Some new equipment to use….. an AN-PEQ15, IRStrobe, Muzzle Devices on weapons (Suppressors), tactical light for both rifles and handguns, Laser sight and a rail system for AK platform weapons. The PEQ15 also has laser designator functionality used for marking targets and aiming in NVG’s in use. So only those with NVG in use will see the beam. It also includes a regular laser sight on it as well. Headgear can now have it’s own attachment points. Right now the helmets accept an optical device (NVG) and an IR Strobe.



We have also added the ability to delete attached items directly as well as provide a bit more visual information as to what items you currently have equipped.


Radial Menu

Everything that you equip in the Operator Menu that is usable is now controlled from a radial menu system using the ‘F’ key. This is where you will turn things like TacLights and NVG’s on/of. A radial menu is also used to select any grenades that you have equipped by hitting the ‘3’ key. And again, don’t worry we will work on the visual representation as we go.


Operator menu and Ready Room

You may notice that the Operator Menu moved to the Main Menu screen. We are re-organizing gamemodes so that you can only setup your character/weapons from within a map’s Ready Room. This will allow you to create your kits and save them out for later use. You will find an Operator Bench in the training maps that allow you to customize your character/weapon from within the map without a need for a ReadyRoom. Just walk up and follow the instructions.


The default Ready Room was reworked a bit as well. It is now more open to better facilitate a “community” feel while waiting for a match to start as well as also making it easier to see where to go to get into a game.


Once you join a team (Alpha/Bravo) walk up to any locker area to enter the Operator menu and setup your kit.


A.I. and Terrorist Hunt game mode

We now have the first iteration of the Ground Branch A.I. to mess around with! Please be aware that they are pretty dumb as the purpose of this release is to get them in and make sure the base framework is up and running. There is a Terrorist Hunt mode that can be played solo or coop and to access it solo go to Play->SinglePlayer->Mission and select Terrorist Hunt. You can select the number of Hostiles you want in the map(up to 50 for now) as well as enter the Operator Menu to kit up.


For Coop play, start the server with this argument (replace XX with desired number up to 50):


At this time, the TH game mode is only available on a special version of the Small Town map, but we will be expanding it to other maps as we go. Lots of functionality is also coming to the A.I. itself now that the framework is in and working well.


Here is a forum post outlining some of the things that are coming next for A.I.


A quick pass on adding the ability to reset targets in training maps without restarting the map was added to Aircraft_Takedown for testing. There is a switch box near the entry door that allows you to reset targets by interacting with it. When you walk up and see the “Reset” text just hit R-Mouse button to initiate the reset. All target placement is random and you can also change the parameters of Hostile/Friendly ratio with a couple of console commands:

Set total number of target – ‘ce SetTargets <number>’

Set number of those targets that are Friendly – ‘ce SetFriendlies <number>’

A simple system for a user to place targets in a solo or coop training session was implemented. Bare in mind this is a simple first pass and a proper UI and more functionality will be added as we go. In any of the training maps hit ‘Alt-U’ to enter placement mode. The center screen “pip” designates where the target will be placed. The color lets you know what you can do at any given time… Green = Place target, Red = Can’t place target and Blue = Change selected target (one that is currently pointed at). Alt-Delete will delete selected targets (not show in UI). Nothing is saved between sessions so use this as a way to get in some quick random training with friends.

targets** Some have reported not being able to see placed targets. We will sort this out, but didn’t want to hold up the build for it.

Moving forward

More gamemodes as well as many new features for the A.I. are on the way. So talk about Ground Branch to your friends and keep playing.

You have all been great in helping us test builds, suggest features and generally help shape the game. Far that we thank you!


FIXED - server version
FIXED - Door in back of killhouse opened wrong way
FIXED - Missing collision on TankerShip bow supports
    * Fixes general collision issue
    * Fixes case where laser sight wouldn't show due to line trace not colliding with mesh 
FIXED - Missing collision on TankerShip rear storage area walls
FIXED - Rotated PEQ15 mesh to be facing correct direction and added sockets
FIXED - bIsReady not being replicated in GBPlayerState
FIXED - TeamElimination - wasn't up to date with GBRoundManager changes.
FIXED - UI redirects & removing unused UI Blueprints & assets 
FIXED - bad OperatorGear_Item_Button references (again)
    * Keep getting changed to REINST_ versions. Must find fix if it continues to happen.
FIXED - bug in GBGameMode that prevented spawning at team player starts
FIXED - Added missing bottom rail on M14 for vertical grip
FIXED - Gamemode check in BaseCharacter BP from freezing editor loading
FIXED  - possible None in HUD_JoinTeam_World_Prompt widget.
FIXED - bug in GBGameState::GetSortedPlayerList() that included permanent spectators in list.
FIXED - Operator Gear screen buttons not appearing
FIXED - bug in AGBTeamInfo::IsValidTeamMember() that meant it parsed spectator only players were it shouldn't.
FIXED - bad collision on Stern_Entrance_Floor mesh on TankerShip maps
FIXED - "text" issues in HUD customise operator world prompt widget
FIXED - socket location for mp5 taclight foregrip
FIXED - bad casts in ShootingRange level Blueprint.
FIXED - bad enumerator in DefaultZero_Tab
FIXED - laser & designator not showing displaying for BasePEQ based items.
FIXED - bug that was SetAppearanceString() after randomly generating a loadout in GBPlayerState (oops!)
FIXED - Iron sights were attached backwards with random weapon spawn
FIXED - bad asset reference in BP_UserPlaceable_Targets
FIXED - terrorist bot to spawn and link together with squad (was using wrong BT in terroristbot for some reason), updated spawner to set correct team           for squad member comparison
FIXED - Falling thru ground near corner of building in SmallTown
FIXED - random target marker covering up underlying target (no collision wasn't taking properly)
FIXED - ANPVS 15 NVG not hiding correctly on attachment to player
FIXED - beam components being visible after leaving operator gear kit
FIXED - roll up door not blocking laser sights - visibilty collision was disabled.
FIXED - FrontEndMenu not bringing up play menu
FIXED - M1014 remaining on swapping to handgun
    * issue was in OnReloadAnim notifiers in BaseFirearm returning 'true' when they shouldn't have.
FIXED - MP5 not wracking bolt on empty chamber when reload without a magazine
    * still part of the animation that show mag removal, but otherwise works as intended.
FIXED: Default streaming method for map was set to BluePrint so map never streamed in when leaving readyroom
FIXED - Balaclava neck not properly weighted
FIXED - item skin not showing displaying in operator menu
FIXED - possible devide by zero in radial menu
FIXED - GBRailAttachment::AutoAttach()
FIXED - possible invalid item in OperatorItem_Attach_Point's Tick event.
FIXED - Random target system now properly replicates and synchs target spawns and material settings
FIXED - randomly generated appearance not saving to players config if generated by AGBPlayerState::ClientInitializePlayerKits_Implementation()
FIXED - Galil physics asset.
FIXED - M9 physics asset.
FIXED - AKS-74u physics asset.
FIXED - OpeartorWeaponKit_Secondary not displaying correctly.
FIXED - bug in GBExternalMagazineComponent that could result in crash due to a magazine that is being destroyed being attached
FIXED - AKS-74U & Galil not having attached magazine by default.
FIXED - force engaged ending prematurely on clients when reloading.
FIXED - Team/SoloTimerun game mode
    * created TimerunGameState to handle messages
    * moved event delegates from game mode to game state so they work on server & client
FIXED - Killhouse_Timerun_Day
    * added correct spawns for TeamTimerun
    * hooked up events to game state instead of game mode
FIXED - BaseTargets not resetting online
    * implemented GBResetInterface and hooked it into target reset function.
FIXED - possible null pointer in BaseFirearm Blueprint (dead/missing GBInstigator)
FIXED - BP_ReadyRoomDoor & BP_ReadyRoomPointLight trying to setup when no ready room is actually required.
FIXED - BP_MissionTimer & BP_ReadyRoom_Roster log spam about missing text component on dedicated server
FIXED - bug in BP_ReadyRoom_Roster that caused it to self distruct on server & client, instead of just server.
FIXED - bug in BP_ReadyRoom_Roster that didn't clear old names
FIXED - Terrorist Hunt (coop version) being set incorrectly to Solo
FIXED - potential nullptrs in a few GBKitFunctionLibrary functions related to JSon kit creation
FIXED - devide by zero in RadialMenu widget
FIXED - last round shot count in GBTriggerComponent
FIXED - burst fire not finishing if trigger released early
FIXED - old magazine not being replicated to non-owners during reload
FIXED - role auth issues in various firearm OnReloadNotify() functions.
FIXED - name tags being referenced on dedicated server

Many smaller things got fixed in the course daily development as well..... 

Full Changelist:

* Some revisions to Operator menu visuals
* Added in a color gradient/sky background instead of plain black
* updated lighting on character/weapons a bit (really needs ability for post processing and reflection captures)
* Small update to lighting for Secondary weapon in Operator Menu

* Reduced size of NVG overlay mask by 10%
* Added check for IR laser and laser sight beams so they don’t shoot off into space when not detecting line trace hit ( when pointing into sky for instance)

* Changed doors in over to new type in maps
* TankerShip (All)
* Killhouse (all)
* SmallTown

* made bug report screenshot optional
* fixed menu escape bug (maybe)
* fix incorrect word usage in LeanLeftToggle.ffs
* fixed background camp fire sound not being disabled in front end map
* ENGINE CHANGE – slight change to log instead of crash in USceneComponent::DetachFromParent()

* changing format of non-saved kits to base64 encoded JSON
* simpler to sync (no weird characters)
* easier to store in .ini file.

* Added in icons for PEQ2 and Rifle Lasersight
* Added collision to TankerShip rear storage area ceilings so laser race would register
* Cleaned out bad object references in TankerShip ready rooms (stuff that was in locker areas that no longer exist but still had reference in map)

* Revision to TacLight_Rifle
* Added in a simple beam mesh for light
* Setup so lens material becomes emissive when light is on
* Adjusted light cone angles to get a softer look to the light
* tweaked firearm component replication
* changed game mode type from FName to custom Enumeration
* fixed attachments being off by 90 degrees on dropped skeletal items.
* added replicated server version of DropEquipped to AGBCharacter class.
* updated GBUIFuctionLibrary::GetGameModeList() to use new GameModeType enumerator
* Setup target default Min/Max hits to not be zero

* Prototype for user placeable items
* Players can place targets in maps for live coop training
* Testing ideas for user created killhouse maps

* Prototype for user placeable items
* Players can place targets in maps for live coop training
* Testing ideas for user created killhouse maps

* Added in InstaLOD LOD plugin
* Added in AN-PEQ15 laser designator
* latest VaRestPlugin

* updated PEQ attachments to both use BasePEQ Blueprint
* ensured Destoryed event was hooked up to clear laser & designators.
* ensured both Destroyed & ViewTarget events were hooked up to night vision post processing.
* continued overhaul of gamemode
* continued updating / recreating game modes.
* replaced references to Character/GameCharacter with Blueprints/BaseCharacter.
* created of new base classes under /Blueprints for bot, character, gamestate, playercontroller & playerstate.
* updated Trigger_JoinTeam to grealy simplify its design and usage.
* created Trigger_SendToPlayArea based on Trigger_JoinTeam – except it calls AGBGameMode::SendToPlayArea().
* created Trigger_Customise_Operator
* approaching trigger takes over input.
* mouse click brings up operator screen.
* updated operator widgets & some base widgets to support separated operator screen.
* created Test_GameMode_Triggers to showcase basic trigger usage.
* updated SightComponent assignable delegates to include player camera manager & camera component
* fixed bug in BaseOpticalSight when trying to clear post processing.
* Its 6am, I hate UMG work & now I’m gonna sleep

* created BaseHUD Blueprints & made it the default HUDClass in GBGameMode.
* began fixing replacing references of /UI/HUD/GameHUD with /Blueprints/BaseHUD
* created new functions GetFirstWidgetOfClass(), IsChildOf() & GetParentOfClass() to GBUIFunctionLibrary.
* extended GetFirstWidgetOfClass() in Global Blueprint macro to add validation.
* modified base GBWidget to espose Tags during creation.
* updated HUD_Message_Timed widgets
* created new RemoveMessages function
* nows use Tags instead of single Type to remove existing messages.
* fixed bug preventing permanent centered message being displayed.
* replaced small, fixed message box with one copied from firemode indicator.
* updated GBPlayerState to add events when playername, team or ready room status are replicated.
* hooked up these events to add game messages directly to engine message manager widget.
* replaced small, fixed message round state message box with one copied from firemode indicator.
* fixed possible nullptr in GBRoundState class
* fixed times always being zero by hooking up GBRoundManager::InitOptions().
* fixed incorrect round stage being parsed do decided next stage
* attempted to update bots to ensure they stay still when told (and failed)

* created GBResetInterface
* implemented in GBItem, GBCharacter & GBBulletProjectile
* added RoundReset() function to GBRoundState.
* cleaned up references to old bot & character Bluperints.
* simplified usage of Widget_NVGTextOverlay
* self contained animation & removal.

* New target ‘Target_Reactive_Drop’ added
* Target that drops straight down when hit
* Does not have a reset currently

* ENGINE CHANGE – Exposed AIControllerClass to SpawnActor Blueprint function.
* renamed FGBSessionSearchResultSort to EGBSessionSearchResultSort
* split Bot management from GBGameMode to GBBotManager class.
* makes GBGameMode much simpler.
* only created manager as required.
* split Team management from GBGameMode to combo of GBTeamInfo & GBGameState classes.
* makes GBGameMode much simpler.
* makes creating solo & coop games much easier.
* teams are defined by external profiles under /TeamProfiles using standard JSON formated files.
* updated AGBGameState
* replaced GetOrderedPlayerList() with GetSortedPlayerList() for better control on sorting player.
* created GetSortedTeamLifeWithPlayerCounts()
* sorts teams based on numerous options, including lives & ready status
* returns separate list of teams & player counts, removing need to recount players.
* created GetSortedTeamLife()
* same as above, minus player counts.
* updated GBGameMode
* added bCheckForTeamkills member variable that is set by default if cooperative or team adversarial game mode types.
* changed OnTeamKill from BlueprintNative event to assignable delegate.
* if not bound, call AddTeamKill()
* default OnStartNewPlayer() implementation no longer sets player team.
* began replacing AGBCharacter::IsDead() with AGAGBCharacter::IsAlive().
* renamed FPlayerKit.TeamName to FPlayerKit.ProfileName
* updated GBAppearance/LoadoutInfo’s to use Base64 encoded strings.
* removed FTeamProfile struct
* merged GBBot into GBAIController
* will removed GBBot in future submit.
* overhauled GBRoundManager to use End & Start delegates to control round stages.
* updated Terrorist Hunt game modes to use updated GBRoundManager
* updated GBUIFunctionLibrary
* updated GetFirstWidgetsOfClass() Blueprint callable function.
* no longer calls GetAllWidgetsOfClass()
* stops at first found widget.
* finished creating GetParentOfClass() Blueprint callable function.
* finds any userwidget above specified child in hierarchy that matches desired class.
* walks up the outer chain to look for next parent once out of widgets, but only if out is widgetree.
* should be faster the GetAllWidgetsOfClass()
* avoids issues with identical widgets.
* created GetChildrenOfClass() Blueprint callable function.
* returns array of userwidgets belowed specified parent in hierarchy that match desired class.
* avoids adding identical widgets by using internal CheckedWidgets array.
* created GetWidgetFromName() Blueprint callable function.
* hooks up internal FindWidgetFromName() function.
* only finds immediate specified child.
* avoids need to reimplement the same code via child Blueprint or macro.
* updated UI to use new Blueprint callable functions added to GBUIFunctionLibrary.
* slept to avoid John beating me into unconsciouness.

* added missing team profiles

* Changes to User Placeable Target prototype
* Added check to make sure there is a valid target to delete when user hits delete. Prevents an AccessNone condition
* Removed ability to place different target types for now. Need actual UI for that
* Added ability to switch placed target material between friendly (Alt-0) and badguy (Alt-9)

* Some new stuff with the TargetPlacementOverlay BP
* Added some hint text for key commands when in placement mode
* Added some colored feedback text that corresponds with center screen pip

* attempted to fix Bugs&Issues
* editor keeps spamming about macro being invalid despite it being replace & always valid for other widgets.
* editor keeps spamming about web browser widget and removing it.
* FIXME – recreated Bugs&Issues Blueprint??

* change AGBCharacter::Reset() to not check allow not reset when no controller & no playerstate.
* updated AGBPlayerState::EnteredReadyRoom() to clear team.
* updated Operator UI
* created new Operator_Character Blueprint.
* fixed up issues with character & firearm bounds
* added animations when showing new screen or using quick access option to disguise background goings on.
* added Ok & Cancel buttons to Overview screen.
* updated BasePlayerState
* prevented join server messages if you have a team (just says joined team).
* prevents join team message for personal team
* display “You are now on X” messages for person team.
* began work on team trigger world prompt when not on team.

* More work on User Placeable Targets
* Simplified rotation part of BP
* Added a check to only allow usage with training gametypes
* rolled BaseCharacter Blueprint back.
* removed duplicate cvar ref from GBCharacterMovement.cpp
* recompiled all BugsIssues_X widgets.
* removed ParentSwitchScreen from BugsIssues_Report

* added variables & functions to more easily replicate game messages
* add FName based Id’s to custom gamestate.
* use GBGameMode::BroadCast(<GameMessageId) to send.
* Finds GameMessageId in predefined list and sends this index via player controller RFC
* uses single byte value as I doubt we’ll need more then 255 server based game messages.
* created RoundEndedGameMessage widget
* created TeamEliminationGameState that implements RoundEndedGameMessage widget.
* created DefaultDeathOptions widget.
* updated HUD_Death_Overlay
* now uses animation to fade out instead of Tick().
* adds DefaultDeathOptions widget if other options don’t already exist.
* sets & clears UI focussed input when shown or hidden
* created FRepRoundTime struct & implemented it in GBRoundState to ensure round time is properly replicated.

* made all three game mode related triggers client side only.
* less work for server.
* allows client to add world prompts to triggers.
* required AGBPlayerController::SendToPlayArea() to be created.
* optionally sets player ready
* sends player to play area
* changed Bravo colour slightly (lighter blue)

* added GBReset interface to Door_Swinging
* created Trigger_ClearTeam

* Added simple radial damage to Frag Grenade (6m)
* Tweaked greande physics settings for a bit less bounce and velocity
* Added simple light to M67 frag grenade detonation effect
* Changed gamemode in Example_Map to TeamTraining (To help testing user placeable targets)
* Added a RoundToNearest macro in BaseCharacter to allow for placing UserPlaceable targets on grid

* updated GBKitFunctionLibrary
* created GenerateRandomLoadout() & GenerateKitFromRandomItems().
* updated GenerateRandomAppearance() to use GenerateKitFromRandomItems().
* required creating AGBitem::RandomSetup() BlueprintNative function.
* updated GBBotManager class
* added BotControllerClassName config variable.
* added random appearance & loadout on creation.
* removed references to selecting loadout & appearance from GBAIController class
* made SquadMememberComponent::AttachLocation() Blueprint callable.
* updated TeamElimination & TerroristHunt game modes to get bots to attack enemy location at start of round.
* added TerroristHunt tagged player starts to SmallTown_DayAITest
* played some TH games with bot buddies (fun!)
* setup looping TH game at 10x normal speed and hammered the shit out of the game mode (no crash)
* attempted to fix operator screen not getting focus immediately (damn you UMG!)
* updated AGBRoundManager::WarmUpStartedDefaults()
* fixed bug that meant spectator only players were parsed when they shouldn’t be
* added pawn check to prevent restart a bot that is already in the play area.
* added additional category to sights to sort them more easily (optical, reddot & iron)
* updated RandomSetup implementation
* removed sight handling from Firearm C++ function.
* added semi-customised handling for each Firearm Blueprint event.
* removed Platform C++ function.
* added handling to Platform Blueprint events (attach primary ammo pouchs)
* updated GBRailAttachment class
* created AutoAttach function to use in operator screen & random generated loadouts.
* attempt attach to rear most rail first, then makes it way forward.
* updated GBFunctionLibrary
* deprecated AddBlendable, RemoveBlendable & SetAmbientCubeMap functions.
* removed GetAttachActors (way old – like UE4 beta old!)
* updated BaseCharacter Blueprint
* removed old method of adding NVG post processing (via AddBlendable etc)
* added post process component with NVG post processing setup rigged it to be enabled as require.
* hookd up OnDied() & UnPosses() events to disable night vision PP & remove overlay.
* testout out John’s basic target placement system – pretty neat 🙂
* added /Content/TeamProfiles to non-assets to include while packaging

* Moved team roster BP from map into its own BP using the whiteboard.
* Allows player names that join teams to be listed in ReadyRoom on the whiteboard for others to see

* updated GBPlayerController to add LeaveTeam server function.
* updated game mode triggers and related widgets
* client side only
* calls Entered & Exited events when on overlap / end overlap.
* Trigger_PrepArea will set the team of all other game mode triggers within its bounds.
* updated Trigger_GameMode_Triggers to show usage of new triggers
* udpated SmallTown_DayAITest to new triggers.

* updated BaseGameModeTrigger based triggers
* capitalised the “M” in BaseGamemodeTrigger.
* fixed delay causing initial message to display wrong team
* shifted HUD world prompt spawning & handling from BasePlayerState
* improved customise operator click prompt
* added world prompt location offset variable to prep area trigger
* created HUD ready world prompt.
* cleaned out old UI assets

* First pass on a mission based UAV  (EXPERIMENTAL)
* Place BP in map and setup spline based path for it to follow
* The RenderTexture material it uses can be placed on any mesh. It will be on a TV in the Ready Room for maps that have it
* Upped RTT resolution to 1024×512 from 512×256
* Tweaked the drone feed material that is placed on a screen a bit (still not happy)
* Created a ‘LookAt’ BP for the Drone to use as a look-at target instead of a map actor
* This allows the LookAt target to potentially move and allows more options in placement

* Initial creation of an IRStrobe item
* Will be selectable with certain types of headgear
* Only visible when in NV mode
* Added sockets to necessary headgear items
* Added bSupportsStrobe to BaseHeadGear and set value for items that allow a strobe to be attached

* removed /Blueprints/LocalMessage (no longer used)

* add GBGameMode PlayAreaOpen() & AllowedToEnterPlayerArea() checks to GBPlayerController ServerJoinTeam() & SendToPlayArea()
* added CustomisationWidget variable & Get function to GBItem class
* created new attenuation & concurrency settings firing, reloads/firearm actions & footsteps
* updated all firearm sounds to use new attenuation & concurrency settings.
* updated all footstep sounds to use new attenuation & concurrency settings.
* created Test_SmallArms_Fire_Attenuation map

* impletemented CustomiseSettings widget for children of BaseFirearm Blueprint.
* created AKRailAdapater Blueprint
* updated GBMuzzleDevice class to include attenuation settings, volume & pitch modifiers.
* created Suppressor Blueprints for AR15, AK545 & MP59
* updated reddot & reflex materials to center reticle.
* updated near mission collision Blueprints
* created widgets to show hits & misses
* moved hit & miss sounds from ShootingRange to Blueprint

* created OperatorItem_Attached_Point widget
* display name
* allows editing
* includes remove option (when applicable)
* updated Operator UI to create OperatorItem_Attached_Point widgets for all attached item as required.
* updated GBPlayerState
* InitialisePlayerKits() skips timer if standalone.
* ClientInitialisePlayerKits() applies kit immediately if standalone (for now).
* GetTeamName() will return “NoTeam” if not on a team, rather then “None”.
* added Server RFC for ApplyPlayerKitToCharacter() for usage with client side BP’s / triggers.
* created attenuation & concurrency settings for bullet impacts
* updated all bullet impacts to use them
* updated reddot & reflex reticle materials to use parameters to specify UV
* updated GenerateRandomXXX() & RandomSetup() functions
* fixed minor issues
* changed signature
* updated all affected C++ & Blueprints
* added GenerateRandomXXX to BP_CharacterSpawner.

* changed default value of AGBGameState member variable bPlayAreaOpen to ‘true’.
* added call to GBGameState->SetPlayAreaOpen() based on ready room usage in GBGameMode.
* change AGBGameMode::InitGame() to disable ready room requirement if no ready room starts are found.

* Testing out new LOD tool on SkelMeshes
* Alpha/Bravo Legs/Torso, Hands and Gloves have multiple auto-generated LODs

* updated customise operator trigger
* now calls AGBPlayerController::PendingKitCheck() when the player ‘oks’ their choice.
* added optional center message prompt for when the map is not using prep area trigger.
* updated ShootingRange
* fixed targets
* added additional table
* added customise operator triggers by tables

* moved local flesh impact attenuation to /Audio/Attenuations
* updated UGBKitFunctionLibrary::ApplyKit() to destroy any root item that doesn’t attach to anything.
* created BaseCustomisation widget for use as CustomisationWidget for items.
* created child widget BaseHeadGearCustomisation.
* made BaseFirearmCustomisation a child widget.
* created BasePlatformCustomisation
* updated Operator_Overview_GearKit
* removes need for multiple sub-screens (deleted in this submit)
* switched to dynamically created buttons.
* adds floating attached item points as required.
* creates & adds items CustomisationWidget as required.
* fixed bug in BaseModularPouch & children that prevented them proper use & appearance with floating attached item points.
* changed BaseHeadGear to remove DefaultSceneRoot (Die! Die! Die!)

* Reworked NVG mount assets
* Each helmet/headgear has its own mount SkelMesh
* Socket for mount attachment added to helmets/headgear
* AnimBP created for each attachment type
* Reorganized assets a bit so mounts stay in same folder as the helmet/headgear they are built for
* Added socket for attaching optic to the new mount

* cleaned up BaseOptical Blueprint
* replaced FadeOut timer with FadeInOut timeline.
* fixed spelling of components.
* fixed flow & formatting of nodes.

* unified NVGmount skeletons
* removes need for 3 different animation Blueprints.
* created HeadGearCustomisation_Helmet_Standard
* adds Optic Attachent option on headgear screen for Mich & OpsCore helmets.
* fixed OperatorGearKit_AttachMent_Dropdown widget
* needed tweaking & custom content widget
* created ANPVS_15_NVG Blueprint
* shifted night vision handling from BaseCharacter to here.
* FIXME – to replicate goggle usage, we need to direct attach to character (similar to handgun)
or enable replication on the parent item (helmet).
* New icon images for ANPVS_15_NVG and IRStrobe

* Moved UserPlaceableTarget setup out of BaseCharacter and into its own BP
* BP_UserPlaceable_targets must be placed in a map to allow use. Will tie it automatically to gamemode at some point (Still not workign over network)
* Made it so target faces user when placed

* Removed need to gamemode check to use UserPlaceableTargets
* Added a spawn for BP in Team/Solo Training gamemodes so as long as a map uses those gamemodes then you can place targets

* Optimized and cleaned up BP_UserPlaceable_Targets

* Added in new Wrist Device SkelMeshes (Not exposed in game yet)
* Will be multifunction to include things like a GPS, clock, timer, compass and other information
* Made new laser end point material to hopefully show up better on most surfaces

* Added ReadyRoom to TargetTest Day map

* updated GBPlayerController
* created PrimaryEquipMenu, SecondaryEquipMenu & GrenadeEquipMenu actions.
* created OnPrimaryEquipMenuEventEvent, OnSecondaryEquipMenuEvent & OnGrenadeEquipMenuEvent events.
* removed bindings to SwitchMainHand X X
* added bindgings to PrimaryEquipMenu, SecondaryEquipMenu & GrenadeEquipMenu actions.
* created GBItemBeamComponent
* handles trace line and updates of beam, start & end flares.
* to use, attach to source location, ensure correct orientation (X = forward) & toggle visibility on/off
* updated BasePEQ & LaserSight_Rifle to use GBItemBeamComponent

* added basic radial menus to equip primary, secondary & grenades

* created BP_ReadyRoomDoor
* binds to round state to open/close as required.
* created BP_ReadyRooPointLight
* binds to round state to change colour as required.
* updated BP_Missiontimer
* binds to round state to update its time as required.
* updated Trigger_Ready
* enables/disables self depending on round state.
* updated BasePlayerState
* added delegate event for entering/leaving ready room.
* updated BP_ReadyRoomRoster
* binds to new BasePlayerState delegate to start/stop update timer
* updated timer updates team rosters until stopped.

* Changed laser endpoint to use both a ParticleSystem and small sphere StaticMesh
* Allows better viewing on lighter materials as well as geometry ad extreme angles to player view
* Cleaned up Designator EndPoint ParticleSystem so it no longer lags behind beam
* Created new RandomTarget Placement System
* Place RandomTargetManager(s) in map and link to placed RandomTargetMarker(s) placed in map via a Group setting
* Manager will spawn atarget at random TargetMarkers within the specified group
* In the manager, define how many targets you want to spawn
* Set how many spawned targets you want to be friendly
* Replaced static targets in Aircraft_Takedown_Day with new random target placement system
* Added “friendly” bool to Target_Reactive BP to allow for a projectile hit to know if the target is friendly or not
* Added in placeholder audio cue when shooting a friendly target

* updated reactive vert slide target physics asset

* created shared attenuation & concurreny for props
* using just for doors at the moment.
* updated GBGameMode to look for PIE player start even if sent to ready room
* allows “Play From Here” to work regardless of ready room existing or not.
* updated GBReadyRoomPlayerStart to call Destroy() if GBGameMode doesn’t use a ready room.
* updated GBCharacterMovement to ensure bCanWalkOffLedgesWhenCrouching defaults to ‘true’
* fixes bug when crouching jumping through window in Small Town etc.

* Exposed MaxYaw varialble for editing so map builder can change direction of how door rotates if needed
* Brought TankerShip ReadyRooms up to speed with latest version

* Added simple distance check between player and a selected actor (meant to be actor drone feed  RTT material is applied to) to turn scenecapture on/off
* Brought Depot and SmallTown ReadyRooms up to speed with latest version
* Removed out of date PlayerStart from TankerShip maps

* updated GBInteractiveComponent
* added support for checking direction based on Pawn view location & rotation
* added tick function that is enabled/disable when the trigger or input begins/ends.
* updated Door_Swinging
* fixed outside text being incorrectly displayed.
* updated Door_Rollup
* finished implementing interactive components
* added dot checks to see if it should go up or down
* ensured destroyed & usaged sounds & fx are replicated.
* cleaned up Blueprint/removed old elements.

* updated GBItem to allow the use of items while they are attached, but not held directly in hand.
* updated GBPlayerController to create a list of items that can be used while they are attached and send it to Blueprint.
* updated BasePlayerController Blueprint to bind OnUseAttachedItemXXX() events.
* created own RadialMenu system
* supports any number of entries
* supports preset ‘fixed’ entries combined with dynamic entries.
* entries created & added externally allow for easy customisation
* default entries have bindable delegate to allow you to call back directly into the external Blueprint that created them.
* updated BaseTaclight, BasePEQ, ANPVS_15_NVG & TacLight_MP5 to enable usage while attached.
* fixed TactLight_Rifle.
* changed LaserSight_Rifle to be child of BasePEQ
* FIXME – make BaseLaser instead?

* Removed log spam in user placeable target
* Added in Friendly callback when Friendly target is hit
* Changed ‘UnFriendly’ wording in user placeable target overlay to ‘Hostile’

* Added ReadyRoom to TargetTest maps

* updated GBInteractComponent
* removed duplicate delegate definitions
* simplified delegates
* replaced InputPlayerController & PossibleInputPlayerController with TargetPlayerController.
* Set by trigger
* Cleared by tick.
* renamed Show/Hide/TickInteractions() to Show/Hide/TickPrompts().
* renamed ShouldShowInteractions() to PawnFacing().
* added bAllowPrompts, SetAllowPrompts(), GetAllowPrompts()
* added GetAllowPropmts() check to TickComponent() before Show/Hide/TickPrompts().
* updated Door_Rollup & Door_Swinging to update interact component usage.

* updated BaseTarget to make IsFriendly rep notified.
* updated Target_Reactive to override OnRep_IsFriendly to set friendly/unfriendly material.
* updated BP_UserPlaceable_Targets to removed need to set material when friendly/unfriendly.

* Exposing something for Kris (yuk!)

* changed default bullet projectile initial speed from 10000 mps to 100mps
* updated all bullet projectile speeds to rough real life values.
* Please note that these are not adjusted for barrel length / weapon as of yet.

* updated BaseTarget
* changed IsFriendly back to Replicated.
* added CustomMaterial variable that is RepNotified.
* updated Target_Reactive
* deleted OnRep_IsFriendly
* added OnRep_CustomMaterial
* updated BP_UserPlaceable_Targets
* updated friendly/unfriendly binds to set targets CustomMaterial to friendly/unfriendly material

* updated OperatorRailAttachment_Button widget to use GBRailAttachment::AutoAttach() to determine valid attachments.
* brute force approach – not a good thing if there end up being 100’s of attachments.

* ensured AGBTeamInfo::OnRep_TeamId is called when standalone & listen server to update local player states.
* fixed complaints in child firearm customisation widgets about Setup event.
* fixed TacLight_MP5 and added it to use attached radial menu

* updated AGBPlayerState::InitializePlayerKits() to ensure bots immediate call ClientInitializePlayerKits() instead of waiting.

* Some work on standardizing Materials and maps for platform pieces
* Updated master material to follow same conventions as other master materials
* Fine tuned Roughness and normal maps
* Reorganized test user created killhouse into more than just a testing setup
* New folder structure for templates to be used to create maps within (currently just the arena/compound one)
* Moved the example killhouse map out of test folder

* Added solo spawn points to maps
* Created Operator Station BP to place in training maps to allow players to access Operator menu
* Wood table with tool/parts on it… Walk up and follow prompt to access menu
* Small adjustment to NVG PP material
* Desaturated and clamped values befor tinting to reduce brightness of materials that are white but not lit very much
* Fixed scaling on username text for platforms

* Added in IR Strobe kit item
* Currently an attachment selection for helmets (Will expand to other options)
* Works with radial menu
* Not replicated yet

* created FirearmCustomisation_Handgun & assigned it to BaseHandgun.
* moved ready room player start removal from GBReadyRoomPlayerStart to GBGameMode
* disable code that removes player starts based on game mode tags (for now)
* added code to player starts that removes them based on game mode type (cooperative, solo etc)
* updated BaseCharacter in attempt to fix text component while packaged.
* updated BasePlayerState to stop it creating prep area world prompts in a solo game.
* updated DefaultDeathOptions to remove spectate option in a solo game.

* updated GBTriggerComponent to greatly simplify shot replication
* updated BaseFirearm to implement changes due to GBTriggerComponent update.
* updated GBCharacter
* performed a general clean up & organised functions under similar areas etc.
* updated damage & dying related functions
* simplified rag doll creation
* removed need to use bTearOff & TornOff() to create rag doll
* added InitKitInfos() to proper apply appearance & loadout for non-player characters.
* created Test_DroppedItems map to spam random dropped items from center of map every second.
* recreated GBDroppedItem (again)
* Spent entire day fiddling with Unreal physics quirks.
* By using this dedicated class, I have one goto place for any issues in future.
* updated GBItem
* changed character mesh used for attaching to from GetMesh() to GetTorsoMesh().
* This solves issue with things disconnecting improperly due to the characters mesh (GetMesh()) becoming simulated.
* updated all Blueprints with some kind of item attachment to do the same.
* updated DoDropFrom() to use recreated GBDroppedItemClass.
* added DroppedRotationFix as a hack to fix issue with some item being rotated when attached to dropped version (physics body thing)
* updated many item base Blueprints to implement DroppedRotationFix
* implemented Drop option in UseAttached radial menu.
FIXME – Gonna piss people off, coz you can’t pick stuff up currently.
* created BP_DroppedCosmetic to use in place of client side dropped appearance item
* updated BaseHeadGear to spawn a BP_DroppedCosmetic if PlayerDied inventory event is supported.
* updated Hat_BaseBall & Hat_Boonie to add PlayerDied inventorty event.
* updated Glasses_Sun to spawn a BP_DroppedCosmetic when PlayerDied inventory event is fired.
* added GBResetInterface to GBDroppedItem
* added GBResetInterface to BP_DroppedCosmetic
* modified AIBP_CharacterSpawner
* no longer uses GameMode delegates to spawn/add characters to terrorist hunt.
* created SpawnCharacter function that returns newly created character
* modified TerroristHunt
* spawns terrorist characters until terrorist count is met.
* begins with AIBP_CharacterSpawners, then uses internal spawning function.
* internal spawn function uses terrorist spawn volumes or, failing that, waypoints.
* terrorist count can be set via command line (NEEDS TESTING)
* updated SmallTown_DayAITest to add TerroristSpawnVolumes
* created SoloTerroristHunt based off TerroristHunt
* no round manager
* shows menu that lets you set number of terrorists & customise your operator.
* removed debug round stage stubbs from TeamElimination
* updated Trigger_PrepArea to only add Enter world prompts if round is joinable.
* updated TeamEliminationRoundState to remove Enter world prompts if round is no longer joinable.

* updated SoloTerroristHunt display name to “Solo Terrorist Hunt”.
* moved enemy death message to top left temporarily.. needs updating in mission objectives really

* added Operator button to FrontEndMenuManager
* updated Operor UI
* FIXED appearance handling.
* improved loadout handling.
* added bManualCleanup variable to GBGameState to prevent dead bodies cleanup timer.


* Added AI test level based off smalltown, changed tacticalai interface usage to use correct execute methods (interface returns null if you use it as before).
* Updated squad actor and member components to notify squad of whizzcracks.
* Added in terroristhunt game mode. Stilll needs game over screen in TH gamemode to handle end of mission success/fail. Going to change gamemode to be GBBaseGameMode instead of GBGameMode so that round handling stuff doesn’t screw with game flow.
* Removed sense config for tactical use.. moving it all to perception component.
* Just added a quick sanity check on bounds of arrays when being incremented in the round manager during the HasXXX  check for enough players/bots.
* adding game messages to Terrorist Hunt GameMode via custom game state.
* fixing redirects in AI directory.
* removing last references to BaseBotController.
* removing references to GBBot.
* cleaning up various AI Blueprints.
* removed GBBot class
* fixed bad BotControllerClass in GBBotManager class.
* set TerroristBot BT to DefaultBotBehavriourTree instead of TerroristBT
* Added simple blueprint-based waypoint support into AI test map for quick test. Will replace with a proper system later.
* Working on updating AITacticalPerceptionComponent updates now. Initial check-in of that.