A curiosity-driven amoeba agent that explores a 2D physics world with no external rewards — driven purely by intrinsic motivation. It absorbs objects to morph its body, changing its physical properties and forcing itself to relearn locomotion.
- Basic pymunk space with gravity and a ball
- Pygame rendering loop at 60fps
- Keyboard-controlled forces (WASD) on the ball
- Static terrain — floors, walls, ramps
- Procedural terrain generation with noise functions
- Camera that follows the player/agent
- Base absorbable object class
- Five object types (rock, elastic, slime, bubble, stick)
- Scatter objects in the world via seeded noise
- Collision detection between agent and objects
- Object removal on absorption
- Soft-body circle (multiple pymunk bodies + spring joints)
- Absorption mechanic — blend physics properties on contact
- Body state encoding (mass, friction, restitution, radius, type histogram)
- Visual changes on absorption (size, color tint)
- Verify that movement feels different after absorption
- Wrap the world as a Gymnasium env (reset, step, observe)
- Define observation space (47 floats)
- Define action space (2D continuous — angle + magnitude)
- Test with random actions
- Feature encoder network (MLP 128→128→64)
- Forward model (predicts next features from current + action)
- Inverse model (predicts action from state pair)
- Combined loss function
- Intrinsic reward = forward model prediction error
- Reward normalization (running mean/std)
- Integrate Stable Baselines 3 PPO with custom env
- Wire intrinsic reward from ICM as the only reward
- Training loop with TensorBoard logging
- Checkpoint save/load
- YAML config for hyperparameters
- Verify agent learns to move (not just flail)
- Pygame renderer — color-coded objects, agent body changes
- Curiosity overlay (glow on high-prediction-error areas)
- Dash web dashboard — exploration heatmap
- Curiosity signal graph (intrinsic reward over time)
- Body composition timeline
- Absorption log table
- Seed management for reproducibility
- Experiment comparison across runs
- Performance tuning for RTX 3050
- Clean up and document config options