# 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 - Basic input elements (button, text field, toggle). - Styling.