Creating 3D Environments¶
Environments in AeroBeat are more than just backgrounds; they are reactive light shows that immerse the athlete in the music.
🛠️ The Environment SDK¶
- SDK:
aerobeat-environments-*(Template:environments) - Tools: Godot 4.x Editor with AeroBeat plugins.
- Output: An
AeroEnvironmentresource packed into a.pck.
📐 Technical Constraints¶
To ensure your environment runs on mobile phones and VR headsets:
- Triangle Count: Keep visible geometry under 50k triangles.
- Draw Calls: Use shared materials. Target < 50 draw calls.
- Scale: 1 Unit = 1 Meter.
- Player Zone: The player stands at
(0, 0, 0). Keep a 2m radius clear of geometry. - Forward: The player faces Negative Z.
💡 Lighting & Reactivity¶
Since you cannot write scripts (.gd) in Asset Packs, AeroBeat uses a Data-Driven Reactivity system. You define what lights are, and the Engine controls when they flash.
1. Setup Lights¶
Place standard OmniLight3D or SpotLight3D nodes in your scene.
2. The AeroEnvironment Resource¶
This is the brain of your level.
- Create a new resource:
AeroEnvironment. - Beat Lights: Drag lights here to flash on every beat (1/4 note).
- Measure Lights: Drag lights here to flash on every bar (1/1 note).
- Spectrum Material: Assign a
StandardMaterial3D. The engine will modulate itsEmission Energybased on the song's loudness.
3. Global Illumination (GI)¶
- Realtime GI (SDFGI): Too heavy for mobile. Do not use.
- Baked Lightmaps: Highly recommended.
- Add a
LightmapGInode. - Select your meshes ->
Use in Baked Light: Static. - Click Bake Lightmaps.
- The generated
.exrfiles will be automatically packed with your mod.
- Add a
🚀 Workflow¶
Phase 1: Layout¶
- Import: Drag your
.glb/.gltffiles into the SDK. - Scene: Create a
Node3Droot. Assemble your mesh instances. - Boundaries: Ensure the floor is at
Y=0.
Phase 2: Atmosphere¶
- WorldEnvironment: Add a
WorldEnvironmentnode. - Sky: Define a
Skyresource (Panorama or Procedural). - Fog: Enable Volumetric Fog for depth (use sparingly for mobile performance).
Phase 3: Configuration¶
- Create the
AeroEnvironmentresource. - Assign your Scene file (
.tscn). - Assign your Sky resource.
- Populate the Reactive Light arrays.
Phase 4: Validation & Upload¶
- Create the
AeroModManifest(Type:ENVIRONMENT). - Open the AeroBeat Uploader.
- Validate: Checks for high poly counts or unbaked lights and accidentally added scripts.
- Upload: Publish to the server.
🎨 Best Practices¶
- Darkness is your Friend: Rhythm games look best with high contrast. Keep the ambient light low and use the reactive lights to create energy.
- Guide the Eye: Use geometry to frame the "Highway" (where targets come from).
- Avoid Strobing: Don't make every light flash on every beat. It causes fatigue. Use "Measure Lights" for big changes and "Beat Lights" for subtle pulses.
- VR Comfort: Avoid moving the floor or the horizon. It causes motion sickness.