ROG Ally Performance Optimization
What It Does
This addon is designed to provide a smoother gaming experience on the ROG Ally by balancing performance and graphics quality. It dynamically adjusts in-game graphics settings based on real-time FPS, aiming to keep your game running at a stable 45 FPS. When FPS drops, it lowers the graphics settings to maintain smooth gameplay, and when FPS stabilizes, it gradually improves the visual quality for the best possible balance.
What It Changes
The addon makes two types of adjustments: - Static Settings: Right after the game launches, the addon applies a set of static optimizations to ensure a performance-first approach. This includes changes to general graphics, shadows, anti-aliasing, FSR, and more, reducing resource usage.
- Dynamic Adjustments: During gameplay, the addon dynamically tweaks 5 key settings based on the current FPS to balance graphics quality and performance:
- View Distance
- Sunlight Rays
- Distortion
- Show Additional Ally Effects
- FSR Mode
How It Works
1. Static Settings Initialization: When the addon loads, it immediately applies static optimizations and locks the four key settings to their lowest values to prioritize performance. For the first 10 seconds after launching the game, the graphics will stay at their lowest to prevent excessive resource usage. 2. Real-Time FPS Monitoring: The addon checks the current FPS every 300 milliseconds and makes adjustments accordingly: 3. Dynamic Adjustment Logic: When the FPS is low and not locked, the addon lowers settings one by one, starting with View Distance, followed by Sunlight Rays, Distortion, and Show Additional Ally Effects. If the FPS is high and stable, it gradually restores these settings. There's a cooldown period between adjustments to keep the experience smooth and prevent frequent changes. 4. Combat Mode Settings: During combat, View Distance is fixed to a level of 10, while Sunlight Rays, Distortion, and Show Additional Ally Effects continue to adjust dynamically based on FPS. 5. Gradual View Distance Restoration: After combat ends or low-FPS lock is released, the plugin restores view distance incrementally. Every 300 milliseconds, it checks the FPS. If the FPS is stable (above 44 FPS), it restores the next level of view distance. If FPS drops below the target, the process pauses or reverts to ensure smooth gameplay. Restoration happens gradually to maintain a balance between visual quality and performance. 6. FSR Mode Switch: RAPO monitors FPS and only lowers FSR (FidelityFX Super Resolution) mode when other optimizations like reducing view distance, god rays, or distortion cannot stabilize performance. If FPS stays below 44 for an extended period, the plugin gradually reduces FSR mode after several checks to confirm sustained performance drops. FSR mode does not increase automatically to avoid flickering, so users should manually raise it for better visuals. The plugin focuses on lowering FSR only when necessary to maintain smooth gameplay without frequent interruptions.
- Low FPS: If FPS stays below 44 for about 5.7 seconds, the addon locks the settings to the lowest to ensure smooth performance.
- High FPS: If FPS remains above 44 for 60 seconds, the addon unlocks and starts to gradually increase the quality of the settings.
Why This Approach?
- View Distance: Has the most significant impact on performance and affects visual quality in certain scenes, so it's prioritized for adjustment.
- Sunlight Rays and Distortion: Both have a moderate impact on performance, but Distortion is more commonly seen in-game, so Sunlight Rays gets adjusted first.
- Show Additional Ally Effects: While it impacts performance, seeing your allies' skill effects is a great visual part of the game, so it's adjusted last to preserve this experience.
Important Notes
- Restart Game Required: After enabling the addon first time, restart your game to ensure all settings are applied correctly.
- Gradual Restoration: If you notice the graphics locked at the lowest settings, give it some time. The addon will gradually restore quality as the FPS allows.
- Addon Compatibility: This addon minimizes conflicts with other addons, but using multiple performance-related addons may impact its effectiveness. It's best to use only one graphics optimization addon at a time.
- ROG Ally Settings: For best results, set the power to 2530 watts. This addon is also compatible with the ROG Ally X.
Code references
Votan's Advanced Settings Votan's Adaptive (Video-)Settings Thanks Votan!!!
Enjoy!
------------------------------------------
Why Lock to 45 FPS?
You might be wondering, why lock the frame rate at 45 FPS instead of 60 FPS? Let me break it down in simple terms. First, let's talk about why games tend to stutter or feel laggy when under heavy load. This usually happens because the hardware struggles to keep the frame times stable. For instance, at a 60 FPS limit, the frame time is 1/60 = 0.01667 seconds. If your hardware can consistently render and output each frame at this rate, the game will be smooth and stable, providing a great experience. However, if the hardware is pushed to its limits, the frame time can fluctuatefor example, one frame takes 0.01667 seconds, but the next might take 0.22 seconds, causing noticeable stuttering. Also, because your in-game actions rely on how quickly frames are rendered and shown on the screen, this instability in frame time makes the controls feel sluggish or unresponsive. Given the hardware limitations of the ROG Ally, after plenty of testing and tweaking, I found that capping the frame rate at 45 FPS strikes the best balance between smooth gameplay and good visuals.
What Are the Performance Bottlenecks of ROG Ally?
While the ROG Ally is the most powerful x86 gaming handheld currently available, it still can't match the performance of desktops or laptops with dedicated graphics cards. The main bottlenecks come from its screen and the SoCspecifically, the Ryzen Z1 Extreme. 1. Screen Bottleneck: 2. Power Consumption Bottleneck: 3. Bandwidth Bottleneck: 4. Thermal Bottleneck:
The ROG Allys 1080p screen is demanding for the Ryzen Z1 Extreme. Rendering games at this resolution and maintaining 60 FPS is tough for the chip without some help from technologies like FSR (FidelityFX Super Resolution).
Games need both the CPU and GPU to work together, and they share a limited power budget. If the GPU has to do too much rendering, it consumes more power, leaving less for the CPU. This can lead to performance drops in some scenarios when the CPU cant keep up, causing stutters.
The Ryzen Z1 Extreme is an APU, meaning the CPU and GPU share the system memory, which is LPDDR5x. Unlike GDDR6 found on dedicated GPUs, the memory bandwidth here is much lower, creating a bottleneck. Additionally, the ROG Ally has only 16GB of RAM, with 4GB allocated to the GPU, leaving only 12GB for the system, which could lead to constant swapping to page files and make the bottleneck even worse.
As a handheld device, finding the right balance between SoC power, temperature, and fan noise is crucial. After experimenting with different strategies, setting the SoC power to 30 watts seemed to provide the best balance. However, even at 30W, maintaining a stable 60 FPS is difficult, which is why capping it at 45 FPS is a better choice for smoother gameplay.