# Environments Page - Mocked Specification
**Route:** `#/environments` | **Source:** `app/environments/page.tsx`
**Status:** Mocked - Real implementation pending (Unity3D MCP)
## Overview
Unity3D integration, World Labs Marble, and 3D scene orchestration. Uses mcpService for health check; loadWorld calls unity3d MCP when connected.
## Components
- **MCPStatusBanner** - unity3d server
- **LaunchControls** - Start/stop Unity3D
- **Performance metrics** - FPS, draw calls, triangles, memory, GPU
- **3D World Viewer** - Placeholder (Unity scene active)
- **World Labs Marble** - AI generation panel
- **World Library** - Available worlds list
- **Unity Integration** - Status, version, active scene, GameObjects, pipeline
- **Environment Settings** - Lighting (ambient, directional, shadows), Physics (gravity, timeScale, collision)
- **Asset Management** - Models, textures, materials, prefabs counts
## Mock Data Structure
### currentWorld
- id, name, type, status
- size: { x: 50, y: 30, z: 20 }
- lighting: { ambient: 0.3, directional: 0.8, shadows, fog }
- physics: { gravity: -9.81, timeScale: 1.0, collisionDetection }
### availableWorlds
- warehouse_alpha (loaded)
- office_beta (available)
- lab_gamma (syncing)
- outdoor_delta (downloading)
### unityIntegration
- connected: true
- version: '2022.3.15f1'
- scenes: [MainScene, TestScene, DebugScene]
- activeScene: MainScene
- gameObjects: 1247
- renderPipeline: URP
### marbleWorlds
- active: true
- worldsGenerated: 23
- currentSeed: 'alpha-47-beta'
- aiGenerated: true
- quality: 'ultra'
- size: 'large'
### assets
- models: 456, textures: 892, materials: 234, prefabs: 67, animations: 123
### performance
- fps: 60, drawCalls: 1247, triangles: 456789
- memory: 1.2 GB
- gpuUsage: 45%
## MCP Integration (Real Implementation)
- **mcpService.checkHealth('unity3d')** - connection status
- **mcpService.unity3dCallTool('load_scene', { scene_name })** - load world when connected
- Mock fallback: setTimeout 2s to switch world in state
## Callbacks
- **loadWorld(worldId)** - Load scene via MCP or mock
- **updateLighting(property, value)** - Local state
- **updatePhysics(property, value)** - Local state