MV3D 0.60 Released!

SirGolan

07-08-2011 19:43:52

We are pleased to announce the release of MV3D version 0.60! This release focused on scalability of worlds and includes support for splitting a single area across multiple server processes with automatic load balancing and redundancy. Areas can now be connected together using gateways to build worlds limited in size only by the amount of available hardware. The Overseer Cluster Management tool was upgraded in order to better handle many processes across multiple physical servers. Camera controls across all content tools have been unified.

MV3D is an open source virtual world and multiplayer game framework written in Python. It was designed with scalability in mind and is able to distribute a world across as many servers as needed while dynamically balancing the load. The simulation framework is not specifically slanted towards any one genre of online game, and can just as easily be used for a space game as a fantasy setting. Objects on an MV3D server are simulated using the ODE physics engine. A single server can host thousands of simulated objects. MV3D can use either Python-Ogre or Panda3D on the client for visuals.

For more information on MV3D and this or future releases, please visit the website. The full release notes for version 0.6 are available online as well. For further inquiries, feel free to stop by our IRC channel on irc.freenode.net #MV3D.

Video and screenshots of our new Demo World, the Town of Wellston:
[flash=720,480]http://www.youtube.com/v/iZiKr0t1TqU?version=3[/flash]

Mohican

08-08-2011 13:23:39

Looks like you are making nice progress SirGolan!
But I am surprised that character motion is still jerky.

Fixing this is very easy!

Each client should send its input (forward,...) to the server.
The server then computes the position AND velocity of the characters, and send it to the clients.

On the client-side, use LERP to calculate the actual render position:
render_position = last_packet.position + (time_now - last_packet.time) * last_packet.velocity

SirGolan

08-08-2011 18:11:00

I am surprised that character motion is still jerky.

I'm surprised at that too. We changed how it works this release so that the client is completely responsible for your position, orientation, and velocity. It sends this up to the server and the server replicates it down to other clients as needed. Previously, the client sent the input to the server which then sent back position and velocity changes, which meant lag whenever you moved. The good thing is that now we know the jerky motion is 100% on the client. :) It's something we'll fix this release.

Thanks,

Mike

Mohican

09-08-2011 07:57:58

I am surprised that character motion is still jerky.
I'm surprised at that too. We changed how it works this release so that the client is completely responsible for your position, orientation, and velocity.


That's not a good idea, because in this case it is very easy to create client-side hacks.
All FPS/RPG games that I know of work on the input principle.

You just need to make sure that your client time frame is correctly referenced: clientTime = serverTime + ping/2

SirGolan

09-08-2011 17:39:03

That's not a good idea, because in this case it is very easy to create client-side hacks.

I totally agree in terms of an FPS or non massively multiplayer RPG. For an MMORPG, having the server do full physics simulation for all clients is prohibitively expensive in terms of CPU time, so they generally let the clients do that and then apply some basic validation on the server. True, if your validation isn't great, it can lead to some hacks like this:

http://www.youtube.com/watch?v=bZ3c8a6luJg

WoW didn't validate that you were standing on the ground, so you could hack your client to think you were standing on an invisible box and then appear to everyone else as walking on air.

I think the best answer for MV3D is to support both methods and let individual games choose what they'd want to use. I didn't remove the old code that did it the other way (other than the interpolation obviously not working right :) ), so supporting both probably wouldn't be too hard.

SirGolan

13-08-2011 18:15:39

The jerky player motion is fixed in trunk. It turned out that the player character's position was sometimes one frame out of sync with the camera. Anyway, movement is very smooth now.

Mike