My team is looking into "Dynamic Difficulty Adjustment" (DDA) using Machine Learning. We want the game to analyze player behavior—like how many times they die or their accuracy—and adjust enemy stats on the fly. Does anyone have experience training a Reinforcement Learning model for this, and how do you prevent the AI from becoming too predictable or making the game feel "unfair" when it suddenly gets easier?
3 answers
The biggest risk with DDA is "rubber-banding," where players feel their progress doesn't matter. Instead of a direct Reinforcement Learning model that controls stats, try a "Director AI" approach similar to Left 4 Dead. Use a simpler heuristic model to track a "Player Stress Index." When the stress index is too high for too long, the Director reduces enemy spawn rates. If you use ML, train it on player playtest data to identify "churn points"—the specific moments where players get frustrated and quit—and only intervene slightly before those points are reached.
Are you planning to run the inference engine on the client side, or will the game send telemetry to a server to decide the difficulty?
You should keep the adjustments subtle. Small changes in enemy "reaction time" are often felt more positively than changing health bars.
Elizabeth is right. "Perceived difficulty" is often about the pressure of the encounter, not just the math behind the damage numbers.
We're hoping for client-side inference to avoid any online requirements, Richard. We’re looking into the Unity Sentis framework to run our trained ONNX models directly on the user's hardware. My main concern is that if the model is too "smart," it might start trolling the players. We need to put strict "guardrails" on how much an attribute like enemy health can fluctuate in a single session.