0dc3c9d68d
4 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
| 0dc3c9d68d |
Restructure codebase into logical subdirectories
All checks were successful
Build / build (push) Successful in 1m20s
## Major Reorganization
Reorganized all 57 TypeScript files from flat src/ directory into logical subdirectories for improved maintainability and discoverability.
## New Directory Structure
```
src/
├── core/ (4 files)
│ └── Foundation modules: defaultScene, gameConfig, debug, router
│
├── ship/ (10 files)
│ ├── Ship coordination and subsystems
│ └── input/ - VR controller and keyboard input
│
├── levels/ (10 files)
│ ├── config/ - Level schema, serialization, deserialization
│ ├── generation/ - Level generator and editor
│ └── ui/ - Level selector
│
├── environment/ (11 files)
│ ├── asteroids/ - Rock factory and explosions
│ ├── celestial/ - Suns, planets, textures
│ ├── stations/ - Star base loading
│ └── background/ - Stars, mirror, radar
│
├── ui/ (9 files)
│ ├── hud/ - Scoreboard and status screen
│ ├── screens/ - Login, settings, preloader
│ └── widgets/ - Discord integration
│
├── replay/ (7 files)
│ ├── Replay system components
│ └── recording/ - Physics recording and storage
│
├── game/ (3 files)
│ └── Game systems: stats, progression, demo
│
├── services/ (2 files)
│ └── External integrations: auth, social
│
└── utils/ (5 files)
└── Shared utilities and helpers
```
## Changes Made
### File Moves (57 files)
- Core modules: 4 files → core/
- Ship system: 10 files → ship/ + ship/input/
- Level system: 10 files → levels/ (+ 3 subdirs)
- Environment: 11 files → environment/ (+ 4 subdirs)
- UI components: 9 files → ui/ (+ 3 subdirs)
- Replay system: 7 files → replay/ + replay/recording/
- Game systems: 3 files → game/
- Services: 2 files → services/
- Utilities: 5 files → utils/
### Import Path Updates
- Updated ~200 import statements across all files
- Fixed relative paths based on new directory structure
- Fixed case-sensitive import issues (physicsRecorder, physicsStorage)
- Ensured consistent lowercase filenames for imports
## Benefits
1. **Easy Navigation** - Related code grouped together
2. **Clear Boundaries** - Logical separation of concerns
3. **Scalability** - Easy pattern for adding new features
4. **Discoverability** - Find ship code in /ship, levels in /levels, etc.
5. **Maintainability** - Isolated modules easier to update
6. **No Circular Dependencies** - Clean dependency graph maintained
## Testing
- All TypeScript compilation errors resolved
- Build succeeds with new structure
- Import paths verified and corrected
- Case-sensitivity issues fixed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
|||
| ee90e420d6 |
Fix mesh rendering and CloudFlare proxy compatibility
All checks were successful
Build / build (push) Successful in 1m21s
## Major Fixes ### 1. Fixed Invisible Meshes Issue - Root cause: Emissive materials require disableLighting=true without scene lighting - Added disableLighting=true to all loaded materials in loadAsset.ts - Scene intentionally uses no dynamic lights (space game with emissive textures) ### 2. Fixed CloudFlare Proxy + Vite Cache Issues - Updated vite.config.ts to pre-bundle BabylonJS procedural textures - Added force:false to prevent unnecessary cache invalidation - Fixed 504 Gateway Timeout errors on shader module dynamic imports - Separated babylon-procedural chunk for better caching ### 3. Responsive Design Improvements - Consolidated all CSS into public/styles.css with design tokens - Removed duplicate styles.css file - Created semantic header with navigation - Extracted 300+ lines of inline styles to CSS classes - Added mobile-first responsive breakpoints (320px, 480px, 768px, 1024px, 1440px) - Implemented fluid typography with clamp() ### 4. Level Progression System - Fixed level unlocking logic (tutorial always unlocked, others require auth) - Updated DEFAULT_LEVEL_ORDER to match actual level names - Made populateLevelSelector() async to properly await authentication - Added 3-column carousel layout for level selection - Visual states: locked, unlocked, current, completed ### 5. Discord Widget Management - Disabled Discord widget initialization (commented out) to prevent GraphQL errors - Added hide() call during gameplay - Can be re-enabled when Discord bot is properly configured ### 6. TypeScript Error Fixes - Removed unused hasSavedLevels import - Updated replay callbacks to use appHeader instead of individual link references - Fixed all TS compilation errors ## Files Modified - index.html - Semantic header, removed inline styles - public/styles.css - Consolidated styles with design tokens - src/gameConfig.ts - Enabled progression by default - src/levelSelector.ts - Fixed progression logic, async auth check - src/loginScreen.ts - Removed inline styles - src/main.ts - Discord handling, header visibility, error suppression - src/preloader.ts - Removed inline styles - src/progression.ts - Added isLevelUnlocked() method - src/utils/loadAsset.ts - Fixed emissive materials (disableLighting=true) - vite.config.ts - Pre-bundle procedural textures, prevent cache issues - styles.css - DELETED (consolidated into public/styles.css) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
|||
| 20dfc238f8 |
Fix level double initialization and refactor ship physics
All checks were successful
Build / build (push) Successful in 1m20s
Major Changes: - Fix Level1 double initialization by deferring initialize() call - Removed initialize() from Level1 constructor - Main.ts now explicitly calls initialize() after registering ready observable - Added error logging for double initialization detection - Refactor Ship to use loadAsset utility and new GLB structure - Changed from SceneLoader.ImportMeshAsync to loadAsset pattern - Ship constructor no longer calls initialize() - must be called explicitly - Updated physics to use transformNode from GLB container - Adjusted control mappings for yaw/pitch/roll (inverted signs) - Reduced force multipliers for better control feel - Remove MaterialFactory pattern - Deleted src/materialFactory.ts - LevelDeserializer now creates PBRMaterial directly for planets/sun - Removed texture quality settings from gameConfig - Cleaned up settings UI to remove texture quality controls - Fix UI element hiding when entering VR - Editor and Settings links now properly hidden on level start - Update GLB models for new asset structure - Updated ship.glb and base.glb models - Modified loadAsset to work with container transformNodes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |
|||
| 146ffccd3d |
Add Blender export tooling and refactor asset structure
All checks were successful
Build / build (push) Successful in 1m18s
## Blender Export Utilities - Add blenderExporter utility with ESM support (tsx) - Create CLI script for exporting .blend files to GLB - Add npm scripts: export-blend, export-blend:watch, export-blend:batch - Support watch mode, batch export, and Draco compression - Complete documentation in docs/BLENDER_EXPORT.md - Add loadAsset utility helper ## Asset Structure Reorganization - Move models to themeable structure: public/assets/themes/default/models/ - Add themes/ directory with source .blend files - Remove old model files from public/ root - Consolidate to asteroid.glb, base.glb, ship.glb ## Level Configuration Improvements - Make startBase optional in LevelConfig interface - Update LevelGenerator to not generate startBase data by default - Update LevelDeserializer to handle optional startBase - Update Level1 to handle null startBase - Fix levelEditor to remove startBase generation references - Update validation to treat startBase as optional ## Dependencies - Add tsx for ESM TypeScript execution - Add @types/node for Node.js types - Update package-lock.json This enables modding support with themeable assets and simplifies level generation by making base stations optional. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> |