Performance Faker
Performance Faker allows you to experiment with how performance issues impact player experience and the broader game feel.
Presented in a game like scenario; you can manipulate the performance cost of parts of the game. Costs of objects, creation, destruction, simulated GC, and more.
Status
Performance Faker will grow in phases. Currently at Phase 1.
It can mimic some very basic game like behaviour. It does so in the most simple and straightforward way possible. Primarily this means interactions and motion and very sensitive to framerate, dt, and physics fixed time step.
nextPos = curPos + velocity * dt;
While there are fancier ways to (partially) compensate for the perceived insistent motion, like RK4 and analytical drag/springs. These fancier methods can improve the smooth and even flow of motion, but cannot correct for the loss of even responsiveness to player input.
The effect of inconsistent frame timings will be more noticeable at lower refresh rates, and if gsync/vrr are not present.
Menus
Graphy (https://github.com/Tayx94/graphy) is hanging out the top right corner at all times.
General - app wide settings for framerate and time sources.
Variance - configure various performance costs of frame and game events, including emulated Garbage Collection impacts.
Input - select which input fetch source and emulate input delay.
Some things to try
Get feel for what it’s like when perf is really close to the line.
- Pick a target framerate.
- Adjust up the per frame static load, until the target framerate is not met.
- Then back it off slightly.
- Now adding even small impacts for game events (like per enemy spawn) will cause inconsistent frame times.
- This can give a good feel for what uneven response feels like. What players might call janky or bad controls.
- This can also give a good tactile backing to worst frame optimisation.
GC impacts
- Enable the fake gc, and some static load.
- Tweak the gc per frame load and reclaim frames.
- You can see the toggle in the bottom corner when the fake gc is reclaiming.
- Adjust up the per frame load up if you aren’t seeing a frame rate change when it is indicated as reclaiming in the bottom left.
- This gives a good feel for the uneven seesaw type effect a game with a little head room and a complicated gc reclaim can have.
Cpu limit interacting with refresh
- With target framerate set and with vsync on
- Use the static load to pull performance down below your target rate
- This can give good feel for what vsync and engine being over extended can feel like
Inconsistent loads
- The per frame variance range is a constantly changing performance drag, dragging it up close or above your target framerate
- With Instantaneous variance at zero it is ignored. Non-zero limits how much the variance is allowed to change frame to frame.
- It's still random but now it's more like perlin noise, with the perf impact being more wave like.
- This gives a good feel for the impact variance between that different areas or systems in a game have on the play experience.
If you're struggling with performance issues in your game, please reach out https://frametimematters.com/contact
| Status | In development |
| Category | Other |
| Platforms | HTML5 |
| Author | Steve Halliwell |
| Made with | Unity |