Adjust difficulty parameters to improve game progression, optimize rendering with proper layer assignments, increase projectile velocity for better responsiveness, and clean up visual effects rendering.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Increase asteroid sizes, add ship-specific lighting, enhance sun brightness, adjust physics timesteps, and improve planet/asteroid material appearance. Increase planet count to 12 and move them farther from sun for better spatial layout.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Enable multiview rendering in WebXR for improved framerate, remove expensive PhotoDome per-frame updates, and add planet generation system with 76 unique textures across 12 planet types.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Upgrade audio system from deprecated Sound API to AudioEngineV2
- Use CreateAudioEngineAsync() for audio engine initialization
- Replace new Sound() with createSoundAsync() throughout codebase
- Track sound playing state manually (StaticSound lacks isPlaying)
- Use volume property instead of setVolume() method
- Use stop() instead of pause() for proper StaticSound lifecycle
- Fix controller detection for Meta Quest 2
- Check for already-connected controllers after entering XR mode
- Fixes issue where Quest 2 controllers only become available after enterXRAsync()
- Maintains backward compatibility with WebXR emulator
- Improve initialization performance
- Move RockFactory.init() to main initialization (before level select)
- Pre-load asteroid meshes and explosion particle systems on startup
- Level initialization now only creates asteroids, not resources
- Refactor level initialization flow
- Level creation now happens before entering XR mode
- Add level ready observable to track initialization completion
- Show loading messages during asteroid creation
- Extract loading message logic to separate module
- Add audio unlock on user interaction (button click)
- Make play() methods async to support AudioEngineV2
- Pass AudioEngineV2 instance to Ship and Level1 constructors
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implemented a level selection system with 5 difficulty modes (Recruit, Pilot, Captain, Commander, Test), each with different asteroid counts, sizes, speeds, and constraints. Upgraded BabylonJS from 7.13.1 to 8.32.0 and fixed particle system animation compatibility issues.
- Add card-based level selection UI with 5 difficulty options
- Create difficulty configuration system in Level1
- Fix explosion particle animations for mesh emitters (emitter.y → emitter.position.y)
- Implement particle system pooling for improved explosion performance
- Upgrade @babylonjs packages to 8.32.0
- Fix audio engine unlock after Babylon upgrade
- Add test mode with 100 large, slow-moving asteroids
- Add styles.css for level selection cards with hover effects
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>