2019-12-26 14:45:42 -05:00
// Copyright Epic Games, Inc. All Rights Reserved.
2014-03-14 14:13:41 -04:00
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3967517)
#rb none
#lockdown Nick.Penwarden
#rnx
============================
MAJOR FEATURES & CHANGES
============================
Change 3804281 by Fred.Kimberley
Improve contrast on watches in blueprints.
Change 3804322 by Fred.Kimberley
First pass at adding a watch window for blueprint debugging.
Change 3804737 by mason.seay
Added some Descriptions to tests that didn't have any, and fixed some typos
Change 3806103 by mason.seay
Moved and Renamed Timers test map and content appropriately
Change 3806164 by Fred.Kimberley
Add missing property types to GetDebugInfoInternal.
#jira UE-53355
Change 3806617 by Dan.Oconnor
Function Terminator (and derived types) now use FMemberReference instead of a UClass/FName pair. This fixes various bugs when resolving the UFunction referenced by the function terminator
#jira UE-31754, UE-42431, UE-53315, UE-53172
Change 3808541 by Fred.Kimberley
Add support for redirecting user defined enums.
This is in response to the following UDN thread: https://udn.unrealengine.com/questions/404141/is-is-possible-to-create-a-redirector-from-a-bluep.html
Change 3808565 by mason.seay
Added a few more struct tests
Change 3809840 by mason.seay
Renamed CharacterMovement.umap to CharacterCollision. Fixed up content to reflect this change.
Change 3809847 by mason.seay
Added Object Timer tests. Fixed up existing timer test to remove delay dependency
Change 3811704 by Ben.Zeigler
Fix issue where identical enum redirects registered to different initial names would throw an incorrect error, it's fine if the value change maps are identical
Change 3811946 by Ben.Zeigler
#jira UE-53511 Fix it so it is possible to set a user defined struct value back to it's default. The UDS hack in PropertyValueToString is no longer needed, but this could affect some other user struct editor operations
Change 3812061 by Dan.Oconnor
Stepping over or in to nodes that are expanded at compile time (e.g. event nodes, spawn actor nodes) no longer requires multiple 'steps'
#jira UE-52854
Change 3812259 by Dan.Oconnor
Fix asset broken by removal of an unkown enum
#jira UE-51419
Change 3812904 by Ben.Zeigler
Make ResolveRedirects on StreamableManager public as it can be used to validate things
Change 3812958 by Ben.Zeigler
#jira UE-52977 Fix crashes when binding blueprint editor commands to keys and using from invalid contexts
Change 3812975 by Mieszko.Zielinski
Added contraptions to catch a rare eidtor-time EQS crash #UE4
#jira UE-53468
Change 3818530 by Phillip.Kavan
Fix incorrect access to nested instanced subobjects in nativized Blueprint ctor codegen.
Change summary:
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to properly reference the outer and check ptr validity when creating/obtaining nested default subobjects.
- Modified FEmitDefaultValueHelper::HandleClassSubobject() to better guard against code generation based on an invalid local variable name.
#jira UE-52167
Change 3819733 by Mieszko.Zielinski
Marked UAISenseConfig_Blueprint and UAISense_Blueprint as hidedropdown #UE4
#jira UE-15089
Change 3821776 by Marc.Audy
Remove redundent code in SpawnActorFromClass that already exists in ConstructObjectFromClass parent class
Change 3823851 by mason.seay
Moved and renamed blueprints used for Object Reference testing
Change 3824165 by Phillip.Kavan
Ensure that subobject class types are constructed prior to accessing a subobject CDO in a nativized Blueprint class's generated ctor at runtime.
Change summary:
- Modified FFakeImportTableHelper to tag subobject class types as a preload dependency of the outer converted Blueprint class type and not of the CDO.
#jira UE-53111
Change 3830309 by mason.seay
Created Literal Gameplay Tag Container test
Change 3830562 by Phillip.Kavan
Blueprint nativization bug fixes (reviewed/taken from PR).
Change summary:
- Modified FSafeContextScopedEmitter::ValidationChain() to ensure that generated code calls the global IsValid() utility function on objects.
- Modified FBlueprintCompilerCppBackend::EmitCreateArrayStatement() to generate a proper cast on MakeArray node inputs for enum class types.
- Modified FBlueprintCompilerCppBackend::EnimCallStatementInner() to more correctly identify an interface function call site.
- Modified FEmitHelper::GenerateAutomaticCast() to properly handle automatic casts of enum arrays.
- (Modified from PR source) Added new FComponentDataUtils statics to consolidate custom init code generation for converted special-case component types (e.g. BodyInstance). Ties native component DSOs to the same pre/post as converted non-native component templates around the OuterGenerate() loop.
- Modified FExposeOnSpawnValidator::IsSupported() to include CPT_SoftObjectReference property types.
- Modified UBlueprintGeneratedClass::CheckAndApplyComponentTemplateOverrides() to no longer break out of the loop before finding additional ICH override record matches.
#4202
#jira UE-52188
Change 3830579 by Fred.Kimberley
Add support for turning off multiple watches at once in the watch window.
#jira UE-53852
Change 3836047 by Zak.Middleton
#ue4 - Dev test maps for overlaps perf tests.
Change 3836768 by Phillip.Kavan
Fix for a build failure that could occur with Blueprint nativization enabled and EDL disabled. This was a regression introduced in 4.18.
Change summary:
- Modified FEmitDefaultValueHelper::AddStaticFunctionsForDependencies() to emit the correct signature for constructing FBlueprintDependencyData elements when the EDL boot time optimization is disabled.
#jira UE-53908
Change 3838085 by mason.seay
Functional tests around basic blueprint functions
Change 3840489 by Ben.Zeigler
#jira UE-31662 Fix regression with renaming parent inherited function. It was not correctly searching the parent's skeleton class during the child's recompile so it was erroneously detecting the parent function as missing
Change 3840648 by mason.seay
Updated Descriptions on tests
Change 3842914 by Ben.Zeigler
Improve comments around stremable handle cancel/release
Change 3850413 by Ben.Zeigler
Fix asset registry memory reporting, track some newer fields and correctly report the state size instead of static size twice
Copy of CL #3849610
Change 3850426 by Ben.Zeigler
Reduce asset registry memory in cooked build by stripping out searchable names and empty dependency nodes by default
Add option to strip dependency data for asset data with no tags, this was always true before but isn't necessarily safe
Copy of CL #3850389
Change 3853449 by Phillip.Kavan
Fix a scoping issue for local instanced subobject references in nativized Blueprint C++ code. Also, don't emit redundant assignment statements for instanced subobject reference properties.
Change summary:
- Consolidated FComponentDataUtils into FDefaultSubobjectData and extended FNonativeComponentData from it in order to handle both native & non-native DSO initialization codegen through a more common interface.
- Exposed FEmitDefaultValueHelper::HandleInstancedSubobject() as a public API and added a 'SubobjectData' parameter to allow initialization codegen to be deferred until after all default subobjects have been mapped to local variables within the current scope.
- Modified FEmitDefaultValueHelper::GenerateConstructor() to first map all default subobjects to local variables and then emit any delta initialization code for property values.
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to return an empty string for an instanced reference to a default subobject. This allows us to avoid emitting initialization statements to unnecessarily reassign instances back to the same property.
- Modified FEmitDefaultValueHelper::InnerGenerate() to better handle instanced references to default subobjects, ensuring that we don't emit unnecessary assignment statements and array initialization code to the converted class constructor in C++.
- Fixed a few typos.
#jira UE-53960
Change 3853465 by Phillip.Kavan
Fix plugin module C++ source template to conform to recent public include path changes.
Change 3857599 by Marc.Audy
PR #4438: UE-54281: Make None a valid default value to select (Contributed by projectgheist)
#jira UE-54281
#jira UE-54399
Change 3863259 by Zak.Middleton
#ue4 - Save bandwidth for replicated characters by only replicating 4 byte timestamp value to clients if it's actually needed for Linear smoothing. Added option to always replicate the timestamp ("bNetworkAlwaysReplicateTransformUpdateTimestamp", default off), in case users still want this timestamp for some reason, or if smoothing mode changes dynamically and the server won't know.
#jira UE-46293
Change 3863491 by Zak.Middleton
#ue4 - Reduce network RPC overhead for players that are not moving. Added ClientNetSendMoveDeltaTimeStationary (default 12Hz) to supplement existing ClientNetSendMoveDeltaTime and ClientNetSendMoveDeltaTimeThrottled. UCharacterMovementComponent::GetClientNetSendDeltaTime() now uses this time if Acceleration and Velocity are zero, and the control rotation matches the last ack'd control rotation from the server.
Also fixed up code default for ClientNetSendMoveDeltaTime to match default INI value.
#jira UE-21264
Change 3865325 by Zak.Middleton
#ue4 - Fix static analysis warning about possible null PC pointer.
#jira none
Change 3869828 by Ben.Zeigler
#jira UE-54786 Fix it so -cookonthefly cooperates with -iterate by writing out a development asset registry
Change 3869969 by mason.seay
Character Movement Functional Tests
Change 3870099 by Mason.Seay
Submitted asset deletes
Change 3870105 by mason.seay
Removed link to anim blueprint to fix errors
Change 3870238 by mason.seay
Test map for Async Loading in a Loop
Change 3870479 by Ben.Zeigler
Add code to check CoreRedirects for SoftObjectPaths when saving or resolving in the editor. This is a bit slow so we don't want to do it on load
We don't have any good way to know the type of a path so I check both Object and Class redirectors, which will also pickup Module renames
Change 3875224 by mason.seay
Functional tests for Event BeginPlay execution order
Change 3875409 by mason.seay
Optimized and fixed up character movement tests (because a potential bug in FunctionalTestActor is always passing a test when it can fail)
Change 3878947 by Mieszko.Zielinski
CIS fixes #UE4
Change 3879000 by Mieszko.Zielinski
More CIS fixes #UE4
Change 3879139 by Mieszko.Zielinski
Even moar CIS fixes #UE4
Change 3879742 by mason.seay
Added animation to Nativization Widget asset
Change 3880198 by Zak.Middleton
#ue4 - CanCrouchInCurrentState() returns false when character capsule is simulating physics.
#jira UE-54875
github #4479
Change 3880266 by Zak.Middleton
#ue4 - Optimize UpdateCharacterStateBeforeMovement() to do cheaper tests earlier (avoid CanCrouchInCurrentState() unless necessary, now that it tests IsSimulatingPhysics() which is not trivial).
#jira UE-54875
Change 3881546 by Mieszko.Zielinski
*.Build.cs files clean up - removed redundant dependencies from NavigationSystem and AIModule #UE4
Change 3881547 by Mieszko.Zielinski
Removed a bunch of DEPRECATED functions from the new NavigationSystem module #UE4
Removed all deprecates prior 4.15 (picked this one because I do know some licencees are still using it).
Change 3881742 by mason.seay
Additional crouch test to cover UE-54875
Change 3881794 by Mieszko.Zielinski
Fixed a bug in FVisualLoggerHelpers::GetCategories resulting in losing verbosity information #UE4
Change 3884503 by Mieszko.Zielinski
Fixed TopDown code template to make it compile after navsys refactor #UE4
#jira UE-55039
Change 3884507 by Mieszko.Zielinski
Switched ensures in UNavigationSystemV1:SimpleMoveToX to error-level logs #UE4
It's an error rather than a warning because the functions no longer do anything. Making it work would require a cyclic dependency between NavigationSystem and AIModule.
#jira UE-55033
Change 3884594 by Mieszko.Zielinski
Added a const FNavigationSystem::GetCurrent version #UE4
lack of it was causing KiteDemo to not compile.
Change 3884602 by Mieszko.Zielinski
Mac editor compilation fix #UE4
Change 3884615 by Mieszko.Zielinski
Fixed FAIDataProviderValue::GetRawValuePtr not being accessible from outside of AIModule #UE4
Change 3885254 by Mieszko.Zielinski
Guessfix for UE-55030 #UE4
The name of NavigationSystem module was put in wrong in the IMPLEMENT_MODULE macro
#jira 55030
Change 3885286 by Mieszko.Zielinski
Changed how NavigationSystem module includes DerivedDataCache module #UE4
#jira UE-55035
Change 3885492 by mason.seay
Minor tweaks to animation
Change 3885773 by mason.seay
Resaving assets to clear out warning
Change 3886433 by Mieszko.Zielinski
Fixed TP_TopDownBP's player controller BP to not use deprecated nav functions #UE4
#jira UE-55108
Change 3886783 by Mieszko.Zielinski
Removed silly inclusion of NavigationSystemTypes.h from NavigationSystemTypes.h #UE4
Change 3887019 by Mieszko.Zielinski
Fixed accessing unchecked pointer in ANavigationData::OnNavAreaAdded #UE4
Change 3891031 by Mieszko.Zielinski
Fixed missing includes in NavigationSystem.cpp #UE4
Change 3891037 by Mieszko.Zielinski
ContentEample's navigation fix #UE4
#jira UE-55109
Change 3891044 by Mieszko.Zielinski
PR #4456: Fix bug in UAISense_Sight::OnListenerForgetsActor (Contributed by maxtunel)
#UE4
Change 3891598 by mason.seay
Resaving assets to clear out "empty engine version" spam
Change 3891612 by mason.seay
Fixed deprecated Set Text warnings
Change 3893334 by Mieszko.Zielinski
Fixed a bug in navmesh generation resulting in not removing layers that ended up empty after rebuilding #UE4
#jira UE-55041
Change 3893394 by Mieszko.Zielinski
Fixed navmesh debug drawing to properly display octree elements with "per instance transforms" (like instanced SMs) #UE4
Also, added a more detailed debug drawing of navoctree contents (optional, but on by default).
Change 3893395 by Mieszko.Zielinski
Added a bit of code to navigation system's initialization that checks the enegine ini for sections refering to the moved navigation classes, and complain about it #UE4
The message is printed as an error-level log line and it says what should the offending section be renamed to.
Change 3895563 by Dan.Oconnor
Mirror 3895535
Append history from previous branches in source control history view
#jira none
Change 3896930 by Mieszko.Zielinski
Added an option to tick navigation system while the game is paused #UE4
Controlled via NavigationSystemV1.bTickWhilePaused, ini- and ProjectSettings-configurable.
#jira UE-39275
Change 3897554 by Mieszko.Zielinski
Unified how NavMeshRenderingComponent draws navmesh and octree collision's polys #UE4
Change 3897556 by Mieszko.Zielinski
Fixed what kind of nav tile bounds we're sending to nav-colliding elements when calling 'per-instance transform' delegate #UE4
#jira UE-45261
Change 3898064 by Mieszko.Zielinski
Made SM Editor display AI-navigation-related whenever bHasNavigationData is set to true #UE4
#jira UE-50436
Change 3899004 by Mieszko.Zielinski
Fixed UEnvQueryItemType_Actor::GetItemLocation and UEnvQueryItemType_Actor::GetItemRotation to return FAISystem::InvalidLocation and FAISystem::InvalidRotation respectively instead of '0' when hosted Actor ptr is null #UE4
Note for programmers: this changes the default behavior of this edge case. You might want to go through your code and check if you're comparing UEnvQueryItemType_Actor::GetItem*'s results to 0.
Change 3901733 by Mieszko.Zielinski
Made FEnvQueryInstance::PrepareContext implementations returning vectors and rotators ignore InvalidLocation and InvalidRotation (respectively) #UE4
Change 3901925 by Ben.Zeigler
#jira UE-55395 Fix issue where the cooker could load asset registry caches made in -game that do not have dependency data, leading to broken cooks
Change 3902166 by Marc.Audy
Make ULevel::GetWorld final
Change 3902749 by Ben.Zeigler
Fix it so pressing refresh button in asset audit window actually refreshes the asset management database
Change 3902763 by Ben.Zeigler
#jira UE-55407 Fix it so editor tutorials are not cooked unless referenced, by correctly marking soft object paths imported from editor project settings as editor-only
Change 3905578 by Phillip.Kavan
The UX to add a new parameter on a Blueprint delegate is now at parity with Blueprint functions.
#4392
#jira UE-53779
Change 3905848 by Phillip.Kavan
First pass of the experimental Blueprint graph bookmarks feature.
#jira UE-10052
Change 3906025 by Phillip.Kavan
CIS fix.
Change 3906195 by Phillip.Kavan
Add missing icon file.
Change 3906356 by Phillip.Kavan
Moved Blueprint bookmarks enable flag into EditorExperimentalSettings for consistency with other options.
Change 3910628 by Ben.Zeigler
Partial fix for UE-55363, this allows references to ObjectRedirectors to be switched from parent class to a child class on load as this should always be safe
This does not actually fix UE-55363 because that case is changing from UMaterial to UMaterialInstanceConstant, and those are siblings instead of parent/child
Change 3912470 by Ben.Zeigler
#jira UE-55586 Fix issue with saving redirected soft object paths where the export sort could accidentally cause the parent CDO to get modified between name tagging and writing exports, which is unsafe because due to delta serialization it would try to write names that were not previously tagged
Change 3913045 by Marc.Audy
Fix issues where recursion in to child actors wasn't being handled correctly
Change 3913398 by Fred.Kimberley
Fixes a misspelled name for one of the classes in the ability system.
PR #4430: Fixed spelling of FGameplayAbilityInputBinds. (Contributed by IntegralLee)
#github
#jira UE-54327
Change 3918016 by Fred.Kimberley
Ensure AllocGameplayEffectContext is being used in all cases where FGameplayeEffectContext is being created.
#jira UE-52668
PR #4250: Only create FGameplayEffectContext via AbilitySystemGlobals::.AllocGameplayEffectContext (Contributed by slonopotamus)
#github
Change 3924653 by Mieszko.Zielinski
Fixed LoadEngineClass local to UnrealEngine.cpp to check class redirects before falling back to default class instance #UE4
#jira UE-55378
Change 3925614 by Phillip.Kavan
Fix ForEachEnum node to skip over hidden enum values in new placements by default.
Change summary:
- Added FKismetNodeHelperLibrary::ShouldHideEnumeratorIndex() as an internal-only Blueprint node support API.
- Modified FForExpandNodeHelper::AllocateDefaultPins() to add a "Skip Hidden" input pin (advanced). Pin default value is false.
- Added a UK2Node_ForEachElementInEnum::PostPlacedNewNode() override to set the default value of the "Skip Hidden" input pin to 'true' for all new node placements.
- Modified UK2Node_ForEachElementInEnum::ExpandNode() to include additional expansion logic based on the "Skip Hidden" input pin. For new placements (i.e. when the pin defaults to 'true'), an intermediate branch node will now be inserted into the compiled execution sequence to test for "hidden" metadata on the value before executing the loop body. If the input pin is linked, another intermediate branch will be inserted into the execution sequence prior to the "hidden" metadata test. All existing placements of the node will remain as-is after compilation (i.e. no additional intermediate branch nodes will be included in the expansion).
#jira UE-34563
Change 3925649 by Marc.Audy
Fix up issue post merge from Main with navigation system refactor
Change 3926293 by Phillip.Kavan
Temp fix to unblock CIS.
#jira UE-34563
Change 3926523 by Marc.Audy
Ensure that a renamed Actor is in the correct Actors array
#jira UE-46718
Change 3928732 by Fred.Kimberley
Unshelved from pending changelist '3793298':
#jira UE-53136
PR #4287: virtual additions for AttributeSet extendability (Contributed by TWIDan)
#github
Change 3928780 by Marc.Audy
PR #4309: The display names of the functions. (Contributed by SertacOgan)
#jira UE-53334
Change 3929730 by Joseph.Wysosky
Submitting test assets for the new Blueprint Structure test cases
Change 3931919 by Joseph.Wysosky
Deleting BasicStructure asset to rest MemberVariables back to default settings
Change 3931922 by Joseph.Wysosky
Adding BasicStructure test asset back with default members
Change 3932083 by Phillip.Kavan
Fix Compositing plugin source files to conform to updated relative include path specifications.
- Encountered while testing Blueprint nativization of assets with dependencies on Composure/LensDistortion APIs.
Change 3932196 by Dan.Oconnor
Resetting a property to default now uses the same codepath as assigning the value from the slate control
#jira UE-55909
Change 3932408 by Lukasz.Furman
fixed behavior tree services attached to task nodes being sometimes recognized as root level
#jira nope
Change 3932808 by Marc.Audy
PR #4083: Change to UK2Node_BaseAsyncTask to have pin tooltips on latent nodes (Contributed by dwrpayne)
#jira UE-50871
Change 3934101 by Phillip.Kavan
Revise ForEachEnum node expansion logic to exclude hidden values at compile time.
Change summary:
- Removed UKismetNodeHelperLibrary::ShouldHideEnumeratorIndex() (no longer in use).
- Modified UK2Node_ForEachElementInEnum::ExpandNode() to include an enum switch node in the expansion, which will exclude hidden values when constructed. The additional expansion will occur if the enum type contains at least one hidden value.
#jira UE-34563
Change 3934106 by Phillip.Kavan
Mirrored 4.19 fixes to allow for EngineTest iteration w/ nativization enabled.
Change summary:
- Mirrored CLs 3876918, 3878968, 3883257, 3885566, 3912161 and 3920519.
Change 3934116 by Phillip.Kavan
UBT: Explicitly define the DEPRECATED_FORGAME macro only for non-engine modules.
Change summary:
- Modified UEBuildModule.SetupPrivateCompileEnvironment() to check the 'bTreatAsEngineModule' flag from the rules assembly rather than testing the module's build type.
Change 3934382 by Phillip.Kavan
Avoid inclusion of monolothic engine header files in nativized Blueprint codegen.
Change 3936387 by Mieszko.Zielinski
Added a flag to NavModifierComponent to control whether agent's height is being used while expadning modifier's bounds during navmesh generation #UE4
Change 3936905 by Ben.Marsh
Disable IncludeTool warning for DEPRECATED_FORGAME macro; we expect this to be different for game modules.
Change 3940537 by Marc.Audy
Don't allow maps, sets, or arrays with an actor inner type in user defined structs to select an actor from the currently open level as default value.
#jira UE-55938
Change 3940901 by Marc.Audy
Properly name CVar global to reflect what it is for
Change 3943043 by Marc.Audy
Fix world context functions not being able to be used in CheatManager derived blueprints
#jira UE-55787
Change 3943075 by Mieszko.Zielinski
Moved path-following related delegats' interface from NavigationSystemBase over to a new IPathFollowingManagerInterface #UE4
Change 3943089 by Mieszko.Zielinski
Fixed how WorldSettings.NavigationSystemConfig gets created #UE4
Made it so that there's always a NavigationSystemConfig instance present, but added a 'Null' config - this was required due to issues with creation/serialization of instanced subobjects.
The change required adding copying constructors to FNavAgentProperties and FNavDataConfig.
Also, fixed FNavAgentProperties.IsEquivalent to be symetrical.
Change 3943225 by Marc.Audy
Fix spelling of Implements
Change 3950813 by Marc.Audy
Include owner in attachment mismatch ensure
#jira UE-56148
Change 3950996 by Marc.Audy
Fix cases where bit packed properties used the entire byte not just the bit when interacting with boolean arrays
#jira UE-55482
Change 3952086 by Marc.Audy
PR #4483: Add Missing Radial Damage Multicast Delegate (Contributed by error454)
#jira UE-54974
Change 3952720 by Marc.Audy
PR #4575: Check if *Pawn* is a null Pointer (Contributed by dani9bma)
#jira UE-56248
Change 3952804 by Richard.Hinckley
Changes to BP API export commandlet to support better plugin exporting. Contributed by Harry Wang of Google.
Change 3952962 by Marc.Audy
UHT now validates that ExpandEnumAsExecs references a valid parameter to the function.
#jira UE-49610
Change 3952977 by Phillip.Kavan
Fix EDL cycle at load time in nativized cooked builds when a circular dependency exists between converted and unconverted assets.
Change summary:
- Added FGatherConvertedClassDependencies::MarkUnconvertedClassAsNecessary().
- Modified FFindAssetsToInclude::MaybeIncludeObjectAsDependency() to mark unconverted BPGCs (e.g. DOBPs) as necessary for conversion when the potential for a circular dependency exists so that we generate stub wrappers rather than depend on them directly.
- Fixed a few typos in existing API names.
#jira UE-48233
Change 3953658 by Marc.Audy
(4.19.1) Fix inserting a reroute node causing connections to break on a GetClassDefaults node
#jira UE-56270
Change 3954727 by Marc.Audy
Add friendly name to custom version mismatch message
Change 3954906 by Marc.Audy
(4.19.1) Fix crash when undoing changes related to reroute nodes connected to a GetClassDefaults node
#jira UE-56313
Change 3954997 by Marc.Audy
Ensure and return null if GetOuter<WithinClass> is called on a CDO for uclasses declared as within another so we don't get a UPackage c-style cast to the expected outer type
Change 3955091 by Marc.Audy
Do not register subcomponents that are not auto register
#jira UE-52878
Change 3955943 by Marc.Audy
Make AbilitySystemComponent pass parameters by const& instead of ref as no state is being changed
Change 3956185 by Zak.Middleton
#ue4 - Fix Characters using scoped movement updates (the default) not visually rotating when rotated at small rates at high framerate.
This was caused by FScopedMovementUpdate::IsTransformDirty() using a larger FTransform comparison tolerance than USceneComponent::UpdateComponentToWorldWithParent().
#jira none
Change 3958102 by Marc.Audy
Clean out dead code path from k2node_select
Select node now resets pins to wildcard if none of the pins are in use
Change 3958113 by Lukasz.Furman
added OnSearchStart call to root level behavior tree services
#jira UE-56257
Change 3958361 by Marc.Audy
Fix literal input pins on select being set to wildcard during compilation
Change 3961148 by Dan.Oconnor
Mirror 3961139 from Release 4.19
Fix for placeholder objects being left behind when loading certain UMG assets - this could causea crash when loading UMG assets
#jira UE-55742
Change 3961640 by Marc.Audy
Select node now displays Add Pin button
Undo of changing select node index type now works correctly.
Connections to option pins now maintained across change of index pin type
#jira UE-20742
Change 3962262 by Marc.Audy
Display "Object Reference" instead of "Object Object Reference" and "Soft Object Reference" instead of "Object Soft Object Reference"
Change 3962795 by Phillip.Kavan
Fix for a crash when cooking with Blueprint nativization enabled after encountering a nested instanced editor-only default subobject inherited from a native C++ base class.
- Mirrored from //UE4/Release-4.19 (3962782)
#jira UE-56316
Change 3962991 by Marc.Audy
Modify Negate/Increment/Decrement Int/Float so that the output is always the desired result even if a non-mutable pin is passed in.
Note that this can mean the result being returned and the value of the pin passed in if queried again will not be the same (in the case of pure nodes).
#jira UE-54807
Change 3963114 by Marc.Audy
Fix ensures/crash as a result of UClass expecting to be able to access the UPackage of CDOs via the GetOuterUPackage call.
Change 3963427 by Marc.Audy
Fix initialization order
Initialize bUseBackwardsCompatForEmptyAutogeneratedValue
Change 3963781 by Marc.Audy
Fix without editor compiles
Change 3964576 by Marc.Audy
PR #4599: : Working category for timelines (Contributed by projectgheist)
#jira UE-56460
#jira UE-26053
Change 3964782 by Dan.Oconnor
Mirror 3964772 from Release 4.19
Fix crash when force deleting certain blueprints, we can only check for authoritativeness while reinstancing
#jira UE-56447
Change 3965156 by Mieszko.Zielinski
PR #4592: Visual Logger optimization to fix rapid FPS drop when many items are hidden (Contributed by tstaples)
#jira UE-56435
Change 3965173 by Marc.Audy
(4.19.1) Fix incorrectly switching a cooling down tick to be an enabled tick when marking it enabled.
#jira UE-56431
Change 3966117 by Marc.Audy
Fix select nodes inside macros using wildcard array inputs having issues resolving type.
#jira UE-56484
Change 3878901 by Mieszko.Zielinski
NavigationSystem's code refactored out of the engine and into a new separate module #UE4
The CL contains required changes to all of our internal projects. Fortnite and Paragon have been tested, while the rest have been only compiled.
Change 3879409 by Mieszko.Zielinski
Further fallout fixes after ripping out NavigationSystem out of the engine #UE4
- Fixed bad ini redirects (had NavigationSystem.NavigationSystem instead of NavigationSystem.NavigationSystemV1)
- Added missing FNavigationSystem::GetDefaultNavDataClass binding (resulting in QAGame's func tests failing)
Change 3897655 by Ben.Zeigler
#jira UE-55211 Fix it so literal soft object pins on blueprint nodes get correctly cooked/referenced
It now sets the thread context to skip internal serialize and calls the archive's serialize function instead of bypassing it, which allows it to pick up references
Change 3962780 by Marc.Audy
When preventing a split pin from being orphaned, all sub pins must also be prevented.
#jira UE-56328
Repack members of UEdGraphPin to avoid wasted space (saves 16bytes)
[CL 3967553 by Marc Audy in Main branch]
2018-03-27 14:27:07 -04:00
# include "NavigationOctree.h"
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
# include "AI/Navigation/NavRelevantInterface.h"
2022-10-26 12:57:32 -04:00
# include "Interfaces/Interface_AsyncCompilation.h"
Copying //UE4/Dev-Framework to //UE4/Dev-Main (Source: //UE4/Dev-Framework @ 3967517)
#rb none
#lockdown Nick.Penwarden
#rnx
============================
MAJOR FEATURES & CHANGES
============================
Change 3804281 by Fred.Kimberley
Improve contrast on watches in blueprints.
Change 3804322 by Fred.Kimberley
First pass at adding a watch window for blueprint debugging.
Change 3804737 by mason.seay
Added some Descriptions to tests that didn't have any, and fixed some typos
Change 3806103 by mason.seay
Moved and Renamed Timers test map and content appropriately
Change 3806164 by Fred.Kimberley
Add missing property types to GetDebugInfoInternal.
#jira UE-53355
Change 3806617 by Dan.Oconnor
Function Terminator (and derived types) now use FMemberReference instead of a UClass/FName pair. This fixes various bugs when resolving the UFunction referenced by the function terminator
#jira UE-31754, UE-42431, UE-53315, UE-53172
Change 3808541 by Fred.Kimberley
Add support for redirecting user defined enums.
This is in response to the following UDN thread: https://udn.unrealengine.com/questions/404141/is-is-possible-to-create-a-redirector-from-a-bluep.html
Change 3808565 by mason.seay
Added a few more struct tests
Change 3809840 by mason.seay
Renamed CharacterMovement.umap to CharacterCollision. Fixed up content to reflect this change.
Change 3809847 by mason.seay
Added Object Timer tests. Fixed up existing timer test to remove delay dependency
Change 3811704 by Ben.Zeigler
Fix issue where identical enum redirects registered to different initial names would throw an incorrect error, it's fine if the value change maps are identical
Change 3811946 by Ben.Zeigler
#jira UE-53511 Fix it so it is possible to set a user defined struct value back to it's default. The UDS hack in PropertyValueToString is no longer needed, but this could affect some other user struct editor operations
Change 3812061 by Dan.Oconnor
Stepping over or in to nodes that are expanded at compile time (e.g. event nodes, spawn actor nodes) no longer requires multiple 'steps'
#jira UE-52854
Change 3812259 by Dan.Oconnor
Fix asset broken by removal of an unkown enum
#jira UE-51419
Change 3812904 by Ben.Zeigler
Make ResolveRedirects on StreamableManager public as it can be used to validate things
Change 3812958 by Ben.Zeigler
#jira UE-52977 Fix crashes when binding blueprint editor commands to keys and using from invalid contexts
Change 3812975 by Mieszko.Zielinski
Added contraptions to catch a rare eidtor-time EQS crash #UE4
#jira UE-53468
Change 3818530 by Phillip.Kavan
Fix incorrect access to nested instanced subobjects in nativized Blueprint ctor codegen.
Change summary:
- Modified FEmitDefaultValueHelper::HandleInstancedSubobject() to properly reference the outer and check ptr validity when creating/obtaining nested default subobjects.
- Modified FEmitDefaultValueHelper::HandleClassSubobject() to better guard against code generation based on an invalid local variable name.
#jira UE-52167
Change 3819733 by Mieszko.Zielinski
Marked UAISenseConfig_Blueprint and UAISense_Blueprint as hidedropdown #UE4
#jira UE-15089
Change 3821776 by Marc.Audy
Remove redundent code in SpawnActorFromClass that already exists in ConstructObjectFromClass parent class
Change 3823851 by mason.seay
Moved and renamed blueprints used for Object Reference testing
Change 3824165 by Phillip.Kavan
Ensure that subobject class types are constructed prior to accessing a subobject CDO in a nativized Blueprint class's generated ctor at runtime.
Change summary:
- Modified FFakeImportTableHelper to tag subobject class types as a preload dependency of the outer converted Blueprint class type and not of the CDO.
#jira UE-53111
Change 3830309 by mason.seay
Created Literal Gameplay Tag Container test
Change 3830562 by Phillip.Kavan
Blueprint nativization bug fixes (reviewed/taken from PR).
Change summary:
- Modified FSafeContextScopedEmitter::ValidationChain() to ensure that generated code calls the global IsValid() utility function on objects.
- Modified FBlueprintCompilerCppBackend::EmitCreateArrayStatement() to generate a proper cast on MakeArray node inputs for enum class types.
- Modified FBlueprintCompilerCppBackend::EnimCallStatementInner() to more correctly identify an interface function call site.
- Modified FEmitHelper::GenerateAutomaticCast() to properly handle automatic casts of enum arrays.
- (Modified from PR source) Added new FComponentDataUtils statics to consolidate custom init code generation for converted special-case component types (e.g. BodyInstance). Ties native component DSOs to the same pre/post as converted non-native component templates around the OuterGenerate() loop.
- Modified FExposeOnSpawnValidator::IsSupported() to include CPT_SoftObjectReference property types.
- Modified UBlueprintGeneratedClass::CheckAndApplyComponentTemplateOverrides() to no longer break out of the loop before finding additional ICH override record matches.
#4202
#jira UE-52188
Change 3830579 by Fred.Kimberley
Add support for turning off multiple watches at once in the watch window.
#jira UE-53852
Change 3836047 by Zak.Middleton
#ue4 - Dev test maps for overlaps perf tests.
Change 3836768 by Phillip.Kavan
Fix for a build failure that could occur with Blueprint nativization enabled and EDL disabled. This was a regression introduced in 4.18.
Change summary:
- Modified FEmitDefaultValueHelper::AddStaticFunctionsForDependencies() to emit the correct signature for constructing FBlueprintDependencyData elements when the EDL boot time optimization is disabled.
#jira UE-53908
Change 3838085 by mason.seay
Functional tests around basic blueprint functions
Change 3840489 by Ben.Zeigler
#jira UE-31662 Fix regression with renaming parent inherited function. It was not correctly searching the parent's skeleton class during the child's recompile so it was erroneously detecting the parent function as missing
Change 3840648 by mason.seay
Updated Descriptions on tests
Change 3842914 by Ben.Zeigler
Improve comments around stremable handle cancel/release
Change 3850413 by Ben.Zeigler
Fix asset registry memory reporting, track some newer fields and correctly report the state size instead of static size twice
Copy of CL #3849610
Change 3850426 by Ben.Zeigler
Reduce asset registry memory in cooked build by stripping out searchable names and empty dependency nodes by default
Add option to strip dependency data for asset data with no tags, this was always true before but isn't necessarily safe
Copy of CL #3850389
Change 3853449 by Phillip.Kavan
Fix a scoping issue for local instanced subobject references in nativized Blueprint C++ code. Also, don't emit redundant assignment statements for instanced subobject reference properties.
Change summary:
- Consolidated FComponentDataUtils into FDefaultSubobjectData and extended FNonativeComponentData from it in order to handle both native & non-native DSO initialization codegen through a more common interface.
- Exposed FEmitDefaultValueHelper::HandleInstancedSubobject() as a public API and added a 'SubobjectData' parameter to allow initialization codegen to be deferred until after all default subobjects have been mapped to local variables within the current scope.
- Modified FEmitDefaultValueHelper::GenerateConstructor() to first map all default subobjects to local variables and then emit any delta initialization code for property values.
- Modified FEmitDefaultValueHelper::HandleSpecialTypes() to return an empty string for an instanced reference to a default subobject. This allows us to avoid emitting initialization statements to unnecessarily reassign instances back to the same property.
- Modified FEmitDefaultValueHelper::InnerGenerate() to better handle instanced references to default subobjects, ensuring that we don't emit unnecessary assignment statements and array initialization code to the converted class constructor in C++.
- Fixed a few typos.
#jira UE-53960
Change 3853465 by Phillip.Kavan
Fix plugin module C++ source template to conform to recent public include path changes.
Change 3857599 by Marc.Audy
PR #4438: UE-54281: Make None a valid default value to select (Contributed by projectgheist)
#jira UE-54281
#jira UE-54399
Change 3863259 by Zak.Middleton
#ue4 - Save bandwidth for replicated characters by only replicating 4 byte timestamp value to clients if it's actually needed for Linear smoothing. Added option to always replicate the timestamp ("bNetworkAlwaysReplicateTransformUpdateTimestamp", default off), in case users still want this timestamp for some reason, or if smoothing mode changes dynamically and the server won't know.
#jira UE-46293
Change 3863491 by Zak.Middleton
#ue4 - Reduce network RPC overhead for players that are not moving. Added ClientNetSendMoveDeltaTimeStationary (default 12Hz) to supplement existing ClientNetSendMoveDeltaTime and ClientNetSendMoveDeltaTimeThrottled. UCharacterMovementComponent::GetClientNetSendDeltaTime() now uses this time if Acceleration and Velocity are zero, and the control rotation matches the last ack'd control rotation from the server.
Also fixed up code default for ClientNetSendMoveDeltaTime to match default INI value.
#jira UE-21264
Change 3865325 by Zak.Middleton
#ue4 - Fix static analysis warning about possible null PC pointer.
#jira none
Change 3869828 by Ben.Zeigler
#jira UE-54786 Fix it so -cookonthefly cooperates with -iterate by writing out a development asset registry
Change 3869969 by mason.seay
Character Movement Functional Tests
Change 3870099 by Mason.Seay
Submitted asset deletes
Change 3870105 by mason.seay
Removed link to anim blueprint to fix errors
Change 3870238 by mason.seay
Test map for Async Loading in a Loop
Change 3870479 by Ben.Zeigler
Add code to check CoreRedirects for SoftObjectPaths when saving or resolving in the editor. This is a bit slow so we don't want to do it on load
We don't have any good way to know the type of a path so I check both Object and Class redirectors, which will also pickup Module renames
Change 3875224 by mason.seay
Functional tests for Event BeginPlay execution order
Change 3875409 by mason.seay
Optimized and fixed up character movement tests (because a potential bug in FunctionalTestActor is always passing a test when it can fail)
Change 3878947 by Mieszko.Zielinski
CIS fixes #UE4
Change 3879000 by Mieszko.Zielinski
More CIS fixes #UE4
Change 3879139 by Mieszko.Zielinski
Even moar CIS fixes #UE4
Change 3879742 by mason.seay
Added animation to Nativization Widget asset
Change 3880198 by Zak.Middleton
#ue4 - CanCrouchInCurrentState() returns false when character capsule is simulating physics.
#jira UE-54875
github #4479
Change 3880266 by Zak.Middleton
#ue4 - Optimize UpdateCharacterStateBeforeMovement() to do cheaper tests earlier (avoid CanCrouchInCurrentState() unless necessary, now that it tests IsSimulatingPhysics() which is not trivial).
#jira UE-54875
Change 3881546 by Mieszko.Zielinski
*.Build.cs files clean up - removed redundant dependencies from NavigationSystem and AIModule #UE4
Change 3881547 by Mieszko.Zielinski
Removed a bunch of DEPRECATED functions from the new NavigationSystem module #UE4
Removed all deprecates prior 4.15 (picked this one because I do know some licencees are still using it).
Change 3881742 by mason.seay
Additional crouch test to cover UE-54875
Change 3881794 by Mieszko.Zielinski
Fixed a bug in FVisualLoggerHelpers::GetCategories resulting in losing verbosity information #UE4
Change 3884503 by Mieszko.Zielinski
Fixed TopDown code template to make it compile after navsys refactor #UE4
#jira UE-55039
Change 3884507 by Mieszko.Zielinski
Switched ensures in UNavigationSystemV1:SimpleMoveToX to error-level logs #UE4
It's an error rather than a warning because the functions no longer do anything. Making it work would require a cyclic dependency between NavigationSystem and AIModule.
#jira UE-55033
Change 3884594 by Mieszko.Zielinski
Added a const FNavigationSystem::GetCurrent version #UE4
lack of it was causing KiteDemo to not compile.
Change 3884602 by Mieszko.Zielinski
Mac editor compilation fix #UE4
Change 3884615 by Mieszko.Zielinski
Fixed FAIDataProviderValue::GetRawValuePtr not being accessible from outside of AIModule #UE4
Change 3885254 by Mieszko.Zielinski
Guessfix for UE-55030 #UE4
The name of NavigationSystem module was put in wrong in the IMPLEMENT_MODULE macro
#jira 55030
Change 3885286 by Mieszko.Zielinski
Changed how NavigationSystem module includes DerivedDataCache module #UE4
#jira UE-55035
Change 3885492 by mason.seay
Minor tweaks to animation
Change 3885773 by mason.seay
Resaving assets to clear out warning
Change 3886433 by Mieszko.Zielinski
Fixed TP_TopDownBP's player controller BP to not use deprecated nav functions #UE4
#jira UE-55108
Change 3886783 by Mieszko.Zielinski
Removed silly inclusion of NavigationSystemTypes.h from NavigationSystemTypes.h #UE4
Change 3887019 by Mieszko.Zielinski
Fixed accessing unchecked pointer in ANavigationData::OnNavAreaAdded #UE4
Change 3891031 by Mieszko.Zielinski
Fixed missing includes in NavigationSystem.cpp #UE4
Change 3891037 by Mieszko.Zielinski
ContentEample's navigation fix #UE4
#jira UE-55109
Change 3891044 by Mieszko.Zielinski
PR #4456: Fix bug in UAISense_Sight::OnListenerForgetsActor (Contributed by maxtunel)
#UE4
Change 3891598 by mason.seay
Resaving assets to clear out "empty engine version" spam
Change 3891612 by mason.seay
Fixed deprecated Set Text warnings
Change 3893334 by Mieszko.Zielinski
Fixed a bug in navmesh generation resulting in not removing layers that ended up empty after rebuilding #UE4
#jira UE-55041
Change 3893394 by Mieszko.Zielinski
Fixed navmesh debug drawing to properly display octree elements with "per instance transforms" (like instanced SMs) #UE4
Also, added a more detailed debug drawing of navoctree contents (optional, but on by default).
Change 3893395 by Mieszko.Zielinski
Added a bit of code to navigation system's initialization that checks the enegine ini for sections refering to the moved navigation classes, and complain about it #UE4
The message is printed as an error-level log line and it says what should the offending section be renamed to.
Change 3895563 by Dan.Oconnor
Mirror 3895535
Append history from previous branches in source control history view
#jira none
Change 3896930 by Mieszko.Zielinski
Added an option to tick navigation system while the game is paused #UE4
Controlled via NavigationSystemV1.bTickWhilePaused, ini- and ProjectSettings-configurable.
#jira UE-39275
Change 3897554 by Mieszko.Zielinski
Unified how NavMeshRenderingComponent draws navmesh and octree collision's polys #UE4
Change 3897556 by Mieszko.Zielinski
Fixed what kind of nav tile bounds we're sending to nav-colliding elements when calling 'per-instance transform' delegate #UE4
#jira UE-45261
Change 3898064 by Mieszko.Zielinski
Made SM Editor display AI-navigation-related whenever bHasNavigationData is set to true #UE4
#jira UE-50436
Change 3899004 by Mieszko.Zielinski
Fixed UEnvQueryItemType_Actor::GetItemLocation and UEnvQueryItemType_Actor::GetItemRotation to return FAISystem::InvalidLocation and FAISystem::InvalidRotation respectively instead of '0' when hosted Actor ptr is null #UE4
Note for programmers: this changes the default behavior of this edge case. You might want to go through your code and check if you're comparing UEnvQueryItemType_Actor::GetItem*'s results to 0.
Change 3901733 by Mieszko.Zielinski
Made FEnvQueryInstance::PrepareContext implementations returning vectors and rotators ignore InvalidLocation and InvalidRotation (respectively) #UE4
Change 3901925 by Ben.Zeigler
#jira UE-55395 Fix issue where the cooker could load asset registry caches made in -game that do not have dependency data, leading to broken cooks
Change 3902166 by Marc.Audy
Make ULevel::GetWorld final
Change 3902749 by Ben.Zeigler
Fix it so pressing refresh button in asset audit window actually refreshes the asset management database
Change 3902763 by Ben.Zeigler
#jira UE-55407 Fix it so editor tutorials are not cooked unless referenced, by correctly marking soft object paths imported from editor project settings as editor-only
Change 3905578 by Phillip.Kavan
The UX to add a new parameter on a Blueprint delegate is now at parity with Blueprint functions.
#4392
#jira UE-53779
Change 3905848 by Phillip.Kavan
First pass of the experimental Blueprint graph bookmarks feature.
#jira UE-10052
Change 3906025 by Phillip.Kavan
CIS fix.
Change 3906195 by Phillip.Kavan
Add missing icon file.
Change 3906356 by Phillip.Kavan
Moved Blueprint bookmarks enable flag into EditorExperimentalSettings for consistency with other options.
Change 3910628 by Ben.Zeigler
Partial fix for UE-55363, this allows references to ObjectRedirectors to be switched from parent class to a child class on load as this should always be safe
This does not actually fix UE-55363 because that case is changing from UMaterial to UMaterialInstanceConstant, and those are siblings instead of parent/child
Change 3912470 by Ben.Zeigler
#jira UE-55586 Fix issue with saving redirected soft object paths where the export sort could accidentally cause the parent CDO to get modified between name tagging and writing exports, which is unsafe because due to delta serialization it would try to write names that were not previously tagged
Change 3913045 by Marc.Audy
Fix issues where recursion in to child actors wasn't being handled correctly
Change 3913398 by Fred.Kimberley
Fixes a misspelled name for one of the classes in the ability system.
PR #4430: Fixed spelling of FGameplayAbilityInputBinds. (Contributed by IntegralLee)
#github
#jira UE-54327
Change 3918016 by Fred.Kimberley
Ensure AllocGameplayEffectContext is being used in all cases where FGameplayeEffectContext is being created.
#jira UE-52668
PR #4250: Only create FGameplayEffectContext via AbilitySystemGlobals::.AllocGameplayEffectContext (Contributed by slonopotamus)
#github
Change 3924653 by Mieszko.Zielinski
Fixed LoadEngineClass local to UnrealEngine.cpp to check class redirects before falling back to default class instance #UE4
#jira UE-55378
Change 3925614 by Phillip.Kavan
Fix ForEachEnum node to skip over hidden enum values in new placements by default.
Change summary:
- Added FKismetNodeHelperLibrary::ShouldHideEnumeratorIndex() as an internal-only Blueprint node support API.
- Modified FForExpandNodeHelper::AllocateDefaultPins() to add a "Skip Hidden" input pin (advanced). Pin default value is false.
- Added a UK2Node_ForEachElementInEnum::PostPlacedNewNode() override to set the default value of the "Skip Hidden" input pin to 'true' for all new node placements.
- Modified UK2Node_ForEachElementInEnum::ExpandNode() to include additional expansion logic based on the "Skip Hidden" input pin. For new placements (i.e. when the pin defaults to 'true'), an intermediate branch node will now be inserted into the compiled execution sequence to test for "hidden" metadata on the value before executing the loop body. If the input pin is linked, another intermediate branch will be inserted into the execution sequence prior to the "hidden" metadata test. All existing placements of the node will remain as-is after compilation (i.e. no additional intermediate branch nodes will be included in the expansion).
#jira UE-34563
Change 3925649 by Marc.Audy
Fix up issue post merge from Main with navigation system refactor
Change 3926293 by Phillip.Kavan
Temp fix to unblock CIS.
#jira UE-34563
Change 3926523 by Marc.Audy
Ensure that a renamed Actor is in the correct Actors array
#jira UE-46718
Change 3928732 by Fred.Kimberley
Unshelved from pending changelist '3793298':
#jira UE-53136
PR #4287: virtual additions for AttributeSet extendability (Contributed by TWIDan)
#github
Change 3928780 by Marc.Audy
PR #4309: The display names of the functions. (Contributed by SertacOgan)
#jira UE-53334
Change 3929730 by Joseph.Wysosky
Submitting test assets for the new Blueprint Structure test cases
Change 3931919 by Joseph.Wysosky
Deleting BasicStructure asset to rest MemberVariables back to default settings
Change 3931922 by Joseph.Wysosky
Adding BasicStructure test asset back with default members
Change 3932083 by Phillip.Kavan
Fix Compositing plugin source files to conform to updated relative include path specifications.
- Encountered while testing Blueprint nativization of assets with dependencies on Composure/LensDistortion APIs.
Change 3932196 by Dan.Oconnor
Resetting a property to default now uses the same codepath as assigning the value from the slate control
#jira UE-55909
Change 3932408 by Lukasz.Furman
fixed behavior tree services attached to task nodes being sometimes recognized as root level
#jira nope
Change 3932808 by Marc.Audy
PR #4083: Change to UK2Node_BaseAsyncTask to have pin tooltips on latent nodes (Contributed by dwrpayne)
#jira UE-50871
Change 3934101 by Phillip.Kavan
Revise ForEachEnum node expansion logic to exclude hidden values at compile time.
Change summary:
- Removed UKismetNodeHelperLibrary::ShouldHideEnumeratorIndex() (no longer in use).
- Modified UK2Node_ForEachElementInEnum::ExpandNode() to include an enum switch node in the expansion, which will exclude hidden values when constructed. The additional expansion will occur if the enum type contains at least one hidden value.
#jira UE-34563
Change 3934106 by Phillip.Kavan
Mirrored 4.19 fixes to allow for EngineTest iteration w/ nativization enabled.
Change summary:
- Mirrored CLs 3876918, 3878968, 3883257, 3885566, 3912161 and 3920519.
Change 3934116 by Phillip.Kavan
UBT: Explicitly define the DEPRECATED_FORGAME macro only for non-engine modules.
Change summary:
- Modified UEBuildModule.SetupPrivateCompileEnvironment() to check the 'bTreatAsEngineModule' flag from the rules assembly rather than testing the module's build type.
Change 3934382 by Phillip.Kavan
Avoid inclusion of monolothic engine header files in nativized Blueprint codegen.
Change 3936387 by Mieszko.Zielinski
Added a flag to NavModifierComponent to control whether agent's height is being used while expadning modifier's bounds during navmesh generation #UE4
Change 3936905 by Ben.Marsh
Disable IncludeTool warning for DEPRECATED_FORGAME macro; we expect this to be different for game modules.
Change 3940537 by Marc.Audy
Don't allow maps, sets, or arrays with an actor inner type in user defined structs to select an actor from the currently open level as default value.
#jira UE-55938
Change 3940901 by Marc.Audy
Properly name CVar global to reflect what it is for
Change 3943043 by Marc.Audy
Fix world context functions not being able to be used in CheatManager derived blueprints
#jira UE-55787
Change 3943075 by Mieszko.Zielinski
Moved path-following related delegats' interface from NavigationSystemBase over to a new IPathFollowingManagerInterface #UE4
Change 3943089 by Mieszko.Zielinski
Fixed how WorldSettings.NavigationSystemConfig gets created #UE4
Made it so that there's always a NavigationSystemConfig instance present, but added a 'Null' config - this was required due to issues with creation/serialization of instanced subobjects.
The change required adding copying constructors to FNavAgentProperties and FNavDataConfig.
Also, fixed FNavAgentProperties.IsEquivalent to be symetrical.
Change 3943225 by Marc.Audy
Fix spelling of Implements
Change 3950813 by Marc.Audy
Include owner in attachment mismatch ensure
#jira UE-56148
Change 3950996 by Marc.Audy
Fix cases where bit packed properties used the entire byte not just the bit when interacting with boolean arrays
#jira UE-55482
Change 3952086 by Marc.Audy
PR #4483: Add Missing Radial Damage Multicast Delegate (Contributed by error454)
#jira UE-54974
Change 3952720 by Marc.Audy
PR #4575: Check if *Pawn* is a null Pointer (Contributed by dani9bma)
#jira UE-56248
Change 3952804 by Richard.Hinckley
Changes to BP API export commandlet to support better plugin exporting. Contributed by Harry Wang of Google.
Change 3952962 by Marc.Audy
UHT now validates that ExpandEnumAsExecs references a valid parameter to the function.
#jira UE-49610
Change 3952977 by Phillip.Kavan
Fix EDL cycle at load time in nativized cooked builds when a circular dependency exists between converted and unconverted assets.
Change summary:
- Added FGatherConvertedClassDependencies::MarkUnconvertedClassAsNecessary().
- Modified FFindAssetsToInclude::MaybeIncludeObjectAsDependency() to mark unconverted BPGCs (e.g. DOBPs) as necessary for conversion when the potential for a circular dependency exists so that we generate stub wrappers rather than depend on them directly.
- Fixed a few typos in existing API names.
#jira UE-48233
Change 3953658 by Marc.Audy
(4.19.1) Fix inserting a reroute node causing connections to break on a GetClassDefaults node
#jira UE-56270
Change 3954727 by Marc.Audy
Add friendly name to custom version mismatch message
Change 3954906 by Marc.Audy
(4.19.1) Fix crash when undoing changes related to reroute nodes connected to a GetClassDefaults node
#jira UE-56313
Change 3954997 by Marc.Audy
Ensure and return null if GetOuter<WithinClass> is called on a CDO for uclasses declared as within another so we don't get a UPackage c-style cast to the expected outer type
Change 3955091 by Marc.Audy
Do not register subcomponents that are not auto register
#jira UE-52878
Change 3955943 by Marc.Audy
Make AbilitySystemComponent pass parameters by const& instead of ref as no state is being changed
Change 3956185 by Zak.Middleton
#ue4 - Fix Characters using scoped movement updates (the default) not visually rotating when rotated at small rates at high framerate.
This was caused by FScopedMovementUpdate::IsTransformDirty() using a larger FTransform comparison tolerance than USceneComponent::UpdateComponentToWorldWithParent().
#jira none
Change 3958102 by Marc.Audy
Clean out dead code path from k2node_select
Select node now resets pins to wildcard if none of the pins are in use
Change 3958113 by Lukasz.Furman
added OnSearchStart call to root level behavior tree services
#jira UE-56257
Change 3958361 by Marc.Audy
Fix literal input pins on select being set to wildcard during compilation
Change 3961148 by Dan.Oconnor
Mirror 3961139 from Release 4.19
Fix for placeholder objects being left behind when loading certain UMG assets - this could causea crash when loading UMG assets
#jira UE-55742
Change 3961640 by Marc.Audy
Select node now displays Add Pin button
Undo of changing select node index type now works correctly.
Connections to option pins now maintained across change of index pin type
#jira UE-20742
Change 3962262 by Marc.Audy
Display "Object Reference" instead of "Object Object Reference" and "Soft Object Reference" instead of "Object Soft Object Reference"
Change 3962795 by Phillip.Kavan
Fix for a crash when cooking with Blueprint nativization enabled after encountering a nested instanced editor-only default subobject inherited from a native C++ base class.
- Mirrored from //UE4/Release-4.19 (3962782)
#jira UE-56316
Change 3962991 by Marc.Audy
Modify Negate/Increment/Decrement Int/Float so that the output is always the desired result even if a non-mutable pin is passed in.
Note that this can mean the result being returned and the value of the pin passed in if queried again will not be the same (in the case of pure nodes).
#jira UE-54807
Change 3963114 by Marc.Audy
Fix ensures/crash as a result of UClass expecting to be able to access the UPackage of CDOs via the GetOuterUPackage call.
Change 3963427 by Marc.Audy
Fix initialization order
Initialize bUseBackwardsCompatForEmptyAutogeneratedValue
Change 3963781 by Marc.Audy
Fix without editor compiles
Change 3964576 by Marc.Audy
PR #4599: : Working category for timelines (Contributed by projectgheist)
#jira UE-56460
#jira UE-26053
Change 3964782 by Dan.Oconnor
Mirror 3964772 from Release 4.19
Fix crash when force deleting certain blueprints, we can only check for authoritativeness while reinstancing
#jira UE-56447
Change 3965156 by Mieszko.Zielinski
PR #4592: Visual Logger optimization to fix rapid FPS drop when many items are hidden (Contributed by tstaples)
#jira UE-56435
Change 3965173 by Marc.Audy
(4.19.1) Fix incorrectly switching a cooling down tick to be an enabled tick when marking it enabled.
#jira UE-56431
Change 3966117 by Marc.Audy
Fix select nodes inside macros using wildcard array inputs having issues resolving type.
#jira UE-56484
Change 3878901 by Mieszko.Zielinski
NavigationSystem's code refactored out of the engine and into a new separate module #UE4
The CL contains required changes to all of our internal projects. Fortnite and Paragon have been tested, while the rest have been only compiled.
Change 3879409 by Mieszko.Zielinski
Further fallout fixes after ripping out NavigationSystem out of the engine #UE4
- Fixed bad ini redirects (had NavigationSystem.NavigationSystem instead of NavigationSystem.NavigationSystemV1)
- Added missing FNavigationSystem::GetDefaultNavDataClass binding (resulting in QAGame's func tests failing)
Change 3897655 by Ben.Zeigler
#jira UE-55211 Fix it so literal soft object pins on blueprint nodes get correctly cooked/referenced
It now sets the thread context to skip internal serialize and calls the archive's serialize function instead of bypassing it, which allows it to pick up references
Change 3962780 by Marc.Audy
When preventing a split pin from being orphaned, all sub pins must also be prevented.
#jira UE-56328
Repack members of UEdGraphPin to avoid wasted space (saves 16bytes)
[CL 3967553 by Marc Audy in Main branch]
2018-03-27 14:27:07 -04:00
# include "NavigationSystem.h"
2022-11-03 14:18:47 -04:00
# include "UObject/Package.h"
2014-03-14 14:13:41 -04:00
2022-01-20 17:35:30 -05:00
LLM_DEFINE_TAG ( NavigationOctree ) ;
2019-07-10 13:31:21 -04:00
2014-03-14 14:13:41 -04:00
//----------------------------------------------------------------------//
// FNavigationOctree
//----------------------------------------------------------------------//
2022-11-10 10:40:09 -05:00
FNavigationOctree : : FNavigationOctree ( const FVector & Origin , FVector : : FReal Radius )
2020-04-21 20:01:52 -04:00
: TOctree2 < FNavigationOctreeElement , FNavigationOctreeSemantics > ( Origin , Radius )
2015-03-04 08:31:40 -05:00
, DefaultGeometryGatheringMode ( ENavDataGatheringMode : : Instant )
2014-03-14 14:13:41 -04:00
, bGatherGeometry ( false )
, NodesMemory ( 0 )
2021-09-08 16:42:26 -04:00
# if !UE_BUILD_SHIPPING
, GatheringNavModifiersTimeLimitWarning ( - 1.0f )
# endif // !UE_BUILD_SHIPPING
2014-03-14 14:13:41 -04:00
{
INC_DWORD_STAT_BY ( STAT_NavigationMemory , sizeof ( * this ) ) ;
}
FNavigationOctree : : ~ FNavigationOctree ( )
{
DEC_DWORD_STAT_BY ( STAT_NavigationMemory , sizeof ( * this ) ) ;
DEC_MEMORY_STAT_BY ( STAT_Navigation_CollisionTreeMemory , NodesMemory ) ;
2019-07-10 13:31:21 -04:00
ObjectToOctreeId . Empty ( ) ;
2014-03-14 14:13:41 -04:00
}
2015-03-04 08:31:40 -05:00
void FNavigationOctree : : SetDataGatheringMode ( ENavDataGatheringModeConfig Mode )
2015-01-28 10:35:04 -05:00
{
2015-03-04 08:31:40 -05:00
check ( Mode ! = ENavDataGatheringModeConfig : : Invalid ) ;
DefaultGeometryGatheringMode = ENavDataGatheringMode ( Mode ) ;
2015-01-28 10:35:04 -05:00
}
2014-03-14 14:13:41 -04:00
void FNavigationOctree : : SetNavigableGeometryStoringMode ( ENavGeometryStoringMode NavGeometryMode )
{
bGatherGeometry = ( NavGeometryMode = = FNavigationOctree : : StoreNavGeometry ) ;
}
2015-03-04 08:31:40 -05:00
void FNavigationOctree : : DemandLazyDataGathering ( FNavigationRelevantData & ElementData )
2014-03-14 14:13:41 -04:00
{
2022-01-20 17:35:30 -05:00
LLM_SCOPE_BYTAG ( NavigationOctree ) ;
2015-03-04 08:31:40 -05:00
UObject * ElementOb = ElementData . GetOwner ( ) ;
if ( ElementOb = = nullptr )
2014-08-22 06:53:27 -04:00
{
2015-01-28 10:35:04 -05:00
return ;
}
2015-03-04 08:31:40 -05:00
bool bShrink = false ;
2022-11-10 10:40:09 -05:00
const int32 OrgElementMemory = IntCastChecked < int32 > ( ElementData . GetGeometryAllocatedSize ( ) ) ;
2015-03-04 08:31:40 -05:00
if ( ElementData . IsPendingLazyGeometryGathering ( ) = = true & & ElementData . SupportsGatheringGeometrySlices ( ) = = false )
2015-01-28 10:35:04 -05:00
{
2015-03-04 08:31:40 -05:00
QUICK_SCOPE_CYCLE_COUNTER ( STAT_RecastNavMeshGenerator_LazyGeometryExport ) ;
UActorComponent & ActorComp = * CastChecked < UActorComponent > ( ElementOb ) ;
ComponentExportDelegate . ExecuteIfBound ( & ActorComp , ElementData ) ;
2015-01-28 10:35:04 -05:00
2015-03-04 08:31:40 -05:00
bShrink = true ;
2015-01-28 10:35:04 -05:00
// mark this element as no longer needing geometry gathering
2015-03-04 08:31:40 -05:00
ElementData . bPendingLazyGeometryGathering = false ;
2015-01-28 10:35:04 -05:00
}
2015-03-04 08:31:40 -05:00
if ( ElementData . IsPendingLazyModifiersGathering ( ) )
{
QUICK_SCOPE_CYCLE_COUNTER ( STAT_RecastNavMeshGenerator_LazyModifiersExport ) ;
2021-09-08 16:42:26 -04:00
# if !UE_BUILD_SHIPPING
const bool bCanOutputDurationWarning = GatheringNavModifiersTimeLimitWarning > = 0.0f ;
const double StartTime = bCanOutputDurationWarning ? FPlatformTime : : Seconds ( ) : 0.0f ;
# endif //!UE_BUILD_SHIPPING
2015-03-04 08:31:40 -05:00
INavRelevantInterface * NavElement = Cast < INavRelevantInterface > ( ElementOb ) ;
check ( NavElement ) ;
NavElement - > GetNavigationData ( ElementData ) ;
ElementData . bPendingLazyModifiersGathering = false ;
bShrink = true ;
2021-09-08 16:42:26 -04:00
# if !UE_BUILD_SHIPPING
// If GatheringNavModifiersWarningLimitTime is positive, it will print a Warning if the time taken to call GetNavigationData is more than GatheringNavModifiersWarningLimitTime
if ( bCanOutputDurationWarning )
{
const double DeltaTime = FPlatformTime : : Seconds ( ) - StartTime ;
if ( DeltaTime > GatheringNavModifiersTimeLimitWarning )
{
const UActorComponent * ObjectAsComponent = Cast < UActorComponent > ( ElementOb ) ;
const AActor * ComponentOwner = ObjectAsComponent ? ObjectAsComponent - > GetOwner ( ) : nullptr ;
UE_LOG ( LogNavigation , Warning , TEXT ( " The time (%f sec) for gathering navigation data on an INavRelevantInterface navigation element exceeded the time limit (%f sec) | NavElement = %s | Potential Component = %s | Potential Component's Owner = %s | Level = %s " ) , DeltaTime , GatheringNavModifiersTimeLimitWarning , * GetNameSafe ( ElementOb ) , * GetNameSafe ( ObjectAsComponent ) , * GetNameSafe ( ComponentOwner ) , ElementOb ? * GetNameSafe ( ElementOb - > GetOutermost ( ) ) : TEXT ( " Invalid element " ) ) ;
}
}
# endif //!UE_BUILD_SHIPPING
2015-03-04 08:31:40 -05:00
}
if ( bShrink )
{
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main
#rb none
#lockdown Nick.Penwarden
=================================================================================================
THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS.
YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS.
=================================================================================================
Change 3662267 by Nick.Darnell
Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float.
#jira nojira
Change 3662176 by Ben.Marsh
Disable image integrity report generation if a debugger is attached, and in editor builds.
#jira FORT-55656
Change 3656958 by Luke.Thatcher
[FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism
- Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame.
- Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe.
- r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency.
Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup.
A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index.
In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread.
[~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval
- 1 == 60Hz
- 2 == 30Hz
- 3 == 20Hz
[-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings).
#jira FORT-50803
Change 3655598 by Lukasz.Furman
added filtering for navmesh's low height spans to fix crash on layer partitioning
% of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory
#jira FORT-35375
Change 3648972 by Keith.Judge
Add analytics to help diagnose default parameter collection buffer issue.
+++ REMOVE ONCE CORE ISSUE IS SOLVED +++
#jira FORT-54690
Change 3648756 by Bart.Hawthorne
Integrate 3645298 from //UE4/Dev-Networking
Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods.
#jira none
Change 3643090 by Josh.Markiewicz
#UE4 - proper handling of "pending connection lost"
- triggered only if a connection is lost and there no "owning actor" to deal with the connection loss
-- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time
- delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello)
- changed debug output on timeout if the net connection was already in the process of being destroyed
-- occurs when game hitches during the pending destroy 2 second wait
-- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout
- added userid to UNetConnection::Describe
- bad split screen player handling of unique id
-- splitscreen uniqueid was overwriting the primary player id
-- only store the id on the child connection
- added some clarifying comments
#review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti
#jira FORT-26776
Change 3639043 by Alex.Thurman
Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem.
#JIRA FORT-45841
Change 3632275 by Seth.Weedin
#JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general.
Change 3626944 by Josh.Markiewicz
#UE4 - added "updates connection status" flag to ServiceConfigMCP
- disable updates on Cloud and Friend services (Fortnite only)
- removed overloaded ProcessConnectionStatus function in cloud service
#jira FORT-53113
Change 3626226 by Stewart.Lynch
LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags
* Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB)
* re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes.
* changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8)
* summary page for content creators where all lower-level stats are grouped under one Engine stat
* renamed ELLMScopeTag enum to ELLMTag
* renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE
* removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro
* fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore
* fixed BackupOOMMemoryPool stat (now shows in both default and platform pages)
* added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.)
* lots of changes adding/removing/renaming tags
* added LLMArray and FLLMObjectAllocator classes
* disabled asset tag tracking by default because it takes up so much memory even when not used
* enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv.
* all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging.
* disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed.
* added a CVar to control the csv write interval: LLM.LLMWriteInterval
* added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements.
* renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum
* fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup
#jira NONE-01
Change 3622978 by Lukasz.Furman
changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon
includes copy of CL# 3620700
#jira FORT-45914
#review-3622979 John.Abercrombie
Change 3622340 by Josh.Markiewicz
#UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers
- ipconnection prints uniqueid with lowleveldescribe
#jira fort-0
Change 3621386 by Tim.Tillotson
Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations.
#JIRA FORT-53717
#review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello
Change 3620517 by Keith.Judge
Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion.
#jira FORT-53928
Change 3620248 by Lukasz.Furman
changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed
#jira nojira
Change 3616187 by Bob.Tellez
#UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock.
#JIRA UE-0
Change 3613935 by Peter.Knepley
More logging on update launcher launching
#jira nojira
#robomerge rp rn
Change 3613537 by Marcus.Wassmer
Safety asserts around the MarkPendingKill feature for rendering classes.
#jira FORT-50385
Change 3613399 by Arne.Schober
Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash.
#RB Marcus.Wassmer
#jira FORT-53610
Change 3610794 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce UMG class memory
#jira UE-52043
#ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3610144 by Stewart.Lynch
General LLM improvements
* added tracking for misc task graph tasks (moves 20MB out of Untagged)
* renamed EngineTick to EngineMisc
* added tracking for FName
* added tracking for GC_ProcessObjectArray potential leak
* renamed index & vertex buffers stat to Meshes
* added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h.
* removed AVAILABLE_PHYSICAL stat from LLM csv
* csv files now include the date in the filename
* fixed potential threading bug when reading stat values to csv
* made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning.
* added lots more scopes
* started changing Stat scopes to enum scopes. Stat scopes will be phased out.
* added tracking of FName memory
* added llmplatform tracking for XBoxSymbols
* added llm tracking for CPU symbol allocations (20MB)
* wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM.
* added tracking for GC
* fixed tracking for TransientMemoryAllocator
* added tracking for networking memory
* added more audio memory tracking
* added tracking for blueprints
* added tracking for static meshes
* show on screen warning if debug memory is enabled
* added tracking for particles
* renamed Phys to PhysX and added more scopes
* renamed Slate to UI and added more scopes
* much better coverage of networking memory
* improved coverage of audio
#jira FORT-53420
Change 3610136 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive)
Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive).
Reduce size of USceneComponent by 112 bytes.
Reduce size of FLightingChannels from 3 bytes to 1.
Reduce size of FBodyInstance by 16 bytes.
#jira FORT-52043
#ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607937 by robomerge
#ROBOMERGE-AUTHOR: paul.moore
#jira FORT-53105
- Fix websocket not providing information when the peer closes the connection.
#ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607042 by Bart.Hawthorne
Move replay.Loop functionality into the demo net driver and rename it demo.Loop
#jira none
Change 3605448 by robomerge
#ROBOMERGE-AUTHOR: seth.weedin
#Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180
#ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3604787 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Initial support for hotfixing live assets from .ini files
- This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded
- Only CurveTables and DataTables are supported for now
- The new asset content must be in Json format, the same format the editor uses for importing
- Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards.
- IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped!
- The changes must go in the Game.ini file and use the following syntax:
[AssetHotfix]
+CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]")
+DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]")
#jira FORT-52099
[CODEREVIEW] frank.gigliotti
[FYI] peter.knepley,bob.tellez
#ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3602067 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Loading time improvements
- This shaves off up to 10 seconds of load time on PS4 in Athena
Details:
- Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds.
- Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming)
- UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.)
- Eliminated extra 2 second delay before loading screen is dismissed (in Athena only)
- Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem.
[CODEREVIEW] ori.cohen
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3601951 by Luke.Thatcher
[FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system
- Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0.
- Added garlic, onion and defrag stats to the platform memory stats struct.
- Added fixed pool sizes to platform memory stats.
- Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools.
#jira FORT-52910
Change 3600340 by robomerge
#ROBOMERGE-AUTHOR: wes.hunt
All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent.
Added some new context to crashreporter to help identify Athena matches near and long term.
* Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged
* Added bools to the params to indicate WHICH ones are changing
* Allows you to set only some values, and clear them out.
* Hooked up in FortGameState::PostInitializeComponents.
* FortGameState clears it (for returning to main menu).
* FortGameStateAthena sets it (for going into an Athena match).
* Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified.
* Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged.
* This works for ANY crash on ANY game.
* Hooked up in GameState::HandleMatchIsWaitingToStart.
#jira AT-1457
#jira AT-519
[CODEREVIEW] peter.knepley,josh.markiewicz
#ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3597593 by Ben.Zeigler
#jira FORT-50722
Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie
Partial copy of CL #3402335 and #3526538
#robomerge rp, rn
Change 3597577 by Luke.Thatcher
[FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU.
- Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack.
- With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is.
#jira FORT-50825
#jira FORT-49688
#jira FORT-49695
#jira FORT-50054
Change 3596556 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Enable GC clustering for actors and blueprints in Fortnite
- This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms)
- Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered!
- This gets us into the realm of shippability on console for very large UObject counts
[FYI] bob.tellez,peter.knepley,michael.noland
#jira AT-1440
#ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3593994 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Force largest distance field atlas size in Athena
- We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times.
- Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero)
- Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon!
[CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592096 by robomerge
#ROBOMERGE-AUTHOR: ben.salem
Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning.
#jira FORT-0
#ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592085 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
HLOD: Added support for a fixed distance override via CVar
- Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance
- New CVar: r.HLOD.DistanceOverride (defaults to 0)
- Fortnite uses 350m for this distance, fornow
[CODEREVIEW] jurre.debaare
#jira AT-1462
#ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3587391 by Michael.Noland
Fortnite: Lots of memory tracking stuff
- Added memory logging to game state transitions and overall health tracking for the entire session
- Added support for Gauntlet-based tests to Fortnite
- Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file)
- Added code to set gauntlet state based on the current subclass of AFortGameState
- Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon)
- Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon)
#jira FORT-50567
Change 3583307 by Peter.Knepley
Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space
Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix.
#jira AT-733
Change 3582378 by Luke.Thatcher
[FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles.
- All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups.
- Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p.
- Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main.
#jira FORT-50206
Change 3580934 by Luke.Thatcher
[FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo.
- Neo has 512 MB more direct memory than a base kit.
- Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB.
#jira FORT-50206
Change 3576664 by Bart.Hawthorne
Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT.
#jira FORT-49986
#tests Connected to PC server with editor -game build on Mac in Athena
Change 3575671 by Nick.Darnell
Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn.
#jira AT-644
Change 3575534 by Peter.Knepley
Ability montage replication optimizations
#jira AT-955
Change 3573305 by Lukasz.Furman
disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners
#jira FORT-49748
Change 3566775 by John.Abercrombie
Optimizations from Dev-Athena
- Tested with PIE & and 2 Player local server game
#ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager].
For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz).
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17.
#ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45.
#athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18.
#ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component.
Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43.
#ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement.
Added configurable settings to control this. Set times to zero to disable this.
- NetworkMinTimeBetweenClientAckGoodMove
- NetworkMinTimeBetweenClientAdjustments
- NetworkMinTimeBetweenClientAdjustmentsLargeCorrection
- NetworkLargeClientCorrectionDistance
#ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19.
#ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12.
#ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04.
#ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11.
#ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57.
#ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual().
Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39.
#jira Fort-1
Change 3562825 by Chris.Gagnon
Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways.
#jira FORT-0
Change 3562098 by Josh.Markiewicz
#UE4 Encryption token/ack changes
- moved encryption token request/ack to delegates
- moved FNetworkNotify to NetworkDelegates.h
- moved connection logic out of GameInstance and back into networking code
-- GameInstance sends an enum and the network code does the right thing based on that
#review-3559694 @ryan.gerleve
#tests PC dedicated server connections golden path and forced failures
#jira FORT-0
Change 3559354 by Luke.Thatcher
[FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/...
- Allowed rates are now 60Hz, 30Hz and 20Hz.
- Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1.
#jira FORT-49463
Change 3532644 by Jeff.Campeau
Fix mapping current culture to movie audio channels using data table to map languages to track indices.
Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost.
Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync).
Generic implementation for getting current languages in BP.
Fix more issues with calling into media source functionality when using the source reader (potential hangs).
#jira FORT-44376,FORT-48209,FORT-48040
#testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each.
Change 3527761 by Chris.Gagnon
Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur.
#jira FORT-47988, FORT-47984
Change 3525390 by Jeff.Campeau
Remove media player log spam
#jira FORT-47393
#testedon compiled client
Change 3518692 by Chris.Gagnon
Added CleanOperation Adding which will remove unneeded op combinations from the op queue.
Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective.
GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated.
Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view.
This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL.
#jira FORT-47395
Change 3514658 by Jeff.Campeau
Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed.
Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing.
Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup.
Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames.
#jira FORT-46801
#testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video
Change 3507896 by Ryan.Gerleve
Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption.
This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step.
#jira FORT-46878
#review-3507897 @josh.markiewicz
Change 3503928 by Ryan.Gerleve
Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing.
#jira FORT-46772
#review-3503929 bob.tellez
#robomerge ReleaseNext
[CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
// validate exported data
2015-03-04 08:31:40 -05:00
// shrink arrays before counting memory
// it will be reallocated when adding to octree and RemoveNode will have different value returned by GetAllocatedSize()
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main
#rb none
#lockdown Nick.Penwarden
=================================================================================================
THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS.
YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS.
=================================================================================================
Change 3662267 by Nick.Darnell
Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float.
#jira nojira
Change 3662176 by Ben.Marsh
Disable image integrity report generation if a debugger is attached, and in editor builds.
#jira FORT-55656
Change 3656958 by Luke.Thatcher
[FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism
- Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame.
- Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe.
- r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency.
Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup.
A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index.
In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread.
[~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval
- 1 == 60Hz
- 2 == 30Hz
- 3 == 20Hz
[-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings).
#jira FORT-50803
Change 3655598 by Lukasz.Furman
added filtering for navmesh's low height spans to fix crash on layer partitioning
% of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory
#jira FORT-35375
Change 3648972 by Keith.Judge
Add analytics to help diagnose default parameter collection buffer issue.
+++ REMOVE ONCE CORE ISSUE IS SOLVED +++
#jira FORT-54690
Change 3648756 by Bart.Hawthorne
Integrate 3645298 from //UE4/Dev-Networking
Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods.
#jira none
Change 3643090 by Josh.Markiewicz
#UE4 - proper handling of "pending connection lost"
- triggered only if a connection is lost and there no "owning actor" to deal with the connection loss
-- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time
- delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello)
- changed debug output on timeout if the net connection was already in the process of being destroyed
-- occurs when game hitches during the pending destroy 2 second wait
-- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout
- added userid to UNetConnection::Describe
- bad split screen player handling of unique id
-- splitscreen uniqueid was overwriting the primary player id
-- only store the id on the child connection
- added some clarifying comments
#review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti
#jira FORT-26776
Change 3639043 by Alex.Thurman
Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem.
#JIRA FORT-45841
Change 3632275 by Seth.Weedin
#JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general.
Change 3626944 by Josh.Markiewicz
#UE4 - added "updates connection status" flag to ServiceConfigMCP
- disable updates on Cloud and Friend services (Fortnite only)
- removed overloaded ProcessConnectionStatus function in cloud service
#jira FORT-53113
Change 3626226 by Stewart.Lynch
LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags
* Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB)
* re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes.
* changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8)
* summary page for content creators where all lower-level stats are grouped under one Engine stat
* renamed ELLMScopeTag enum to ELLMTag
* renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE
* removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro
* fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore
* fixed BackupOOMMemoryPool stat (now shows in both default and platform pages)
* added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.)
* lots of changes adding/removing/renaming tags
* added LLMArray and FLLMObjectAllocator classes
* disabled asset tag tracking by default because it takes up so much memory even when not used
* enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv.
* all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging.
* disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed.
* added a CVar to control the csv write interval: LLM.LLMWriteInterval
* added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements.
* renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum
* fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup
#jira NONE-01
Change 3622978 by Lukasz.Furman
changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon
includes copy of CL# 3620700
#jira FORT-45914
#review-3622979 John.Abercrombie
Change 3622340 by Josh.Markiewicz
#UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers
- ipconnection prints uniqueid with lowleveldescribe
#jira fort-0
Change 3621386 by Tim.Tillotson
Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations.
#JIRA FORT-53717
#review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello
Change 3620517 by Keith.Judge
Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion.
#jira FORT-53928
Change 3620248 by Lukasz.Furman
changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed
#jira nojira
Change 3616187 by Bob.Tellez
#UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock.
#JIRA UE-0
Change 3613935 by Peter.Knepley
More logging on update launcher launching
#jira nojira
#robomerge rp rn
Change 3613537 by Marcus.Wassmer
Safety asserts around the MarkPendingKill feature for rendering classes.
#jira FORT-50385
Change 3613399 by Arne.Schober
Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash.
#RB Marcus.Wassmer
#jira FORT-53610
Change 3610794 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce UMG class memory
#jira UE-52043
#ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3610144 by Stewart.Lynch
General LLM improvements
* added tracking for misc task graph tasks (moves 20MB out of Untagged)
* renamed EngineTick to EngineMisc
* added tracking for FName
* added tracking for GC_ProcessObjectArray potential leak
* renamed index & vertex buffers stat to Meshes
* added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h.
* removed AVAILABLE_PHYSICAL stat from LLM csv
* csv files now include the date in the filename
* fixed potential threading bug when reading stat values to csv
* made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning.
* added lots more scopes
* started changing Stat scopes to enum scopes. Stat scopes will be phased out.
* added tracking of FName memory
* added llmplatform tracking for XBoxSymbols
* added llm tracking for CPU symbol allocations (20MB)
* wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM.
* added tracking for GC
* fixed tracking for TransientMemoryAllocator
* added tracking for networking memory
* added more audio memory tracking
* added tracking for blueprints
* added tracking for static meshes
* show on screen warning if debug memory is enabled
* added tracking for particles
* renamed Phys to PhysX and added more scopes
* renamed Slate to UI and added more scopes
* much better coverage of networking memory
* improved coverage of audio
#jira FORT-53420
Change 3610136 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive)
Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive).
Reduce size of USceneComponent by 112 bytes.
Reduce size of FLightingChannels from 3 bytes to 1.
Reduce size of FBodyInstance by 16 bytes.
#jira FORT-52043
#ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607937 by robomerge
#ROBOMERGE-AUTHOR: paul.moore
#jira FORT-53105
- Fix websocket not providing information when the peer closes the connection.
#ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607042 by Bart.Hawthorne
Move replay.Loop functionality into the demo net driver and rename it demo.Loop
#jira none
Change 3605448 by robomerge
#ROBOMERGE-AUTHOR: seth.weedin
#Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180
#ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3604787 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Initial support for hotfixing live assets from .ini files
- This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded
- Only CurveTables and DataTables are supported for now
- The new asset content must be in Json format, the same format the editor uses for importing
- Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards.
- IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped!
- The changes must go in the Game.ini file and use the following syntax:
[AssetHotfix]
+CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]")
+DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]")
#jira FORT-52099
[CODEREVIEW] frank.gigliotti
[FYI] peter.knepley,bob.tellez
#ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3602067 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Loading time improvements
- This shaves off up to 10 seconds of load time on PS4 in Athena
Details:
- Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds.
- Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming)
- UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.)
- Eliminated extra 2 second delay before loading screen is dismissed (in Athena only)
- Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem.
[CODEREVIEW] ori.cohen
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3601951 by Luke.Thatcher
[FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system
- Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0.
- Added garlic, onion and defrag stats to the platform memory stats struct.
- Added fixed pool sizes to platform memory stats.
- Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools.
#jira FORT-52910
Change 3600340 by robomerge
#ROBOMERGE-AUTHOR: wes.hunt
All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent.
Added some new context to crashreporter to help identify Athena matches near and long term.
* Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged
* Added bools to the params to indicate WHICH ones are changing
* Allows you to set only some values, and clear them out.
* Hooked up in FortGameState::PostInitializeComponents.
* FortGameState clears it (for returning to main menu).
* FortGameStateAthena sets it (for going into an Athena match).
* Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified.
* Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged.
* This works for ANY crash on ANY game.
* Hooked up in GameState::HandleMatchIsWaitingToStart.
#jira AT-1457
#jira AT-519
[CODEREVIEW] peter.knepley,josh.markiewicz
#ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3597593 by Ben.Zeigler
#jira FORT-50722
Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie
Partial copy of CL #3402335 and #3526538
#robomerge rp, rn
Change 3597577 by Luke.Thatcher
[FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU.
- Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack.
- With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is.
#jira FORT-50825
#jira FORT-49688
#jira FORT-49695
#jira FORT-50054
Change 3596556 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Enable GC clustering for actors and blueprints in Fortnite
- This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms)
- Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered!
- This gets us into the realm of shippability on console for very large UObject counts
[FYI] bob.tellez,peter.knepley,michael.noland
#jira AT-1440
#ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3593994 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Force largest distance field atlas size in Athena
- We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times.
- Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero)
- Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon!
[CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592096 by robomerge
#ROBOMERGE-AUTHOR: ben.salem
Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning.
#jira FORT-0
#ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592085 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
HLOD: Added support for a fixed distance override via CVar
- Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance
- New CVar: r.HLOD.DistanceOverride (defaults to 0)
- Fortnite uses 350m for this distance, fornow
[CODEREVIEW] jurre.debaare
#jira AT-1462
#ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3587391 by Michael.Noland
Fortnite: Lots of memory tracking stuff
- Added memory logging to game state transitions and overall health tracking for the entire session
- Added support for Gauntlet-based tests to Fortnite
- Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file)
- Added code to set gauntlet state based on the current subclass of AFortGameState
- Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon)
- Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon)
#jira FORT-50567
Change 3583307 by Peter.Knepley
Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space
Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix.
#jira AT-733
Change 3582378 by Luke.Thatcher
[FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles.
- All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups.
- Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p.
- Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main.
#jira FORT-50206
Change 3580934 by Luke.Thatcher
[FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo.
- Neo has 512 MB more direct memory than a base kit.
- Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB.
#jira FORT-50206
Change 3576664 by Bart.Hawthorne
Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT.
#jira FORT-49986
#tests Connected to PC server with editor -game build on Mac in Athena
Change 3575671 by Nick.Darnell
Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn.
#jira AT-644
Change 3575534 by Peter.Knepley
Ability montage replication optimizations
#jira AT-955
Change 3573305 by Lukasz.Furman
disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners
#jira FORT-49748
Change 3566775 by John.Abercrombie
Optimizations from Dev-Athena
- Tested with PIE & and 2 Player local server game
#ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager].
For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz).
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17.
#ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45.
#athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18.
#ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component.
Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43.
#ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement.
Added configurable settings to control this. Set times to zero to disable this.
- NetworkMinTimeBetweenClientAckGoodMove
- NetworkMinTimeBetweenClientAdjustments
- NetworkMinTimeBetweenClientAdjustmentsLargeCorrection
- NetworkLargeClientCorrectionDistance
#ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19.
#ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12.
#ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04.
#ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11.
#ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57.
#ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual().
Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39.
#jira Fort-1
Change 3562825 by Chris.Gagnon
Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways.
#jira FORT-0
Change 3562098 by Josh.Markiewicz
#UE4 Encryption token/ack changes
- moved encryption token request/ack to delegates
- moved FNetworkNotify to NetworkDelegates.h
- moved connection logic out of GameInstance and back into networking code
-- GameInstance sends an enum and the network code does the right thing based on that
#review-3559694 @ryan.gerleve
#tests PC dedicated server connections golden path and forced failures
#jira FORT-0
Change 3559354 by Luke.Thatcher
[FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/...
- Allowed rates are now 60Hz, 30Hz and 20Hz.
- Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1.
#jira FORT-49463
Change 3532644 by Jeff.Campeau
Fix mapping current culture to movie audio channels using data table to map languages to track indices.
Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost.
Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync).
Generic implementation for getting current languages in BP.
Fix more issues with calling into media source functionality when using the source reader (potential hangs).
#jira FORT-44376,FORT-48209,FORT-48040
#testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each.
Change 3527761 by Chris.Gagnon
Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur.
#jira FORT-47988, FORT-47984
Change 3525390 by Jeff.Campeau
Remove media player log spam
#jira FORT-47393
#testedon compiled client
Change 3518692 by Chris.Gagnon
Added CleanOperation Adding which will remove unneeded op combinations from the op queue.
Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective.
GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated.
Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view.
This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL.
#jira FORT-47395
Change 3514658 by Jeff.Campeau
Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed.
Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing.
Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup.
Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames.
#jira FORT-46801
#testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video
Change 3507896 by Ryan.Gerleve
Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption.
This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step.
#jira FORT-46878
#review-3507897 @josh.markiewicz
Change 3503928 by Ryan.Gerleve
Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing.
#jira FORT-46772
#review-3503929 bob.tellez
#robomerge ReleaseNext
[CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
ElementData . ValidateAndShrink ( ) ;
2015-03-04 08:31:40 -05:00
}
2022-11-10 10:40:09 -05:00
const int32 ElementMemoryChange = IntCastChecked < int32 > ( ElementData . GetGeometryAllocatedSize ( ) ) - OrgElementMemory ;
2015-03-04 08:31:40 -05:00
const_cast < FNavigationOctree * > ( this ) - > NodesMemory + = ElementMemoryChange ;
INC_MEMORY_STAT_BY ( STAT_Navigation_CollisionTreeMemory , ElementMemoryChange ) ;
}
2020-03-30 12:13:52 -04:00
void FNavigationOctree : : DemandChildLazyDataGathering ( FNavigationRelevantData & ElementData , INavRelevantInterface & ChildNavInterface )
2015-03-04 08:31:40 -05:00
{
2022-01-20 17:35:30 -05:00
LLM_SCOPE_BYTAG ( NavigationOctree ) ;
2020-03-30 12:13:52 -04:00
if ( IsLazyGathering ( ChildNavInterface ) )
{
ChildNavInterface . GetNavigationData ( ElementData ) ;
ElementData . ValidateAndShrink ( ) ;
}
}
2021-09-08 16:42:26 -04:00
# if !UE_BUILD_SHIPPING
void FNavigationOctree : : SetGatheringNavModifiersTimeLimitWarning ( const float Threshold )
{
GatheringNavModifiersTimeLimitWarning = Threshold ;
}
# endif // !UE_BUILD_SHIPPING
2020-03-30 12:13:52 -04:00
bool FNavigationOctree : : IsLazyGathering ( const INavRelevantInterface & ChildNavInterface ) const
{
const ENavDataGatheringMode GatheringMode = ChildNavInterface . GetGeometryGatheringMode ( ) ;
const bool bDoInstantGathering = ( ( GatheringMode = = ENavDataGatheringMode : : Default & & DefaultGeometryGatheringMode = = ENavDataGatheringMode : : Instant )
| | GatheringMode = = ENavDataGatheringMode : : Instant ) ;
return ! bDoInstantGathering ;
2015-01-28 10:35:04 -05:00
}
void FNavigationOctree : : AddNode ( UObject * ElementOb , INavRelevantInterface * NavElement , const FBox & Bounds , FNavigationOctreeElement & Element )
{
2022-01-20 17:35:30 -05:00
LLM_SCOPE_BYTAG ( NavigationOctree ) ;
2021-12-06 11:43:41 -05:00
if ( ! Bounds . IsValid )
{
UE_LOG ( LogNavigation , Warning , TEXT ( " %s: Ignoring %s because bounds are invalid. " ) , ANSI_TO_TCHAR ( __FUNCTION__ ) , * GetNameSafe ( ElementOb ) ) ;
return ;
}
2015-01-28 10:35:04 -05:00
// we assume NavElement is ElementOb already cast
2015-03-04 08:31:40 -05:00
Element . Bounds = Bounds ;
2014-08-22 06:53:27 -04:00
if ( NavElement )
{
2020-03-30 12:13:52 -04:00
const bool bDoInstantGathering = ! IsLazyGathering ( * NavElement ) ;
2015-03-04 08:31:40 -05:00
if ( bGatherGeometry )
{
UActorComponent * ActorComp = Cast < UActorComponent > ( ElementOb ) ;
if ( ActorComp )
{
2020-11-09 07:50:34 -04:00
bool bIsActorCompiling = false ;
# if WITH_EDITOR
IInterface_AsyncCompilation * AsyncCompiledActor = Cast < IInterface_AsyncCompilation > ( ActorComp ) ;
bIsActorCompiling = AsyncCompiledActor & & AsyncCompiledActor - > IsCompiling ( ) ;
# endif
// Skip custom navigation export during async compilation, the node will be invalidated once
// compilation finishes.
if ( ! bIsActorCompiling )
2015-03-04 08:31:40 -05:00
{
2020-11-09 07:50:34 -04:00
if ( bDoInstantGathering )
{
ComponentExportDelegate . ExecuteIfBound ( ActorComp , * Element . Data ) ;
}
else
{
Element . Data - > bPendingLazyGeometryGathering = true ;
Element . Data - > bSupportsGatheringGeometrySlices = NavElement & & NavElement - > SupportsGatheringGeometrySlices ( ) ;
}
2015-03-04 08:31:40 -05:00
}
}
}
2014-08-22 06:53:27 -04:00
SCOPE_CYCLE_COUNTER ( STAT_Navigation_GatheringNavigationModifiersSync ) ;
2015-03-04 08:31:40 -05:00
if ( bDoInstantGathering )
{
2021-09-08 16:42:26 -04:00
# if !UE_BUILD_SHIPPING
const bool bCanOutputDurationWarning = GatheringNavModifiersTimeLimitWarning > = 0.0f ;
const double StartTime = bCanOutputDurationWarning ? FPlatformTime : : Seconds ( ) : 0.0f ;
# endif //!UE_BUILD_SHIPPING
2015-03-04 08:31:40 -05:00
NavElement - > GetNavigationData ( * Element . Data ) ;
2021-09-08 16:42:26 -04:00
# if !UE_BUILD_SHIPPING
// If GatheringNavModifiersWarningLimitTime is positive, it will print a Warning if the time taken to call GetNavigationData is more than GatheringNavModifiersWarningLimitTime
if ( bCanOutputDurationWarning )
{
const double DeltaTime = FPlatformTime : : Seconds ( ) - StartTime ;
if ( DeltaTime > GatheringNavModifiersTimeLimitWarning )
{
const UActorComponent * ObjectAsComponent = Cast < UActorComponent > ( ElementOb ) ;
const AActor * ComponentOwner = ObjectAsComponent ? ObjectAsComponent - > GetOwner ( ) : nullptr ;
UE_LOG ( LogNavigation , Warning , TEXT ( " The time (%f sec) for gathering navigation data on an INavRelevantInterface navigation element exceeded the time limit (%f sec) | NavElement = %s | Potential Component = %s | Potential Component's Owner = %s | Level = %s " ) , DeltaTime , GatheringNavModifiersTimeLimitWarning , * GetNameSafe ( ElementOb ) , * GetNameSafe ( ObjectAsComponent ) , * GetNameSafe ( ComponentOwner ) , ElementOb ? * GetNameSafe ( ElementOb - > GetOutermost ( ) ) : TEXT ( " Invalid element " ) ) ;
}
}
# endif //!UE_BUILD_SHIPPING
2015-03-04 08:31:40 -05:00
}
else
{
Element . Data - > bPendingLazyModifiersGathering = true ;
}
2014-08-22 06:53:27 -04:00
}
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main
#rb none
#lockdown Nick.Penwarden
=================================================================================================
THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS.
YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS.
=================================================================================================
Change 3662267 by Nick.Darnell
Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float.
#jira nojira
Change 3662176 by Ben.Marsh
Disable image integrity report generation if a debugger is attached, and in editor builds.
#jira FORT-55656
Change 3656958 by Luke.Thatcher
[FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism
- Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame.
- Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe.
- r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency.
Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup.
A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index.
In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread.
[~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval
- 1 == 60Hz
- 2 == 30Hz
- 3 == 20Hz
[-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings).
#jira FORT-50803
Change 3655598 by Lukasz.Furman
added filtering for navmesh's low height spans to fix crash on layer partitioning
% of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory
#jira FORT-35375
Change 3648972 by Keith.Judge
Add analytics to help diagnose default parameter collection buffer issue.
+++ REMOVE ONCE CORE ISSUE IS SOLVED +++
#jira FORT-54690
Change 3648756 by Bart.Hawthorne
Integrate 3645298 from //UE4/Dev-Networking
Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods.
#jira none
Change 3643090 by Josh.Markiewicz
#UE4 - proper handling of "pending connection lost"
- triggered only if a connection is lost and there no "owning actor" to deal with the connection loss
-- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time
- delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello)
- changed debug output on timeout if the net connection was already in the process of being destroyed
-- occurs when game hitches during the pending destroy 2 second wait
-- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout
- added userid to UNetConnection::Describe
- bad split screen player handling of unique id
-- splitscreen uniqueid was overwriting the primary player id
-- only store the id on the child connection
- added some clarifying comments
#review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti
#jira FORT-26776
Change 3639043 by Alex.Thurman
Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem.
#JIRA FORT-45841
Change 3632275 by Seth.Weedin
#JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general.
Change 3626944 by Josh.Markiewicz
#UE4 - added "updates connection status" flag to ServiceConfigMCP
- disable updates on Cloud and Friend services (Fortnite only)
- removed overloaded ProcessConnectionStatus function in cloud service
#jira FORT-53113
Change 3626226 by Stewart.Lynch
LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags
* Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB)
* re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes.
* changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8)
* summary page for content creators where all lower-level stats are grouped under one Engine stat
* renamed ELLMScopeTag enum to ELLMTag
* renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE
* removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro
* fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore
* fixed BackupOOMMemoryPool stat (now shows in both default and platform pages)
* added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.)
* lots of changes adding/removing/renaming tags
* added LLMArray and FLLMObjectAllocator classes
* disabled asset tag tracking by default because it takes up so much memory even when not used
* enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv.
* all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging.
* disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed.
* added a CVar to control the csv write interval: LLM.LLMWriteInterval
* added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements.
* renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum
* fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup
#jira NONE-01
Change 3622978 by Lukasz.Furman
changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon
includes copy of CL# 3620700
#jira FORT-45914
#review-3622979 John.Abercrombie
Change 3622340 by Josh.Markiewicz
#UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers
- ipconnection prints uniqueid with lowleveldescribe
#jira fort-0
Change 3621386 by Tim.Tillotson
Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations.
#JIRA FORT-53717
#review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello
Change 3620517 by Keith.Judge
Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion.
#jira FORT-53928
Change 3620248 by Lukasz.Furman
changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed
#jira nojira
Change 3616187 by Bob.Tellez
#UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock.
#JIRA UE-0
Change 3613935 by Peter.Knepley
More logging on update launcher launching
#jira nojira
#robomerge rp rn
Change 3613537 by Marcus.Wassmer
Safety asserts around the MarkPendingKill feature for rendering classes.
#jira FORT-50385
Change 3613399 by Arne.Schober
Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash.
#RB Marcus.Wassmer
#jira FORT-53610
Change 3610794 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce UMG class memory
#jira UE-52043
#ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3610144 by Stewart.Lynch
General LLM improvements
* added tracking for misc task graph tasks (moves 20MB out of Untagged)
* renamed EngineTick to EngineMisc
* added tracking for FName
* added tracking for GC_ProcessObjectArray potential leak
* renamed index & vertex buffers stat to Meshes
* added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h.
* removed AVAILABLE_PHYSICAL stat from LLM csv
* csv files now include the date in the filename
* fixed potential threading bug when reading stat values to csv
* made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning.
* added lots more scopes
* started changing Stat scopes to enum scopes. Stat scopes will be phased out.
* added tracking of FName memory
* added llmplatform tracking for XBoxSymbols
* added llm tracking for CPU symbol allocations (20MB)
* wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM.
* added tracking for GC
* fixed tracking for TransientMemoryAllocator
* added tracking for networking memory
* added more audio memory tracking
* added tracking for blueprints
* added tracking for static meshes
* show on screen warning if debug memory is enabled
* added tracking for particles
* renamed Phys to PhysX and added more scopes
* renamed Slate to UI and added more scopes
* much better coverage of networking memory
* improved coverage of audio
#jira FORT-53420
Change 3610136 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive)
Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive).
Reduce size of USceneComponent by 112 bytes.
Reduce size of FLightingChannels from 3 bytes to 1.
Reduce size of FBodyInstance by 16 bytes.
#jira FORT-52043
#ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607937 by robomerge
#ROBOMERGE-AUTHOR: paul.moore
#jira FORT-53105
- Fix websocket not providing information when the peer closes the connection.
#ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607042 by Bart.Hawthorne
Move replay.Loop functionality into the demo net driver and rename it demo.Loop
#jira none
Change 3605448 by robomerge
#ROBOMERGE-AUTHOR: seth.weedin
#Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180
#ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3604787 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Initial support for hotfixing live assets from .ini files
- This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded
- Only CurveTables and DataTables are supported for now
- The new asset content must be in Json format, the same format the editor uses for importing
- Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards.
- IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped!
- The changes must go in the Game.ini file and use the following syntax:
[AssetHotfix]
+CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]")
+DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]")
#jira FORT-52099
[CODEREVIEW] frank.gigliotti
[FYI] peter.knepley,bob.tellez
#ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3602067 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Loading time improvements
- This shaves off up to 10 seconds of load time on PS4 in Athena
Details:
- Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds.
- Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming)
- UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.)
- Eliminated extra 2 second delay before loading screen is dismissed (in Athena only)
- Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem.
[CODEREVIEW] ori.cohen
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3601951 by Luke.Thatcher
[FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system
- Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0.
- Added garlic, onion and defrag stats to the platform memory stats struct.
- Added fixed pool sizes to platform memory stats.
- Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools.
#jira FORT-52910
Change 3600340 by robomerge
#ROBOMERGE-AUTHOR: wes.hunt
All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent.
Added some new context to crashreporter to help identify Athena matches near and long term.
* Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged
* Added bools to the params to indicate WHICH ones are changing
* Allows you to set only some values, and clear them out.
* Hooked up in FortGameState::PostInitializeComponents.
* FortGameState clears it (for returning to main menu).
* FortGameStateAthena sets it (for going into an Athena match).
* Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified.
* Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged.
* This works for ANY crash on ANY game.
* Hooked up in GameState::HandleMatchIsWaitingToStart.
#jira AT-1457
#jira AT-519
[CODEREVIEW] peter.knepley,josh.markiewicz
#ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3597593 by Ben.Zeigler
#jira FORT-50722
Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie
Partial copy of CL #3402335 and #3526538
#robomerge rp, rn
Change 3597577 by Luke.Thatcher
[FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU.
- Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack.
- With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is.
#jira FORT-50825
#jira FORT-49688
#jira FORT-49695
#jira FORT-50054
Change 3596556 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Enable GC clustering for actors and blueprints in Fortnite
- This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms)
- Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered!
- This gets us into the realm of shippability on console for very large UObject counts
[FYI] bob.tellez,peter.knepley,michael.noland
#jira AT-1440
#ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3593994 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Force largest distance field atlas size in Athena
- We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times.
- Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero)
- Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon!
[CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592096 by robomerge
#ROBOMERGE-AUTHOR: ben.salem
Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning.
#jira FORT-0
#ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592085 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
HLOD: Added support for a fixed distance override via CVar
- Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance
- New CVar: r.HLOD.DistanceOverride (defaults to 0)
- Fortnite uses 350m for this distance, fornow
[CODEREVIEW] jurre.debaare
#jira AT-1462
#ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3587391 by Michael.Noland
Fortnite: Lots of memory tracking stuff
- Added memory logging to game state transitions and overall health tracking for the entire session
- Added support for Gauntlet-based tests to Fortnite
- Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file)
- Added code to set gauntlet state based on the current subclass of AFortGameState
- Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon)
- Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon)
#jira FORT-50567
Change 3583307 by Peter.Knepley
Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space
Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix.
#jira AT-733
Change 3582378 by Luke.Thatcher
[FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles.
- All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups.
- Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p.
- Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main.
#jira FORT-50206
Change 3580934 by Luke.Thatcher
[FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo.
- Neo has 512 MB more direct memory than a base kit.
- Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB.
#jira FORT-50206
Change 3576664 by Bart.Hawthorne
Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT.
#jira FORT-49986
#tests Connected to PC server with editor -game build on Mac in Athena
Change 3575671 by Nick.Darnell
Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn.
#jira AT-644
Change 3575534 by Peter.Knepley
Ability montage replication optimizations
#jira AT-955
Change 3573305 by Lukasz.Furman
disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners
#jira FORT-49748
Change 3566775 by John.Abercrombie
Optimizations from Dev-Athena
- Tested with PIE & and 2 Player local server game
#ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager].
For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz).
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17.
#ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45.
#athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18.
#ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component.
Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43.
#ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement.
Added configurable settings to control this. Set times to zero to disable this.
- NetworkMinTimeBetweenClientAckGoodMove
- NetworkMinTimeBetweenClientAdjustments
- NetworkMinTimeBetweenClientAdjustmentsLargeCorrection
- NetworkLargeClientCorrectionDistance
#ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19.
#ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12.
#ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04.
#ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11.
#ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57.
#ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual().
Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39.
#jira Fort-1
Change 3562825 by Chris.Gagnon
Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways.
#jira FORT-0
Change 3562098 by Josh.Markiewicz
#UE4 Encryption token/ack changes
- moved encryption token request/ack to delegates
- moved FNetworkNotify to NetworkDelegates.h
- moved connection logic out of GameInstance and back into networking code
-- GameInstance sends an enum and the network code does the right thing based on that
#review-3559694 @ryan.gerleve
#tests PC dedicated server connections golden path and forced failures
#jira FORT-0
Change 3559354 by Luke.Thatcher
[FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/...
- Allowed rates are now 60Hz, 30Hz and 20Hz.
- Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1.
#jira FORT-49463
Change 3532644 by Jeff.Campeau
Fix mapping current culture to movie audio channels using data table to map languages to track indices.
Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost.
Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync).
Generic implementation for getting current languages in BP.
Fix more issues with calling into media source functionality when using the source reader (potential hangs).
#jira FORT-44376,FORT-48209,FORT-48040
#testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each.
Change 3527761 by Chris.Gagnon
Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur.
#jira FORT-47988, FORT-47984
Change 3525390 by Jeff.Campeau
Remove media player log spam
#jira FORT-47393
#testedon compiled client
Change 3518692 by Chris.Gagnon
Added CleanOperation Adding which will remove unneeded op combinations from the op queue.
Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective.
GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated.
Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view.
This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL.
#jira FORT-47395
Change 3514658 by Jeff.Campeau
Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed.
Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing.
Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup.
Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames.
#jira FORT-46801
#testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video
Change 3507896 by Ryan.Gerleve
Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption.
This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step.
#jira FORT-46878
#review-3507897 @josh.markiewicz
Change 3503928 by Ryan.Gerleve
Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing.
#jira FORT-46772
#review-3503929 bob.tellez
#robomerge ReleaseNext
[CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
// validate exported data
2014-08-22 06:53:27 -04:00
// shrink arrays before counting memory
// it will be reallocated when adding to octree and RemoveNode will have different value returned by GetAllocatedSize()
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main
#rb none
#lockdown Nick.Penwarden
=================================================================================================
THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS.
YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS.
=================================================================================================
Change 3662267 by Nick.Darnell
Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float.
#jira nojira
Change 3662176 by Ben.Marsh
Disable image integrity report generation if a debugger is attached, and in editor builds.
#jira FORT-55656
Change 3656958 by Luke.Thatcher
[FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism
- Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame.
- Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe.
- r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency.
Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup.
A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index.
In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread.
[~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval
- 1 == 60Hz
- 2 == 30Hz
- 3 == 20Hz
[-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings).
#jira FORT-50803
Change 3655598 by Lukasz.Furman
added filtering for navmesh's low height spans to fix crash on layer partitioning
% of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory
#jira FORT-35375
Change 3648972 by Keith.Judge
Add analytics to help diagnose default parameter collection buffer issue.
+++ REMOVE ONCE CORE ISSUE IS SOLVED +++
#jira FORT-54690
Change 3648756 by Bart.Hawthorne
Integrate 3645298 from //UE4/Dev-Networking
Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods.
#jira none
Change 3643090 by Josh.Markiewicz
#UE4 - proper handling of "pending connection lost"
- triggered only if a connection is lost and there no "owning actor" to deal with the connection loss
-- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time
- delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello)
- changed debug output on timeout if the net connection was already in the process of being destroyed
-- occurs when game hitches during the pending destroy 2 second wait
-- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout
- added userid to UNetConnection::Describe
- bad split screen player handling of unique id
-- splitscreen uniqueid was overwriting the primary player id
-- only store the id on the child connection
- added some clarifying comments
#review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti
#jira FORT-26776
Change 3639043 by Alex.Thurman
Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem.
#JIRA FORT-45841
Change 3632275 by Seth.Weedin
#JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general.
Change 3626944 by Josh.Markiewicz
#UE4 - added "updates connection status" flag to ServiceConfigMCP
- disable updates on Cloud and Friend services (Fortnite only)
- removed overloaded ProcessConnectionStatus function in cloud service
#jira FORT-53113
Change 3626226 by Stewart.Lynch
LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags
* Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB)
* re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes.
* changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8)
* summary page for content creators where all lower-level stats are grouped under one Engine stat
* renamed ELLMScopeTag enum to ELLMTag
* renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE
* removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro
* fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore
* fixed BackupOOMMemoryPool stat (now shows in both default and platform pages)
* added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.)
* lots of changes adding/removing/renaming tags
* added LLMArray and FLLMObjectAllocator classes
* disabled asset tag tracking by default because it takes up so much memory even when not used
* enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv.
* all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging.
* disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed.
* added a CVar to control the csv write interval: LLM.LLMWriteInterval
* added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements.
* renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum
* fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup
#jira NONE-01
Change 3622978 by Lukasz.Furman
changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon
includes copy of CL# 3620700
#jira FORT-45914
#review-3622979 John.Abercrombie
Change 3622340 by Josh.Markiewicz
#UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers
- ipconnection prints uniqueid with lowleveldescribe
#jira fort-0
Change 3621386 by Tim.Tillotson
Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations.
#JIRA FORT-53717
#review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello
Change 3620517 by Keith.Judge
Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion.
#jira FORT-53928
Change 3620248 by Lukasz.Furman
changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed
#jira nojira
Change 3616187 by Bob.Tellez
#UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock.
#JIRA UE-0
Change 3613935 by Peter.Knepley
More logging on update launcher launching
#jira nojira
#robomerge rp rn
Change 3613537 by Marcus.Wassmer
Safety asserts around the MarkPendingKill feature for rendering classes.
#jira FORT-50385
Change 3613399 by Arne.Schober
Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash.
#RB Marcus.Wassmer
#jira FORT-53610
Change 3610794 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce UMG class memory
#jira UE-52043
#ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3610144 by Stewart.Lynch
General LLM improvements
* added tracking for misc task graph tasks (moves 20MB out of Untagged)
* renamed EngineTick to EngineMisc
* added tracking for FName
* added tracking for GC_ProcessObjectArray potential leak
* renamed index & vertex buffers stat to Meshes
* added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h.
* removed AVAILABLE_PHYSICAL stat from LLM csv
* csv files now include the date in the filename
* fixed potential threading bug when reading stat values to csv
* made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning.
* added lots more scopes
* started changing Stat scopes to enum scopes. Stat scopes will be phased out.
* added tracking of FName memory
* added llmplatform tracking for XBoxSymbols
* added llm tracking for CPU symbol allocations (20MB)
* wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM.
* added tracking for GC
* fixed tracking for TransientMemoryAllocator
* added tracking for networking memory
* added more audio memory tracking
* added tracking for blueprints
* added tracking for static meshes
* show on screen warning if debug memory is enabled
* added tracking for particles
* renamed Phys to PhysX and added more scopes
* renamed Slate to UI and added more scopes
* much better coverage of networking memory
* improved coverage of audio
#jira FORT-53420
Change 3610136 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive)
Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive).
Reduce size of USceneComponent by 112 bytes.
Reduce size of FLightingChannels from 3 bytes to 1.
Reduce size of FBodyInstance by 16 bytes.
#jira FORT-52043
#ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607937 by robomerge
#ROBOMERGE-AUTHOR: paul.moore
#jira FORT-53105
- Fix websocket not providing information when the peer closes the connection.
#ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607042 by Bart.Hawthorne
Move replay.Loop functionality into the demo net driver and rename it demo.Loop
#jira none
Change 3605448 by robomerge
#ROBOMERGE-AUTHOR: seth.weedin
#Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180
#ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3604787 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Initial support for hotfixing live assets from .ini files
- This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded
- Only CurveTables and DataTables are supported for now
- The new asset content must be in Json format, the same format the editor uses for importing
- Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards.
- IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped!
- The changes must go in the Game.ini file and use the following syntax:
[AssetHotfix]
+CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]")
+DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]")
#jira FORT-52099
[CODEREVIEW] frank.gigliotti
[FYI] peter.knepley,bob.tellez
#ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3602067 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Loading time improvements
- This shaves off up to 10 seconds of load time on PS4 in Athena
Details:
- Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds.
- Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming)
- UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.)
- Eliminated extra 2 second delay before loading screen is dismissed (in Athena only)
- Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem.
[CODEREVIEW] ori.cohen
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3601951 by Luke.Thatcher
[FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system
- Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0.
- Added garlic, onion and defrag stats to the platform memory stats struct.
- Added fixed pool sizes to platform memory stats.
- Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools.
#jira FORT-52910
Change 3600340 by robomerge
#ROBOMERGE-AUTHOR: wes.hunt
All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent.
Added some new context to crashreporter to help identify Athena matches near and long term.
* Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged
* Added bools to the params to indicate WHICH ones are changing
* Allows you to set only some values, and clear them out.
* Hooked up in FortGameState::PostInitializeComponents.
* FortGameState clears it (for returning to main menu).
* FortGameStateAthena sets it (for going into an Athena match).
* Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified.
* Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged.
* This works for ANY crash on ANY game.
* Hooked up in GameState::HandleMatchIsWaitingToStart.
#jira AT-1457
#jira AT-519
[CODEREVIEW] peter.knepley,josh.markiewicz
#ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3597593 by Ben.Zeigler
#jira FORT-50722
Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie
Partial copy of CL #3402335 and #3526538
#robomerge rp, rn
Change 3597577 by Luke.Thatcher
[FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU.
- Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack.
- With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is.
#jira FORT-50825
#jira FORT-49688
#jira FORT-49695
#jira FORT-50054
Change 3596556 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Enable GC clustering for actors and blueprints in Fortnite
- This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms)
- Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered!
- This gets us into the realm of shippability on console for very large UObject counts
[FYI] bob.tellez,peter.knepley,michael.noland
#jira AT-1440
#ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3593994 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Force largest distance field atlas size in Athena
- We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times.
- Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero)
- Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon!
[CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592096 by robomerge
#ROBOMERGE-AUTHOR: ben.salem
Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning.
#jira FORT-0
#ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592085 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
HLOD: Added support for a fixed distance override via CVar
- Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance
- New CVar: r.HLOD.DistanceOverride (defaults to 0)
- Fortnite uses 350m for this distance, fornow
[CODEREVIEW] jurre.debaare
#jira AT-1462
#ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3587391 by Michael.Noland
Fortnite: Lots of memory tracking stuff
- Added memory logging to game state transitions and overall health tracking for the entire session
- Added support for Gauntlet-based tests to Fortnite
- Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file)
- Added code to set gauntlet state based on the current subclass of AFortGameState
- Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon)
- Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon)
#jira FORT-50567
Change 3583307 by Peter.Knepley
Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space
Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix.
#jira AT-733
Change 3582378 by Luke.Thatcher
[FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles.
- All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups.
- Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p.
- Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main.
#jira FORT-50206
Change 3580934 by Luke.Thatcher
[FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo.
- Neo has 512 MB more direct memory than a base kit.
- Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB.
#jira FORT-50206
Change 3576664 by Bart.Hawthorne
Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT.
#jira FORT-49986
#tests Connected to PC server with editor -game build on Mac in Athena
Change 3575671 by Nick.Darnell
Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn.
#jira AT-644
Change 3575534 by Peter.Knepley
Ability montage replication optimizations
#jira AT-955
Change 3573305 by Lukasz.Furman
disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners
#jira FORT-49748
Change 3566775 by John.Abercrombie
Optimizations from Dev-Athena
- Tested with PIE & and 2 Player local server game
#ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager].
For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz).
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17.
#ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45.
#athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18.
#ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component.
Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43.
#ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement.
Added configurable settings to control this. Set times to zero to disable this.
- NetworkMinTimeBetweenClientAckGoodMove
- NetworkMinTimeBetweenClientAdjustments
- NetworkMinTimeBetweenClientAdjustmentsLargeCorrection
- NetworkLargeClientCorrectionDistance
#ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19.
#ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12.
#ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04.
#ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11.
#ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57.
#ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual().
Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39.
#jira Fort-1
Change 3562825 by Chris.Gagnon
Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways.
#jira FORT-0
Change 3562098 by Josh.Markiewicz
#UE4 Encryption token/ack changes
- moved encryption token request/ack to delegates
- moved FNetworkNotify to NetworkDelegates.h
- moved connection logic out of GameInstance and back into networking code
-- GameInstance sends an enum and the network code does the right thing based on that
#review-3559694 @ryan.gerleve
#tests PC dedicated server connections golden path and forced failures
#jira FORT-0
Change 3559354 by Luke.Thatcher
[FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/...
- Allowed rates are now 60Hz, 30Hz and 20Hz.
- Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1.
#jira FORT-49463
Change 3532644 by Jeff.Campeau
Fix mapping current culture to movie audio channels using data table to map languages to track indices.
Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost.
Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync).
Generic implementation for getting current languages in BP.
Fix more issues with calling into media source functionality when using the source reader (potential hangs).
#jira FORT-44376,FORT-48209,FORT-48040
#testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each.
Change 3527761 by Chris.Gagnon
Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur.
#jira FORT-47988, FORT-47984
Change 3525390 by Jeff.Campeau
Remove media player log spam
#jira FORT-47393
#testedon compiled client
Change 3518692 by Chris.Gagnon
Added CleanOperation Adding which will remove unneeded op combinations from the op queue.
Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective.
GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated.
Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view.
This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL.
#jira FORT-47395
Change 3514658 by Jeff.Campeau
Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed.
Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing.
Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup.
Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames.
#jira FORT-46801
#testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video
Change 3507896 by Ryan.Gerleve
Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption.
This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step.
#jira FORT-46878
#review-3507897 @josh.markiewicz
Change 3503928 by Ryan.Gerleve
Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing.
#jira FORT-46772
#review-3503929 bob.tellez
#robomerge ReleaseNext
[CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
Element . ValidateAndShrink ( ) ;
2014-08-22 06:53:27 -04:00
2015-01-28 10:35:04 -05:00
const int32 ElementMemory = Element . GetAllocatedSize ( ) ;
2014-03-14 14:13:41 -04:00
NodesMemory + = ElementMemory ;
INC_MEMORY_STAT_BY ( STAT_Navigation_CollisionTreeMemory , ElementMemory ) ;
2015-01-28 10:35:04 -05:00
AddElement ( Element ) ;
2014-03-14 14:13:41 -04:00
}
2020-04-21 23:23:12 -04:00
void FNavigationOctree : : AppendToNode ( const FOctreeElementId2 & Id , INavRelevantInterface * NavElement , const FBox & Bounds , FNavigationOctreeElement & Element )
2014-08-22 06:53:27 -04:00
{
2022-01-20 17:35:30 -05:00
LLM_SCOPE_BYTAG ( NavigationOctree ) ;
2014-08-22 06:53:27 -04:00
FNavigationOctreeElement OrgData = GetElementById ( Id ) ;
2015-03-04 08:31:40 -05:00
Element = OrgData ;
Element . Bounds = Bounds + OrgData . Bounds . GetBox ( ) ;
2014-08-22 06:53:27 -04:00
if ( NavElement )
{
SCOPE_CYCLE_COUNTER ( STAT_Navigation_GatheringNavigationModifiersSync ) ;
2020-03-30 12:13:52 -04:00
const bool bDoInstantGathering = ! IsLazyGathering ( * NavElement ) ;
if ( bDoInstantGathering )
{
NavElement - > GetNavigationData ( * Element . Data ) ;
}
else
{
Element . Data - > bPendingChildLazyModifiersGathering = true ;
}
2014-08-22 06:53:27 -04:00
}
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main
#rb none
#lockdown Nick.Penwarden
=================================================================================================
THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS.
YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS.
=================================================================================================
Change 3662267 by Nick.Darnell
Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float.
#jira nojira
Change 3662176 by Ben.Marsh
Disable image integrity report generation if a debugger is attached, and in editor builds.
#jira FORT-55656
Change 3656958 by Luke.Thatcher
[FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism
- Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame.
- Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe.
- r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency.
Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup.
A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index.
In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread.
[~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval
- 1 == 60Hz
- 2 == 30Hz
- 3 == 20Hz
[-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings).
#jira FORT-50803
Change 3655598 by Lukasz.Furman
added filtering for navmesh's low height spans to fix crash on layer partitioning
% of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory
#jira FORT-35375
Change 3648972 by Keith.Judge
Add analytics to help diagnose default parameter collection buffer issue.
+++ REMOVE ONCE CORE ISSUE IS SOLVED +++
#jira FORT-54690
Change 3648756 by Bart.Hawthorne
Integrate 3645298 from //UE4/Dev-Networking
Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods.
#jira none
Change 3643090 by Josh.Markiewicz
#UE4 - proper handling of "pending connection lost"
- triggered only if a connection is lost and there no "owning actor" to deal with the connection loss
-- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time
- delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello)
- changed debug output on timeout if the net connection was already in the process of being destroyed
-- occurs when game hitches during the pending destroy 2 second wait
-- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout
- added userid to UNetConnection::Describe
- bad split screen player handling of unique id
-- splitscreen uniqueid was overwriting the primary player id
-- only store the id on the child connection
- added some clarifying comments
#review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti
#jira FORT-26776
Change 3639043 by Alex.Thurman
Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem.
#JIRA FORT-45841
Change 3632275 by Seth.Weedin
#JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general.
Change 3626944 by Josh.Markiewicz
#UE4 - added "updates connection status" flag to ServiceConfigMCP
- disable updates on Cloud and Friend services (Fortnite only)
- removed overloaded ProcessConnectionStatus function in cloud service
#jira FORT-53113
Change 3626226 by Stewart.Lynch
LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags
* Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB)
* re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes.
* changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8)
* summary page for content creators where all lower-level stats are grouped under one Engine stat
* renamed ELLMScopeTag enum to ELLMTag
* renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE
* removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro
* fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore
* fixed BackupOOMMemoryPool stat (now shows in both default and platform pages)
* added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.)
* lots of changes adding/removing/renaming tags
* added LLMArray and FLLMObjectAllocator classes
* disabled asset tag tracking by default because it takes up so much memory even when not used
* enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv.
* all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging.
* disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed.
* added a CVar to control the csv write interval: LLM.LLMWriteInterval
* added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements.
* renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum
* fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup
#jira NONE-01
Change 3622978 by Lukasz.Furman
changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon
includes copy of CL# 3620700
#jira FORT-45914
#review-3622979 John.Abercrombie
Change 3622340 by Josh.Markiewicz
#UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers
- ipconnection prints uniqueid with lowleveldescribe
#jira fort-0
Change 3621386 by Tim.Tillotson
Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations.
#JIRA FORT-53717
#review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello
Change 3620517 by Keith.Judge
Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion.
#jira FORT-53928
Change 3620248 by Lukasz.Furman
changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed
#jira nojira
Change 3616187 by Bob.Tellez
#UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock.
#JIRA UE-0
Change 3613935 by Peter.Knepley
More logging on update launcher launching
#jira nojira
#robomerge rp rn
Change 3613537 by Marcus.Wassmer
Safety asserts around the MarkPendingKill feature for rendering classes.
#jira FORT-50385
Change 3613399 by Arne.Schober
Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash.
#RB Marcus.Wassmer
#jira FORT-53610
Change 3610794 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce UMG class memory
#jira UE-52043
#ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3610144 by Stewart.Lynch
General LLM improvements
* added tracking for misc task graph tasks (moves 20MB out of Untagged)
* renamed EngineTick to EngineMisc
* added tracking for FName
* added tracking for GC_ProcessObjectArray potential leak
* renamed index & vertex buffers stat to Meshes
* added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h.
* removed AVAILABLE_PHYSICAL stat from LLM csv
* csv files now include the date in the filename
* fixed potential threading bug when reading stat values to csv
* made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning.
* added lots more scopes
* started changing Stat scopes to enum scopes. Stat scopes will be phased out.
* added tracking of FName memory
* added llmplatform tracking for XBoxSymbols
* added llm tracking for CPU symbol allocations (20MB)
* wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM.
* added tracking for GC
* fixed tracking for TransientMemoryAllocator
* added tracking for networking memory
* added more audio memory tracking
* added tracking for blueprints
* added tracking for static meshes
* show on screen warning if debug memory is enabled
* added tracking for particles
* renamed Phys to PhysX and added more scopes
* renamed Slate to UI and added more scopes
* much better coverage of networking memory
* improved coverage of audio
#jira FORT-53420
Change 3610136 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive)
Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive).
Reduce size of USceneComponent by 112 bytes.
Reduce size of FLightingChannels from 3 bytes to 1.
Reduce size of FBodyInstance by 16 bytes.
#jira FORT-52043
#ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607937 by robomerge
#ROBOMERGE-AUTHOR: paul.moore
#jira FORT-53105
- Fix websocket not providing information when the peer closes the connection.
#ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607042 by Bart.Hawthorne
Move replay.Loop functionality into the demo net driver and rename it demo.Loop
#jira none
Change 3605448 by robomerge
#ROBOMERGE-AUTHOR: seth.weedin
#Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180
#ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3604787 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Initial support for hotfixing live assets from .ini files
- This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded
- Only CurveTables and DataTables are supported for now
- The new asset content must be in Json format, the same format the editor uses for importing
- Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards.
- IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped!
- The changes must go in the Game.ini file and use the following syntax:
[AssetHotfix]
+CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]")
+DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]")
#jira FORT-52099
[CODEREVIEW] frank.gigliotti
[FYI] peter.knepley,bob.tellez
#ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3602067 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Loading time improvements
- This shaves off up to 10 seconds of load time on PS4 in Athena
Details:
- Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds.
- Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming)
- UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.)
- Eliminated extra 2 second delay before loading screen is dismissed (in Athena only)
- Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem.
[CODEREVIEW] ori.cohen
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3601951 by Luke.Thatcher
[FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system
- Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0.
- Added garlic, onion and defrag stats to the platform memory stats struct.
- Added fixed pool sizes to platform memory stats.
- Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools.
#jira FORT-52910
Change 3600340 by robomerge
#ROBOMERGE-AUTHOR: wes.hunt
All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent.
Added some new context to crashreporter to help identify Athena matches near and long term.
* Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged
* Added bools to the params to indicate WHICH ones are changing
* Allows you to set only some values, and clear them out.
* Hooked up in FortGameState::PostInitializeComponents.
* FortGameState clears it (for returning to main menu).
* FortGameStateAthena sets it (for going into an Athena match).
* Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified.
* Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged.
* This works for ANY crash on ANY game.
* Hooked up in GameState::HandleMatchIsWaitingToStart.
#jira AT-1457
#jira AT-519
[CODEREVIEW] peter.knepley,josh.markiewicz
#ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3597593 by Ben.Zeigler
#jira FORT-50722
Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie
Partial copy of CL #3402335 and #3526538
#robomerge rp, rn
Change 3597577 by Luke.Thatcher
[FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU.
- Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack.
- With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is.
#jira FORT-50825
#jira FORT-49688
#jira FORT-49695
#jira FORT-50054
Change 3596556 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Enable GC clustering for actors and blueprints in Fortnite
- This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms)
- Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered!
- This gets us into the realm of shippability on console for very large UObject counts
[FYI] bob.tellez,peter.knepley,michael.noland
#jira AT-1440
#ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3593994 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Force largest distance field atlas size in Athena
- We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times.
- Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero)
- Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon!
[CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592096 by robomerge
#ROBOMERGE-AUTHOR: ben.salem
Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning.
#jira FORT-0
#ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592085 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
HLOD: Added support for a fixed distance override via CVar
- Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance
- New CVar: r.HLOD.DistanceOverride (defaults to 0)
- Fortnite uses 350m for this distance, fornow
[CODEREVIEW] jurre.debaare
#jira AT-1462
#ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3587391 by Michael.Noland
Fortnite: Lots of memory tracking stuff
- Added memory logging to game state transitions and overall health tracking for the entire session
- Added support for Gauntlet-based tests to Fortnite
- Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file)
- Added code to set gauntlet state based on the current subclass of AFortGameState
- Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon)
- Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon)
#jira FORT-50567
Change 3583307 by Peter.Knepley
Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space
Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix.
#jira AT-733
Change 3582378 by Luke.Thatcher
[FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles.
- All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups.
- Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p.
- Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main.
#jira FORT-50206
Change 3580934 by Luke.Thatcher
[FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo.
- Neo has 512 MB more direct memory than a base kit.
- Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB.
#jira FORT-50206
Change 3576664 by Bart.Hawthorne
Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT.
#jira FORT-49986
#tests Connected to PC server with editor -game build on Mac in Athena
Change 3575671 by Nick.Darnell
Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn.
#jira AT-644
Change 3575534 by Peter.Knepley
Ability montage replication optimizations
#jira AT-955
Change 3573305 by Lukasz.Furman
disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners
#jira FORT-49748
Change 3566775 by John.Abercrombie
Optimizations from Dev-Athena
- Tested with PIE & and 2 Player local server game
#ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager].
For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz).
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17.
#ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45.
#athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18.
#ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component.
Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43.
#ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement.
Added configurable settings to control this. Set times to zero to disable this.
- NetworkMinTimeBetweenClientAckGoodMove
- NetworkMinTimeBetweenClientAdjustments
- NetworkMinTimeBetweenClientAdjustmentsLargeCorrection
- NetworkLargeClientCorrectionDistance
#ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19.
#ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12.
#ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04.
#ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11.
#ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57.
#ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual().
Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39.
#jira Fort-1
Change 3562825 by Chris.Gagnon
Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways.
#jira FORT-0
Change 3562098 by Josh.Markiewicz
#UE4 Encryption token/ack changes
- moved encryption token request/ack to delegates
- moved FNetworkNotify to NetworkDelegates.h
- moved connection logic out of GameInstance and back into networking code
-- GameInstance sends an enum and the network code does the right thing based on that
#review-3559694 @ryan.gerleve
#tests PC dedicated server connections golden path and forced failures
#jira FORT-0
Change 3559354 by Luke.Thatcher
[FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/...
- Allowed rates are now 60Hz, 30Hz and 20Hz.
- Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1.
#jira FORT-49463
Change 3532644 by Jeff.Campeau
Fix mapping current culture to movie audio channels using data table to map languages to track indices.
Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost.
Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync).
Generic implementation for getting current languages in BP.
Fix more issues with calling into media source functionality when using the source reader (potential hangs).
#jira FORT-44376,FORT-48209,FORT-48040
#testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each.
Change 3527761 by Chris.Gagnon
Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur.
#jira FORT-47988, FORT-47984
Change 3525390 by Jeff.Campeau
Remove media player log spam
#jira FORT-47393
#testedon compiled client
Change 3518692 by Chris.Gagnon
Added CleanOperation Adding which will remove unneeded op combinations from the op queue.
Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective.
GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated.
Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view.
This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL.
#jira FORT-47395
Change 3514658 by Jeff.Campeau
Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed.
Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing.
Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup.
Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames.
#jira FORT-46801
#testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video
Change 3507896 by Ryan.Gerleve
Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption.
This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step.
#jira FORT-46878
#review-3507897 @josh.markiewicz
Change 3503928 by Ryan.Gerleve
Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing.
#jira FORT-46772
#review-3503929 bob.tellez
#robomerge ReleaseNext
[CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
// validate exported data
2014-08-22 06:53:27 -04:00
// shrink arrays before counting memory
// it will be reallocated when adding to octree and RemoveNode will have different value returned by GetAllocatedSize()
Merging from //UE4/Fortnite-Staging up to CL#3673800 based on CL#3664064 from //Fortnite/Main
#rb none
#lockdown Nick.Penwarden
=================================================================================================
THESE CHANGES TOUCH MULTIPLE PLATFORMS AND/OR RESTRICTED FOLDERS.
YOU MUST REVIEW THESE MANUALLY AND APPEND THEM TO THE DESCRIPTIONS FOR THE APPROPRIATE PLATFORMS.
=================================================================================================
Change 3662267 by Nick.Darnell
Engine - Fixing a bug in GetAccurateRealTime, it wasn't subtracting GStartTime, which if you don't prevents accurate platform time when you try to store it in a float.
#jira nojira
Change 3662176 by Ben.Marsh
Disable image integrity report generation if a debugger is attached, and in editor builds.
#jira FORT-55656
Change 3656958 by Luke.Thatcher
[FORTNITE] [CONSOLE] [+] Improved frame syncing mechanism
- Improves input latency by allowing the game thread to sync to the swap chain flip of the previous frame.
- Added "r.GTSyncType" CVar to control how the game thread syncs with the rest of the pipe.
- r.GTSyncType 2 will sync the game thread with the flip of the swap chain, preventing the pipe from getting too long and causing excess input latency.
Platforms are required to implement RHIWaitForFlip and RHISignalFlipEvent, and call RHIInitializeFlipTracking on RHI startup.
A separate thread monitors the progress of frame flips and signals task graph events as they pass their corresponding frame index.
In r.GTSyncType 2 mode, the game thread is signaled by this flip tracking thread.
[~] Unified platform specific sync interval CVars (D3D12.SyncInterval, D3D11.SyncInterval, r.PS4FlipRate, RHI.SyncIntervalOgl) into one: rhi.SyncInterval
- 1 == 60Hz
- 2 == 30Hz
- 3 == 20Hz
[-] Removed large number in XboxOneTime. Adding this arbitrary number prevents us from comparing timestamps from FPlatformTime::Seconds() and various OS callbacks (e.g. flip timings).
#jira FORT-50803
Change 3655598 by Lukasz.Furman
added filtering for navmesh's low height spans to fix crash on layer partitioning
% of span reductions depends on presence of stair or roof building in navmesh tile, changed failsafes in layer code to ignore entire tile if heightfield is too complex to partition instead of reallocating memory
#jira FORT-35375
Change 3648972 by Keith.Judge
Add analytics to help diagnose default parameter collection buffer issue.
+++ REMOVE ONCE CORE ISSUE IS SOLVED +++
#jira FORT-54690
Change 3648756 by Bart.Hawthorne
Integrate 3645298 from //UE4/Dev-Networking
Deprecate GetNetworkObjectInfo in favor of separate FindNetworkObjectInfo and FindOrCreateNetworkObjectInfo methods.
#jira none
Change 3643090 by Josh.Markiewicz
#UE4 - proper handling of "pending connection lost"
- triggered only if a connection is lost and there no "owning actor" to deal with the connection loss
-- added Rejoin and CleanedUp states to connection to make sure that the pending connection lost delegate only fires at the appropriate time
- delegate returns the unique id of the player if known (still possible to be unknown if connection lost after NMT_Hello)
- changed debug output on timeout if the net connection was already in the process of being destroyed
-- occurs when game hitches during the pending destroy 2 second wait
-- ReceivedAcks should have been called to clean things up quietly in those 2 seconds but blocking the game thread will cause the cleanup to look like a timeout
- added userid to UNetConnection::Describe
- bad split screen player handling of unique id
-- splitscreen uniqueid was overwriting the primary player id
-- only store the id on the child connection
- added some clarifying comments
#review-3642816 @ryan.gerleve, @bob.tellez, @sam.zamani, @bart.hawthorne, @dave.ratti
#jira FORT-26776
Change 3639043 by Alex.Thurman
Fix CommonTreeView SetSelection to correctly update list navigation, and behave similarly to CommonListView's SetSelectedItem.
#JIRA FORT-45841
Change 3632275 by Seth.Weedin
#JIRA FORT-54203 - Add clamps to ActiveSound fade interpolation to prevent unwanted volume spikes. Remove 0.01 start time for single-fire audio cues. Should remove the sudden pops sometimes heard when firing weapons, as well as smooth out fade volume in general.
Change 3626944 by Josh.Markiewicz
#UE4 - added "updates connection status" flag to ServiceConfigMCP
- disable updates on Cloud and Friend services (Fortnite only)
- removed overloaded ProcessConnectionStatus function in cloud service
#jira FORT-53113
Change 3626226 by Stewart.Lynch
LLM Update - Memory reductions, Summary page, enum scopes, refactor and cleanup of tags
* Remove all static arrays and hard limits from LLM. Everything is now dynamically allocated using the internal LLM allocators. The overhead when LLM is disabled is now only 48K (was 40MB)
* re-wrote LLMMap. Now stores an int32 index rather then pointer in the HashMap array. Also, changed the Values to be arrays for structs instead of structs of arrays. Means that the tag can be stored in a single byte. Changed the size of the allocation size from int64 to int32. All this takes the memory down from around 600MB to 100MB. It was 120 bytes per allocation, now 29 bytes.
* changed all LLM scopes over to enums. This has a number of benefits; LLM can be enable in Test, less CPU overhead, stored in a byte (LLM overhead /= 8)
* summary page for content creators where all lower-level stats are grouped under one Engine stat
* renamed ELLMScopeTag enum to ELLMTag
* renamed LLM_SCOPED_TAG_WITH_ENUM macro to LLM_SCOPE
* removed Tracker arg from LLM_SCOPE and added LLM_PLATFORM_SCOPE macro
* fixed GenericPlatformMallocCrash stat. Although it seems not be be used anymore
* fixed BackupOOMMemoryPool stat (now shows in both default and platform pages)
* added separate LLM enums for XB1, PS4 and D3D12 (PS4LLM.cpp/h etc.)
* lots of changes adding/removing/renaming tags
* added LLMArray and FLLMObjectAllocator classes
* disabled asset tag tracking by default because it takes up so much memory even when not used
* enable LLM in all non-shipping builds. In Test the on screendisplay won't show because it uses the stats system but it till still write out the csv.
* all the stat macros have been left as they were and can be enabled on the LLM_STAT_TAGS_ENABLED define. These are needed for the asset tagging.
* disabled LLM_TRACK_PEAK_MEMORY because there is a problem with the way it adds the peaks for multiple threads. This needs to be fixed.
* added a CVar to control the csv write interval: LLM.LLMWriteInterval
* added static arrays for the enum tags setup. Easier to manage and removes need for slow switch statements.
* renamed FLLMThreadStateManager to FLLMTracker to make it consistent with the enum
* fixed program size stat which was broken recently on PS4. This was due to initialisation order and global platform stats setup
#jira NONE-01
Change 3622978 by Lukasz.Furman
changed WeaponStatus BT decorator to be event driven, fixes AI trying to check ranged weapon abilities without valid weapon
includes copy of CL# 3620700
#jira FORT-45914
#review-3622979 John.Abercrombie
Change 3622340 by Josh.Markiewicz
#UE4 - playerid netconnection variable setup properly on clients and servers for both beacons and game net drivers
- ipconnection prints uniqueid with lowleveldescribe
#jira fort-0
Change 3621386 by Tim.Tillotson
Add the ability to retry HTTP operations by VERB. This allows us to automatically retry cloud save PUT operations.
#JIRA FORT-53717
#review-3621317 @Josh.Markiewicz @Ian.Fox @Carlos.Cuello
Change 3620517 by Keith.Judge
Xbox One - Revert iOS behaviour for the depth bias back to how it was, and make separate XB1 change use its own define to avoid confusion.
#jira FORT-53928
Change 3620248 by Lukasz.Furman
changed behavior of UBTTask_MoveTo.bStopOnOverlap flag after recent AcceptanceRadius fix, updated comments to be more detailed
#jira nojira
Change 3616187 by Bob.Tellez
#UE4 Throwing an error (for now) if you attempt to use both the malloc profiler and leak detection at the same time since it causes a deadlock.
#JIRA UE-0
Change 3613935 by Peter.Knepley
More logging on update launcher launching
#jira nojira
#robomerge rp rn
Change 3613537 by Marcus.Wassmer
Safety asserts around the MarkPendingKill feature for rendering classes.
#jira FORT-50385
Change 3613399 by Arne.Schober
Extended ShowMaterialDrawEvents to enable it only in very specific passes and default enabled Depth for Fortnite on PS4 to track down a crash.
#RB Marcus.Wassmer
#jira FORT-53610
Change 3610794 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce UMG class memory
#jira UE-52043
#ROBOMERGE-SOURCE: CL 3610792 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3610144 by Stewart.Lynch
General LLM improvements
* added tracking for misc task graph tasks (moves 20MB out of Untagged)
* renamed EngineTick to EngineMisc
* added tracking for FName
* added tracking for GC_ProcessObjectArray potential leak
* renamed index & vertex buffers stat to Meshes
* added hooks for MemPro to track allocations from a single category. Currently defined out. I haven't added MemPro.cpp/h.
* removed AVAILABLE_PHYSICAL stat from LLM csv
* csv files now include the date in the filename
* fixed potential threading bug when reading stat values to csv
* made IsDebugMemoryEnabled() always return false in shipping and if not runnong on a dev-kit (PS4). The reason is that the function is a bit hacky, and should only be used for debug purposes, such as displaying the on screen warning.
* added lots more scopes
* started changing Stat scopes to enum scopes. Stat scopes will be phased out.
* added tracking of FName memory
* added llmplatform tracking for XBoxSymbols
* added llm tracking for CPU symbol allocations (20MB)
* wrote an allocator for XBoxOneStack reading so that it doesn't go through Malloc and get tracked by LLM.
* added tracking for GC
* fixed tracking for TransientMemoryAllocator
* added tracking for networking memory
* added more audio memory tracking
* added tracking for blueprints
* added tracking for static meshes
* show on screen warning if debug memory is enabled
* added tracking for particles
* renamed Phys to PhysX and added more scopes
* renamed Slate to UI and added more scopes
* much better coverage of networking memory
* improved coverage of audio
#jira FORT-53420
Change 3610136 by robomerge
#ROBOMERGE-AUTHOR: marc.audy
Reduce size of UStaticMeshComponent by 224 bytes (cumulative, 64 bytes exclusive)
Reduce size of UPrimitiveComponent by 176 bytes (cumulative, 64 bytes exclusive).
Reduce size of USceneComponent by 112 bytes.
Reduce size of FLightingChannels from 3 bytes to 1.
Reduce size of FBodyInstance by 16 bytes.
#jira FORT-52043
#ROBOMERGE-SOURCE: CL 3610134 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607937 by robomerge
#ROBOMERGE-AUTHOR: paul.moore
#jira FORT-53105
- Fix websocket not providing information when the peer closes the connection.
#ROBOMERGE-SOURCE: CL 3607933 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3607042 by Bart.Hawthorne
Move replay.Loop functionality into the demo net driver and rename it demo.Loop
#jira none
Change 3605448 by robomerge
#ROBOMERGE-AUTHOR: seth.weedin
#Athena - Pass owner to ActiveSounds created using PlaySoundAtLocation/PlaySound2D to allow "Limit to Owner" concurrency rules to work. Hook up for weapon sounds. #JIRA FORT-53180
#ROBOMERGE-SOURCE: CL 3605443 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3604787 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Initial support for hotfixing live assets from .ini files
- This allows clients and server to patch certain assets in memory whenever .ini file hotfixes are downloaded
- Only CurveTables and DataTables are supported for now
- The new asset content must be in Json format, the same format the editor uses for importing
- Assets that are hotfixed will be synchronously loaded if they're not already in memory. They'll be retained in memory afterwards.
- IMPORTANT: Json data must be supplied on a single line, and all double quotes must be escaped!
- The changes must go in the Game.ini file and use the following syntax:
[AssetHotfix]
+CurveTable=("/Game/Folder/MyCurveTable","[{\"Name\":\"Default\"}]")
+DataTable=("/Game/Folder2/MyDataTable","[{\"Name\":\"Foo\"}]")
#jira FORT-52099
[CODEREVIEW] frank.gigliotti
[FYI] peter.knepley,bob.tellez
#ROBOMERGE-SOURCE: CL 3604784 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3602067 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Loading time improvements
- This shaves off up to 10 seconds of load time on PS4 in Athena
Details:
- Fixed multiple sub-levels not being able to be enqueued for loading in a single client frame. Athena has ~300 sub-levels, so this ended up wasting up many seconds.
- Fixed 3D world being rendered while loading (frees up game thread cycles for throttled streaming)
- UWorld::AllowLevelLoadRequests() was not allowing load requests to go through while an async load was in progress and the match had started. It now allows this as long as the world isn't being rendered (loading screen.)
- Eliminated extra 2 second delay before loading screen is dismissed (in Athena only)
- Note: A side effect of this change is that the progress bar may not update as smoothly on loading screen. We'll look at tuning the throttle settings if it ends up being a problem.
[CODEREVIEW] ori.cohen
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3602061 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3601951 by Luke.Thatcher
[FORTNITE] [PS4] [!] Fix memory stats in the old PS4 memory system
- Physical memory stat now includes garlic and onion allocations. CPU OOMs will result in "AvailablePhysical" being close to 0.
- Added garlic, onion and defrag stats to the platform memory stats struct.
- Added fixed pool sizes to platform memory stats.
- Modified the Fortnite heartbeat logging to include extra details of PS4 fixed sized pools.
#jira FORT-52910
Change 3600340 by robomerge
#ROBOMERGE-AUTHOR: wes.hunt
All Fort analytics events now contain a GameState attribute indicating the active GameState ClassName when the event is sent.
Added some new context to crashreporter to help identify Athena matches near and long term.
* Near Term: GameNameSuffix - set via FCoreDelegates::CrashOverrideParamsChanged
* Added bools to the params to indicate WHICH ones are changing
* Allows you to set only some values, and clear them out.
* Hooked up in FortGameState::PostInitializeComponents.
* FortGameState clears it (for returning to main menu).
* FortGameStateAthena sets it (for going into an Athena match).
* Only does this when it's a true GameMode GameState instance (ie, not PIE) so PIE crashes aren't modified.
* Long Term: GameStateName - set via FCoreDelegates::GameStateClassChanged.
* This works for ANY crash on ANY game.
* Hooked up in GameState::HandleMatchIsWaitingToStart.
#jira AT-1457
#jira AT-519
[CODEREVIEW] peter.knepley,josh.markiewicz
#ROBOMERGE-SOURCE: CL 3600278 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3597593 by Ben.Zeigler
#jira FORT-50722
Fix issues where AssetBundles weren't being correctly updated during cook, which is blocking both Noland and Abercrombie
Partial copy of CL #3402335 and #3526538
#robomerge rp, rn
Change 3597577 by Luke.Thatcher
[FORTNITE] [PS4] [~] Modified the way memory is allocated on Playstation to make more memory available to the CPU.
- Previously the amount of texture memory wasn╞t fixed due to the way the defrag memory is allocated on PS4. This meant we had to have a significant amount of slack.
- With the new configuration, we have a guaranteed texture memory pool, so the slack can be significantly smaller, meaning we can give more memory to the CPU, which is where most of our memory pressure is.
#jira FORT-50825
#jira FORT-49688
#jira FORT-49695
#jira FORT-50054
Change 3596556 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Enable GC clustering for actors and blueprints in Fortnite
- This shaves off about 10 ms on GC frames in Athena on PS4 (~52 ms -> 42 ms)
- Clustering doesn't work on building actors because they're very dynamic, but general Fort static meshes and blueprints are clustered!
- This gets us into the realm of shippability on console for very large UObject counts
[FYI] bob.tellez,peter.knepley,michael.noland
#jira AT-1440
#ROBOMERGE-SOURCE: CL 3596552 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3593994 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
Force largest distance field atlas size in Athena
- We now force the largest distance field atlas size before preloading Athena content (512x512x1024 = 256 MB). This helps with load times because it's expensive to re-create this texture on consoles, and typically it gets resized over a dozen times.
- Added new CVar "r.DistanceFields.ForceMaxAtlasSize" (defaults to zero)
- Important: Currently we never "reset" this atlas texture. This will be a problem when going back to play Campaigns after preloading to play Athena. I will look into this soon!
[CODEREVIEW] peter.knepley,marcus.wassmer,michael.noland,daniel.wright
#jira AT-1477
#ROBOMERGE-SOURCE: CL 3593992 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592096 by robomerge
#ROBOMERGE-AUTHOR: ben.salem
Prototype of gauntlet memory soak test. Not fully fiinished, but want changes in tonight's cook so we can experiment on cooked build tomorrow morning.
#jira FORT-0
#ROBOMERGE-SOURCE: CL 3592025 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3592085 by robomerge
#ROBOMERGE-AUTHOR: mike.fricker
HLOD: Added support for a fixed distance override via CVar
- Use this to force all HLODs to transition at a specific distance, regardless of their TransitionSize/MinDrawDistance/LODDrawDistance
- New CVar: r.HLOD.DistanceOverride (defaults to 0)
- Fortnite uses 350m for this distance, fornow
[CODEREVIEW] jurre.debaare
#jira AT-1462
#ROBOMERGE-SOURCE: CL 3591929 in //Fortnite/Release-Prep/...
#ROBOMERGE-BOT: FORTNITE (Release-Prep -> Main)
Change 3587391 by Michael.Noland
Fortnite: Lots of memory tracking stuff
- Added memory logging to game state transitions and overall health tracking for the entire session
- Added support for Gauntlet-based tests to Fortnite
- Enabled the Gauntlet plugin (and fixed spaces instead of tabs in the .uproject file)
- Added code to set gauntlet state based on the current subclass of AFortGameState
- Added a base controller and a memory report controller (WIP, ported from equivalents in Paragon)
- Updated FortniteClient to use MALLOC_LEAKDETECTION=1, PLATFORM_USES_FIXED_GMalloc_CLASS=0, and AllowASLRInShipping=false in Development builds (may enable them in Test builds in a future CL, to match Paragon)
#jira FORT-50567
Change 3583307 by Peter.Knepley
Need non-jittered ViewToClip matrix in order to do "after tonemapper" postprocess blendable material that's positioned in view space
Modify the AttachScope material function to use "ViewSpaceTransformToClipSpace" instead of going back to world space first. This also means it can utilitize the ViewToClipNoAA matrix.
#jira AT-733
Change 3582378 by Luke.Thatcher
[FORTNITE] [~] Unify Xbox and PS4 scalability settings and device profiles.
- All Xbox and PS4 r. CVars are overriden in their platform's Scalability.ini file. The device profile only selects sg. groups.
- Fixed the Neo 4K profile for Fortnite. Previously players with 4K monitors would choose the Neo_4K profile, which looks worse than Neo, but still renders at 1080p.
- Console specific settings have to live in the Base/Default .ini's, as the cooker doesn't load the console specific files. This is fixed in UE4 Main.
#jira FORT-50206
Change 3580934 by Luke.Thatcher
[FORTNITE] [PS4] [+] Support different garlic and onion heap sizes in the old memory system for base and neo.
- Neo has 512 MB more direct memory than a base kit.
- Increased the garlic heap size by 416 MB on Neo, and CPU heap by 96 MB.
#jira FORT-50206
Change 3576664 by Bart.Hawthorne
Re-enable Oodle and add Mac implementation. Also includes fixed oodle libraries by MichaelT.
#jira FORT-49986
#tests Connected to PC server with editor -game build on Mac in Athena
Change 3575671 by Nick.Darnell
Athena - The gameplay ability system now supports adding Gameplay Cue's with params. Now using cues instead of gameplay effects in order to notify when the bandaging/shielding begin and end. THe new method should properly show and disappear on time, b/c it's all client side. Added a way in the Athena Context to easily hook gameplay "UI" cues that are rebroadcast from the Athena Pawn.
#jira AT-644
Change 3575534 by Peter.Knepley
Ability montage replication optimizations
#jira AT-955
Change 3573305 by Lukasz.Furman
disabled path section update when crowd simulated AI is moving through navlink, fixed AI getting stuck in some corners
#jira FORT-49748
Change 3566775 by John.Abercrombie
Optimizations from Dev-Athena
- Tested with PIE & and 2 Player local server game
#ue4-athena - (merge CLs 3345771 and 3363030 from Framework) - Refactored CharacterMovementComponent determination of net send rate when combining moves into a virtual function GetClientNetSendDeltaTime(). Added configurable values to GameNetworkManager under [/Script/Engine.GameNetworkManager].
For Fortnite, set unthrottled (<= 10 player) limit to 60Hz (from 90Hz), and trying throttled at 30Hz (from 45Hz).
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545535 by Zak.Middleton on 2017/07/19 20:15:17.
#ue4-athena - (merge CL 3377054 from Framework) - Fix CharacterMovementComponent updated with very high delta time on server when initially joining. Make sure the ServerTimeStamp is initialized to current world time rather than zero to prevent large delta.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545452 by Zak.Middleton on 2017/07/19 18:57:45.
#athena - If network smoothing mode is not linear, don't replicate ReplicatedServerLastTransformUpdateTimeStamp. Only AI use linear smoothing in FN.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3545559 by Zak.Middleton on 2017/07/19 20:47:18.
#ue4-athena - Converted all RPCs on UCharacterMovementComponent to be on ACharacter instead, to avoid the bandwidth overhead of calling RPCs on a component.
Existing overrides of _Implementation and _Validate functions should remain unchanged. If for some reason someone overrode the old RPC virtuals, those are now non-virtual on UCharacterMovementComponent but are still virtual on ACharacter.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3557564 by Zak.Middleton on 2017/07/26 20:13:43.
#ue4-athena - Throttle character movement server corrections and acks to the client based on time since last adjustment. Cuts down on network traffic for character movement.
Added configurable settings to control this. Set times to zero to disable this.
- NetworkMinTimeBetweenClientAckGoodMove
- NetworkMinTimeBetweenClientAdjustments
- NetworkMinTimeBetweenClientAdjustmentsLargeCorrection
- NetworkLargeClientCorrectionDistance
#ue4-athena - Perf: (EditMerge CL 3492200 from Dev-Framework): Always reset the input array in AActor::GetComponents(), but do so without affecting allocated size.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561669 by Zak.Middleton on 2017/07/28 14:16:19.
#ue4-athena - Perf: (EditMerge CL 3468253 from Dev-AnimPhys): Remove the need for calling constructors for physx PxRaycastHit in the dynamic hit result buffer. Saves 30% of the cost of doing small raycasts.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561672 by Zak.Middleton on 2017/07/28 14:17:12.
#ue4-athena - Perf: (EditMerge CL 3359553 from Dev-Framework): Optimization in CharacterMovement tick to not extract transform values twice.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561674 by Zak.Middleton on 2017/07/28 14:18:04.
#ue4-athena - Perf: (EditMerge CL 3426174 from Dev-Framework): Avoid call to virtual getSimulationFilterData() to only use it when needed in PreFilter if we actually have items in the IgnoreComponents list (which is rare). The sim filter data 'word2' stores the component ID.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561709 by Zak.Middleton on 2017/07/28 14:32:11.
#ue4-athena - Perf: (EditMerge CL 3382054 from Dev-Framework): Optimize CharacterMovementComponent::GetPredictionData_Client_Character() and GetPredictionData_Server_Character() to remove virtual calls.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3561856 by Zak.Middleton on 2017/07/28 15:11:57.
#ue4-athena - Use less bandwidth for CharacterMovement RPCs when the character is not standing on any component (ie during jumps and falling). Added separate "...NoBase()" versions of ServerMove() and ServerMoveDual().
Undid part of 3557564 and restored the CMC functions to be virtual, and removed virtual keyword from matching Character functions, so that overrides are in one consistent place. Also guarantees backwards compat for licensees.
#AUTOMERGE using branch //Fortnite/Main-To-//Fortnite/Dev-Athena (reversed) of change#3564858 by Zak.Middleton on 2017/07/31 15:24:39.
#jira Fort-1
Change 3562825 by Chris.Gagnon
Added CommonCustomNavigation Widget, this widget can be used to capture navigation requests to handle in custom ways.
#jira FORT-0
Change 3562098 by Josh.Markiewicz
#UE4 Encryption token/ack changes
- moved encryption token request/ack to delegates
- moved FNetworkNotify to NetworkDelegates.h
- moved connection logic out of GameInstance and back into networking code
-- GameInstance sends an enum and the network code does the right thing based on that
#review-3559694 @ryan.gerleve
#tests PC dedicated server connections golden path and forced failures
#jira FORT-0
Change 3559354 by Luke.Thatcher
[FORTNITE] [PS4] [^] Merging (as edit) support for setting flip rate on PS4 (CLs 3555687 and 3558843) from //Fortnite/Dev-Athena/... to //Fortnite/Main/...
- Allowed rates are now 60Hz, 30Hz and 20Hz.
- Exposed by r.PS4FlipRate CVar, set to 60Hz by default. Requires r.Vsync 1.
#jira FORT-49463
Change 3532644 by Jeff.Campeau
Fix mapping current culture to movie audio channels using data table to map languages to track indices.
Don't rewind cinematics (they all start from the begining because we load them and play them once). Seeks cause us to have to redecode video frames at a large perf cost.
Delay cutscene playback by 0.5 seconds to give us time to build up a buffer of decoded video. (Temporary workaround for audio/video sync).
Generic implementation for getting current languages in BP.
Fix more issues with calling into media source functionality when using the source reader (potential hangs).
#jira FORT-44376,FORT-48209,FORT-48040
#testedon Preflight from last night combined with Bob's changes from today clear all known issues. This change tested on Xbox and PC multiple times each.
Change 3527761 by Chris.Gagnon
Fixed various issues in the widget switcher, also added Advanced calls that allow the user to specify if activation/deactivation should occur.
#jira FORT-47988, FORT-47984
Change 3525390 by Jeff.Campeau
Remove media player log spam
#jira FORT-47393
#testedon compiled client
Change 3518692 by Chris.Gagnon
Added CleanOperation Adding which will remove unneeded op combinations from the op queue.
Also added the ability to suspend starting operation queue processing to allow complex operations to accumulate and in turn allow the Clean Op adding code to be effective.
GameFeedback, and the widget switcer utilize this to avoid unnesacary activations of a screen that is immediately being deactivated.
Root issue of the mentioned bug is that activation of the quest screen created a latent navigation du to the deferal of scrolling into view.
This is still an issue in general, there isn't much we can do about it. Other than avoid activating a panel that will deactivated that frame as we did with the code changes in this CL.
#jira FORT-47395
Change 3514658 by Jeff.Campeau
Fixed a media player threading issue where the OnMediaOpened event could be called before the media Init script completed.
Moved the event Cinematic used when setting up and playing media after media file load to use a delayed event from the MovieWidget so that it will always happen after the movie widget processing.
Fixed an issue that could cause samples to leak in MfMedia plugin and cause ReadSample to lockup.
Fixed an issue where a default texture is displayed for movies before the movie starts playing (the player may be active before the first frame of the video is decoded). Default is now all black as it is expected that this texture will be displayed for several frames.
#jira FORT-46801
#testedon Xbox through rocket launch cinematic including vintertip for stairs, skill tree nodes, and victory result video
Change 3507896 by Ryan.Gerleve
Changed the net.UseEncryptionToken to be more useful and renamed it to net.AllowEncryption.
This cvar, if 0, will prevent the PacketHandler from adding the configured encryption component, and prevent UPendingNetGame and AOnlineBeaconClient from filling out the EncryptionToken parameter of NMT_Hello - which prevents the extra encryption handshake connection step.
#jira FORT-46878
#review-3507897 @josh.markiewicz
Change 3503928 by Ryan.Gerleve
Add safety checks around some of the encryption functionality. Fixes a server crash seen during load testing.
#jira FORT-46772
#review-3503929 bob.tellez
#robomerge ReleaseNext
[CL 3673993 by Bob Tellez in Main branch]
2017-09-30 03:42:01 -04:00
Element . ValidateAndShrink ( ) ;
2014-08-22 06:53:27 -04:00
const int32 OrgElementMemory = OrgData . GetAllocatedSize ( ) ;
2015-03-04 08:31:40 -05:00
const int32 NewElementMemory = Element . GetAllocatedSize ( ) ;
2014-08-22 06:53:27 -04:00
const int32 MemoryDelta = NewElementMemory - OrgElementMemory ;
NodesMemory + = MemoryDelta ;
INC_MEMORY_STAT_BY ( STAT_Navigation_CollisionTreeMemory , MemoryDelta ) ;
RemoveElement ( Id ) ;
2015-03-04 08:31:40 -05:00
AddElement ( Element ) ;
2014-08-22 06:53:27 -04:00
}
2020-04-21 23:23:12 -04:00
void FNavigationOctree : : UpdateNode ( const FOctreeElementId2 & Id , const FBox & NewBounds )
2014-12-04 12:41:25 -05:00
{
FNavigationOctreeElement ElementCopy = GetElementById ( Id ) ;
RemoveElement ( Id ) ;
ElementCopy . Bounds = NewBounds ;
AddElement ( ElementCopy ) ;
}
2020-04-21 23:23:12 -04:00
void FNavigationOctree : : RemoveNode ( const FOctreeElementId2 & Id )
2014-03-14 14:13:41 -04:00
{
2018-06-05 09:49:14 -04:00
const FNavigationOctreeElement & Element = GetElementById ( Id ) ;
2015-03-04 08:31:40 -05:00
const int32 ElementMemory = Element . GetAllocatedSize ( ) ;
2014-03-14 14:13:41 -04:00
NodesMemory - = ElementMemory ;
DEC_MEMORY_STAT_BY ( STAT_Navigation_CollisionTreeMemory , ElementMemory ) ;
2014-08-08 10:28:07 -04:00
RemoveElement ( Id ) ;
2014-03-14 14:13:41 -04:00
}
2020-04-21 23:23:12 -04:00
const FNavigationRelevantData * FNavigationOctree : : GetDataForID ( const FOctreeElementId2 & Id ) const
2014-12-15 15:29:48 -05:00
{
if ( Id . IsValidId ( ) = = false )
{
return nullptr ;
}
const FNavigationOctreeElement & OctreeElement = GetElementById ( Id ) ;
2015-03-04 08:31:40 -05:00
return & * OctreeElement . Data ;
2014-12-15 15:29:48 -05:00
}
2020-04-21 23:23:12 -04:00
void FNavigationOctree : : SetElementIdImpl ( const uint32 OwnerUniqueId , FOctreeElementId2 Id )
2019-07-10 13:31:21 -04:00
{
2019-08-28 20:52:49 -04:00
ObjectToOctreeId . Add ( OwnerUniqueId , Id ) ;
2019-07-10 13:31:21 -04:00
}
2014-12-15 15:29:48 -05:00
//----------------------------------------------------------------------//
// FNavigationOctreeSemantics
//----------------------------------------------------------------------//
2014-08-12 08:04:52 -04:00
# if NAVSYS_DEBUG
FORCENOINLINE
# endif // NAVSYS_DEBUG
2020-04-21 23:23:12 -04:00
void FNavigationOctreeSemantics : : SetElementId ( FNavigationOctreeSemantics : : FOctree & OctreeOwner , const FNavigationOctreeElement & Element , FOctreeElementId2 Id )
2014-08-12 08:04:52 -04:00
{
2019-08-28 20:52:49 -04:00
( ( FNavigationOctree & ) OctreeOwner ) . SetElementIdImpl ( Element . OwnerUniqueId , Id ) ;
Copying //UE4/Dev-Build to //UE4/Dev-Main (Source: //UE4/Dev-Build @ 3209340)
#lockdown Nick.Penwarden
#rb none
==========================
MAJOR FEATURES + CHANGES
==========================
Change 3209340 on 2016/11/23 by Ben.Marsh
Convert UE4 codebase to an "include what you use" model - where every header just includes the dependencies it needs, rather than every source file including large monolithic headers like Engine.h and UnrealEd.h.
Measured full rebuild times around 2x faster using XGE on Windows, and improvements of 25% or more for incremental builds and full rebuilds on most other platforms.
* Every header now includes everything it needs to compile.
* There's a CoreMinimal.h header that gets you a set of ubiquitous types from Core (eg. FString, FName, TArray, FVector, etc...). Most headers now include this first.
* There's a CoreTypes.h header that sets up primitive UE4 types and build macros (int32, PLATFORM_WIN64, etc...). All headers in Core include this first, as does CoreMinimal.h.
* Every .cpp file includes its matching .h file first.
* This helps validate that each header is including everything it needs to compile.
* No engine code includes a monolithic header such as Engine.h or UnrealEd.h any more.
* You will get a warning if you try to include one of these from the engine. They still exist for compatibility with game projects and do not produce warnings when included there.
* There have only been minor changes to our internal games down to accommodate these changes. The intent is for this to be as seamless as possible.
* No engine code explicitly includes a precompiled header any more.
* We still use PCHs, but they're force-included on the compiler command line by UnrealBuildTool instead. This lets us tune what they contain without breaking any existing include dependencies.
* PCHs are generated by a tool to get a statistical amount of coverage for the source files using it, and I've seeded the new shared PCHs to contain any header included by > 15% of source files.
Tool used to generate this transform is at Engine\Source\Programs\IncludeTool.
[CL 3209342 by Ben Marsh in Main branch]
2016-11-23 15:48:37 -05:00
}