11. INTRODUCTION
• YAGER - UE4 6 Years UE3 7 Years
• Reliability over performance
• Network relevancy
• UE4 is made for all games
• You have to optimize for your game
• Optimization gems from YAGER
12. • Gems:
• Perfomance tracker
• Multiple animated components into one
• Network Pooling
INTRODUCTION
14. PERFORMANCE TRACKER
• Framerate should run at a constant speed
• Not everything is equal
• Profile and optimize these systems
• Staff / Money resource intensive
• Reactive to frame rate changes
• State definitions
• Define tuning for these different states
VERY BAD
BAD
OK
GOOD
VERY GOOD
15. PERFORMANCE TRACKER
• Calculate state:
• Avg frame rate(90 frames)
• Hitches
• Future prediction 90 + N
VERY BAD
BAD
OK
GOOD
VERY GOOD
16. PERFORMANCE TRACKER
• Calculate state:
• Avg frame rate(90 frames)
• Hitches
• Future prediction 90 + N
• Inform subsystems and make them react
• Particles
17. PERFORMANCE TRACKER
• Calculate avg frame rate
• Define state of game
• Hitches
• Future prediction 90 + N
• Inform subsystems and make them react
• Projectiles & Particles
18. PERFORMANCE TRACKER
• Calculate avg frame rate
• Define state of game
• Hitches
• Future prediction 90 + N
• Inform subsystems and make them react
• Particles
• Significance
Low
Medium
High
Critical
19. PERFORMANCE TRACKER
• Calculate avg frame rate
• Define state of game
• Hitches
• Future prediction 90 + N
• Inform subsystems and make them react
• Particles
• Significance
• Game specific optimizations
• Lerp tuning variables
21. PERFORMANCE TRACKER - SUMMARY
• Framerate should run at a constant speed
• Not everything is equal
• Performance tracker that tracks 90+N frames
• Subsystems react to this data and changes their behavior
31. MULTIPLE ANIMATED OBJECTS INTO ONE
• Problem:
• Component count
• Complexity
• Skeletal mesh merge
• N Skeletal meshes TO 1
• All unique bones merged
• Generates rendering data
• Outputs one skeletal mesh
32. MULTIPLE ANIMATED OBJECTS INTO ONE
• Does not work for our case:
• Unique animated meshes
• Runtime decided
33. MULTIPLE ANIMATED OBJECTS INTO ONE
• Modify Skeletal mesh merge
• Duplicate all bones
• Link together to root node
• Create the rendering data
• Output one skeletal mesh
35. MULTIPLE ANIMATED OBJECTS INTO ONE
• Modify Skeletal mesh merge
• Duplicate all bones
• Link together to root node
• Create the rendering data
• Output one skeletal mesh
53. NETWORK POOLING
• Similar objects created multiple times
• Can be very expensive (2-4ms) per Object
• Network creation
2-4 MS
54. NETWORK POOLING
• Similar objects created multiple times
• Can be very expensive (2-4ms) per Object
• Network creation
• Solution: Pooling
• Component & Actor Pool Manager
• Internal ID referencing
• Add to GC ignore list(Root set)
• SpawnActor/ NewObject
55. NETWORK POOLING
• Initialize / Deregistration
• Base actor -> Owned Components
• Destroy
• Pooling states
InPool
Active
ReturnToPoolObjectProperty
GC
56. NETWORK POOLING
• Initialize / Deregistration
• Base actor -> Owned Components
• Destroy
• Pooling states
• Network pooling
• bAlwaysRelevant – Remove from network relevancy loop when in pool
• Pooling state management
• Replication order
• Pre Pool vs Lazy pool
• Memory & Loading times
57. POOLING - SUMMARY
• Expensive objects that get created over and over
• Pooling to reuse it
• Techniques what we do to implement it.
• Internal ID referencing
• RootSet
• Initialize/Deinitialize
• Reference Nulling
• Network management
• Pool the objects you need
58. SUMMARY
• Perfomance tracker
• Multiple animated objects into one component
• Network pooling
• Use UDN & Answerhub
• Optimization gems from YAGER