Twitter  Facebook  Google+  YouTube  E-Mail  RSS
The One Man MMO Project
The story of a lone developer's quest to build an online world :: MMO programming, design, and industry commentary
The Shroud
By Robert Basler on 2016-04-24 00:05:16
Homepage: email:one at onemanmmo dot com

"These reports of assassination attempts on Marvel are clearly fabricated. It's ridiculous. If someone really wanted that little girl dead, she'd be dead. She doesn't even have any bodyguards! If all these so-called attempts have been foiled, where are the assassins? We live in the safest time in the whole history of The Imperial Realm."

- excerpt from Royal Press Briefing, 3 Strongdays, 30695 Y.O.E.

Monday I finished up the effects while harvesters are harvesting. Now the harvester gives off clouds of dust and resource fragments spray out as well.

[Harvesting Effects]

There's only one bug remaining with harvesters. If a resource field is on a steep area there might not be a large enough area for the harvester to park safely while harvesting so what happens is the harvester drives around the field trying to find a safe spot to harvest, but it sometimes takes quite a while to find one. I'm considering making this bug a feature and having smaller harvesters be something you can choose to build.

Getting harvesters to work was an ordeal, they broke replication, collisions, AI, effects, pathfinding and more. Fortunately none of the three remaining features should be so disruptive, they're mostly UI screens and hooks into the existing stats system.

The bulk of the work this week was on The Shroud. The Shroud covers the entire map until the player has explored that area. How much of the shroud each unit peels back depends on the unit's sensor range so if you build a unit without sensors it will only remove the shroud exactly where the unit is. One difference from the shroud in Command and Conquer is that once the shroud is pulled back, you still can't see enemies on the minimap unless you have a unit nearby. This is a necessary concession due to the scale of Miranda's simulation - it just isn't possible to replicate the state of the entire game to any one client.

It has been a long time since I've needed to write a new data structure. Most of what I do is reuse C++ templates for vectors, linked lists, deques and hashtables. The Shroud had some rather unique and challenging requirements. It has to store shrouded/unshrouded data for the 14.4 billion points that cover the full map. Even a simple bitmap would take 1.8GB to store that data for one player which is far too much for a server that needs to support thousands of players. And it would take a long time to download!

I've been implementing a sparse bitmap. Because it is a map, it will be large areas of shrouded terrain, and large areas of unshrouded, but it really only the boundaries where there is anything interesting going on. There is a surprising lack of good information about high performance sparse bitmap algorithms on the internet so I'm sort of winging it.

New Comment

Cookie Warning

We were unable to retrieve our session cookie from your web browser. If pressing F5 once to reload this page does not get rid of this message, please read this to learn more.

You will not be able to post until you resolve this problem.

Comment (You can use HTML, but please double-check web link URLs and HTML tags!)
Your Name
Homepage (optional, don't include http://)
Email (optional, but automatically spam protected so please do)
Multiply: 2 and 6 = (What's this?)

  Admin Log In

[The Imperial Realm :: Miranda] [Blog] [Gallery] [About]
Terms Of Use & Privacy Policy