Files
Trinittu/dynamic-sky/SPEC.md
2026-02-03 11:26:48 +01:00

181 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Stylized Dynamic Sky Specification (Godot 4.6)
## Overview
This document specifies a stylized dynamic sky system for Godot 4.6. It defines the required features, behavior, data structures, and integration points without prescribing implementation code.
## Goals
- Provide a visually stylized, dynamic sky suitable for stylized or semi-realistic games.
- Offer modular components that can be combined or replaced.
- Enable deterministic playback for cutscenes and synchronized multiplayer.
- Support art-direction via presets and editor-friendly controls.
## Non-Goals
- Physically accurate atmospheric scattering.
- Real-world meteorology simulation.
- Automated terrain-aware shadow projections.
## System Architecture
- **DynamicSkyRoot**: Top-level scene controlling time, weather, and global parameters.
- **SkyboxPresetLibrary**: Collection of preset skybox nodes (configured resources/scenes).
- **DayNightController**: Controls sun/moon movement, ambient light, and time-of-day curves.
- **WeatherController**: Drives weather states, transitions, and VFX spawning.
- **CloudSystem2D**: Handles layered 2D cloudscapes, flow, animation, and evolution.
- **PostProcessController**: Applies stylized gradients, fog shaping, and sun glow.
- **VFXController**: Shooting stars and meteor showers.
- **ShadowProxySystem**: Faked cloud shadows projected onto world.
## Feature Specifications
### Preset Skybox Nodes
**Description**: Pre-authored skybox configurations that can be swapped at runtime.
**Requirements**:
- At least 6 presets: Clear Day, Sunset, Night, Overcast, Storm, Dawn.
- Each preset includes:
- Skybox texture/gradient resources.
- Sun and moon color presets.
- Ambient and fog color presets.
- Default cloud layers and post-process settings.
- Presets can be overridden by runtime controllers without losing base values.
- Preset application is non-destructive and reversible.
**Editor UX**:
- Preset picker dropdown.
- “Apply Preset” button and “Revert to Preset” button.
### Day/Night Cycle
**Description**: Stylized, configurable cycle controlling lighting and sky appearance.
**Requirements**:
- Time scale with configurable length (e.g., 10240 minutes per day).
- Supports manual time-of-day override and pause.
- Sun and moon directional motion (arc across sky dome).
- Color and intensity curves:
- Sun color and intensity.
- Moon color and intensity.
- Ambient color and intensity.
- Fog color and density.
- Smooth transitions between time states.
- Optional star visibility curve.
**Data**:
- TimeOfDay (0.01.0 normalized)
- Curves for color/intensity across time.
### Weather System
**Description**: State-based weather controller with transitions and parameters.
**Weather States**:
- Clear
- Cloudy
- Overcast
- Rain
- Storm
- Snow (optional, can be disabled)
**Requirements**:
- State machine with configurable transition durations.
- Each state defines:
- Cloud density, opacity, and coverage.
- Wind speed and direction (affects cloud flow).
- VFX sets (rain, lightning, snow).
- Ambient and fog adjustments.
- Randomized or scripted weather timeline support.
- Events/callbacks on state enter/exit.
### 2D Customizable Cloudscapes
**Description**: Layered 2D clouds rendered on the sky dome or as screen-space quads.
**Requirements**:
- Up to 4 independent layers: low, mid, high, wisps.
- Per-layer settings:
- Texture/atlas selection.
- Tiling and scale.
- Opacity and color tint.
- Parallax depth factor.
- Flow direction and speed.
- Global cloud coverage control.
### Cloud Flow, Animation, and Evolution
**Description**: Dynamic motion and shape changes over time.
**Requirements**:
- Continuous UV flow with wind influence.
- Optional noise-based distortion for stylized movement.
- Evolution parameter to morph coverage and shape (low-frequency drift).
- Time-based variation seed to keep deterministic playback when seeded.
### Cloud Lighting Reacts with Sun and Moon
**Description**: Cloud shading changes based on celestial light direction and intensity.
**Requirements**:
- Light direction taken from sun/moon controller.
- Bright side and shadowed side color control.
- Night-time soft illumination from moon.
- Optional rim glow at dawn/dusk.
### Weather Particle Kill Volumes
**Description**: Volumes that stop precipitation or weather particles in indoor or sheltered spaces.
**Requirements**:
- Axis-aligned and/or custom-shaped kill volumes.
- Particles inside kill volume are disabled or instantly culled.
- Priority/stacking rules when volumes overlap.
- Optional fade-out margin to avoid hard cutoffs.
### Stylized Post Process for Fog and Sun Gradients
**Description**: Screen-space effects to enhance gradients and fog stylization.
**Requirements**:
- Adjustable sky gradient curve blending.
- Fog shaping controls (height fog, distance fog).
- Sun glow halo with stylized falloff.
- Dusk/dawn gradient emphasis.
- Option to toggle for performance profiles.
### Shooting Star and Meteor Shower VFX
**Description**: Procedural or timed visual effects visible in the sky.
**Requirements**:
- Occasional shooting stars (randomized frequency).
- Meteor shower events with configurable duration and intensity.
- Trail length, brightness, and color control.
- Optional audio event hook for meteor shower start.
### Faked Cloud Shadows
**Description**: Stylized cloud shadow overlay projected onto the world.
**Requirements**:
- Shadow texture projected in world space or onto a large quad.
- Movement matches cloud flow direction and speed.
- Darkness/opacity controls and color tint.
- Optional blur for softer look.
## Data and Configuration
- **SkyConfig Resource**: Stores defaults for all controllers.
- **Preset Resource**: Encapsulates a SkyConfig plus skybox assets.
- **WeatherProfile**: Per-state settings and VFX parameters.
- **CloudLayerConfig**: Texture/flow/lighting settings per layer.
- **PostProcessProfile**: Gradient, fog, and sun glow parameters.
## Performance Targets
- Target 60 FPS on mid-range hardware.
- Cloud layers should allow selective disabling.
- VFX update rates configurable.
## Debug and Tooling
- On-screen debug panel showing time, weather state, cloud parameters.
- Seed display for deterministic playback.
- Editor gizmos for kill volumes.
## Acceptance Criteria
- All required features are present and configurable in editor.
- Presets can be applied and reverted without data loss.
- Day/night transitions are smooth with no visible jumps.
- Weather transitions alter clouds, lighting, and VFX consistently.
- Cloud lighting visibly reacts to sun/moon changes.
- Kill volumes prevent precipitation in indoor spaces.
- Post process improves gradients and fog stylization.
- Shooting stars and meteor showers visible at night.
- Cloud shadows visibly move across the world.