Summary
Game stutters are one of the most important performance issues for game developers because they can interrupt gameplay and directly affect the player experience.
GameOptim GOT Online introduces a new Stutter Frame Summary feature that performs deeper attribution across all stutter points in a performance report. It helps developers identify the functions that contribute most frequently to stutters and have the greatest optimization potential.
Introduction
Finding the cause of a stutter is not always straightforward. A performance report may contain many stutter frames, and developers need to understand not only how much CPU time each function consumes, but also how frequently it contributes to problematic frames.
The latest stutter analysis workflow in GOT Online combines stutter frame distribution, CPU time data, function call stacks, and function-level statistics to make this analysis more systematic.
How Can Developers Get an Overview of All Stutter Frames?
The latest stutter analysis page provides information for all stutter frames in the report.
By combining the total CPU time curve in the Stutter Frame Summary with the stutter frame markers, developers can quickly understand the CPU time and distribution of stutter points across the game.
Note: The CPU time curve takes the maximum CPU time from every 10 frames, while stutter frame markers represent the actual CPU time of each individual frame. As a result, the points and lines in the chart may not always align exactly.
This overview provides a starting point for identifying where stutters occur and how CPU time is distributed across those frames.
How Can Developers Analyze Animation and Physics Stutters?
The latest update also adds statistics for animation stutters and physics stutters.
Developers can analyze these two types of stutters in the Key Function Analysis page. The stutter frame data can also be filtered by type, making it easier to locate and investigate specific categories of stutters.
How Can a Call Stack Flame Chart Reveal Stutter Hotspots?
The stutter function call stack flame chart provides a visual representation of function execution across stutter frames.
Developers can use it to examine:
- The proportion of time spent by functions across all stutter frames
- Function nodes at different call-stack depths
- Calling relationships between functions
- Hot functions that make a larger contribution to stutter frames
These observations can then be combined with the stutter function list below the chart for more detailed investigation.
How Can You Trace the Same Function Across Different Stutter Frames?
Clicking a function node highlights all function nodes with the same name in the flame chart.
This makes it easier to understand how the same function contributes across the aggregated stutter frames, including its overall proportion and its impact when called by different parent functions.
This is particularly useful when the same function appears in multiple call paths.
How Can You Inspect a Function's Call Relationships?
Double-clicking a function node zooms into its details in the flame chart.
The chart then displays the function's calling and called-by relationships in greater detail. At the same time, the corresponding function stack is automatically expanded in the function stack list.
This allows developers to determine which nodes may have higher optimization value based on their position and contribution within the call stack.
Which Function Metrics Should Developers Prioritize?
The stutter function list provides common metrics such as:
- Total time
- Total time percentage
- Self time
- Self time percentage
However, two additional metrics are particularly important when prioritizing stutter optimization:
Distributed Stutter Points indicates the number of stutter frames in which a function was called.
Key Stutter Points indicates the number of stutter frames where the function's total call time exceeded 41.67 ms.
A function with a high number of key stutter points has a significant impact across multiple stutter frames. This can make it a higher-priority optimization target than a function that consumes considerable CPU time but only affects a small number of stutter frames.
How Can Developers Simulate the Impact of Optimizing a Function?
GOT Online also allows developers to deselect a function node and recalculate the Stutter Frame Summary.
This effectively simulates the stutter frame situation after removing the selected function's CPU time.
If subtracting the function's execution time reduces a stutter frame's CPU time to below 83.33 ms, that frame is marked as a green improved stutter frame.
This provides a direct way to estimate how much a specific function contributes to individual stutter frames without requiring developers to immediately modify and retest the code.
How Can This Simulation Help Prioritize Optimization?
Function-node deselection allows developers to visually evaluate the impact of individual functions on stutter frames and simulate the potential result of optimization.
This helps answer an important practical question:
Which function is worth optimizing first?
Instead of prioritizing functions based only on total CPU time, developers can evaluate how many problematic frames a function affects and how much those frames could improve if its execution cost were reduced.
This provides a more targeted basis for optimization prioritization.
How Can Developers Investigate Important Functions Further?
For functions that require additional investigation, developers can open Function Details from the operation column.
The details view provides information about the function's CPU time and call count. Developers can also add the function to a function group for further analysis.
This makes it possible to move from identifying a stutter hotspot to examining the specific function behavior in greater detail.
What Should Unity Developers Take Away?
- Analyze all stutter frames rather than focusing on a single frame.
- Use stutter frame distribution together with CPU time to identify recurring problems.
- Pay attention to Key Stutter Points, not just total CPU time.
- Use the call stack flame chart to understand where functions contribute across different call paths.
- Use function-node deselection to simulate potential improvements and prioritize optimization targets.
FAQ
Q1. What is the Stutter Frame Summary in GOT Online?
The Stutter Frame Summary aggregates information across stutter frames in a performance report, helping developers understand stutter distribution and CPU time and identify functions that contribute significantly to stutters.
Q2. What does the Key Stutter Points metric indicate?
It indicates the number of stutter frames in which a function's total call time exceeds 41.67 ms. A high value means the function has a significant impact across multiple stutter frames.
Q3. What is the difference between Distributed Stutter Points and Key Stutter Points?
Distributed Stutter Points represents the number of stutter frames in which a function was called. Key Stutter Points represents the number of stutter frames where that function's total call time exceeded 41.67 ms.
Q4. What happens when a function node is deselected?
GOT Online recalculates the Stutter Frame Summary after subtracting the selected function's execution time. If a stutter frame falls below 83.33 ms after the subtraction, it is marked as a green improved stutter frame.
Q5. Can developers analyze animation and physics stutters separately?
Yes. The latest update provides separate animation stutter and physics stutter statistics, which can be analyzed and filtered in the Key Function Analysis page.
Top comments (0)