This is a technical post regarding the content distribution system used by MMORPG (mainly to show you that something is actually going on). Content data includes all game objects such as items, towns, characters, creatures. When the client requests a content object for the first time, it must be loaded (from cache if available) and subscribed (with server). When subscribed, the server sends initial state, plus any future updates. Currently, subscription and initial content update occurs after the content object is released to the client. For example, popping up details about an item sometimes shows "Inspecting..." for a moment until the data is fetched from the server. The trouble is that some systems do not work well with this non-blocking behavior, such as towns and shops. I've been testing a new blocking mode content loading mechanism for the client. When a content object is requested for the first time, the caller is blocked until the initial server update transaction completes. This works, but stalls the client on certain actions (such as entering a town). A more sophisticated approach is to release non-initialized content, then allow the implementation to decide whether it needs to block for initial update. This would also allow custom behavior depending on whether the content is yet initialized. For example, when entering a town, a "loading" graphic could be displayed if the town is not up-to-date. If the town is already initialized, then it can be shown immediately. I've experimented with each approach. Both are complicated and invite the opportunity for deadlock. See what happens in the upcoming release.
Share and Enjoy:
  • Facebook
  • Twitter
  • StumbleUpon
  • Digg
  • del.icio.us
  • Reddit
  • Technorati
  • Google Bookmarks
  • Slashdot
  • N4G