Skip to content

Latest commit

 

History

History
184 lines (176 loc) · 5.06 KB

TODO.md

File metadata and controls

184 lines (176 loc) · 5.06 KB

Kohi Engine Roadmap

The items in this list are not in any particular order. This list will be updated occasionally as development progresses.

Engine general:

  • platform layer (Windows, Linux, macOS)
    • UTF-8/Wide character handling for Win32 windowing.
    • Wayland support
  • event system
  • clock
  • testing framework
  • math library (vector math, etc)
  • Memory system
  • Generic sorting function/library.
  • Allocators:
    • linear allocator
    • dynamic allocator (variable-size allocations)
    • pool allocator
  • Systems manager
  • Resource system
  • Resource Loaders:
    • binary
    • text
    • image
    • material
    • bitmap font
    • system font
    • scene
  • mobile runtime support (Android, iOS)
  • SIMD
  • Containers:
    • stack
    • hashtable
    • freelist
    • dynamic arrays
    • ring buffer
    • queue
    • pool
    • bst
  • quadtrees/octrees
  • Threads
  • Job system
    • Job dependencies
    • Job semaphores/signaling
  • ThreadPools
  • Multi-threaded logger
  • Textures
    • binary file format (.kbt)
  • Renderable (writeable) textures
  • Static geometry
  • Materials
  • billboards
  • particles
  • Input:
    • desktop
    • touch
    • gamepad
    • keymaps/keybindings
  • Conosole
    • Console consumer interface
    • Logger as consumer
    • Debug console as consumer
    • kvars (console variables)
    • Console commands
  • Application-level configuration
  • high-level string structure library (not c-strings)
  • resource hot reloading
  • prefabs
  • Simple Scenes
    • Base implementation
    • Load from file
    • Save to file
  • Renderer System (front-end/backend plugin architecture)
  • Audio System (front-end)
  • Physics System (front-end)
  • networking
  • profiling
  • timeline system
  • skeletal animation system
  • skybox
  • skysphere (i.e dynamic day/night cycles)
  • water plane
  • Raycasting
  • Object picking
    • Pixel-perfect picking
    • Raycast picking
  • Gizmo (in-world object manipulation)
  • Viewports
  • terrain
    • heightmap-based
    • pixel picking
    • raycast picking
    • chunking/culling
    • LOD/tessellation
    • holes
    • collision
  • volumes
    • visibility/occlusion
    • triggers
    • physics volumes
    • weather
  • Multi-window applications

Renderer:

  • geometry generation (2d and 3d, e.g. cube, cylinder, etc.)
  • advanced materials (WIP)
  • PBR Lighting model
  • batch rendering (2d and 3d)
  • instanced rendering
  • shadow maps
    • PCF
    • cascading shadow maps
  • texture mipmapping
  • Specular maps (NOTE: removed in favour of PBR)
  • Normal maps
  • Phong Lighting model (NOTE: removed in favour of PBR)
  • Multiple/configurable renderpass support.
  • Rendergraph
    • Linear processing
    • Rendergraph Pass Dependencies/auto-resolution
    • Multithreading/waiting/signaling
  • Forward rendering
  • Deferred rendering
  • Forward+ rendering
  • Compute Shader support (frontend)

Plugins:

  • ECS (Entity Component System)
  • Audio (OpenAL plugin)
  • Vulkan Renderer Plugin (WIP)
    • multithreading
      • texture data upload
      • mesh data upload
    • pipeline statistic querying
    • compute support
  • Direct3D Renderer Plugin
    • multithreading
  • Metal Renderer Plugin
  • OpenGL Renderer Plugin

Standard UI: (separated section because number of controls)

  • Standard UI system
  • Layering
  • UI file format
  • Load/Save UIs
  • UI Editor (as a plugin to the editor)
  • control focus (tab order?)
  • docking
  • drag and drop support
  • UI Controls (one of the few engine-level areas that uses OOP):
    • Base control - all controls come from this
    • panel
    • image box
    • viewport control (world/scenes will be switched to use these as render targets)
    • rich text control (system text w/ multicolour, bold/italic, etc. and bitmap text with multicolour only)
    • button
    • checkbox
    • radio buttons
    • tabs
    • windows/modals (complete with resize, min/max/restore, open/close, etc.)
    • resizable multi-panels
    • scrollbar
    • scroll container
    • textbox/textarea
    • In-game debug console

Editor

  • Editor application and 'runtime' executable
    • World editor
    • UI editor
    • editor logic library (dll/.so) hot reload
  • Move .obj, .mtl import logic to editor (output to binary .ksm format).
  • Move texture import logic to editor (output to binary .kbt format).
  • DDS/KTX texture format imports
  • FBX model imports

Other items:

  • Auto-Generated API documentation
  • Documentation
  • Continuous Integration
  • Add git tags to mark version releases (travisvroman#174)
  • Nix build compatability (travisvroman#175)

Back to readme