n00b question: overview of architecture/design?
#1
Hi all,
I'm pretty new to Cuberite and Minecraft servers in general. I was wondering, is there a good overview of Cuberite's design? Or even of Minecraft's multiplayer architecture? For example, is it fundamentally server-authoritative with some client-side prediction? How does Cuberite's code make sure to stay in sync with Minecraft updates, if it does some prediction?

I'm really just curious about all this stuff - cheers!

--Steve
Reply
Thanks given by:
#2
Hi!

We don't have a large overview of the complete architecture. We do have a document describing the world generator, but it's incomplete: http://cuberite.xoft.cz/docs/Generator.html
The Minecraft protocol is described here. If we need to dive deeper into the protocol to see what's actually being send @xoft created ProtoProxy.
Reply
Thanks given by:
#3
To answer your question about prediction:

The server has the final say, although the vanilla implementation may not check everything the client sends to it (hence flyhack, etc.). The client does some prediction, mainly to smooth out animations. Things like projectiles (arrows, dropped items), the animation of pistons moving blocks, sun/moon position, block breaking, particle effects. To maintain sync, there are various packets to update velocity, position or state, and Cuberite sends these occasionally (algorithm at https://github.com/cuberite/cuberite/blo....cpp#L1872).

Unfortunately since our physics simulation is basic at best, there's a lot of jittery movement under Cuberite because of prediction failures. We're, uh, working on that Wink
Reply
Thanks given by:
#4
Thanks for the detailed reply! So I guess you need to make sure your arrow physics match the clients?
Reply
Thanks given by:




Users browsing this thread: 3 Guest(s)