Awesome
tusk
A game engine built on top of snõw (https://github.com/underscorediscovery/snow)
Documentation
tusk is my personal game engine using snõwkit. It takes on the same role as luxe but provides a more bare-bones rendering API and has a strict entity-component-system (ECS) architecture:
- entities are defined solely by the components that compose them
- components are data only
- processors ('systems') operate on entities and components appropriately
Since I think the term 'system' isn't quite right here (it implies more than what they are), in tusk I use the term 'processor'—processors process entities by examining and altering their components. I like this approach to ECS instead of the approach used by luxe and Unity (where components process themselves) as it provides a clean delineation between data and behaviour and allows more emergent behaviour for essentially free. It also allows defining games as data (provided the processors are defined in code) which enables rapid development and iteration.
The engine is still very much under development. Stay tuned for samples!
API
Auto-generated up-to-date documentation can be accessed here: http://blazingmammothgames.github.io/tusk/
Planned Features
- Entity-Component-Processor Model
- Event System
- Macro-based automatic event routing for
Scene
class children - Macro-based automatic event routing for
Processor
class children
- Macro-based automatic event routing for
- Enhanced Logging
- Coloured browser console logs
- Coloured terminal logs for supported terminals
- Formatted file logs
- Log state (à la loguru)
- Macro-Based Profiling?
- Macro-Based Developer Console?
- Macro-Based Scene / Entity / Component inspector system (à la Unity)
- Macro-Based Game Saving / Loading
- Serialization
- Unserialization
- File saving
- File loading
- Flexible Rendering
- Material system
- Asynchronous File Loader
- Easy-to-use "loading" screen
- Optional (But Commonly Used) Libraries
- Thorough documentation
- Workable samples
- Think of more features!
Contributing
Issues, forks, and pull requests are gladly welcomed!