Jump to content
  • Advertisement
Sign in to follow this  
gamedev199191

Thoughts on multi-user live content development

This topic is 3448 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Something I have been thinking about recently is one or more users doing content development against a shared central server where this content would be tested by clients running against the same server. One example is the creation of item templates. This might, for example be a kind of sword a user might come across or a kind of trade good which player's might be able to sell. One way is defining them with code. The data from the template object is then propagated either to all clients, or just to the ones where instances of that template are present. There's an advantage to this approach in that the code content definitions are most likely checked into the same repository as the matching game logic for a build, which makes it easier to ensure builds can be remade as time passes. Multiverse and Torque MMO Kit both take the code template definition approach. Then there is defining them in a database. When modifying content, designers would work against the same development/authoring servers which run against the database backend. For builds, you might serialise the tables or views and bundle them with those builds of the live servers. However, when the time comes for you to edit content for the released build each approach faces it differently. In the code-driven approach, you might work in the relevant build branch and because the matching data is there with the game logic, you can just build those together after the changes. In the data-driven approach, you might find that the content server has moved on to incorporate changes for the next release. But the aspect which interests me the most is live use of content authoring changes. What if your server doesn't send template specifications to the clients, but rather just says that they should know the template already and hey, here's a new instance of it. That's a potentially ideal situation, because then you reduce the bandwidth used. I know WoW doesn't do that, and one of the arguments is the fun of discovering this content versus being suckered into browsing a website which catalogues it having perhaps extracting it from the client datasets. But then again, who really gets to discover this, but the hardcore guilds, so whether it is worth implementing this way just to limit discovery is questionable. Anyway, back to what I consider the interesting stuff. A potential problem which for me illustrates the complexity of live content development and testing. It's not an ideal situation, but it covers clean recovery from a worst case scenario. Your clients have serialised template data. The server just sends instance data. It doesn't keep an anal level of detail about what a given client knows about, but rather bases it abstractly on proximity. In this case, the clients are connecting to the authoring server. A content developer looks at a dungeon instance and realises he doesn't want some encounter there, and furthermore he no longer wants the monster template variant he specifically created for it. So the template variant usages are deleted from the encounter, the encounter is deleted and then the template variant itself is deleted. Now, there's two places that the template variant might still be used. The server-side encounter which has been spawned and controlled within the dungeon, with instances of the entity template variant. The client-side representation of these instances. Any reference to the template past the point of its deletion, by the client or server, may cause errors when joins are done against the template table. In an ideal game authoring engine, the live state would be cleaned up. But who has time to write an ideal engine? You just write the best you can and then refactor it as you develop it further. Is it possible to really design this ability into the engine from scratch? Are there industry best practices for writing engines to handle this? Anyone have any experience or references to articles, talks and similar media relating to systems like this? Anyway, I've enjoyed writing this post but don't have time to reread and edit it before I hit the sack. Hope I haven't written anything too incoherent :-)

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!