https://github.com/andyhall/noa
Experimental voxel game engine.
https://github.com/andyhall/noa
game-engine js-game voxel
Last synced: 2 months ago
JSON representation
Experimental voxel game engine.
- Host: GitHub
- URL: https://github.com/andyhall/noa
- Owner: fenomas
- License: mit
- Created: 2015-02-11T07:07:30.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2023-07-31T14:55:51.000Z (almost 2 years ago)
- Last Synced: 2024-10-15T04:33:15.120Z (7 months ago)
- Topics: game-engine, js-game, voxel
- Language: JavaScript
- Size: 5.9 MB
- Stars: 615
- Watchers: 24
- Forks: 89
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# noa-engine
An experimental voxel game engine.
Some projects using `noa`:
* [bloxd.io](https://bloxd.io/) - multiplayer voxel games with editable worlds, by [Arthur](https://github.com/MCArth)
* [Minecraft Classic](https://classic.minecraft.net/) - from Mojang (I'm as surprised as you are)
* [VoxelSrv](https://github.com/Patbox/voxelsrv) - a voxel game inspired by Minecraft, by [patbox](https://github.com/Patbox)
* [CityCraft.io](https://citycraft.io/) - multiplayer voxel cities, by [raoneel](https://github.com/raoneel)
* [OPCraft](https://github.com/latticexyz/opcraft) - a voxel game running on Ethereum smart contracts, by [Lattice](https://github.com/latticexyz)
* [noa-examples](https://github.com/fenomas/noa-examples) - starter repo with minimal hello-world and testbed games----
## Usage
The easiest way to start building a game with `noa` is to clone the
[examples](https://github.com/fenomas/noa-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.
The example repo also shows the intended way to import noa's
peer dependencies, test a world, build for production, etc.## Docs
See the [API reference](https://fenomas.github.io/noa/API/)
for engine classes and methods.Documentation PRs are welcome! See the source for details, API docs
are generated automatically via `npm run docs`.## Status, contributing, etc.
This engine is under active development and contributions are welcome.
Please open a discussion issue before submitting large changes.
**PRs should be sent against the `develop` branch!**Code style/formatting are set up with config files and dev dependencies,
if you use VSCode most of it should work automatically. If you send PRs,
please try to be sorta-kinda consistent with what's already there.## Change logs
See [history.md](docs/history.md) for full changes and migration for each version.
Recent changes:
* `v0.33`:
* Much improved [API docs](https://fenomas.github.io/noa/API/)
* Terrain now supports texture atlases! See `registry.registerMaterial`.
* Added a fast way to specify that a worldgen chunk is entirely air/dirt/etc.
* Modernized keybinds to use [KeyboardEvent.code](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code) strings, and changed several binding state properties
* Bunch of internal improvements to support shadows - see [examples](https://github.com/fenomas/noa-examples)* `v0.32`: Fixes npm versioning issue - no code changes.
* `v0.31`:
* Change the speed of the world! See `noa.timeScale`
* Now possible to control chunk processing order: `noa.world.chunkSortingDistFn`
* Much improved type exports and [API docs](https://fenomas.github.io/noa/API/)
* `v0.30`:
* Engine now a named export, use `import {Engine} from 'noa-engine'`
* many performance and size optimizations
* now generates proper type declarations and API references!
* can now configure separate vert/horiz values for chunk load distance
* core option `tickRate` is now in **ticks per second**, not ms per tick
* adds several init options, e.g. `maxRenderRate`, `stickyFullscreen`
* `v0.29`:
* maximum voxel ID is now `65535`
* adds option `worldGenWhilePaused`
* adds option `manuallyControlChunkLoading` and related APIs
* performance and bug fixes----
## Credits
Made with 🍺 by [@fenomas](https://fenomas.com), license is [MIT](LICENSE.txt).
Uses [Babylon.js](https://www.babylonjs.com/) for 3D rendering.