An experimental voxel game engine.
Some projects using noa
:
- Minecraft Classic - official game from Mojang (I'm as surprised as you are)
- CityCraft.io - multiplayer voxel cities
- VoxelSrv - a voxel game inspired by Minecraft
- noa-examples - starter repo with minimal hello-world and testbed games
The easiest way to start building a game with noa
is to clone the examples repo and start hacking on the code there. The comments in the hello-world
example source walk through how to instantiate the engine, define world geometry, and so forth.
To hack on the noa
engine itself, you'll want to clone this repo alongside your game content, and make the latter depend on the former with a local file dependency (i.e. file:../noa
in package.json
). Note however that webpack is picky about this - see the examples readme for details.
See the API reference for an overview of engine classes and methods. Docs are evolving though, some details are only documented in source comments. Documentation PRs are welcome!
This library is under active development and contributions are welcome!
Please submit any PRs against the develop
branch, and for nontrivial new
features it's probably best to open a discussion issue first.
For code style/formatting, the repo includes config files for eslint and js-beautify, which are both dev dependencies. If you use VSCode for editing, here are the extensions I use to run them automatically: beautify, eslint.
See history.md for changes and migration info from each version.
Recent changes:
v0.29
:- maximum voxel ID is now
65535
- adds option
worldGenWhilePaused
- adds option
manuallyControlChunkLoading
and related APIs - performance and bug fixes
- maximum voxel ID is now
v0.28
:- improves swapping between world data sets (see
noa.worldName
). - Removes duplicated voxel padding in each chunk (this means world generation no longer needs to be deterministic!)
- improves swapping between world data sets (see
v0.27
: adds world origin rebasing - see positions.md
Made with 🍺 by Andy Hall, license is MIT.
Uses Babylon.js for 3D rendering.