# Roadmap

## Global Todo

* [ ] [SFML module](#sfml-module) (Working on it)
* [ ] SDL module
* [ ] [Liblapin module](#liblapin-module)
* [ ] Allegro5 module
* [ ] Compatibility with EMSCRIPTEN (with sdl2 for example)
* [ ] Ogre3d module
* [ ] bgfx 2d module
* [ ] bgfx 3d module
* [ ] box2d module (Working on it)
* [ ] bullet3d module
* [ ] imgui module
* [ ] SQL storage / Database management for specific games
* [x] JSON helper module (nlohmann Json)
* [ ] XML helper module (pugi)
* [ ] Yaml helper module
* [ ] INI helper module
* [ ] editor with IMGUI
* [x] [ecs module](https://shiva.gitbook.io/project/shiva/modules/shiva-ecs)
* [x] [static reflection module](https://shiva.gitbook.io/project/shiva/modules/shiva-reflection)
* [x] [magic enum module](https://shiva.gitbook.io/project/shiva/modules/shiva-enums)
* [x] [Add a plugins\_registry](https://shiva.gitbook.io/project/modules/shiva-dll#plugins_registry)
* [x] [Add lua scripting](https://shiva.gitbook.io/project/shiva/scripting/lua)
* [ ] Add python scripting
* [ ] Add chaiscript scripting
* [x] [Write a preprocessor module](https://shiva.gitbook.io/project/shiva/modules/shiva-pp)
* [x] [Write a centralized error manager](https://shiva.gitbook.io/project/shiva/modules/shiva-error)
* [x] [Add a timer/fps class](https://shiva.gitbook.io/project/shiva/modules/shiva-timer)
* [x] [Write a world module](https://shiva.gitbook.io/project/shiva/modules/shiva-world)
* [x] [Write a scene manager module (in Lua)](https://shiva.gitbook.io/project/shiva/modules/shiva-scenes)
* [x] [Using systems as plugin (c++)](https://shiva.gitbook.io/project/shiva/tutorial/how-to-create-a-system-plugin)
* [x] [Using systems as script (lua / python)](https://shiva.gitbook.io/project/shiva/tutorial/how-to-create-a-scripted-system)
* [x] [Using system as header-only c++](https://shiva.gitbook.io/project/tutorial/quickstart#getting-started)
* [x] Using scenes as script
* [ ] Input Module
* [ ] Write a Facebook API in lua
* [ ] Write a Steam API in lua
* [ ] Network Module
* [ ] CLI Tooling for project management
* [ ] Write more tutorials
* [ ] Write an emulator with shiva

## SFML Module

* [x] graphical plugin (not finish yet but usable)
* [x] animation plugin (not finish yet but usable)
* [ ] audio plugin
* [ ] video plugin (sfeMovie)
* [ ] serialize/deserialize/save plugin
* [x] resources plugin (usable, improvable)

## Input Module

* [x] Keyboard
* [ ] Mouse
* [ ] Joysticks
* [ ] Touchpad

## Liblapin Module

* [ ] graphical plugin
* [ ] animation plugin
* [ ] audio plugin
* [ ] video plugin
* [ ] resource plugin

## CLI Tooling for project management

* [x] Add prologue
* [ ] Add build scripts
* [ ] Add more game\_templates
* [ ] Improve the code

## Box2D Module

* [ ] json configuration
* [x] contact listener
