Stay organized with collections
Save and categorize content based on your preferences.
The Android Dynamic Performance Framework (ADPF) helps developers
proactively manage device thermals and performance by letting games interact
with the system, receive thermal insights (like predicted headroom), and
influence behavior. Intelligent adaptation using ADPF prevents severe throttling
and enables smoother, longer gameplay. This guide provides practical strategies
to use ADPF effectively. It focuses on custom, granular scaling tied
directly to your game's specific quality settings and driven by ADPF thermal
data. By implementing these practices, you can proactively manage thermalsand
create games that perform better for longer-which results in a more reliable
and enjoyable experience for players.
Customize performance scaling
Default ADPF plugin scaling might target generic engine presets, for example,
Low, Medium and High. If your game uses unique graphic quality options that are
different from these defaults, the plugin's assumptions won't match your
content. You must customize ADPF logic to directly control your game's specific
quality settings for effective thermal management, rather than relying on
mismatched defaults. Create fine-grained scaling logic using ADPF data for
better results:
Identify key levers: Profile your game to find which graphics or
gameplay features (shadows, resolution, particles, effects, view distance)
most impact performance and heat.
Develop granular steps: Define small, incremental adjustments for
individual settings within your game's quality options. Gradually apply
these changes based on thermal feedback from ADPF (for example, utilizing
thermal headroom data) to gently ease pressure on the system before severe
throttling occurs.
The preceding video shows a rendering problem with ADPF in
Unity MegaCity Metro. Because ADPF adjusts the view distance based on a
general game engine range, rather than a range suited for the specific game
content, the view distance becomes excessively low when the device heats up,
which causes an issue where buildings are no longer visible.
Isolate graphics settings
Avoid drastic preset changes. Adjusting individual graphics settings
independently provides finer control and a smoother experience when responding
to thermal conditions. Here are some tips when adjusting settings:
Prioritize impact: Focus scaling efforts on settings within your quality
options having the most significant thermal or performance impact identified
during profiling.
Decouple settings: Modify settings like shadows, resolution, and
particles independently and sequentially as needed.
Smooth transitions: Where feasible, transition visual settings gradually
over a few frames to be less jarring.
Some players prefer consistent visuals over dynamic adjustments. Offer an option
to disable ADPF-driven scaling:
Implement an option: Add a clearly labeled setting (for example, "Enable
Dynamic Performance Adjustment") in your graphics menu.
Explain the choice: Briefly describe that it enables automatic quality
adjustments for smoother performance and thermal management.
Define behavior: When enabled (recommended default), your custom ADPF
scaling logic runs. When disabled, the game uses only the user's manually
selected settings and ignores thermal data for scaling.
Test across devices
Android hardware varies significantly in thermal capacity and performance. Test
thoroughly across different device types:
Define device tiers: Test on representative high-end, mid-range,
and low-end devices from various manufacturers and SoC vendors.
Test thermal response: Observe how different devices handle load and how
effective your ADPF logic (and the user toggle) is on each tier.
Validate performance targets: Ensure the game meets performance goals on
each tier with ADPF active, and behaves predictably when disabled.
Gather feedback: Use beta programs to collect performance and thermal
data from diverse real-world devices.
Monitor performance and iterate
Implementing ADPF requires ongoing monitoring and refinement to balance
sustained performance, thermal limits, and visual quality:
Establish baselines and targets: Define acceptable performance (target
FPS, frame times) and measure behavior without ADPF logic first.
Use profiling tools: Regularly use the Android Studio Profiler, GPU
vendor tools, and in-game overlays to track FPS, frame times, and ADPF
thermal data during gameplay.
Experiment and tune: Test different ADPF response strategies. Adjust how
quickly and aggressively settings scale based on thermal input to find the
optimal balance for your game.
Test long sessions: Ensure testing includes extended playtime (15+
minutes) to observe sustained load performance and thermal stabilization
with ADPF active.
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-04-28 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-04-28 UTC."],[],[],null,["# Best practices for ADPF\n\nThe [Android Dynamic Performance Framework (ADPF)](/games/optimize/adpf) helps developers\nproactively manage device thermals and performance by letting games interact\nwith the system, receive thermal insights (like predicted headroom), and\ninfluence behavior. Intelligent adaptation using ADPF prevents severe throttling\nand enables smoother, longer gameplay. This guide provides practical strategies\nto use ADPF effectively. It focuses on custom, granular scaling tied\ndirectly to your game's specific quality settings and driven by ADPF thermal\ndata. By implementing these practices, you can proactively manage thermalsand\ncreate games that perform better for longer-which results in a more reliable\nand enjoyable experience for players.\n\nCustomize performance scaling\n-----------------------------\n\nDefault ADPF plugin scaling might target generic engine presets, for example,\nLow, Medium and High. If your game uses unique graphic quality options that are\ndifferent from these defaults, the plugin's assumptions won't match your\ncontent. You must customize ADPF logic to directly control your game's specific\nquality settings for effective thermal management, rather than relying on\nmismatched defaults. Create fine-grained scaling logic using ADPF data for\nbetter results:\n\n- **Identify key levers**: Profile your game to find which graphics or gameplay features (shadows, resolution, particles, effects, view distance) most impact performance and heat.\n- **Develop granular steps**: Define small, incremental adjustments for individual settings within your game's quality options. Gradually apply these changes based on thermal feedback from ADPF (for example, utilizing thermal headroom data) to gently ease pressure on the system before severe throttling occurs.\n\nYour browser doesn't support the video tag. Rendering problem with ADPF in [Unity MegaCity Metro](https://github.com/Unity-Technologies/megacity-metro/tree/demo/vulkan).\n\nThe preceding video shows a rendering problem with ADPF in\n[Unity MegaCity Metro](https://github.com/Unity-Technologies/megacity-metro/tree/demo/vulkan). Because ADPF adjusts the view distance based on a\ngeneral game engine range, rather than a range suited for the specific game\ncontent, the view distance becomes excessively low when the device heats up,\nwhich causes an issue where buildings are no longer visible.\n\nIsolate graphics settings\n-------------------------\n\nAvoid drastic preset changes. Adjusting individual graphics settings\nindependently provides finer control and a smoother experience when responding\nto thermal conditions. Here are some tips when adjusting settings:\n\n- **Prioritize impact**: Focus scaling efforts on settings within your quality options having the most significant thermal or performance impact identified during profiling.\n- **Decouple settings**: Modify settings like shadows, resolution, and particles independently and sequentially as needed.\n- **Smooth transitions**: Where feasible, transition visual settings gradually over a few frames to be less jarring.\n\nCheck how [Netmarble used the ADPF to optimize \"Game of Thrones: Kingsroad\"](/stories/games/netmarble-got-adpf).\nThey implemented dynamic resolution scaling and adaptive frame rate adjustments.\n\nProvide user control\n--------------------\n\nSome players prefer consistent visuals over dynamic adjustments. Offer an option\nto disable ADPF-driven scaling:\n\n- **Implement an option**: Add a clearly labeled setting (for example, \"Enable Dynamic Performance Adjustment\") in your graphics menu.\n- **Explain the choice**: Briefly describe that it enables automatic quality adjustments for smoother performance and thermal management.\n- **Define behavior**: When enabled (recommended default), your custom ADPF scaling logic runs. When disabled, the game uses only the user's manually selected settings and ignores thermal data for scaling.\n\nTest across devices\n-------------------\n\nAndroid hardware varies significantly in thermal capacity and performance. Test\nthoroughly across different device types:\n\n- **[Define device tiers](/games/distribute/guide-launch-game)**: Test on representative high-end, mid-range, and low-end devices from various manufacturers and SoC vendors.\n- **Test thermal response**: Observe how different devices handle load and how effective your ADPF logic (and the user toggle) is on each tier.\n- **Validate performance targets**: Ensure the game meets performance goals on each tier with ADPF active, and behaves predictably when disabled.\n- **Gather feedback**: Use beta programs to collect performance and thermal data from diverse real-world devices.\n\nMonitor performance and iterate\n-------------------------------\n\nImplementing ADPF requires ongoing monitoring and refinement to balance\nsustained performance, thermal limits, and visual quality:\n\n- **Establish baselines and targets**: Define acceptable performance (target FPS, frame times) and measure behavior without ADPF logic first.\n- **Use profiling tools**: Regularly use the Android Studio Profiler, GPU vendor tools, and in-game overlays to track FPS, frame times, and ADPF thermal data during gameplay.\n- **Experiment and tune**: Test different ADPF response strategies. Adjust how quickly and aggressively settings scale based on thermal input to find the optimal balance for your game.\n- **Test long sessions**: Ensure testing includes extended playtime (15+ minutes) to observe sustained load performance and thermal stabilization with ADPF active."]]