77 lines
3.3 KiB
Markdown
77 lines
3.3 KiB
Markdown
|
|
# Codebase Structure
|
||
|
|
|
||
|
|
## Workspace Organization
|
||
|
|
```
|
||
|
|
aspen/
|
||
|
|
├── crates/
|
||
|
|
│ ├── app/ # Main application
|
||
|
|
│ │ ├── src/
|
||
|
|
│ │ │ ├── main.rs # Entry point
|
||
|
|
│ │ │ ├── camera.rs # Camera system
|
||
|
|
│ │ │ ├── cube.rs # 3D cube demo
|
||
|
|
│ │ │ ├── debug_ui.rs # Debug overlays
|
||
|
|
│ │ │ ├── engine_bridge.rs # Bridge to EngineCore
|
||
|
|
│ │ │ ├── input/ # Input handling
|
||
|
|
│ │ │ ├── rendering.rs # Rendering setup
|
||
|
|
│ │ │ ├── selection.rs # Object selection
|
||
|
|
│ │ │ ├── session.rs # Session management
|
||
|
|
│ │ │ ├── session_ui.rs # Session UI
|
||
|
|
│ │ │ └── setup.rs # App initialization
|
||
|
|
│ │ └── Cargo.toml
|
||
|
|
│ │
|
||
|
|
│ ├── libmarathon/ # Core library
|
||
|
|
│ │ ├── src/
|
||
|
|
│ │ │ ├── lib.rs # Library root
|
||
|
|
│ │ │ ├── sync.rs # Synchronization primitives
|
||
|
|
│ │ │ ├── engine/ # Core engine logic
|
||
|
|
│ │ │ ├── networking/ # P2P networking, gossip
|
||
|
|
│ │ │ ├── persistence/ # Database and storage
|
||
|
|
│ │ │ ├── platform/ # Platform-specific code
|
||
|
|
│ │ │ │ ├── desktop/ # macOS executor
|
||
|
|
│ │ │ │ └── ios/ # iOS executor
|
||
|
|
│ │ │ └── debug_ui/ # Debug UI components
|
||
|
|
│ │ └── Cargo.toml
|
||
|
|
│ │
|
||
|
|
│ ├── sync-macros/ # Procedural macros for sync
|
||
|
|
│ │ └── src/lib.rs
|
||
|
|
│ │
|
||
|
|
│ └── xtask/ # Build automation
|
||
|
|
│ ├── src/main.rs
|
||
|
|
│ └── README.md
|
||
|
|
│
|
||
|
|
├── scripts/
|
||
|
|
│ └── ios/ # iOS-specific build scripts
|
||
|
|
│ ├── Info.plist # iOS app metadata
|
||
|
|
│ ├── Entitlements.plist # App capabilities
|
||
|
|
│ ├── deploy-simulator.sh # Simulator deployment
|
||
|
|
│ └── build-simulator.sh # Build for simulator
|
||
|
|
│
|
||
|
|
├── docs/
|
||
|
|
│ └── rfcs/ # Architecture RFCs
|
||
|
|
│ ├── README.md
|
||
|
|
│ ├── 0001-crdt-gossip-sync.md
|
||
|
|
│ ├── 0002-persistence-strategy.md
|
||
|
|
│ ├── 0003-sync-abstraction.md
|
||
|
|
│ ├── 0004-session-lifecycle.md
|
||
|
|
│ ├── 0005-spatial-audio-system.md
|
||
|
|
│ └── 0006-agent-simulation-architecture.md
|
||
|
|
│
|
||
|
|
├── .github/
|
||
|
|
│ └── ISSUE_TEMPLATE/ # GitHub issue templates
|
||
|
|
│ ├── bug_report.yml
|
||
|
|
│ ├── feature.yml
|
||
|
|
│ ├── task.yml
|
||
|
|
│ ├── epic.yml
|
||
|
|
│ └── support.yml
|
||
|
|
│
|
||
|
|
├── Cargo.toml # Workspace configuration
|
||
|
|
├── Cargo.lock # Dependency lock file
|
||
|
|
└── rustfmt.toml # Code formatting rules
|
||
|
|
```
|
||
|
|
|
||
|
|
## Key Patterns
|
||
|
|
- **ECS Architecture**: Uses Bevy's Entity Component System
|
||
|
|
- **Platform Abstraction**: Separate executors for desktop/iOS
|
||
|
|
- **Engine-UI Separation**: `EngineCore` runs in background thread, communicates via `EngineBridge`
|
||
|
|
- **CRDT-based Sync**: All shared state uses CRDTs for conflict-free merging
|
||
|
|
- **RFC-driven Design**: Major decisions documented in `docs/rfcs/`
|