Jump to content

BFS Banner


Member Since 22 Feb 2007
Offline Last Active Private

Topics I've Started

New Ground Branch build is on ready!

18 September 2016 - 09:20 PM

The main push for this build has been stability, performance and overall user experience improvements. We have been doing a LOT of testing and enjoying every minute of it!


Build Version 1014

Build 150917


Approximate Update size: 2.5GB

Steam build Id: 1341829

Known Issues

  • Crash when taking screenshot in BugTracker during online session

  • Breaching charges are currently not working due to door system changes

  • May get a Network Timeout error the first time you try to connect to a server the first time you load the new build


Standalone Dedicated Server

A new Standalone Dedicated Server for Windows is ready and available as a Steam 'Tool'. For now, we need to distribute license keys since Ground Branch is not public. The Dedicated Server is free and you do not need to own Ground Branch to use it. For now during testing, we are limiting the keys to 225 in total and you can get one here:


We plan to offer a linux version as well at some point as well.


Player kits being visible in the Ready Room

You can now see a player's currently selected kit items and uniform selection in the ready rooms. This helps players see what other teammates are taking into a mission.


Grenades, Ladders and Doors oh my

Grenades now work properly in online sessions. Still need to tweak the damage model and there is some animation work to be done, but everything is now functional. Try out the frags, smokes and flashbangs!

Ladders and doors are still far from being complete, but they are now more user friendly and intuitive. Walk up to a ladder and hit R-Mouse button to 'mount' the ladder then use forward/backward controls to move up and down the ladder. 20160918213149_1

Doors have been updated to allow for both a quick open/close option and a more fluid, controlled method of entry. The latter method is controlled by hold the door handle and moving with the door to open or close it slowly. While slower, it is quieter and allows you to slowly peek in through the gap while keeping your weapon on target.


Player postures and weapon handling smoother (offset rail now works properly!)

Lots of tweaking has been done to the player movement animations and blending to make general movement smoother and more fluid.Animation work will be never ending throughout the Early Access period so much more to come in this area.

If you equip an offset rail, your weapon will now properly 'cant' to the side.


Pistol animations have been fixed/revised to allow for some more natural postures..... Low, Close Ready and Engage.


Basic tracers

Basic tracers have been added for testing to all weapons that use rifle rounds. Currently they will fire off every 5th round and the last 3 rounds of a magazine. We will be adding the ability for users to select the frequency of tracer rounds when selecting their kit, but for now things are hard coded. Please note that tracers can be hard to see if rounds are being fired short distances.

Map polish and optimizations

A lot of work has been done to make framerates more consistent and even throughout a map. Overall increases in framerate have been gained as well and there is still room for more improvement as development continues. Along with optimizing maps have also started to receive some polish for a more cohesive visual experience. As with optimizations, maps will continue to be polished as resources become available.


Coop Terrorist Hunt

The Coop Terrorist Hunt gamemode is now fully working and a ton of fun! We have been testing Coop TH a lot amongst ourselves as well as with community members and while the AI is still basic and dumb gameplay is addicting. It really brings back feelings of the old school tactical shooters.

The AI has received some tweaks as well to add basic patrolling and decision making. The next build should include basic reactions to incomign fire along with basic general usage of cover.

A user recorded video with a couple of developers.



We are starting to add some basic randomness to maps. To start, the Small Town map now has random covers on windows each time you start the map. We will be adding in more random items to all maps soon.


Fixes, fixes and more fixes

Lots of little (and big) things have been fixed so users should have a much more fluid and enjoyable overall experience when playing. Since we are a very small team with limited resources it can be tough to know how Ground Branch will run on various configurations and hardware. So please report bugs and issues as you come across them.

Loading Screen

Server name and message of the day was added to the map loading screen. 20160918204323_1


Work has been done on the in game VOIP system to to fix up both voice and radio systems. Voice (V key) now uses basic attenuation (no occlusion yet) to mimic lower volumes based on distance. Radio (B key) talk works within a team only and has no distance limitation.


Overall a pretty big update that should make the experience of using Ground Branch much better as well as things starting to feel more polished. Moving forward, AI will get some updates as well as continued fixes and polish as we have gotten a lot closer to an Early Access release.

Thanks for your continued support.... we are almost there!
* FIXED - Bad texture/shadow flickering on SmallTownwalls and cieling
* FIXED - Really bad framerate on Benchmark Night map due to engine change in particle collisions
* FIXED bug in AppearanceInfo class preventing proper appearnce string creation.
* FIXED kit replication issues.
* moved kit related server RPC's from GBPlayerState to GBBasePlayerController.
* changed FPlayerKit to hold array of small kit string chunks instead of a single massive kit string
* changed kit related RPC's to use single FPlayerKit struct instead of relying on multiple back and forth server/client RPC's.
* FIXED some bad lightmap UV's for a few Depot wall assets
* FIXED possible none references in HUD_PrepArea_World_Prompt
* FIXED Door_Swinging
* basic quick open/close back in
* added option to fluidly control the door as you move with it.
e.g. Right-click to hold handle, keep aiming, the slowly open door by moving forward.
* created Interaction_DoorHandle to handle character input & prompts.
* FIXED Blueprints macros using incorrect reverse loop.
* created new dedicated ReverseLoop macro to ensure it doesn't happen again.
* FIXED GBInteractComponent detecting AI as well as human as local controller.
* FIXED Door_Rollup
* FIXED BP_MissionTimer
* FIXED bound keys causing chat window to enter current text.
* FIXED spelling of 'customise' in HUD_CustomiseOperator_World_Prompt widget.
* FIXED - No collision on ReadyRoom ceiling
* Stops players from getting to out of play area
* Enhances performance in ReadyRooms due to more accurate culling of map meshes
* FIXED Bad LOD transition distance on White_Oak_Desltop2 asset
* FIXED bug in GBRoundManager & GBRoundState classes that reset/destroyed actors that were just spawned.
* FIXED ladders on SH_SmallTown_Day using old ladder type
* FIXED calling AllHumansReady() in RoundManager
* FIXED failing to get correct transform from GBSpawnVolumes
* FIXED possible bad transform in GBSpawnPoint (increased capsule size)
* FIXED Friendly names for 762x51 bullets were reversed
* FIXED GBSurfaceLink::AssociatedClass variable not linking to Blueprint based classes correctly.
* FIXED bad FootStep SurfaceLink references.
* FIXED BP_WindowCover collision & replication.
* FIXED invalid RotArray index in BP_PalletteStack Blueprint.
* FIXED BFS_TeamRoom_Roof collision geometry.
* FIXED camera references on SH_NatureArea_Day.
* FIXED reflection sphere warnings for SH_TankerShip_Night when packaging.
* FIXED WareHouse_Shelves collision geometry.
* FIXED Reload_Dry_M1911_Montage missing enum references
* FIXED erronesous bone reference in Handgun_to_Rifle animation sequence.
* FIXED none reference in LowWall_CinderblockWall_Spline Blueprint.
* FIXED missing MIC reference in WhiteboardStand_Wood
* FIXED sound asset issue in Buzzer_Cue.
* FIXED bad sprite component reference outside of editor in GBAISpawnPoint.
* FIXED bad associate class string asset references for BrassShell_X FX
* FIXED ExternalMagazine and Magazine classes to return correct projectile, with Magazine Projectile class falling back internally to BaseProjectile if Projectile cannot be found.
* FIXED Galil mag BP code to not have 0 for tracer frequency (causing error in modulo arithmetic).
* FIXED - Made suppressor DisplayNames generic so they could be used on a class of weapon and not speific ones
* AK545 is now AK and MP5 is MP
* FIXED EnvironmentQueryEditor not being loaded on server
* FIXED TestNativeInputDoor Compile errors and depreceated the Blueprint
* FIXED name tag fonts log spam during dedicated server loadup
* FIXED possible null in GBAISpawnVolume
* FIXED Test_RenderText reference in BP_ReadyRoom_Roster Blueprint.
* FIXED Interaction_Ladder widget reference in BP_ImpromptuLadder Blueprint.
* FIXED min players per team check in AGBRoundManager::AllHumansReady().
* FIXED bad extents on SM_MERGED_Gaurdrail_End_6
* FIXED Door_Rollup not affecting navigation
* FIXED overly large collision mesh on ConcretePole_A & Fire_Extinguisher meshes.
* FIXED Door_Swinging navlinks not connecting to navigation mesh.
* FIXED WayPoint Blueprint not obeying 2-way navigation.
* FIXED stepping on throw grenades spassing player out.
* FIXED grenade spoon deflecting thrown grenade.
* FIXED null instigator crash caused by AnimNotifier in grenade class.
* FIXED array issue in AGBGameMode::AddDroppedItem()
* FIXED BP_DroppedCosmetic collision variables to prevent client side GBItemProjectile collision.
* FIXED - Bad collision on GuardRail asset
* FIXED spawn location of FX/damage for grenades
* FIXED sight components not always being found properly.
* FIXED Door_Rollup Blueprint possibly accessing components that are being destroyed.
* FIXED weapon being in-hand in ready room
* FIXED GBFirearm sight component updating
* FIXED GBFirearm firing before being forced on target if off target.
* FIXED handgun position when crouched.
* FIXED weapon position not changing for offset rail when crouched.
* FIXED handgun reload blending
* FIXED - SugarPine tree not contributing to DistanceFields
* Tree no longer appears unlit in the distinace
* FIXED - M16 not casting complete shadow
* FIXED view starting at origin (maybe?)
* FIXED BP_DroppedCosmetic blocking clientside movement
* FIXED operator trigger not showing prompt if still in trigger
* FIXED roster not updating in cooperative mode.
* FIXED incorrect target for rcon/admin commands
* FIXED initial light/fog in ready room on join
* FIXED radial menus not closing on death
* FIXED BP_WindowCover not replicated when uncovered
* FIXED close ready replication on handgun
* FIXED offset rail usage replication
* FIXED handgun reload over extention
* FIXED over extention of non-handguns after using handgun
* FIXED radio voip not being global.
* FIXED pre loading screen not displaying info.
* FIXED radio static playing continously.
* FIXED player state trying to bind delegate to VOIP audio component multiple times.
* FIXED blood decals.
* FIXED not selected iron sight component as sight component by default if no other sight was attached.
* FIXED lod & textures issues in first person & operator menu.
* FIXED calling head vis item event on non-human or non-viewed controllers
* FIXED stretched bullet impact decals.
* FIXED firearms continuing to fire on client if dropped mid-burst.


* created new BugIssue_Report screen, with the submission step seperated into it own widget (BugsIssues_SubmitOverlay)
* Set MP5 Auto sound cue to loop
* Set proper attenuation on MP5 sound cues
* replaced ParentSwitchScreen macro in BugsIssues_Report with manually placement of nodes instead
* FIXME - why this would only break in this ONE screen, but work in all others, I don't know.
* New footstep and fire attenuation
* Audio update: new cues, attenuation and spatialization for pistols, smgs, rifles and shotgun
* updated UGBKitFunctionLibrary
* added log category "LogKitFunctions"
* added GetBasedKitString() to take JSon kitstring, condense it and then convert it to a Base64 string.
* added GetUnbasedKitString() to Base64 string and convert it back to condensed JSon kitstring.
* simplfied & improved DeserializeKitString()
* updated EncodeJsonKit_r()
* FJsonObject shared pointer must be included as reference!
* now returns bool if item is successfully encoded.
* now verifies ShortItemAssetPath before trying to encode.
* updated DecodeJsonKit_r()
* fixed bad syntax in VersionNumbering.bat
* Added in LOD MIC's for foliage assets that turns wind off (saving vertex shader instructions)
* Set far LODs to use this material to increase overall performance on lower end GPU's
* Helps to even out GPU/CPU load for more consistent framerates
* Changed LOD transitions to smooth from pop-in on foliage materials
* Visually smoothes out LOD transitions
* Moved a lot of foliage assets in Depot maps instance foliage system to improve performance
* Broke lighting out into sub level for Depot maps
* Only geometry is in shell map now to make bug fixing and changes easier to manage
* Added MaterialCollection parameter to allow a settings option to change wind shader between higher/lower quality
* Small optimization for lower end systems
* Changed Depot map over to use DistnaceField Lighting
* Better and more consistant lighting in distance
* Increased DistnaceField setting for a few assets used in Depot maps
* updated GBCharacter::OnRep_RemotePlayerMontage() to not call PlayAnimMontage on a montage that is already started.
* should fix double reloading attempts
* should fix IgnoreEngagedPosition getting cleared incorrectly online.
* replaced usage of Transition_ToPlayArea with Transition_FadeOut
* deleted Transition_ToPlayArea
* created GBLadderTrigger class
* will replaced GBLadderVolume
* doesn't need to encompass entire ladder - just be near it.
* must currently be manually used via interact component
* updated GBCharacterMovement class
* improved ladder movement, including automounting from top
* updated GBInteractComponent class
* removed need to name triggers & outline components
* added AddTriggerComponent()
* added OutLineComponents & OutLineActors arrays that can be bound directly to instances of components/actors
* added option to use parent component as trigger
* added option to use child componetns as triggers
* added option to ignore vertical different when checking if pawn is facing the interact component
* updated BP_LadderTest to be based off new GBLadderTrigger
* added BP_LadderTest to Example_Map
* tried to improve collision on WarehouseLadder_XXX static meshes
* created GBLadderComponent based off GBLadderTrigger
* NOTE - left old ladder versions until maps updated.
* hard-coded triggers & interaction exist in class but is disabled via define.
Felt that implementing it via Blueprint gave better result.
* added Show/HideInteractPrompts() & events to GBPlayerController
* updated BasePlayerController Blueprint to call Add/RemoveCenteredMessage based on OnShow/HideInteractPrompts events.
* updated GBInteractComponent class
* changed Pawn references to GBCharacter
* changed PlayerController references to GBPlayerController
* updated assignal delegates to include GBPlayerController references.
* created child of ImpromptuLadder_Static with included GBLadderComponent & Interaction
* created Test_LadderComponent to test ImpromptuLadder_Static_Child.
* removed BP_LadderTest from Example_Map
* deleted BP_LadderTest

* Optimizizations for SmallTown map
* Tweaked some cull distance values on various meshes
* Combined some meshes to reduce drawcalls
* First polish pass for SmallTown map
* New lighting scheme
* New PostProcess setup
* Added some more cover/foliage to a few open areas
* color corrected some rock materials to better fit new lighting
* replaced UGBFunctionLibrary::CategoriesMatch() with UGBFunctionLibrary::NameArraysMatch.
* updated affected Blueprints + C++ classes.
* stripped down UGBInteractComponent to remove bloat
* moved some of its functions to new UGBInteractionFunctionLibrary.
NOTE: Mucked around with replacements using both an interface, an actor and combinatio of both.
Ended up keeping the component, but removed its bloat.
* created /UI/Interaction/Interaction_Base widget
* includes sub-widget to show key bound to action as text or icon, depending on key.
* handles the is/is not facing, as well as binding/unbinding player input as required.
* updated Impromptu_Ladder_Static_Child and renamed it to BP_ImpromtuLadder
* created Interaction_Ladder to handle character input & prompts.
* updated GBCharacter to replicate LadderComponent.
* updated GBCharacterMovement class
* call GBCharacter->SetLadderComponent(nullptr) when losing ladder to ensure its replicated to client.
* climbs up the ladder slightly when mounting from bottom.
* updated GBPlayerController class
* renamed Start/StopInteracting to Start/StopInteraction.
* updated AGBItem::SpawnItem() to return item pre-cast to request class
* updated affected Blueprints.
* improved Door_Swinging
* AI now only opens door the door if mostly close and facing it.
* quick use now opens on mostly closed, closes on mostly open.
* improved Interaction_Base & child widgets
* improved general event names
* added ForceInteractinStop event.
* improved ladder movement code
* jump now launches you away from ladder.

* created GBServerManager class
* moved voting, admin, rcon & team kill handling to this class.
* shift config entries from Engine.init to ServerManagement.ini
* updated affected C++ classes.
* added support for additional commands via delegates.
* updated TerroristHunt GameMode Blueprint
* added support for TH specific server & voting commands :
TerroristCount, KillTerrorists, FreezeTerrorists & UnfreezeTerrorists.
* added timer to spread out creation of Terrorists over the duration of a 4-5 seconds.
Should help reduce the initial hitch on round start when playing cooperatively online.
* updated GBBasePlayerController class
* created new ClientInitilizeKits() RPC.
* modified SetAppearance() to call new kit in GBGameMode when in Ready Room (see below)
* updated GBGameMode class
* created new functions to apply ready room kit & play area kit.
* updated StartNewPlayer() to call ClientInitilizeKits() after creating the players pawn for the first time.
* updated GBPlayerController class
* modified SetAppearance() & ServerJoinTeam() to call new kit in GBGameMode when in Ready Room.
* updated GBRoundManager class
* hooked up delegates for voting & server commands.
* updated Transition_Fadeout & Transition_ToReadyRoom to remove existing Transition_Fadeout screens automatically.
* updated Transition_Fadeout to delay initial animation basedon time exposed during spawn.
* updated Trigger_Ready
* added several stubbs to reports whats going on.
* creates initial Transition_Fadeout with 10 second time.
* checks ready room status after a few seconds and removes fade if still in there.
* updated HUD_Ready_World_Prompt widget.
* added option to show message when player cannot enter play area.
* updated Blueprints that reference it to ensure its updated correctly.
* updated BP_ReadyRoomDoor
* removed client side closing of door.
* added closed boolean that is rep notified.
* added collision box that is immediately set upon the door closing.
* added trigger box to add a message when approaching closed door.
* updated BP_ReadyRoom_Roster & BP_MissionTimer to replace TextComponents with CanvasRenderTexture updates.
* updated AIBP_CharacterSpawner
* removed TextComponents
* replaced character mesh with new S_BadGuy sprite.
* added automatic setting of net.IgnorePackageMismatch when using Development build.
* added GetBuildType to GBFunctionLibrary.
* updated FrontEnd/InGameMenuManagers to show build type in lower right hand corner.
* added missing DefaultServerManagerment.ini (if it works)
* updated ServerBrowser screen to allow Development builds to ignore network version differences.
* New Marketplace Forest asset collection
* Added in some new foliage/forest content
* Seperated out buttons on rollupdoor switch to their own meshes
* Added proper collision to rollupdoor mesh
* Replace rollup doors in Depot maps
* Added attenuation to ReadyRoom ambient sounds in Depot maps
* Stops those ambient sounds from being heard in play area of map
* Moved ladder content into new folder
* This caused a resave to a lot of maps
* Made new pieces meshes for new ladder system
* Replaced old ladders in Depot maps with new system
* Replaced old rollup doors in Depot maps with new system
* Replaced ladders with new system in Small_Town
* Added in Metal window cover BP
* A window cover that allows for window holes in Small_Town to be covered
* BP includes bool to have cover visible or random cover visibility during map start
* Added in WindowCover BP's to Small_Town map
* Set to be randomly open/closed at level start
* Created LODs for various objects
* Reduced lighmap resolution on various pieces of foliage and detail objects to be more in line with mesh size
* Reduces memory usage some and gives more consistent visuals
* Made some small adjustments to placed foliage that was obstructing AI pathing
* Added in some Megascans content
* Forest pieces and some textures
* Fixed bad roughness value on railroad ties that was causing them toglare in the sunlight
* Started a polish pass on Depot_Day maps
* Cleaned up some materials
* Adding in meshes to polish up some terrain areas to look more natural
* Updated some terrain textures to higher quality
* removed GBSquadActor class
* cleaned SquadActor class
* updated all affected C++ classes
* several variables were updated to UE4 smart pointers.
* created GBAIDirector & GBAIState classes
* can be used to create AI controller & characters, so they are tracked & managed more easily.
* includes several helpful functions & events
* to use, create a GBAIDirector based Blueprint & set it as a game modes AIDirectorClass.
* utilises the GBAIState class, which can replciate information to the client
e.g. Remaining enemies.
* created GBAISpawnActorInterface class
* can be used in C++ or Blueprint to create a place where AI can spawn.
* by default, there are two new classes implement it - GBAISpawnPoint & GBAISpawnVolume
* interface allows for getting tranform information, apply appearance/loadout etc.
* see GBAISpawnActorInterface header for full list.
* created GBAIWayPoint
* simply class that links to other GBAIWayPoint's as siblings (two way) or children (one way).
* updated AGBPlayerStart::RemovePlayerStarts()
* checks that some player starts will actually be kept before destroying those that won't be.
* fixes maps having no player starts if incorrect or no actor tags are set.
* created FAIInitialBehaviour struct
* holds named behaviour & actor references
* used by IGBSpawnActorInterface & AGBAIDirector classes to set the initial behavriour of newly created AI controllers.
* updated TerroristHunt & SoloTerroristHunt GameMode Blueprints
* both use AIDirector_TerroristHunt, making them identical, AI wise.
* created TerroristHuntExample map to updated gamemodes & classes
* added GetPriority() to GBAISpawnActorInterface
* added FSpawnActorGroup struct to find and store the highest priority of associated spawn actors.
* added new meta data option "ForceAsFunction"
Force C++ function to show up as an overrideable Blueprint function even if it normally wouldn't.
* updated AIDirector_TerroristHunt Blueprint
* implemented function version of SetInitialBehaviour due to engine change (yay!)
* improved flow over first version
* includes 'idle' option
* created GetRandomisedGroupsByPriority() function
* randomly sorts spawn groups, but biases the result based on groups highest priority value.
* updated TerroristHuntExample
* removed uneeded GBWayPoints
* added idle & other initial behaviours to spawn actors that were missing them.
* added priority to one spawn volume for testing.
* updated ladder usage & movement
* auto-mounts top/bottom using MOVE_WALK style movement to step over obstacles.
* auto-aligns player with between ladder extents if ladder is wide enough.
* auto-rotates player to face ladder direction.
* limits yaw while on ladder.
* only moves down ladder if proposed movement direction is mostly down.
* improved collision on Rungladder_TopAttachment_L/R static meshes.
* More detailing/polishing of forest areas in Depot_Day
* Polish and Optimizations to Small_Town map
* Cleaned up some over aggressive LOD cull ranges
* Reworked a few areas of terrain and player boundery
* replaced GBAppearanceInfo & GBLoadoutInfo with single GBKitInfo class
* updated Depot_All_Day to use updated AI handling.
* Tweaked some LOD transition ranges in Depot map
* Added LOD to a couple meshes
* Changed tracer from particle effect to staticmesh for testing
* removed SquadActor Blueprint & related references.
* removed AIBP_CharacterSpawner Blueprint & related references.
* removed TerroristSpawnVolume Blueprint & related references.
* attempted to fix warning about ExampleDeviceProfiler by specifying WindowsDeviceProfiler.
* set correct game icon in project settings.
* removed old/bad content.
* removed classes related to previous implementation of ladder.
* Added in tracers for rifle calibers
* Ability to set tracer color type per magazine
* Includes Red, Green and Orange colors
* added GBAIDirector::GetAIState()
* created AIState_TerroristHunt
* replicates remaining terrorist count from server to clients.
* displays engine message once count is received.
* updated SoloTerroristHunt & TerroristHunt GameMode Blueprints to add support for AIState_TerroristHunt.
* Added bool to allow last 3 rounds of a rifle magazine to be tracers
* True by default
* attempted to fix BP_ReadyRoomNameTags causing log spam during dedicated server loadup due to text component usage.
* updated AGBGameState class
* moved player kit initislisation from GBGameMode server-to-client call to AGBGameState:AddTeam()
* changed NumTeams variable to from Replicated ot ReplicatedUsing = OnRep_NumTeams.
* created OnRep_NumTeams() to call player kit initislisation if if replicated NumTeams is zero.
* changed GetTeamByTeamId() & GetTeamByTeamName() to use old style forloops instead of forloop iterators to fix possible nulls.
* move RegisterServer() from GameMode::InitGame() to FCoreUObjectDelegates::PostLoadMap() delegate call setup via AGBGameSession::ProcessAutoLogin().
* Created more LODs for various meshes
* Depot work
* Optimized some distance culling values to be a bit more aggressive
* Changed out ladders to correct BP (No longer test versions from Kris's Dev folder)
* Rearranged Landscape and foliage into their own sub level to clear up old volume reference that is stuck in map (helps in organization as well)
* Set proper physical material for Landscape layer infos
* removed GBAIWayPoint class
* updated Depot_All_Day
* added many additional way points / patrol pathes.
* adjusted existing spawn volumes.
* added more AI spawn volumes & AI spawn points
NOTE: Despite not adding any visible meshes etc, it still wants to update lighting :(
* Merged GBGameMode ApplyReadyRoomKit() & ApplyPlayAreaKit() into ApplyPlayerKit().
* will now show appearance & loadout in ready room
* updated other classes to support this & prevent item usage in ready room.
* updated GBGrenade class & related Blueprints
* updated BaseGrenade & BP_Grenade to use an ExplosionClass to handle grenade explosion.
* moved assets related to grenade explosions to /Grenades/Explosions/Assets.
* moved Bluerpints related to grenade projectile /Grenades/Projectiles
* removed BP_ReadyRoomNameTags Blueprint
* changed MK48_MOD1 reload to use M249_Reload_Montage
* updated grenade Blueprints
* ensured explosives are replicated & ony play on client.
* ensured damage is only applied on server.
* added basic impact FX on clients (uses BrassImpact_XX FX).
* created GBItemProjectile
* changed BP_Grenade Blueprint parent class to GBItemProjectile
* updated BaseGrenade Blueprint to correctly use GBItemProjectile variables when spawning BP_Grenade.
* removed BP_Grenade & BP_GrenadeSpoon Blueprints
* created Projectile_Grenade Blueprint.
* updated Explosion_M18_Smoke_ Blueprint to fix references
* updated BaseGrenade Blueprint to fix references.
* removed AssociatedItem replicated stubb from GBItemProjectile.
* improved grenade usage
* grenade state is now set by authority and replicated to client.
* added offset rotation & location support to InGameAnimationBP
* added inventory events for changing off target, engaged & ignore engaged positions.
* added delegates to sight component to fire when engaged/disengaged
* updated GBFirearm class
* sight components are now determined on server & client.
* on new inventory events (listed above), will call new sight component delegates.
* when switching sights, will call new sight component delegates.
* Changed magazines to use tracer every 5th round and last 3 for testing
* LOD work on TankerShip maps
* added movement speed control via mouse wheel when spectating
* added moveup/movedown support to spectating mode (made need to rebind up/down action multiple times first)
* updated HUD_Spectator_Controlls to add movement speed control hint.
* added additional IsValid() checks in SceneComponent before calling attachment related delegates.
* added .IsBound() checks in SceneComponent before calling attachment related delegates.
* simplified detachment/attachment of AssociatedItem in GBItemProjectile.
* improved item offset timer updating in OffsetRailAdapter Blueprint.
* added accessories to FirearmCustomisation_AK (for what its worth).
* hacked in support for hangun close ready
* hacked in burst-fire for G22 for shits and giggles :P

* Adjusted some lighting settings in Depot Day maps to achieve better world shadow definition
* Still some work to do, but the environment and character shadows are more defined now.
* Its a balance between rendering resources and shadow resolution on bigger maps
* Refined outdoor lighting on Depot Day maps to be smoother and more uniform. (Less full dark areas)
* New stick/wood asset
* Changed a few settings on some foliage materials to help with dark lighting
* Set boulder master material to use dither LOD transition to reduce popping
* Cleaned up some lightmaps UVs on a couple trees
* Set materials on PineTree type to dither LOD for smoother LOD transitions
* updated loading screen creation & handling
* split loading screen into separate widgets.
* added pre-loading screen when attempting to join server.
* created post-loading screen, but disable implementation due to issues.
* created server info widget to display server name & MOTD
* added new icons when talking & using radio
* added radio usage sound effects.
* funneled VOIP sound component through player state to ensure its updated correctly based on radio usage.
* udpated VOIP handling
* treats people in ready room as being on same team
* added OnAudioFinished() binding to VOIPAudioComponent to ensure its removed.
* separated radio & talk VOIP settings.
* changed VOIPAudioComponent to weak pointer
* added stubbs to track VOIPAudioComponent
* pushed UE413 fixes into GBGameMode & GBPlayerController that may affect voip
* Optimized ShootingRange map
* removed VOIP stubbs.
* reenabled radio squelch when radio is used.
* adde MaxVoiceDistance (in cm) editable variable to GBPlayerController
* Increased DistanceFields detail on a few meshes
* Changed trees/bushes from individual StaticMeshes over to foliage system
* Shooting Range and Killhouse maps
* Performance increase
* Rearranged ShootingRange map to use Shell system
* Added bone to M16 front sight post so we can hide it when in engange posture and viewing through a magnified optic. (Not implimented in game yet)
* Not NORG but much easier than trying to make it work other ways. :)
* updated GBDamageType class
* removed UT4 like handling of effects.
* added HitEffectsClass
* updated GBCharacter to spawn HitEffectsClass on client based on LastHitInfo replication.
FIXME - update to support through-and-throughs in one class!
* moved UAISense_Damage::ReportDamageEvent() from GBBulletProjectile to GBAIController.
* added more checks to prevent continous firing on death drop.


* Temporary fix for AI "Trains", for now simply set randomly some of the AI to "Guard" command. Means they stay in place inside buildings when spawned.
* Fixed collision problem with EQS Test Target capsule collision getting in the way of players :(
* Quick tweak to EQS to reduce some of the CPU load in heavy AI situations
* Fixed a bug in the sensory system by updating the perception component "listeners" during calls to SetGenericTeamId, that way it refreshes the queries it runs for sight based on the correct team id rather than the default 255.
* Updated some CVAR values to represent the correct naming convention for AI values.
* Updated AI to work with old waypoints for now.
* Fixed up smalltown to use Kris's new spawns.
* Fixed up kris's TH example map to give some waypoints to group spawns.
* Added temp death marker so that dead bodies are noted and affect navigation queries (seems to not work as expected).
* Updated TerroristBot to use old waypoints, removed some redundant code from GBAIController for fixing team spawn issues now we're using AIDirector class.
* Added fix for AI targetting dead player. I'll miss you!!

Read this story on GroundBranch.com

New Ground Branch build available - version 1013 build 110810

15 August 2016 - 04:48 PM

Well what can we say... its been way to long since the last public build and we apologize. There have been numerous private testing builds with the Operator Edition owners and they have provided tons of information on fixing bugs and provided suggestions on improving the game. It also made us realize that the internals of the game have reached a point where we need to refine our process a bit to better accommodate faster/cleaner iteration that allows us to get public builds out faster and with much less work on our end. We have taken care of that, but in the mean time WE HAVE A NEW BUILD!!!!!


Build Version 1013

Build 110810


Approximate Update size: 1.9GB

Steam build Id: 1275090

Known Issues

We are still not even to official Early Access yet so lots of things are half broken and not working. The biggest ones:

  • MP connectivity is spotty (may not connect or disconnect for no reason)

  • MP games have issues with correct loadout and kit items sometimes (May not get in game what you equiped in Ready Room)

  • We are in the process of rewriting how our gamemodes work and how our loadouts are replicated

  • Texture streaming issues in Operator Menu (very low resolution textures sometimes)

We made the decision to do this release knowing MP was half broken because there was so much other stuff in there. Hopefully we will have all that fixed up in a new build soon.


Terrorist Hunt

We plan to come up with a new name for this mode but for now its the easiest way to label it. Lots of work has been done and there are some new parameters available to mess with to fine tune some of the A.I. values if you like:


  • Terrorist Count - Hopefully explains itself

  • Terrorist Perception Delay - How much "alertness" the AI must feel before they consider something fully perceived

  • AI.FootstepWalkLoudness - How much of the "alertness" value is emitted with a walking footstep (attenuated by distance)

  • AI.FootstepRunLoudness - How much of the "alertness" value is emitted with a running footstep (attenuated by distance)

  • AI.FootstepNoiseRange - The maximum range allowed for any of the alertness values above

  • AI.WeaponFireVolume - How much of the "alertness" value is emitted with a single shot (attenuated by distance)

  • AI.WeaponFireNoiseRange - The maximum range allowed for any of the alertness values for shot value above

  • AI.IncomingFireActivation - How much "alertness" is perceived for an incoming fire (from the whizz/crack system)

So think of the Perception Delay as the bucket size and the other alertness values as filling the bucket up.

This game mode is also now available on the Depot map! This is a first pass at getting it working on a larger map so as with everything at this point, it is very rough. But it is a lot of fun!


TH does work in coop mode for some, though please see known issues above. If you want to try it there are some discussions in the forum about it.

Some new UI Items

In the Aircraft Takedown training map you can now reset your targets by walking up to the device next to the entry door and hitting the J key.


The RadialMenu has been updated a bit graphically (more to come) and we added a Drop option so you can basically get out of the menu without actually selecting anything. This will also eventually allow you to drop actual items on the ground.


The weapon customization menu now allows easier deleting of equipped attachments.


New loading screen(We would like to have no loading screens, but for now we do).


Gadgets and Weapons

We have started to remix the weapon sounds and the first one in the build is the MP5. Still lots of work in that area but it should give you a sense of where we are headed.

The wrist device was also added in for some prototype testing. The idea for this is to act as an information system to the player and his/her team. It *could* be used for displaying in game time, objective info, various maps and images. We haven't locked down exactly what we want it to do just yet so you will be seeing some functionality tests with it over the next few months. At the moment it doesn't do anything.


Breaching Doors

Some door breaching prototypes have been added, though they currently only work in single player. Players can shoot out locks or place and detonate breaching charges. Since this is currently a prototype the breaching charge controls are hard coded; When in a door's interact mode (see door control text) NumPad-Zero places a breaching charge and NumPad-One will detonate it. Watch out, because the blast will cause damage if in its close vicinity! This will all be greatly enhanced in coming builds.




We have begun some optimization efforts, but still have a long way to go. Weapons, weapon attachments, characters and character gear all have proper LODs now. We are now beginning map optimization passes so you should see some small improvements in this build and more in followup builds.

Animation and Character Updates

Various weapon reload and movement animations were updated. We in the process of rebuilding our weapon collision system as well as adding a much more robust and realistic movement model. Hopefully that will be in the next build!

New player nametags on vests instead of the placeholder floating yellow text.


Coming Soon

Stand alone Dedicated Server! We are currently testing out a Windows stand alone dedicated server Tool on Steam that will be freely available to anyone that wants it. No need to purchase the game to run a server. This should be available in the next build.


If you want to see all the changes in their raw form here is a detailed changelist:


FIXED - Bad framerate in Killhouse night map
* Removed rain particle effect as the particle collision had massive slowdown
FIXED - Compile errors in Depot Landscape Material that were spitting out log errors
FIXED potential nullptrs in GBGameState caused by GBTeamInfo replication delay.
FIXED GBCharacter not setting GBPlayerState character reference on server
FIXED leaning while running/sprinting (doing either while leaning cancels lean).
FIXED laser & tac lights not going off on drop or unequip
FIXED NVG overlay not being removed if you customise operator with NVG enabled.
FIXED not being able to remove optic or top attachment from helmets without reoppening head gear screen.
FIXED hard to place pouches by disabling animation while focussed on platform.
FIXED mouse cursor staying as pouch (disabled the feature).
FIXED - Falling through ground under stairs in SmallTown map
FIXED - No collision on red wall along rear of TankerShip
FIXED WebBrowser widgets being removed on editor restart (changed WebBrowser plugin load order)
FIXED - A few doors in SmallTown map opening wrong direction
FIXED - Userplaceable targets don't place actual target
FIXED - Character not showing wetness after being in water
* Drying time doesn't seem to be working though. May have gotten lost when PlayerController was rewritten.
FIXED - Bad weighting on Mk48 rear iron sight. Not attached to top cover
FIXED inconsistencies in bullet projectile information (e.g. some lengths were in cm, supposed to be mm).
FIXED bug in GBBulletMovementComponent that accepted lengths in cm, instead of mm (see above).
FIXED menu game mode showing up solo game mode list
FIXED reactive targets not dropped (HACK FIX for now)
FIXED solo terrorist hunt menu not appearing on death when game is packaged
FIXED loading screen walk cycle animation crash (I hope)
FIXED log spam due to invalid index in server browser
FIXED server browser tabs not sorting
FIXED server browser basic all, adversarial & cooperative filters.
FIXED - bad lighting on doorframe in SmallTown map
FIXED - Black platform and pouches in some lighting situations (like Aircraft_Takedown interior)
FIXED - operator UI use in SoloTH menu.
FIXED - text component issue on dedicated server with BP_ReadyRoom_Roster.
FIXED - BP_WristDevice crashing dedicated server (naughty John)
FIXED - hang-up when attempting to join server
FIXED - missing UI for split second when joining server.
* updated DefaultEngine.ini slightly
FIXED - BaseCharacter text component issues
* dedicated server does not like the character trying to add or use existing text components :(
FIXED - references to non-existing text components in ItemMacros
FIXED - freelook reset
* not as smooth as I would hope, but its a start.
FIXED round not ending when player logs out.
* modified AGBGameMode::DiscardPawn() to kill character before unpossessing character.
* modified TeamElimination & TerroristHunt GameMode Blueprints to bind existing K2_OnLogOut event.
* modified AGBGameMode::LogOut() to add OnLogOutDelegate()
FIXED AGBRoundManager::HaveEnoughReadyPlayers() counting ready players incorrectly
* now properly adds zero'd out counts for *all* teams before counting ready humans & bots.
FIXED round not starting / not being able to enter ready triggers that were beyond ready room doors
* updated BP_ReadyRoomDoor to set its initial open/close status without the need for round to change
* removed solid blocking boss (John will add blocking volumes manually)
FIXED none reference in BP_WristDevice when attached to character without a controller.
FIXED editor crashing due to loading screen in networked PIE game
* loading screens are now disabled in editor.
FIXED BP_ReadyRoomNameTags not being destroyed when parent character is
FIXED first person view in spectator mode
FIXED TerroristHunt GameMode Blueprint.
FIXED several bad player start locations on tankership_X_X
FIXED bug in Trigger_PrepArea that would remove player from team as they were sent to the play area
FIXED bug in GBBotManager that would try to place bots on non-existent team
FIXED Blood effect and decal materials are now setup properly
FIXED GBPlayerStart::UpdateTextrender declaration not being defined as EDITOR_ONLY
FIXED falling through floor due to bad / missing player start in SentToPlayArea
* instead of spawning player a 0,0,0, it will log the error, warn the player and leave them where they are.


* Fixes to the AI perception system, so that enemies now have an activation threshold before they are considered "perceived". Basically emulates a human response time. Values still need   tweaking. Also now the AI can properly forget their current target if they lose line of sight. TODO: Fix up the UE4 perception system to adapt this stuff so it doesn't have to be   duplicated in the new perception component so much (should be a feature of the Perception system, so submit it as a pull request to Epic).
* Fixed terrorist attacking - Now does not reset threat (need to hook up expiry of senses to threat evaluation)
* Added new EQS *PointWithLosToEnemy* change for following threat
* Altered Terrorist BT to chase threat
* Made a few tweaks to game mode and test maps.
* Solo Terrorist Hunt Menu now has temporary setting for perception delay (larger number = slower perception)
* Added perception value scoring for sensing.
* Added BT task for resetting a vector
* Changed whizzcrack information to include who fired the shot so we can get location properly
* small fix to collision on T wall near spawn of map
* Fix to Terrorist BT, having some weird issues with nodes not being executed! erk!
* A few small tweaks to smalltown ai test map, removed debug sphere that I checked in! :)
* Upped sight sense distance on Terrorist Bot, minor tweaks to small town ai test map, added back debug info into perception component
* Fixed collision on terroristspawnvolume so AI does not get line of sight blocked by it
* Modified gameinstance with function for grenade handling of physics materials (returns the impact effect based on the hitresult physics material name) see M67_Frag for usage, code comes   from OnExplode event of BP_Grenade and BaseGrenade.
* Changes to AI perception handling. Now handles footsteps and muzzle flashes as well as perception scoring. Will be refactoring later. Initial check-in so we have a working base.
* Fixed a bunch of missing pragma once calls in order to help the non unity build (trying to fix build problems with ai component).
* Submitting tactical perception component befor applying some changes to UE4 class to make it simpler, just in case :)
* Updated door swing BP with noise values for AI perception to hear.
* Changes to AI perception:
* AI now percieves footsteps, weapon fire sounds and other audio events. Todo: door opening and grenade landing
* AI now can be flashed by a flashbang. Effect lasts for too long currently.
* All AI perceptions need values for effect, currently footsteps are heard "very strong" and need balancing versus perception threat evaluation of them
* AI line of sight check now uses enemy eye viewpoint rather than middle of collision volume
* AI additional sensing updates for whizzcrack
* AI can now check and perform reloads correctly
* AI Cover generator rework started.
* AI Spawner fixed to allow patrol command to be instigated for enemies with patrol paths
* Small town AI test map additional nav modifier volumes added to stop navmesh generating in trees and out of bounds areas.
* Fixed some log spam coming from tactical perception component.
* Some small changes to Smalltown AI test map.
* Character spawner now spawns with correct squad instruction for AI to patrol
* Door swinging has auto-open for AI now when trigger overlap
* Updates to PointWithLosToEnemy EQS query so that it actually works
* Updated Terrorist BT's a bit
* Fixed up EQS query issue with line traces (were hitting actor for line of sight tests)
* Added navmesh link proxies to doors
* Doors now open when AI inside trigger volumes
* Changed recast properties on navmesh so that open doorways are AI navigable
* Fixed property on geometry traces for generators on PointWithLosToEnemy EQS query, now collides with floor when going up stairs
* Added CVAR's for ai noise generation perception values
* Updated small town ai test map with some more character spawners
* Added "guard" command to characters, so they don't actively seek out threats but are able to protect themselves when threats   are visible (more later)
* Fixed squad and guard position data to be passed by character spawner on spawn
* Updated Terrorist BT2 to handle guard command
* Updated SoloTerroristHunt and TerroristHunt game modes to randomize the fixed spawners used if less than total terrorist count
* Initial setup of Depot map for TH AI modes
* Fixed issue with TerroristBT2 having incorrect checks because of new guard value in command enum
* Updated solo terrorist hunt menu to expose AI cvars for testing
* Changed ITacticalAIInterface to not use blueprint implementable event and associated usage. Added relevent functions to GBFunctionLibrary to compensate for functionality.
* Fixed collision issue with trigger volume for Depot map by adding new preset and switching triggers to use it (OverlapOnlyVolume) along with new "Volume" object type.

* updated Trigger_Ready to flush local players pressed keys upon entry
* updated DefaultDeathOptions to reset input when HUD_Death_Overlay is hidden.
* removed stubbs from GBGameInstance relating to sessions & loading screen.
* added GameModeClassAliases to DefaultGame.ini
* short names for listed game modes & end up with path.
e.g. "Game=TH" will become "Game=/Game/Blueprints/GameMode/TerroristHunt.TerroristHunt_C"
* Added small area and blocker volumes to Ready Room exit doors
* created BP_PlayerStartGroupManager
* generic class to use for enabling/disabling player starts based on groups for different game modes.
* updated GBBasePlayerStart
* re-enabled auto-destroying a player start based on GameModeTag
* slightly updated existing Blueprint functions.
* added GetGroupDistances() Blueprint function
* Get distances of player start groups from supplied point, sorted from closest to furthest.
* updated TeamElimination GameMode Blueprint to use BP_PlayerStartGroupManager to handle player starts.
* added TerroristHunt compatible GBTeamPlayerStarts to Depot_All_Day
* added transition overlay to/from ready room & on pre-round freeze.
* hopefully makes the view teleporting from one place to another feel better.
* removed old BP_UserPlaceable_X Blueprints & references.
* FIXME - finish the move/rotatate/scale gadget for MapKit!

* created GBPlayerStart class
* replaces need for separate player start classes.
* uses Actor Tags to store GameMode tags
* includes RemovePlayerStarts() function for to quickly remove unneeded player starts (if desired)
* updated affect GameMode Blueprints
* added ActiveClassRedirects GBSoloPlayerStart & GBTeamPlayerStart to GBPlayerStart in DefaultEngine.ini
* removed GBBasePlayerStart, GBSoloPlayerStart & GBTeamPlayerStart
* updated other affected Blueprints
* added PlayerStart ShowDebug option to GBHud.
* updated several maps to add proper actor tags to player starts for TeamElimination, Deathmatch & TerroristHunt
* Changed blood decals Particle system + materials to look better
* simplified GBPlayerStart class
* removed bot/human variable
* removed bot/human check from IsValidFor()
* updated TeamElimination & TerroristHunt
* overrode ChoosePlayerStart() with Blueprint version to select any player start during ready or warmup periods.



* updated shell, footstep & other sounds
* set or updated attenuation settings
* set or updated concurrency settings
* added pitch modulation to shell sound ques
* adjusted volume of shells/footsteps
* ensured all cue were set to FX sound class instead of Master sound class.
* Moved Operator Bench over by killhouse door/stairs for better visibility
* First pass at UI for resetable targets
* Walk up to reset box to get UI
* Allows user to set number of total and friendly targets
* updated GBPlayerState
* FIXED issues with ClientInitializePlayerKits() RPC by removing need for it.
* created InitializePlayerKit(<profile name>) that is called by GBTeamInfos or player state if locally controlled.
This removes the need for the server to tell the client to initlise its profiles,
but still ensures the player state is properly initlised first.
* WalkCycle icon test for loading screen
* Flipbook material to apply to UI asset
* updated GBGameInstance to support async loading screen using DefaultMoviePlayer.
* updated GBGameInstanceBP to create & return loading screen widget
* updated loading screen
* OPFOR/Hostile Legs/Torso meshes and materials (Not in game yet)
* SkelMesh Duster/face cover mesh for use with hostile chearacter type (Not in game yet)
* Added functionality to wear baseball hat reversed (needs UI element still)
* Added bool and new Trans/ROT values in BaseHeadGear
* FIXME: Needs checkbox in UI to select to wear reversed or not (Suggest adding by Patch selection widget)
* Created LODs
* Platforms, Pouches, Headgear, Eyewear, Equipment
* Added in simple white solid material for use in some testing
* Changed TargetReset Switch to create/destroy widget as needed instead of creating at startup and set visibility
* LODs for M16
* Includes removed unsed bones based on LOD
* updated GBGameInstance
* improved handling of loading screen
* ensured loading screen is not garbage collected
* updated Screen_Loading widget to prevent crash due to garbage collection (AHH!)
* updated GBCharacter
* changed MinSafeFallDamage to 8mps
* added DeathFallSpeed to determine how fast player must be falling before death is certain (12mps)
* updated GBMovementComponent
* bUseFlatBaesForFloorChecks set to true
* PerchRadiusThreshold set to 16
* Weapon LODs
* AK74, AKS-74u, M9, G22, M14_EBR, M1014, UMP, MP5
* LOD skeleton for Mk48
* LODs made for weapon attachments
* Changed collision from BlockDynamic to BlockAll to fixed issue with AI perception
* First pass at simple binocular BP (Not usable in game yet)
* added gadget menu events & bindings
* updated GBDroppedItem to limit number of dropped items based on controller & item categories
* updated BP_DroppedCosmetic to limit life span to 60 seconds.
* updated InGameMenuManager
* made drop down buttons a separate widget
* rigged play button to be created by game mode settings widget
* implemented game mode settings widget for MenuGameMode (required rebasing GBMenuGameMode class)
* Made text on doors smaller
* Made it so TargetResetSwitch doesn't have the overlay widget display on clients other than the one using it.
* Reset action still doesn't work over network for some reason.
* Changed UserPlaceable items to use base classes for easier usage in the future
* Added in ShootingRange_Night
* ENGINE CHANGE - updated SceneComponent changes in attempt to get IKinema 4.11.x plugin to work.
* ENGINE CHANGE - added HACK to PrimitiveComponentPhysics in attempt to get IKinema 4.11.x plugin to work.
* created menu for John
* for widget, see UI/ExampleMenu/ExampleScreen
* for creating/showing menu, see Blueprints/BasePlayerController.
* for binding, see end of Config/DefaultInput.ini
* Created initial Inventory and item BPs for equipment items
* Binoculars
* Medkit
* BreachingCharge
* reset character capsule component collision type to Pawn.
* Added 'Equipment' category to Platform customization
* Cleaned up widget mess in UserPlaceableSystem_Overlay and grouped categories into tabs
* Adding in Rama's UMG Color Picker
* updated AGBAIController::Set/GetGenericTeamID to be clearer.
* updated AGBPlayerController::SetGenericTeamID to be clearer.
* updated GBPlayerController MoveX to cast Pawn or Spectator Pawn to ADefaultPawn instead of using just GetDefaultPawn() when not using a character.
* added GetClassDefaultObject() to GBFunctionLibrary.
* updated UserPlaceableSystem related Blueprints
* created UserPlaceableInterface.
* implemented UserPlaceableInterface in ARCH, Doors, Light & Objects _Base Blueprints.
* renamed UPS_ListButton to UserPlaceableSystem_ScrollListEntry.
* updated UserPlaceableSystem_ScrollListEntry
* takes an actor class during spawn & gets text & icon from that if it implments the UserPlaceableInterface.
* calls event delegate when clicked.
* updated UserPlaceableSystem_Overlay
* greatly simplfied the creation of scroll lists.
* assigned scroll list entries to updated selected user placeable class & actor when clicked.
* rigged up tick function to trace mouse cursor & place selected user placeable, if one exists.
* added controls to place & rotate selected user placeable, including ability to create multiple copies while holding CTRL.
* added ability to pass mouse & keyboard input back to viewport while holding right mouse button (required creating an input assistant actor).
* cleaned up general layout, changed design slight (less use of canvas, more use of vertical/horizonal boxes).
* updated open & close functions to leave & return to character as required.
* New Marketplace explosion kit
* New Marketplace item for procedurally placing trash and debris
* New grenade detonation pack from the Marketplace
* renamed UserPlacableSystem to MapKit
* moved all related UserPlacableSystem assets to locations under new MapKit directory & fixed up all redirections.
* created GetClassesByInterface() in GBFunctionLibrary.
* renamed all X_Base MapKit actors to BaseX so they work with GetClassesByInterface() properly
* It is designed to ignore any class that starts with "Base".
* updated MapKitActorInterface to add GetCategories().
* updated MapKitMenu
* changed overall layout to be more horizontal
* added primary & secondary category tabs
* added Escape button detection
* if actor is selected, clears it.
* if not, closes menu.
* Set PhysMats for metal targets to have large density so bullets would not penetrate
* Updated Frag grenade detonation effect
* Reworked TargetReset switch system based on Kris's example
* Much cleaner
* Added required key press once player enters trigger to open UI
* Now correctly open reset UI only on client that initiates the action
* Still does not properly replicate target reset call/values in MP
* Added OnHit check to frag grenade to find PhysMat that it sits on at detonation time
* Will be used to spawn proper "hit" effect for surface the grenade is on
Added impact assets for grenade usage
* created GBSurfaceLink class
* Used to link a any physical material to any class based on user defined type.
e.g. Grenade, FootStep, Bullet
* Links can be created in editor in any directory, as long as that directory is
added to DefaultEngine.ini, [/Script/GroundBranch.GBSurfaceLinkProfiles].
* Uses singleton to hold paths & profiles based on those paths and defined types.
* Bullets impacts & foot steps Blueprints swapped via C++.
* Basic grenades swapped via Blueprint (no effects - just debug trace line stuff).
* See M67 for usage.
* removed bullet impacts, grenade impacts & footsteps references from GBGameInstance.
* added UGBSurfaceLinkProfiles::Get() call to GBGameInstance to init all profiles at runtime.
* created Test_SurfaceTypes map.
* Unhooked hacked in bounce sound generation from BP_Grenade
* Doesn't really work correctly
* Prototype breachable door (Door_Swinging_Destruction)
* Once interact phase is initiated hit NumPad 0 key to place breaching charge and NumPad 1 to detonate
* Locks can also be shot out by shooting at the handle area
* Upon detonation/lock shot out meshes get swapped, sounds played and particle effect played (All are placeholder of course)
* Ability to set door as locked, requiring shooting out lock or breaching to open
* Added in simple camera shake to flashbang and frag grenades
* Animation updates
* Reloads + idles
* Stand sprint improved (flappy arms)
* mk48 reload
* Testing out CanvasRenderTarget2d
* Added a whiteboard to ExampleMap that has a CanvasRenderTargetmaterial on it counting numbers upward
* Text is small because there is no way to adjust size outside of the font itself
* updated GBSurfaceLink class
* renamed GBSurfaceLinkProfiles to GBSurfaceLinkManager
* replaced struct based TArrays with TMap implementation
(simple & should be faster)
* updated affected Blueprints
* updated GBFootStepImpact
* fixed nullptr when opening in editor
* switched spawning effects etc from using PostInitComponents() to BeginPlay()
* updated affected Blueprints
* updated GBBulletImpact
* removed unused values (ricochet chance etc)
* switched spawning effects etc from using PostInitComponents() to BeginPlay()
* updated affected Blueprints
* continued work on map kit editor
* drag/drop actor classes from list of actors.
* selected placed actors using left mouse (CTRL for multiple)
* deleted selected actors using DELETE
* focus on selected actors using F
* need to get hit proxies to work in UE4 non-editor viewport.
* ENGINE CHANGE - fixed particle module event send to game support
* updated shell effect particle systems to use fixed SendToGame support.
* created /WP_Effects/SurfaceLinks
* created GBParticleImpactBySurfaceType class
* linked all shell eject PS' to GBParticleImpactBySurfaceType using BrassImpact (?) type.
* Added in Destruction prototype parts to swinging door
* Currently hard coded controls for testing
* NumPadZero places breaching charge when door is usable and NumPadOne to detonate
* Player has 1 breaching charge by default (Not an actual inventory item yet)
* 3 states for a door: Intact/Lock Shot Out/Breached
* Can shoot out lock by registering 2 shots in area of handle/lock
* Debris meshes and destruction effect for wood door
* New Grass asset pack from MarketPlace
* Work on getting BrassShell surfaceLinks setup
* Made blueprints for brass/shell impacts ( can't use same effects as bullet hits)
* First pass on particle effects
* Added in some hit sounds
* Replaced doors in SmallTown due to me messing something up while testing door breaching
* Added in some footprint decals (not workign in game yet)
* Hostile and Team member L/R bootprints
* Parameters in material to control Opacity, Color and Roughness
* Small optimization to smoke grenades
* Added socket to Smoke grenade and setup smoke emitters to use it (was just using center of mesh)
* Added simple effect of grenade spoon flying off when thrown.
* Needs some tweaking to get it to look right
* created Test_TriggerVsParticles map
* ENGINGE CHANGE - updated particle system component & related classes
* send to game events split up, based on event type (collision, spawn etc).
* physical material now included in collision event (removes need to trace again).
* FIXED bug that caused collisions with triggers/volumes.
* FIXED bug that causes massive collision event spam if particle spawns inside volume.
* added min speed variable to collision event to prevent collision unless particle moves fast enough.
* helps prevent massive collision event spam if particle spawns moves slightly on a non-up angle & the ignore non-up option is used.
* some minor optimisations.
* updated Test_BulletPenetration map
* updated some physical material densities
* FIXME - Need to set them all at some point, talk more about special cases.
e.g. targets, non-penetratable walls, full vs empty barrels etc.
* Setting up door destruction in TankerShip map
* Only outisde doors done so far
* Door_Swinging changes
* Set debris chunk meshes to not collide with player
*  Created pieces parts for TankerShip metal door
* Added offset to door handle meshes for easier custimization
* Created parts for door destruction
* TankerShip
* Training
* New sounds for door destruction
* Wood and Metal
* Setup door breaching in TankerShip, Killhouse and SmallTown maps
* Some new weapon sounds for G22 and various weapon dryfires
* Revised breaching charge model/materials to add a bit more detail
* Cleaned up BreachingCharge related BP's to be more efficient
* Added in frag grenade explosion sound for water (not hooked up yet)
*  Built lighting on TankerShip, Killhouse and SmallTown maps
* slight change to BaseCharacter::TraceFootstep function in attempt to fix packaged version.

* updated Example_Map to add shapes for placed character to test foot placement.
* removed delay on AI bullet whizz-crack distance warnings.
* fixed warnings about casting widget that didn't need casting due to internal C++ update.
* first massive effort to fix bad references the hard way to fix packaging & kill log spam (Please kill me).
* Added breaching parts to OfficeDoor
* Added breaching to SmallTown doors
* updated surface link to use FAssetStringReference for associated class
* updated all affected C++ & Blueprints.
* Ran FixUpRedirects on entire Content folder
* Cleaned up some more log spam issues
* Added in breached door assets for IndustrialDoor
* updated radial menus
* removed ability to set fixed position / size entries (just 360 / number of entries now)
* added ability to set start angle (0 = top of screen, 180 = bottom etc) of first entry
* FIXED mouse cursor not returning to previous location when menu is reopened.
* lets you quickly toggle the last option you used even if you move the mouse since you last opened the menu.
* added DO NOTHING option to use item radial menu if there are no attached items to use
* Replaced a depricated node in the marketplace cable/rope BP system

* Fixed more log spam issues
* Small change to Door_Swinging
* Changed detonation impulse origin a bit back away from door on the side the charge is placed. This makes sure the debris fles into the doorway.
* Made number of breaching charges a player can place 2 (up from 1)
* Created and Industrial Door damaged parts
* Made some small adjustments to the breaching effect
* Made some parts less directional
* Made the sparks a bit smaller and have slightly less lifetime
* Cleaned up some lighting issues with a few Tanker Ship railings. Required lighting rebuild
* Scaled BreachingCharge mesh up about 15%
* Added breach items to Depot doors and rebuilt lighting

* updated shell, footstep & other sounds
* set or updated attenuation settings
* set or updated concurrency settings
* added pitch modulation to shell sound ques
* adjusted volume of shells/footsteps
* ensured all cue were set to FX sound class instead of Master sound class.
* Temporary fix for bad framerate in Killhouse night map
* Removed rain particle effect as the particle collision had massive slowdown
* Changed BreachingCharge over to a SkelMesh and added initial AnimBP for it
* Initial setup for nametags on vests
* Uses RenderTexture2d
* No more hovering yellow text... now part of vest itself
* Fixed nametag material to it lights properly
* Nameplates on Platform now adhere to the selected platform's color
* Added in new sounds for dryfire, Mag usage and slide release
* G22 and 1911
* Added in new sounds for dryfire
* M4, M16 and M1014
* Adjusted up some low res DistanceField settings on meshes in Aircraft_Takedown map
* Added in WristDevice test
* Automatically attached to character forearm
* Simple test RenderTexture2d for screen
* WristDevice now reading in time of day from map for testing
* Exposed TimeOfDay entry to Blueprint via ui function library
* tweaked animation speed of walk cycle on loading screen
* fixed potential null in generate random appearance/loadout functions
* depreceated GBItem KitRoot variable & related functions
* created replacement functions based on GBItem Categories.
* updated affected C++ & Blueprints.
* moved basics of platform nametag handling from separate platform Blueprints to GBPlatform C++ class.
* added solid box to block off ready room doors
* stops people leaving ready room prep area trigger before the server gets the 'enter play area' message.
* updated BaseGameTrigger to support both local & server side enter/exit events in case I need to change Trigger_Ready.
* created BP_ReadyRoomNameTags
* updated BaseCharacter to spawn BP_ReadyRoomNameTags if in ready room.
* Changed version number in packaging settings to 1013
* ENGINE CHANGE - added fixes/hacks to support VS2015 Update 3

* updated Trigger_Ready to flush local players pressed keys upon entry
* updated DefaultDeathOptions to reset input when HUD_Death_Overlay is hidden.
* removed stubbs from GBGameInstance relating to sessions & loading screen.
* added GameModeClassAliases to DefaultGame.ini
* short names for listed game modes & end up with path.
e.g. "Game=TH" will become "Game=/Game/Blueprints/GameMode/TerroristHunt.TerroristHunt_C"
* Added small area and blocker volumes to Ready Room exit doors
* created BP_PlayerStartGroupManager
* generic class to use for enabling/disabling player starts based on groups for different game modes.
* updated GBBasePlayerStart
* re-enabled auto-destroying a player start based on GameModeTag
* slightly updated existing Blueprint functions.
* added GetGroupDistances() Blueprint function
* Get distances of player start groups from supplied point, sorted from closest to furthest.
* updated TeamElimination GameMode Blueprint to use BP_PlayerStartGroupManager to handle player starts.
* added TerroristHunt compatible GBTeamPlayerStarts to Depot_All_Day
* added transition overlay to/from ready room & on pre-round freeze.
* hopefully makes the view teleporting from one place to another feel better.
* removed old BP_UserPlaceable_X Blueprints & references.
* FIXME - finish the move/rotatate/scale gadget for MapKit!

* created GBPlayerStart class
* replaces need for separate player start classes.
* uses Actor Tags to store GameMode tags
* includes RemovePlayerStarts() function for to quickly remove unneeded player starts (if desired)
* updated affect GameMode Blueprints
* added ActiveClassRedirects GBSoloPlayerStart & GBTeamPlayerStart to GBPlayerStart in DefaultEngine.ini
* removed GBBasePlayerStart, GBSoloPlayerStart & GBTeamPlayerStart
* updated other affected Blueprints
* added PlayerStart ShowDebug option to GBHud.
* updated several maps to add proper actor tags to player starts for TeamElimination, Deathmatch & TerroristHunt
* Changed blood decals Particle system + materials to look better
* simplified GBPlayerStart class
* removed bot/human variable
* removed bot/human check from IsValidFor()
* updated TeamElimination & TerroristHunt
* overrode ChoosePlayerStart() with Blueprint version to select any player start during ready or warmup periods.

Read this story on GroundBranch.com

A new Ground Branch build is coming soon

05 August 2016 - 08:54 AM

I know its been a while since the last build so we wanted to let you know that a new one is coming next week. We have been testing it for a few days, but still have a few more issues to iron out. There are many bug fixes, updated A.I., an initial version of Terrorist Hunt on the Depot map, sound fixes and animation updates.

Here are a few user videos from our testing builds to tide you over:

Read this story on GroundBranch.com

New Ground Branch build available - version 1012 build 110605

05 June 2016 - 05:26 PM

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:  http://www.groundbranch.com/2016/04/upcoming-4-11-based-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.

Approximate Update size: 3.2GB

Steam build Id: 1165171

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.  http://www.blackfootstudios.com/forums/index.php?showtopic=8568


A quick pass on adding the ability to reset targets in training maps without restarting the map was added to Airpcraft_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 tank 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 1024x512 from 512x256
* 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.

Read this story on GroundBranch.com

Upcoming 4.11 based build

19 April 2016 - 04:25 AM

We're hoping to have a new test version out this week (April 19-23).
In the meantime, here is a preview of some recent additions and a information about other areas that may interest you.

Eye Bias

A percentage value that causes the camera to be offset towards one eye.

[caption id="attachment_2555" align="aligncenter" width="250"]dev_ingame_20160419d 0%[/caption]

[caption id="attachment_2554" align="aligncenter" width="250"]dev_ingame_20160419e 50%[/caption]

[caption id="attachment_2553" align="aligncenter" width="250"]dev_ingame_20160419f 100%[/caption]

This is the limited to the right eye at this time, as it is not yet possible to choose your preferred handedness.
It is especially handy to help you get a better feel for the firearm while point shooting.

Updated Rail Attachment System

Rail based attachments can now use multiple rails as parents, have their mount points modified dynamically and only need those mount points to be on a rail for the attachment location to be considered 'valid'.
This lets you do things like mount the MK4 on the EBR across its ejection port:


Optical Sights Fitted to Screen

All the optical sights have had a 'sight radius' variable defined for months, but I have only now got around to implementing the rest of the feature. That is, making the optical sights fit the screen based on their sight radius.

We first tried changing the FOV to fit the screen.
It worked, but the FOV change also affected the area around the scope and didn't feel quite right.

John suggested modifying the camera position instead, so we gave that a whirl and liked it.
He also created a basic blur post process material and this is the result:


The modified camera position is based on a fixed value from the cameras origin to the rear of the firearm.
In this way, an optics position on the rail is important and allows the player to decide if they want more situational awareness or a larger sight picture.


Virtual Reality

I've developed a pretty decent method for handling VR in a side project. It supports both rotation and position data with far less issues then the original method used in Ground Branch. Though GB is well overdue for an update in this area, it will have to wait a little while longer while we focus on bugs and stability.

Bugs & Stability

The transition from Unreal Engine 4.9.2 to 4.11.1 went rather well, with a few exceptions.
Week one was spent bug hunting, both in our code in the engine itself, to get the editor up and running properly.
Week two was spent making sure we were at the same point we were at using 4.9.2 (relatively).
We still have some update related issues to fix (map crash related to hierarchical LOD, some UMG shenanigans etc), but in other areas, such as those described above, we are ahead.

Stability is next on the list.

Bots help in this area - I can setup a server, spawn a bunch of bots and up the game speed to 10x normal.
Its looks like a Benny Hill skit, only more violent.

The best information tends to come from you guys - the players.
So please, keep being awesome in this area.
Keep playing.
Keep pestering me.
To help with your efforts in this area, I've added additional info about the game version, player position etc to the bug reports, as well as taking a screenshot.
You can optionally specific your name, but other then that, no personal information is required or included in the report.

Broke another #$^&#%$ chair

In related news, I broke another #$^&#%$ chair.
I tend to lean back way too much at times, and this caused the damn thing to snap at the small shaft welded to the base plate. I'm a solid guy (110kg/240lbs), but its kinda ridiculous how poorly some of these chair are made.
Any advice on a reasonably priced - and solidly built - chair would be welcome.
If not for my sake, then for the sake of my 4 year old, who is horrified I'm going to break her chair.

That's it.


Read this story on GroundBranch.com