Terrain and Sky
This picture is humongous, but:
Ooh, pretty. If you are particularly observant, you’d notice that it’s the same landscape as:
That image is from Siegium. I recycled it because it has a nice flat area in the middle to put stuff on. Though I guess I could do that again– all I did was edit the heightfield png image and black out a circle in the center. So yes, I also made a png image to heightfield converter as well.
Anyway, basic terrain is done. It is pretty darn cool because the terrain is broken up into chunks and it uses the PlayerView system just as any other normal object does. That means it is fully deformable (i.e. you can dig a hole in the terrain), there can be multiple layers (for tunnels or overhangs), and it adheres to your view distance. That last one is particularly key. While the server may have 20 sq miles of terrain, the client will only know about (and see) the closest 1/2 mile or so. The next iteration will have grass. Basic sky is done, though I may hack in a sun at some point since that should be quick and should make the terrain look better. By the way, FPS on the client for that image? 300-400ish. Ogre3D, you rock! (I still don’t understand how I can get 400 FPS in a game that is written in an interpreted language [Python])
I’m working on some of the most important features of MV3D right now. Those would be load balancing and server fail-over. Load balancing will make sure that no one game server gets overloaded by too many players/objects/etc, and fail-over is to prevent any downtime in the case of a server exploding (or being upgraded).
So far, things have not been very complicated (admittedly, I’m only doing load balancing/fail over for Areas now, not Objects or Realms or User Accounts, or Directories.) I also haven’t done much testing of the fail-over quite yet. I’m still finishing up unit tests for load balancing/redundancy.
I also ran into a moment of wondering how the heck I was going to load balance / fail over individual objects within areas and almost decided that it wasn’t worth it (and objects should be owned by the area they are in). However, there is a little (and very odd) feature that technically allows objects to be in more than one area at once that makes this not an option. I can’t think of any real uses for this, but I suspect there will be some. It probably doesn’t make much sense for things that are visible, but MV3D’s concept of an Object (or Area) is pretty vague. Some objects will have functions like spawning bad guys or being Gateways between Areas. The former could have a use for being in more than one area now that I think of it. If you wanted to be able to spawn a goblin in one of several areas, an easy way to do it may be to put the spawn object in all of those areas and have it pick one when creating a new goblin.
MV3D also doesn’t care what you put inside of things. So you could easily have a magical bag of holding into which you could chuck several Areas. That would be funny. And wierd. Either way, it’s pretty flexible.