<\/a>One of the things I learned while developing MMORPG Tycoon is how important it is to have a repeatable test case, when you’re developing complicated AI behaviour. \u00a0A way to run the same situation several times, to help debug why a misbehaving character is doing what he’s doing.<\/p>\nIn most games, this isn’t a big problem; \u00a0most games have relatively static levels, and will play back in approximately the same way every time you play. \u00a0But MMORPG Tycoon is much more complicated, seeing as how the player is creating a game for the AI to play in. \u00a0And if I need to spend a minute setting up a region every time I want to test the AI, it slows down development dramatically, and small variations in precisely how I set up the region each time can make the debugging even more complicated. \u00a0In MMORPG Tycoon v1.0 and v1.1, I used saved games to build re-usable scenarios that I could run AI through. \u00a0When I was done debugging, I’d kill the game so that it wouldn’t autosave over the scenario’s save file.<\/p>\n
In v2, I don’t have the new saved game system fully implemented (and that approach was very user-error-prone, anyway. \u00a0It was much too easy to accidentally auto-save over my carefully created test scenario), so I’ve instead set the game up to automatically create a very simple starting setup; \u00a0a graveyard, an inn, two grinding zones, and two NPC quest givers. \u00a0I’ve also set it up to have 30 AI developers (ordinarily, you start with just five), so that monsters get placed into the starting areas more quickly. \u00a0The screenshot here is of this new “AI Test Zone” starting area, only a few seconds after the game has started; \u00a0you can see the dozens of AI developers returning from having placed the first few monsters, all heading for the graveyard to get some more.<\/p>\n","protected":false},"excerpt":{"rendered":"
One of the things I learned while developing MMORPG Tycoon is how important it is to have a repeatable test case, when you’re developing complicated AI behaviour. \u00a0A way to run the same situation several times, to help debug why a misbehaving character is doing what he’s doing. In most games, this isn’t a big…<\/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,25],"tags":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/po9WK-kY","_links":{"self":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/1300"}],"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=1300"}],"version-history":[{"count":0,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/posts\/1300\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/media?parent=1300"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/categories?post=1300"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.vectorstorm.com.au\/wp-json\/wp\/v2\/tags?post=1300"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}