# XVoxel-ASync

A voxel game based on OpenVoxelProject, it is able to run fully in a web browser.

## Philosophy

My goal for this game is for it to be light, extendable, pluggable and easy to mod without too much nonsense.
- Light, unlike heavy as other games
- Extendable, even its core
- Pluggable, so you can add your own additions
- Easy to mod, with an upcoming modding interface made to be easy and efficient

## Roadmap

- [x] Basic menu
- [x] 3D rendering
- [ ] Resources
	- [ ] Textures (partially done)
	- [ ] Sounds
	- [ ] Models (as JSON)
- [ ] Physics (have to decide which engine to use)
- [ ] Settings
	- [ ] Video
		- [x] Field of View
		- [ ] Lighting
	- [ ] Audio
		- [ ] Sources
		- [ ] Channels (Mono, Stereo or Surround if supported)
	- [ ] Input (keyboard/mouse, touchscreen and gamepad)
		- [ ] Sensitivity
		- [ ] Keys
- [ ] Networking
	- [x] Loading worlds
	- [ ] Saving worlds (implemented but unavailable in the menu)
	- [ ] Multiplayer

## Acknowledgements

The libraries cited below are included in the "lib" folder for convenience, if you want your library's files removed from my project's, please kindly tell me via [e-mail](mailto:x3f200c@protonmail.com) or using any other contact information that can be found on [my main website](https://x3f200c.net/).
- [Three.JS](https://github.com/mrdoob/three.js) under the MIT license, used for rendering worlds (and its GLTF loader for future work)
- [Cannon ES](https://github.com/pmndrs/cannon-es) also under the MIT license, not used yet, will consider switching to it in order to use less WebAssembly and more vanilla JavaScript
- [Ammo.JS](https://github.com/kripken/ammo.js) under the ZLib license, used to simulate physics in worlds
- [FFlate](https://github.com/101arrowz/fflate) under the MIT license too, used to compress and decompress ZIP files (saving and loading worlds)
- [Matrix JS SDK](https://github.com/matrix-org/matrix-js-sdk) under the Apache 2.0 license, used for networking (multiplayer, uploading, downloading worlds from the Matrix network)
- [PeerJS](https://github.com/peers/peerjs) under the MIT license, will be used for alternative networking
- [Olm](https://gitlab.matrix.org/matrix-org/olm) under the Apache 2.0 license too, used for encryption support in networking
- Improved Perlin noise (I forgot where I found it and what its license was)
