12 releases (7 breaking)
0.8.0 | Jul 9, 2024 |
---|---|
0.7.1 | Jan 27, 2024 |
0.6.0 | Jul 30, 2023 |
0.5.0 | Dec 29, 2022 |
0.1.2 | Sep 6, 2020 |
#7 in Rendering engine
43 downloads per month
Used in 7 crates
2MB
37K
SLoC
All is Cubes
A “voxel game” engine where each block is made out of smaller blocks (one level of recursion).
This is a work in progress; it's my very first project written in Rust, and I am aiming to duplicate and expand on my previous work Cubes. Currently implemented:
- Core data model of Blocks and Spaces (subject to change).
- Rendering using a CPU-only raytracer. (See
all-is-cubes-gpu
for GPU.) - 2D drawing into the voxel space, built on top of the embedded-graphics library.
For more information on the capabilities, limitations, and requirements of the library, please consult the crate documentation.
This library is intended to be somewhat reusable for working with block/voxel data, but it does not currently have a particularly stable interface as I am still changing it as requirements are discovered.
Related crates
all-is-cubes-mesh
generates triangle meshes fromall-is-cubes
voxel data.all-is-cubes-gpu
renders using GPU functionality rather than CPU-only.all-is-cubes-ui
contains a widget framework and basic user interface functions (not platform-specific)all-is-cubes-content
contains procedural generation and data for concrete “game content” as opposed to the engine.all-is-cubes-port
provides import and export to various formats.all-is-cubes-desktop
is a binary you can build and run to “play the game”.all-is-cubes-server
is to be a network server for the game, but right now only contains a preconfigured HTTP static file server for the web version of the “game”.
“The game” is in quotes because all you can do for the moment is place and remove blocks and look at the scenery.
Stability and versioning
All is Cubes is an ambitious hobby project; many features necessary to be “complete” are not yet implemented, and implementing them will require incompatible changes. During development, library APIs change regularly, and the version numbering will mark these versions as incompatible (e.g. 0.3 to 0.4); there will be no 1.0 version until I am confident that future versions will at least have save data compatibility. However, I have made some attempt to document API elements that are more likely to change in future versions.
MSRV policy: The current release accurately documents its rust-version
in Cargo.toml
.
Future releases will typically require the current stable Rust version as of that release.
License
All source code and other materials are Copyright © 2020-2024 Kevin Reid, and 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.
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.
Dependencies
~9–41MB
~634K SLoC