{"id":705,"date":"2009-09-04T19:59:26","date_gmt":"2009-09-04T09:59:26","guid":{"rendered":"http:\/\/www.vectorstorm.org\/?p=705"},"modified":"2009-09-04T20:01:06","modified_gmt":"2009-09-04T10:01:06","slug":"the-contract-and-the-passage-of-time","status":"publish","type":"post","link":"https:\/\/www.vectorstorm.com.au\/2009\/09\/04\/the-contract-and-the-passage-of-time\/","title":{"rendered":"The Contract, and the passage of time"},"content":{"rendered":"
I’ve long held that one of the most important continuous jobs when creating a game is authoring and obeying The Contract<\/em>. \u00a0The Contract is a term I’ve co-opted from films; it’s an implied agreement between the movie studio and the audience. \u00a0In the case of a film like Jaws, it might go something like this: \u00a0“If you come see our movie, you’ll get to see the shark, and it’ll be scary!” \u00a0In all the pre-release trailers, the shark was never shown; \u00a0the scary shark was the thing that you get for spending your time and money. \u00a0In more recent films, Cloverfield used exactly the same Contract. \u00a0If you went to see Cloverfield and the monster had never been shown, you would quite rightly feel ripped off.<\/p>\n <\/p>\n In a game, the Contract works in the same way. \u00a0If in you bought Bridge Builder and discovered that it contained no bridges, you would quite rightly feel ripped off. \u00a0Over in the forums for Champions Online right now, a furore is brewing, as many customers feel that their characters are far weaker than they believe superheroes ought to be — in their eyes, the lack of “super” is a violation of the implied Contract, promised by the game. \u00a0Similar Contracts exist in most games, with many games having several of them, ranging from the thematic (as in the examples above), to the mechanical, as in the 3D Zelda games, which can justify taking the “jump” functionality away from the player on the basis of an implied Contract that the player will never wish to be able to jump manually. \u00a0If the player ever had a desire to be able to press a “jump” button at any point during Zelda, then that would have been a violation of the Contract, and players would be frustrated about it.<\/p>\n For MMORPG Tycoon, I have a very obvious Contract that I need to fulfil; \u00a0the player must be able to feel as though he owns and operates an MMORPG. \u00a0And this presents a few interesting problems, as, while their mechanics are typically quite simple, an MMORPG which is evolving over time is a far more complicated beast than any normal game.<\/p>\n One of the interesting things about MMORPGs (and the running thereof) is the passing of time. \u00a0Unlike most other types of games, MMORPGs change over time, in both long-term and short-term ways. \u00a0Let me give a few examples. \u00a0When the development studio decides that they wish to create a new region, it will typically take anywhere from one to three months to create and populate that new region — that’s a long-term change. \u00a0If the development studio decides to modify the strength of an attack, that can be rolled out within a day or two, and is a much shorter-term change. \u00a0Often, a studio is doing both types of things at the same time; \u00a0making new regions for future expansion packs, at the same time that they’re balancing attacks for immediate patches.<\/p>\n And what’s more, even faster than that are the changes and reactions being demanded by the subscribers in the MMORPG’s forums, which often change in mere minutes after a new patch is put up and made available. \u00a0But on the other hand, the time taken for a subscriber to reach maximum level is usually in the range of 40 to 80 hours (though some MMORPGs are notably shorter or longer than that); \u00a0if the game runs fast enough to let the player see his subscribers reach maximum level, then it will necessarily be too fast to watch changing trends in the forums. \u00a0All of this makes it tricky for me to obey my side of The Contract with my players.<\/p>\n If MMORPG Tycoon runs at real time, then it would take real-world months for the AI developers to complete region-building tasks that the player gives them, and that’s clearly not practical. \u00a0On the other hand, if it runs fast enough to make that development happen in a reasonable span of real-world time, then the smaller tweaks and day-to-day activities of the subscribers would happen so quickly that they couldn’t be followed. \u00a0Those who were testing MMORPG Tycoon 1.1 will recognise this issue, remembering how bombarded the logs became with information about members gaining levels and suchlike.<\/p>\n For quite a while, I’ve had a little puzzle game design scrawled in my design notebook, under the heading: \u00a0“MMORPG Tycoon: Patch Manager”. \u00a0In this little puzzle game, the player is given a starting MMORPG, and a target destination, and the player is tasked with grouping patch changes together in such a way as to have the best possible forum response to the game at the end. \u00a0For example, lumping all the nerfs together at the start, so that you can then spend the next six months bringing in quality of life improvements. \u00a0Or perhaps trying to mitigate the negative effects of the nerfs by spreading them out and administering them slowly, with other bonuses to take out their stings as much as possible. \u00a0Such a game would be played in a turn-based manner, with each turn being a single “patch” or “expansion set” release. \u00a0I’ve been thinking more and more about integrating something like that into the metagame structure for MMORPG Tycoon 2; \u00a0have it still run in real time, but then let the player “take a turn” to roll out a patch, and advance the clock as far as is needed in order to apply that patch’s changes.<\/p>\n But I’m not convinced by this; \u00a0it implies that the player would have to be able to queue up a change on a test server, while subscribers are playing on the live server, and that implies that I’d need to keep twice as much data hanging around, so that the player could actually look at both of them. \u00a0And that just sounds fiddly and confusing and unpleasant.<\/p>\n In terms of actual progress today, I didn’t actually get much done; \u00a0I’m not quite sure where the day went, to be honest. \u00a0However, I did fix a few major bugs in the character movement code (toons, devs, and monsters were often accidentally wandering outside of their intended regions), and I improved the feel of the player’s movement code substantially, and added a “Jump” when he’s in “walk around the world” mode. \u00a0Not that there’s anything for him to jump over or onto yet, of course. \u00a0But that’ll come soon.<\/p>\n","protected":false},"excerpt":{"rendered":" I’ve long held that one of the most important continuous jobs when creating a game is authoring and obeying The Contract. \u00a0The Contract is a term I’ve co-opted from films; it’s an implied agreement between the movie studio and the audience. \u00a0In the case of a film like Jaws, it might go something like this:…<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[24,20,25],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/po9WK-bn","_links":{"self":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/705"}],"collection":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/comments?post=705"}],"version-history":[{"count":0,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/705\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/media?parent=705"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/categories?post=705"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/tags?post=705"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}