Voxel Engine in Multiplayer?
- by Oliver Schöning
This is a question more out of Interest for now, because I am not even near to the point that I could create this project at the moment.
I really like the progress on the Atomontage Engine. A Voxel engine that is WIP at the moment.
I would like to create a Voxel SERVER eventually. First in JavaScript (That's what I am learning right now) later perhaps in C++ for speed.
Remember, I am perfectly aware that this is very hard! This is a brainstorm for the next 10 years as for now.
What I would like to achieve one day is a Multiplayer Game in the Browser where the voxels positions are updated by XYZ input from the server. The Browser Does only 3 things: sending player input to the server, updating Voxel positions send from the server and rendering the world.
I imagine using something like the Three.js libary on the client side.
So that would be my programming dream right there... Now to something simpler for the near future.
Right now I am learning javascript.
And I am making games with Construct2. (A really cool JavaScript "game maker")
The plan is to create a 2D Voxel enviorment (Block Voxels) on the Socket.IO Server* and send the position of the Voxels and Players to the Client side which then positions the Voxel Blocks to the Server Output coordinates.
I think that is a bit more manageable then the other bigger idea. And also there should be no worries about speed with this type of project in JavaScript (I hope).
Extra Info:
*I am using nodejs (Without really knowing what it does besides making Socket.IO work)
So now some questions:
Is the "dream project" doable in JavaScript? Or is C++ just the best option because it does not take as long to be interpreted at run time like JavaScript?
What are the limitations? I can think of some:
Need of a Powerful server depending on how much information the server has to process.
Internet Speed; Sending the data of the Voxel positions to every player could add up being very high!
The browser FPS might go down quickly if rendering to many objects.
One way of fixing reducing the packages Could be to let the browser calculate some of the Voxel positions from Several Values. But that would slow down the Client side too.
What about the more achievable project?
I am almost 100% convinced that this is possible in JavaScript, and that there are several ways of doing this. This is just XY position Updating for now..
Hope this did make some sense.
Please comment if you got something to say :D