A game development framework that provides basic tooling and a content authoring workflow. Minimum has easy-to-use extension points for integrating custom and 3rd-party libraries with your game logic.
This library is best suited for use by those who want to start with something thin and bring their own tech to put on top of it. It's your very own build-a-game-engine toolkit.
Currently requires Rust Beta channel. Stable will be supported in 1.38, schedule for release on 2019-09-26.
- The base/ECS is very portable. It's pure rust and has few upstream dependencies.
no_std(for this portion of the library only) builds but is not yet tested. To use
no_std, disable default features and don't use feature
- The demo builds for Windows/MacOS/Linux. Only being tested on MacOS for now. Outside testing and pull requests to improve support for other platforms very welcome!
The no-editor build of this library could realistically support embedded (
no_std), mobile, PC, and web platforms
because this avoids coupling to a renderer/windowing system. For the time being, the focus is on PC.
Editing functionality is currently limited, but the core loop is implemented:
- Entities with components can be loaded from file and saved to file
- Entities can be selected and their components can be edited (at design-time and run-time)
- Entities and components can be added or removed
- Entities can be moved, scaled, and rotated
- Can start/stop/reset the simulation
- For a mature ecs, I suggest looking at
specs. (In fact some of this library is quite similar to shred!)
- For more batteries-included solutions in rust, I would look at
- I expect a typical usecase would be to combine this framework with another "engine" that is focused more on functionality that tooling/workflow.
- /minimum - A lightweight ECS and update loop system
- /minimum-framework - More opinionated framework built on top of the ECS to provide a good tooling and workflow baseline
- /minimum-demo - An example project that demonstrates integrating minimum with several popular libraries from within the rust ecosystem
- /minimum-examples - A small collection of sample code to demonstrate usage
Running the Demo
/minimum-demo shows a more realistic integration of these utilities with other popular
imgui. It would be a reasonable template for something
small, and it shows how the pieces provided could be fit together for something bigger.
Over time, the functionality that isn't coupled to these libraries will move to /minimum-framework
To run the demo:
- Working directory must be
editorfeature (will likely rename to tools later...) enables an editor. It is ON by default since this is a demo!
vulkanfeature when using cargo commands
cargo run --features="metal editor"
In no particular order:
- Another pass on the tasking/dispatching logic
- Core editing functionality: copy/paste, undo/redo, parenting, etc.
- Extract editing functionality out of the demo to a new sub-crate
- Continue building the demo to do more interesting physics, rendering, and gameplay logic
- API-level and conceptual-level documentation
All contributions are assumed to be dual-licensed under MIT/Apache-2.
Distributed under the terms of both the MIT license and the Apache License (Version 2.0).
The demo project uses several fonts under their own licenses