-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Overview
Continuum currently lacks resolution management capabilities. Players cannot adjust resolution settings, which limits accessibility and user experience across different display configurations.
Current State
- Fixed resolution with no user controls
- No accommodation for different screen sizes or aspect ratios
- Missing window mode options (fullscreen, windowed, borderless)
- No DPI scaling considerations
Requirements
Basic Implementation
- Resolution selection dropdown in settings menu
- Common resolution presets (1920x1080, 1280x720, 2560x1440, etc.)
- Apply/Cancel functionality with confirmation dialog
Advanced Implementation (Godot Best Practices)
Resolution & Display Management
- Dynamic resolution detection based on display capabilities
- Proper aspect ratio handling (16:9, 16:10, 4:3, ultrawide)
- Multiple monitor support with display selection
- Safe resolution fallback for invalid configurations
Window Mode System
- Fullscreen exclusive mode
- Borderless windowed mode
- Windowed mode with resizable option
- Remember last used window state
Scaling & Accessibility
- DPI-aware scaling for high-resolution displays
- UI scaling options (100%, 125%, 150%, 200%)
- Text scaling for readability
- Maintain crisp pixel art rendering regardless of scale
Performance Optimization
- Resolution-based quality presets
- Automatic performance scaling based on target resolution
- Efficient viewport management for different resolutions
- Memory usage optimization for higher resolutions
User Experience
- Real-time preview of resolution changes
- Settings persistence with validation
- Graceful handling of external resolution changes
- "Recommended" resolution detection based on display
Technical Implementation
Godot Architecture Considerations
Project Settings Configuration
# Display settings to configure
- window/size/viewport_width
- window/size/viewport_height
- window/size/resizable
- window/size/borderless
- window/dpi/allow_hidpi
- rendering/viewport/render_scaleResolution Manager Singleton
# Core system to implement
extends Node
class_name ResolutionManager
signal resolution_changed(new_size: Vector2i)
signal window_mode_changed(mode: WindowMode)
enum WindowMode { WINDOWED, BORDERLESS, FULLSCREEN }
func get_supported_resolutions() -> Array[Vector2i]
func set_resolution(size: Vector2i, mode: WindowMode) -> bool
func get_recommended_resolution() -> Vector2i
func apply_settings_with_confirmation() -> voidUI Scaling System
# Handle different UI scaling approaches
- Canvas layer scaling for UI elements
- Viewport stretch modes (2d, viewport, disabled)
- Theme scaling for consistent text/UI sizes
- Particle system scaling adjustmentsIntegration Points
- Settings menu UI implementation
- Save/load settings persistence
- Performance manager integration
- Audio system considerations for different window modes
- Input handling across resolution changes
Testing Requirements
- Resolution switching without crashes
- UI elements remain functional at all supported resolutions
- Performance testing across resolution range
- Multi-monitor configuration testing
- Settings persistence validation
- Edge case handling (invalid resolutions, display disconnection)
Success Criteria
- Functionality: Players can select and apply different resolutions seamlessly
- Compatibility: Works correctly across common display configurations
- Performance: No significant performance impact from resolution management
- Usability: Intuitive interface with safe fallbacks
- Quality: Maintains visual fidelity at different scales
- Persistence: Settings saved and restored correctly
Priority
High Priority: Basic resolution selection (dropdown with common presets)
Medium Priority: Window modes and aspect ratio handling
Low Priority: Advanced scaling and multi-monitor support
Dependencies
- Settings system implementation
- UI framework for settings menu
- Save/load system for persistence
This feature will significantly improve accessibility and user experience by supporting diverse display configurations and user preferences.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request