Files
Voile/TODO.md
2025-06-29 19:39:02 +02:00

105 lines
3.3 KiB
Markdown

# Voile MVP
## Bugfixes
- ActionJustPressed and KeyboardKeyJustPressed don't detect inputs consistently.
- **Solution**: This is a problem related to custom frame pacing for fixed timestep. Raylib polls input in BeginFrame, which means certain functions related to JustPressed* may work incorrectly when polled in a separate timestep. This can be fixed if the entire input system will be moved to SDL or with a custom render + input backend altogether.
- ~~Fix any remaining bugs with anchor positioning system.~~
- ~~Containers don't position their chilren correctly when using anchors and adding/removing them.~~
## Core
- ~~Add and implement interfaces for systems (ISystem, IUpdatableSystem, etc.)~~
- ~~Minimize amount of possible null references.~~
- ~~TextDataResource providing a convenient wrapper around TOML data files.~~
- ~~Add documentation for common classes.~~
- ~~Hot reloading of resources.~~
- Separate render and update thread.
## I/O
- ~~Use GUIDs and string ID maps for fetching resources instead of string IDs alone.~~
- ~~Reimplement unloading.~~
- Finalize ResourceManager and ResourceLoader APIs for 1.0.
- Add async API for ResourceManager.
- ~~Virtual file system.~~
- Custom PAK format using the VFS implementation.
- (stretch goal) Streamed resource loading.
## Serialization
- Serialize attribute.
- Add automatic serialization of resources through source generation and System.Text.Json.
- Make sure this serialization system works well with CLR and NativeAOT.
- ~~Provide means for fetching key/value configuration (INI? TOML?)~~
- Expose some sort of ConfigFile class for safe key/value configuration fetching.
## Rendering
- ~~API for drawing textured quads~~
- ~~Camera API~~
- Arbitrary mesh rendering API.
- Create WebGPU renderer (StandardRenderSystem)
## Audio
- Use SoLoud as a default sound engine.
- Integrate FMOD.
## Misc
- ~~Asset manager~~
- ~~Separate engine and game into separate projects~~
- ~~Particle system 2.0~~
- ~~Reduce the size of Particle struct by infering most parameters through lifetime.~~
- ~~Reduce cache misses by utilizing SoA.~~
- ~~SIMD acceleration.~~
- ~~Creating and removing emitters.~~
## SceneGraph module
- Full overhaul using Entity Component architecture (not to be mistaken with ECS).
- Layers (sorting mechanism)
- Save/load scenes from file
## Input
- ~~Action system~~
- Nicer input mapping API using code.
- Make action system use an InputMap resource instead.
- Gamepad support
## Diagnostics
- Implement Profiler class.
- Generate a Speedscope report.
- Collect reports for systems
- Game
- Render
- Audio
- ResourceManager
- UI
- Particles
## UI
- ~~Layout~~
- ~~Containers~~
- ~~VerticalContainer~~
- ~~HorizontalContainer~~
- ~~GridContainer~~
- ~~FlexContainer~~
- ~~Positioning (anchors)~~
- ~~Move layouting to Render instead of Update, use Update for input.~~
- Input propagation
- ~~Pass input to widgets.~~
- Add element focus logic, make them focusable with action inputs.
- Basic input elements (~~button~~, text field, toggle).
- Styling
- ~~Style sheet~~
- ~~Add style settings for UI panels (for buttons, labels, etc.).~~
- Parse StyleSheet from TOML file.
- Animated styles
- Find a way to reference external assets in the style (fonts, textures).
- Create a default style for widgets.