Skip to content
This repository has been archived by the owner on Oct 2, 2021. It is now read-only.
/ noa-engine Public archive
forked from fenomas/noa

Experimental voxel game engine.

License

Notifications You must be signed in to change notification settings

VoxelSrv/noa-engine

 
 

Repository files navigation

noa-engine

An experimental voxel game engine.

Some projects using noa:


Usage

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.

Size

Built in production mode, noa is around ~160kb unzipped and its peer dependency babylon.js is ~900kb. When bundled together and zipped they total ~250kb.

Docs

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!

Status, contributing, etc.

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. Personally, I edit in VSCode with the eslint extension, and use the built-in autoformatter. If you send PRs, please try to be sorta-kinda consistent with what's already there.

Change logs

See history.md for changes and migration info from each version.

Recent changes:

  • v0.30:
    • many performance optimizations
    • can now configure separate horizontal/vertical world sizes
    • core option tickRate is now in ticks per second, not ms per tick
    • core option stickyFullscreen added
    • adds noa.tickRate - read only
    • adds noa.maxRenderRate - read/write, set to 0 for no cap
    • more specific babylon imports, for better tree-shaking
  • v0.29:
    • maximum voxel ID is now 65535
    • adds option worldGenWhilePaused
    • adds option manuallyControlChunkLoading and related APIs
    • performance and bug fixes
  • 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!)
  • v0.27: adds world origin rebasing - see positions.md

Credits

Made with 🍺 by Andy Hall, license is MIT.

Uses Babylon.js for 3D rendering.

About

Experimental voxel game engine.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 99.9%
  • Handlebars 0.1%