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.
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 with undo support
- Can start/stop/reset the simulation
Youtube Video:
This project was recently re-worked to adopt atelier-assets for the content pipeline and legion for the ECS. The two are tightly integrated to produce a prefab system and an easy-to-extend content-authoring workflow.
There are a few examples and some documentation. The framework is - by design - a blank slate for end-users to extend.
I'm currently investigating rendering options in Rust so there will be a hiatus, similar to between 0.1 and 0.2. I intend to maintain CI support and answer issues/PRs.
Please see the docs!
Game engines are usually huge - and this poses difficulty for OSS projects. It's very difficult for a large OSS project to have a unified focus and vision. This is especially true in games where potential contributors may want very different things out of the engine that they are trying to collaborate on.
By reducing the eponymous "engine" to a kernel, we can push these decisions further down the chain. This allows us to share both the kernel as well as the upstream integrations - since those are opt-in. There are other benefits too - it eases distributed development by allowing many people to own small pieces. This flexibility also means that contributors can choose the work that fits their interest and skill set.
To achieve interoperability, we will need a common protocol for these integrations to work well together. So we will standardize on a common base set of components, resources, and systems. For example, a common transform component, or a common way to represent input state (it would be up to the downstream user to pick an input/windowing implementation that populates this.)
For more batteries-included solutions in rust, I would look at amethyst, coffee, or ggez. The main difference is that these libraries all tend to take over your game loop or assume you will use a particular windowing or rendering solution.
minimum currently requires that you bring your own renderer (including support for imgui.) However, this also gives you the flexibility to choose your own solutions. The hope going forward is that the "kernel" can remain decoupled from rendering so that end-users can pick a solution that fits their game best.
/contrib - Holds integrations for upstream libraries (such as nphysics, sdl2, and winit) /docs - Some concept-level documentation /examples
- example-sdl2 - A working implementation using SDL2 for windowing
- example-winit - A working implementation using winit for windowing
- example-shared - Shared code between the examples that isn't useful outside the examples
- tutorial/examples - Completed code samples from the tutorial in docs /minimum-editor - Editing logic that you do not need to ship in your game /minimum-game - Common protocol for game-level logic that would ship /minimum-kernel - Legion, atelier, and prefab integration /minimum-math - Some wrappers around glam math types to make them friendly with inspection /minimum-transform - Protocol/structure that defines placement of objects
git clone https://github.com/aclysma/minimum.git
cd minimum
cd examples
cargo run --package example-winit
Or alternatively cargo run --package example-sdl2
if you'd like to run the same demo using SDL2.
TBD.. I plan to dogfood this for personal projects to help find gaps in needed functionality.
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
The fonts directory contains several fonts under their own licenses:
- Feather, MIT
- Material Design Icons, SIL OFL 1.1
- FontAwesome 4.7.0, available under SIL OFL 1.1
mplus-1p-regular.ttf
, available under its own license.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
See LICENSE-APACHE and LICENSE-MIT.