Files
Voile/TODO.md

2.8 KiB

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.