I’ve been working on this for quite some time, and I decided that the 0.3 release was a good time to go back and finally finish it up. Here’s a video of MV3D:
Note that it shows features that are not in V0.3, but are in trunk (or have been temporarily disabled like the in game editor).
So, I was browsing around on some forums for an MMORPG “construction kit” and saw someone from that company making a post about how they currently don’t support collision detection at all on the server, and they don’t have any plans for it other than some very basic ability for game designers to check if two bounding boxes are intersecting. That wasn’t planned until at least two releases out, and this product is >1.0. Anyway, from what the guy said, it sounded like they did all their collision detection on the client. What an amazing idea! Surely no one would ever want to make a client hack to let you walk through walls. Inconceivable! Just makes me wonder what other decisions they’ve passed off to the client.
I’m not sure if I ever mentioned it here, but Second Life does physics / collisions similar to how MV3D does. The physics engine runs on the server (though possibly not on the client, which accounts for some amount of chunkiness, I’d guess).
In other news, here’s a screenshot of trees that I’ve put back into MV3D. This time in a non hacky manner, and you can’t walk through them on the client OR the server.
Up next is putting grass back in. Hopefully it won’t slow everything down this time.
beat me to it, but check out MV3D’s website (or this url if your DNS server is slow).
I spent the last few days getting Trac upgraded and installing a bunch of plugins. I also did some CSS customizing. Then I installed phpBB and decided not to bring over the old message board content. It’s all really out of date at this point, so better to start anew. And ergh, now I have to go and mess with the phpBB templates to make it match the rest of the site. Not looking forward to that (I spent way too much time on the Trac CSS).
Anyway, it’s official, MV3D Open Source Release, version 0.30. Get it while it’s hot. Or something.
I’m just about ready for the first open source MV3D release. I have a few decisions to make about the website, then I think it would be helpful to have up to date documentation that at least gets people started with the server and client.
There’s still one bug ticket left for the release, but I haven’t been able to reproduce the issue, so I’ll probably make the release without fixing it. That’s not to say that there aren’t any other bugs. I’m sure there are tons! And to repeat myself, there’s not even the remotest hint of a game here. This is just the simulation framework.
While I was doing some testing this weekend, I had up to 900 terrain chunks and 2000 cubes going. One terrain chunk is 1000×1000 meters(ish). Suffice it to say, I didn’t bother walking from one side to the other since it would have taken me too long. Performance is pretty good. Building terrains on the client side slows things down a bit. I’m debating between using libnoise or using a cooperator to spread out the work a bit. By the way, with 900 terrain chunks, the server was clocking in at just under 1gb of RAM use on Windows.
One of the great improvements in the last couple of weeks is that objects on the client wake up immediately as soon as they need to now. Before, they wouldn’t wake up until the next time the server considered them (which with 900 terrain objects and 2000 cubes could be a while since it only thinks about maybe 20 non-active items per second).
I did have to track down an annoying invalid pointer reference today. Something in Ogre was storing a regular pointer instead of a smart pointer to a mesh, so when the mesh was destroyed, that pointer was invalid.
I’m still debating about pointing www.mv3d.com to trac.mv3d.com. And I just realized I still need to open some ports to allow the login server to be reachable outside my firewall.
That’s all for now. Hopefully a release will happen this week!
So, I’ve been tracking down a “bug” in MV3D where the PC’s movement on the client is at a completely different speed than on the server. I’ve seen the bug for quite some time now, and it makes moving around in game relatively hard and annoying. I just ran a test that printed something every time the physics was calculated. It should have happened 20x per second. According to the logfile (which records the seconds in addition to my printout), it was run 20x per second. Unfortunately, 1 second on the virtual machine it was running on lasted about 10 real seconds. No wonder it was screwed up.
Now, I’ve done a lot of work with VMWare and bitch-slapping its time keeping abilities into submission, but I’ve never seen it quite this bad. It seems I just may not be able to run a MV3D simulation server on a virtual machine. It could also be that VMWare doesn’t like my CPU very much as time sync issues come up a lot with it and dual core CPUs. Anyway, not a big deal. I don’t have to run the server on a vm. Just what’s annoying is that I lost a day or so of time to fixing the “bug”.
However, in trying to track it down, I did fix the problem with the sim server eating up all the CPU time. So, I guess it wasn’t totally unproductive.