89 lines
3.1 KiB
Markdown
89 lines
3.1 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
|
|
|
|
## UI
|
|
|
|
- ~~Layout~~
|
|
- ~~Containers~~
|
|
- ~~VerticalContainer~~
|
|
- ~~HorizontalContainer~~
|
|
- ~~GridContainer~~
|
|
- ~~FlexContainer~~
|
|
- ~~Positioning (anchors)~~
|
|
- ~~Move layouting to Render instead of Update, use Update for input.~~
|
|
- Input propagation
|
|
- Use GridSet to efficiently query inputtable UI elements.
|
|
- Add element focus logic, make them focusable with action inputs.
|
|
- Basic input elements (button, text field, toggle).
|
|
- Styling
|
|
- Add style settings for UI panels (for buttons, labels, etc.).
|
|
- Find a way to reference external assets in the style (fonts, textures).
|
|
- Create a default style for widgets. |