TECHNICAL REQUIREMENTS
Target Hardware: Meta Quest 3 (Standalone).
Engine Version: Unity 6.3 LTS (6000.3.0f1).
Render Pipeline: Universal Render Pipeline (URP).
Target Frame Rate: 100 FPS (Stable) 90 FPS (Minimum).
Note: While 72Hz is the floor for VR, a high-speed racing game requires 90Hz to minimize motion sickness and latency.
Color Space: Linear (for accurate PBR lighting).
Physics Step: The physics simulation (Fixed Timestep) should be decoupled from the rendering frame rate but tuned for high-speed precision.
Guideline: Aim for a physics step that matches the target refresh rate (e.g., 90Hz = 0.0111s) or a clean divisor to prevent "micro-stutter" in the bike's movement.
Draw Call Management
GPU Instancing: Preferred for all repeated trackside objects (barriers, crowd silhouettes, distant buildings).
Static Batching: The track chunks (Asphalt/Dirt) should be static batched where possible. This can reduce the number of graphics draw calls.
Garbage Collection (GC): Zero-allocation code in the Update() loop. Object pooling must be used (rather than instantiation & destruction) for all temporary visual effects (tire particles, UI elements) to prevent frame spikes from GC spikes.
The Quest 3 is powerful, but it is still a mobile chipset. We must be efficient to save GPU headroom for the "AR Overlay" effects.
Geometry
Strict Budgets: Prioritize silhouette over surface detail. Use hard edges and smoothing groups effectively.
LODs (Level of Detail): Aggressive LOD transitions for track assets. Distant buildings should be simple cubes.
Textures & Materials
Workflow: High-to-Low Poly baking. Detail must come from Normal and Roughness maps, not extra triangles.
Atlasing: Combine textures for shared props (e.g., "Street Props Atlas") to reduce draw calls.
Compression: Set the Unity default to ASTC compression for all textures.
Lighting
Baked Lighting: The environment (Track and City) should use Baked Lightmaps. Real-time lighting on the environment is prohibited.
Dynamic Lighting: Limit real-time lights to One (1) Directional Light (Sun/Moon) and essential bike lights.
Fixed Foveated Rendering (FFR): Enable at Medium/High. This reduces resolution at the edges of the lens where the player isn't looking, saving significant GPU power.
Single Pass Instanced Rendering: Must be enabled in Unity XR settings to render both eyes efficiently.
Unity Profiler: Should be used during testing to figure out define resources, leaks, and possibilities of organization.