Using Aspect-Oriented Programming to Record DRL Agents' Data
3 days ago
- #aspect-oriented-programming
- #automated-testing
- #game-development
- Playtesting is crucial for game development to find bugs, evaluate UX, balance the game, and assess fun.
- PEAK is a game engine with integrated deep reinforcement learning (DRL) agents for automated testing of 2D platformers.
- The workflow involves designing a level, training DRL agents with specific playstyles, and collecting data to identify balance issues.
- The project focuses on data collection, aggregation, and visualization, using the Observer Pattern and Aspect-Oriented Programming (AOP).
- Aspect-Oriented Programming (AOP) is used to separate data collection (aspects) from core game code, with pointcuts specifying join points.
- Decorators in Python are initially used to track data, but they require editing core game files.
- Config files (YAML) are introduced to inject recorder methods into game methods via reflection, avoiding code changes.
- A simple Streamlit dashboard is created for data visualization, though current insights are limited.
- Future work includes defining useful metrics (e.g., completion rate, mean completion time) and thresholds via config files, with challenges in measurement.