i

All the code for this can be found on GitHub.

You will notice that all the 3d rendering is done through a 3d library called zengine.js which you can find here on my GitHub. This is my most ambitious use of that library which was written from complete scratch, bar the built-in trig functions and the ability to draw shapes to a 2d Canvas.

In addition the code uses an adapted version of my perlin.js library. Which I modified so that each chunk is seeded based off a deterministic function of the base world seed - so the world is infinitely large, but only requires a couple of bytes to store (the seed integer).

In terms of the multiplayer aspect, I have a Google VM Instance which, among other things, hosts a websocket server that you are (hopefully) currently connected to. I say hopefully since it is most likely not running right now (sorry), but to pre-empt the game breaking, I have encorporated error detection and if there is a server error, a red message should flash up and you can enter offline mode.

Finally, bare in mind that this is currently a work in progress, so:

Enjoy! (and if you do, please star me on GitHub)