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

35 downloads per month
Used in 7 crates

MIT/Apache

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.

  • all-is-cubes-mesh generates triangle meshes from all-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

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–40MB
~597K SLoC