The project started as a 2D Platformer using pygame.
- Learning: The agent (PPO) was trained on a dynamic curriculum that scaled hazards and platform complexity.
- Bottlenecks: At Level 355, the agent hit a "Hard Mode" ceiling where traditional rewards were insufficient.
- Solution: The first iteration of the Skill Forge was implemented to inject curiosity-driven reward logic.
The "Skill Forge" is the heart of Zenith.
- Diagnostics: The system captures
stderrand training telemetry to detect "stalls." - Refactoring: Using NVIDIA NIM (DeepSeek-R1), the system analyzes the codebase and context.
- Injection: Custom code is generated to rewrite the
step()function or add new movement capabilities (e.g., precise z-axis adjustment). - Security: Logic is executed via
exec()within a controlled scope (self,np,math).
To prevent the agent from memorizing specific level seeds, we implemented a robust Variable Environment layer:
- Parameter Mutation: Using
apply_physics_shift, the system can changegravity,friction, andjump_strengthmid-episode or between levels. - Procedural Layouts:
_generate_curriculum_layoutensures that no two levels are identical, scaling difficulty through density rather than static mapping. - Cross-Dimensional Generalization: By moving from 2D to 3D, we force the agent to generalize its movement concepts (left/right vs X/Y/Z).
At Curriculum Level 1500, Zenith implements a "Singularity" transition.
- Logic: The 2D observation space is mapped to a 3D vector space.
- Engine Swap: The system shuts down the Pygame environment and initializes the Ursina Engine.
- Adaptation: The agent (retaining its weights) must adapt to a 3D coordinate system.
Currently, Zenith is exploring the 3D Frontier.
- Successes: 3D environment loading and basic movement integration are operational.
- Ongoing Work:
- Improving 3D spatial awareness via the Skill Forge.
- Resolving rendering issues in headless environments.
- Optimizing the observation vector for Z-axis depth.