Amalgam Engine Roadmap
A high-level list of features that the engine will provide. Once they're all finished, the engine will be complete. Any further features will be provided as submodules instead of being integrated into the engine.
Join the Discord
Visit the Github repository
View the detailed Task Board
Color code:
- Not started
- Started
- Almost complete (Code review, bugfixing, etc)
- Complete
Project/Build System
- Project structure
- CMake structure
- Engine/Project split into separate repos
- Packaging (CMake install step)
- Project extensions for engine modules, engine hook architecture
- Logging
- Profiling (Tracy)
- Simulated client (for load testing)
Networking
- Basic networking (message framing, serialization, simple movement)
- Advanced networking (authoritative server, prediction, tick adjustments)
- Thread-safe message queue library
- Message creation ease-of-use improvements
- Data compression
- Network to Simulation data flow design
Simulation
- Movement
- Basic collision
- Loading sprite file, loading textures into asset cache
- Simulation to UI and Network data flow design
- Entity locator (spatial partitioning grid)
- Server-side client entity management
- Area of interest system (track what entities are within range of a given entity)
- Hardcoded role for each sprite layer (floor layer, wall layer, etc), optimize systems/tools for their relevant layers
- Dynamic objects, object interactions (including solution for adding logic to an object)
- NPCs (including solution for adding behavior to an NPC)
- Items, inventory
- Entity/item persistence (database)
- NPC dialogue scripting
- User-assignable key binding
Tile Map
- In-memory structure
- File format
- Loading, saving
- Live chunk streaming
- Live tile updating
- Terraforming (floor tile height)
- Multi-story building
- Client-side chunk caching
Build Mode
- Basic build mode (tile placement, layer selection)
- UI, data flow
- Click on sprite to select the tile it's in (instead of having to click directly on the tile)
- Basic tools (wall tool, floor tool)
- Place "Objects" instead of "Sprites" (contains all of the sprites for a single object)
- Object search
User Interface
- Basic classes (Component, Window with component tree, Screen with window tree)
- Event routing
- Window logic
- Spatial partitioning grid for hit detection acceleration
- Basic components (Text, Button, etc)
- UI to Simulation data flow design
- 9-slice component
- Multi-line text component
- Layout anchors (components can set an anchor or have no anchor)
- Global UI Scale setting, remove auto-scaling component logic
- Draggable, resizable window bar (optional flag)
- Resizable windows (optional flag)
- Support for non-16:9 resolutions
Sprite Editor
- Basic UI, sprite sheet importing, sprite array
- File saving, loading
- Sprite stage, properties window
- Bounding box gizmo
- Assign multiple (different facing) sprites to a single object
- Sprite tags (floor, wall, character, etc)
- Sheet/sprite/object organization refactor (more like Flash's library UI?)
- Property painting
Graphics
- Placeholder 2D graphics
- Isometric graphics
- Camera system
- Smooth zooming
- Animation
- Large sprite support (larger than 1 tile)
- Clothing system
Audio
- Music (single hardcoded file)
- Music track selection interface
- Sound effect interface, process for attaching sound effects to things and playing them
Text Chat
- Chat server, messages
- Client UI
User accounts
- Account server, account database
- Web API for account creation, deletion, logging in, forwarding to simulation server
- Basic account registration website template (html/css/js)