We have the first official MV3D Game server running on what will be the alpha server (NightEyes). Unfortunately, there isn’t much to do on it yet. In fact, according to my specs on the initial Alpha Test, there won’t be much to do on the server at that point either. However, I will say that with the exception of terrain, the new version of MV3D is a lot further along than the old version. Go Python. I guess the old version could download assets automatically by http, but IIRC, that would crash your client about 6/10 times.
NightEyes will have a twin server probably called Nosy soon. Nosy will be the development and internal testing server while NightEyes will host the (hopefully) always running alpha/beta game instance.
What can you do on the server? Well, in the Linux client (there is no Windows client right now due to the bug in Ogre that still causes time to stop), you can connect (there is only one PC so far, so if multiple people log in, they get the same view– though yes, I have tested that). You can fly around and watch the robots wobble on the floor because the physics engine isn’t yet disabling objects that aren’t moving. Since real time physics engines do not simulate certain types of friction and stuff, objects have a tendency to wobble after they fall to the ground instead of completely settling down. Oh yeah, you can headbutt the robots and make them fall over. I have yet to get the domino effect on them since when you headbutt them, your view goes twirling off into space, so it’s hard to hit things just right.
The speed is pretty good. I haven’t tried with more than two clients logged in. The client doesn’t do any physics, so the objects only get updated when the server sends new positions along.
Meanwhile, I did run the server with up to 5000 objects on my desktop computer (P4 2.6ghz) and got 10 iterations per second with the loop that updates object positions for clients turned off. Unfortunately, with it partly turned on, 1000 objects got the same performance. And fully turned on, only 500 objects. I have developed some optimizations that will hopefully fix this. Especially considering that the server really shouldn’t be thinking about any objects that aren’t moving at all and the majority of objects won’t be moving at the same time. Just players, NPCs, and anything that they are currently interacting with.
I still have to get my asynchronous database code working. It currently saves ok but doesn’t load because you need to give it info about every category of object you may have it load before loading them. So I’m working on a way to fix that. (It requires a constructor for each class for those in the know) I actually just finished the testing on the fix, but haven’t integrated it into the database code at all.
I came up with a description of the features that need to be in the alpha test for it to be considered ready:
- Stable. The server must not crash often and be able to run continuously for long periods of time. So far so good
- All connections must be required to authenticate themselves before getting any access. Done
- Individual objects should have permissions that can restrict what specific accounts or groups can do related to them. Done
- Clients should only be given views of the gameworld that are limited in scope to what their PCs can see. Done
- Persistant. The world should be stored in a long term manner. The server should be able to save and load all objects required to reconstruct the game instance. The game state should be automatically saved at a certain interval. Getting there
- Objects should have realistic collision responses when desired. Done
- Players should walk on the ground.
- Chat. Players should be able to chat with each other.
- Editing. Basic God-Mode in game editing.
- Clients should be able to select a MV3D server and log in to it.
- They should be able to create basic PCs (not many options req’d)
- Clients can connect to a given PC
- Physics. Client side Physics should be enabled.
- Assets. Assets should be downloaded automatically as needed.
- Graphics. Just the basics. No terrain required
- Sound. None required. Done
PSKudos to anyone other than