<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>The Game That Never Was</title>
	<atom:link href="http://the-game.odahoda.de/feed/" rel="self" type="application/rss+xml" />
	<link>http://the-game.odahoda.de</link>
	<description>Mindless ramblings about the perfect game</description>
	<lastBuildDate>Mon, 10 Jan 2011 22:43:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Introducing: The Wiki</title>
		<link>http://the-game.odahoda.de/2011/01/introducing-the-wiki/</link>
		<comments>http://the-game.odahoda.de/2011/01/introducing-the-wiki/#comments</comments>
		<pubDate>Sun, 02 Jan 2011 16:11:18 +0000</pubDate>
		<dc:creator>pink</dc:creator>
				<category><![CDATA[Meta]]></category>

		<guid isPermaLink="false">http://the-game.odahoda.de/?p=121</guid>
		<description><![CDATA[Let&#8217;s try something else. A blog doesn&#8217;t really work for me. I always feel obliged to write some elaborated, polished article, when all I want to to dump some quick thoughts. Perhaps a wiki works better &#8211; time will tell&#8230; So here it is: The Wiki. Note that this is not an open wiki; edit [...]]]></description>
			<content:encoded><![CDATA[<p>Let&#8217;s try something else.</p>
<p>A blog doesn&#8217;t really work for me. I always feel obliged to write some elaborated, polished article, when all I want to to dump some quick thoughts. Perhaps a wiki works better &#8211; time will tell&#8230;</p>
<p>So here it is: <a href="http://the-game.odahoda.de/wiki/">The Wiki</a>. Note that this is not an open wiki; edit privileges are reserved to your humble host. In the unlikely case that you want to keep up with my updates, you can subscribe to the <a href="http://the-game.odahoda.de/mediawiki/index.php?title=Special:RecentChangesLinked/The_Game_That_Never_Was&amp;feed=atom&amp;target=The_Game_That_Never_Was">Recent Changes</a> feed. It&#8217;ll be noisier than the usual blog feed, and its delta format needs a bit getting-used-to.</p>
<p>This blog will live on for the occasional &#8216;meta&#8217; news, like this one.</p>
]]></content:encoded>
			<wfw:commentRss>http://the-game.odahoda.de/2011/01/introducing-the-wiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to build worlds</title>
		<link>http://the-game.odahoda.de/2010/11/how-to-build-worlds/</link>
		<comments>http://the-game.odahoda.de/2010/11/how-to-build-worlds/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 15:38:29 +0000</pubDate>
		<dc:creator>pink</dc:creator>
				<category><![CDATA[Procedural content]]></category>

		<guid isPermaLink="false">http://the-game.odahoda.de/?p=116</guid>
		<description><![CDATA[Joshua Tippetts wrote a post about procedural content generation, covering his approach to landscape generation. He differentiates between &#8220;implicit&#8221; and &#8220;explicit&#8221; methods (which I would call &#8220;bottom-up&#8221; and &#8220;top-down&#8221;, but who cares about naming) and clearly favors the implicit approach. Both approaches have a (IMHO significant) drawbacks. They are based an algorithms that happen to produce [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.gamedev.net/user/47547-jtippetts/">Joshua Tippetts</a> wrote a <a href="http://www.gamedev.net/blog/33/entry-2227887-more-on-minecraft-type-world-gen/">post about procedural content generation</a>, covering his approach to landscape generation. He differentiates between &#8220;implicit&#8221; and &#8220;explicit&#8221; methods (which I would call &#8220;bottom-up&#8221; and &#8220;top-down&#8221;, but who cares about naming) and clearly favors the implicit approach. Both approaches have a (IMHO significant) drawbacks. They are based an algorithms that happen to produce something that resembles a landscape, often only after careful tweaking of obscure parameters. And while they can produce nice looking worlds (after adding water, vegetation, animals and a population), I&#8217;m not convinced that this is a good way to create worlds where an entertaining game is to unfold. (This is related to the &#8220;sandbox&#8221; vs. &#8220;story driven&#8221; games discussion. I have an opinion about that, which I might elaborate in another post. It&#8217;s neither A nor B, more like &#8220;story driven sandbox&#8221; games.)</p>
<p>So let me describe two other approaches</p>
<h2>Simulation</h2>
<p>I add this just for completeness. I don&#8217;t think that this is really reasonable or even feasible approach, but let&#8217;s check it out for the fun of it.</p>
<p>Instead of generating a world as it is <em>now</em>, simulate its development over time. For the landscape that would mean, you start off with a rocky planet, hurl meteorites at it, simulate tectonics, erosion, and all that stuff and let it run for a few billion (simulated) years. Add in plants at some point along the way &#8211; which of course have an effect on erosion &#8211; and let them spread around. You might get away without evolution, just add or remove different species at various times. Same thing for animals. And finally you pop some settlers into the world and watch them build villages, cities and kingdoms.</p>
<p>You even get history for free by recording it. So you do not only get a Kingdom of Blafasel, but also the fact that it is in war with the neighboring Kingdom of Bruhala &#8211; a stupid conflict about a small island, because that&#8217;s what they were always fighting about.</p>
<p>This biggest advantage of this approach is that it would not produce the inconsistencies which are inevitable with other approaches &#8211; especially when only local knowledge is used.</p>
<p>Of course this is pretty much nonsense and using this to build a game world would be a huge waste of CPU time.</p>
<h2>Intelligent Design</h2>
<p>No, I&#8217;m not a fundamentalist priest. But nobody claims that games work by the same rules as reality.</p>
<p>Instead of using dump algorithms to crunch numbers, let&#8217;s try to simulate what a human game designer does when (s)he creates a game world. The most important thing is that the world serves a purpose. Things link &#8220;there is a mountain range here that the player has to cross to reach the other kingdom.&#8221; Random methods can still be used to fill in the gaps, but they are heavily constraint by a list of story or gameplay driven objectives.</p>
<p>I have no clear vision of how such a beast would look like. It might start off with an empty world (say an endless ocean without any land), a set of rules and the objectives (the purpose that this world should serve). Then it starts to shape the world according to the rules, directed by the objectives.</p>
<p>Shaping means</p>
<ul>
<li>Raise some land from the sea.</li>
<li>Put a mountain range here as a border between two kingdoms.</li>
<li>Level this area to make room for a mountain village.</li>
<li>Place river here to give this wealthy city a big trading route.</li>
</ul>
<p>What are those rules?</p>
<ul>
<li>The world consists of continents which are big blobs of rock surrounded by salt water.</li>
<li>These plants grows along the coast, those in swamps.</li>
<li>This animal lives in forest, that in open plains.</li>
<li>A village needs a well or other fresh water supply.</li>
<li>A village needs some food sources, and the population is constrained by the supply.</li>
<li>Fishermen, Hunters, Farmers, &#8230; are food sources.</li>
<li>In a religions culture settlements are centered around a shrine or temple.</li>
</ul>
<p>And objectives?</p>
<ul>
<li>The world should be interesting. Otherwise the design process could terminate after raising a continent of rock from the sea, without anything of interest on it.</li>
<li>The world should be playable. In a randomly generated world, the player might start in a small village in a mountain valley &#8211; only to realize that it is surrounded by impassable walls of mountains.</li>
<li>The world should allow a certain story to take place. If the game is about an epic war which is going to destroy all of the world, make sure there is someone worth defending, someone, coming from somewhere, who is attacking and a place where the great battle can take place.</li>
</ul>
<p>And of course a gazillion more items in each list.</p>
<p>How to implement a program that can do this is left as an exercise to the reader.</p>
<p>The process of creating such a world would then be similar to declarative programming. The designer would distill her/his knowledge into rules and set up the objectives that implicitly describe a story.</p>
<p>[Update 2010-01-10: Fixed links. GameDev.net got a new site and broke some URLs]</p>
]]></content:encoded>
			<wfw:commentRss>http://the-game.odahoda.de/2010/11/how-to-build-worlds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Links are now on Google Reader</title>
		<link>http://the-game.odahoda.de/2010/11/links-are-now-on-google-reader/</link>
		<comments>http://the-game.odahoda.de/2010/11/links-are-now-on-google-reader/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 14:07:07 +0000</pubDate>
		<dc:creator>pink</dc:creator>
				<category><![CDATA[Meta]]></category>

		<guid isPermaLink="false">http://the-game.odahoda.de/?p=113</guid>
		<description><![CDATA[Did I mention that I suck at blogging? My dear readership probably noticed that I made a few &#8220;Links YYYY-MM-DD&#8221; entries, featuring stuff on the web that I read or just thought to be useful or interesting. I do read a lot (I have about one hour commute time every day and a phone that [...]]]></description>
			<content:encoded><![CDATA[<p>Did I mention that I suck at blogging?</p>
<p>My dear readership probably noticed that I made a few &#8220;Links YYYY-MM-DD&#8221; entries, featuring stuff on the web that I read or just thought to be useful or interesting. I do read a lot (I have about one hour commute time every day and a phone that it good enough to read feeds and websites), but manually preparing these entries proved to be way to much work for a lazy person as your humble host. So I just started to &#8220;share&#8221; these links in Google Reader and in the unlikely event that you care about this, you can find and subscribe to them at <a href="http://www.google.com/reader/shared/odahoda">http://www.google.com/reader/shared/odahoda</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://the-game.odahoda.de/2010/11/links-are-now-on-google-reader/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Links 2009-12-29</title>
		<link>http://the-game.odahoda.de/2009/12/links-2009-12-29/</link>
		<comments>http://the-game.odahoda.de/2009/12/links-2009-12-29/#comments</comments>
		<pubDate>Tue, 29 Dec 2009 21:12:13 +0000</pubDate>
		<dc:creator>pink</dc:creator>
				<category><![CDATA[Reading]]></category>

		<guid isPermaLink="false">http://the-game.odahoda.de/?p=107</guid>
		<description><![CDATA[Winning the 2K Bot Prize with a Long-Term Memory Database using SQLite (AiGameDev.com): Most AI systems in the games industry focus on short-term reactive memory and combat behaviors applying techniques such as behavior trees. However, there seems to be little support for long-term memory, for example remembering locations in space that mark events that occurred. [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://aigamedev.com/open/articles/sqlite-bot/">Winning the 2K Bot Prize with a Long-Term Memory Database using SQLite</a> (AiGameDev.com):<br />
<blockquote><p>Most AI systems in the games industry focus on short-term reactive memory and combat behaviors applying techniques such as behavior trees.  However, there seems to be little support for long-term memory, for example remembering locations in space that mark events that occurred.  In our daily lives, we internally map, model and remember our surroundings and experiences.  This begs the question, how can we similarly organize and leverage longer-term memory within modern AI?</p></blockquote>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://the-game.odahoda.de/2009/12/links-2009-12-29/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Links 2009-11-24</title>
		<link>http://the-game.odahoda.de/2009/11/links-2009-11-24/</link>
		<comments>http://the-game.odahoda.de/2009/11/links-2009-11-24/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 23:07:27 +0000</pubDate>
		<dc:creator>pink</dc:creator>
				<category><![CDATA[Reading]]></category>

		<guid isPermaLink="false">http://the-game.odahoda.de/?p=103</guid>
		<description><![CDATA[Die fade Fassade (Kommentar, 4players.de, German): Wieso hockt meine Mutter jahrelang (!) in ein- und derselben Position vor ihrem Bett? Wieso kann ich mich buchstäblich vor der Nase von drei Wachen in den direkt daneben befindlichen Eingang schleichen? Warum spazieren nachts ebenso viele Menschen in den Städten herum wie am Tag?]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.4players.de/4players.php/kommentar/Spielkultur/1989123/0/index.html">Die fade Fassade</a> (Kommentar, 4players.de, German):<br />
<blockquote><p>Wieso hockt meine Mutter jahrelang (!) in ein- und derselben Position vor ihrem Bett? Wieso kann ich mich buchstäblich vor der Nase von drei Wachen in den direkt daneben befindlichen Eingang schleichen? Warum spazieren nachts ebenso viele Menschen in den Städten herum wie am Tag?
</p></blockquote>
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://the-game.odahoda.de/2009/11/links-2009-11-24/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Representing conflicting states in the Workspace</title>
		<link>http://the-game.odahoda.de/2009/11/representing-conflicting-states-in-the-workspace/</link>
		<comments>http://the-game.odahoda.de/2009/11/representing-conflicting-states-in-the-workspace/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 18:15:28 +0000</pubDate>
		<dc:creator>pink</dc:creator>
				<category><![CDATA[Simulated intelligence]]></category>

		<guid isPermaLink="false">http://the-game.odahoda.de/?p=98</guid>
		<description><![CDATA[One of the characteristics of Copycat is the ability to pursue alternate or conflicting views of its domain, although in a limited way only. When Codelets build up structures (groupings of and relations between entities) in the Workspace these structures go through &#8220;states,&#8221; from possible over proposed to established. There can be only one set [...]]]></description>
			<content:encoded><![CDATA[<p>One of the characteristics of Copycat is the ability to pursue alternate or conflicting views of its domain, although in a limited way only. When Codelets build up structures (groupings of and relations between entities) in the Workspace these structures go through &#8220;states,&#8221; from possible over proposed to established. There can be only one set of established, non-conflicting structures.</p>
<p>For example with three entities <code>A</code>, <code>B</code> and <code>C</code>, Copycat might first create the group <code>G<sub>1</sub>={A, B}</code>. Another sequence of Codelets might build up the conflicting (because each entity can only be direct member of one group) group <code>G<sub>2</sub>={A, B, C}</code>. In order to establish <code>G<sub>2</sub></code> the group <code>G<sub>1</sub></code> has to be torn down, but <code>G<sub>2</sub></code> can coexist with <code>G<sub>1</sub></code> as long as it is in proposed state.</p>
<p>This way Copycat can explore alternatives that conflict with the current view, but might turn out to be better. But the conflicting structures have to compete at a very low level. In the simple case above can easily measure that group <code>G<sub>2</sub></code> is superior to <code>G<sub>1</sub></code> and thus decide to tear down <code>G<sub>1</sub></code> in favor of <code>G<sub>2</sub></code>. But in more complicated scenarios an alternative group <code>G<sub>2</sub>'</code> could seem less promising at first, but once it has been constructed it opens the possibility for a very complex structure which could not be built with <code>G<sub>1</sub></code>. This makes Copycat kind of shortsighted, i.e. the presence of <code>G<sub>1</sub></code> suppresses groups which are scored lower than <code>G<sub>1</sub></code> if compared directly to it, but might act as a first part of a more complex structure.</p>
<p>Tabletop seems to have the ability to remember structures and when it explores an alternative that turns out to be a dead end, it can go back to the remembered structure. This way it can be more open to alternatives than Copycat. But I don&#8217;t know how this was implemented in Tabletop, because I have not yet read anything more detailed about it.</p>
<p>Last night, while lying in bed waiting for the sandman to come around, my brain was spinning around this and looking for ways to improve the situation. One possible option could be the introduction of &#8220;Branches&#8221; in the Workspace, which would be a generalization of the &#8220;snapshot&#8221; feature that Tabletop seems to have. Each Branch is a Workspace in the Copycat sense, but now the Workspace can contain multiple &#8220;sub Workspaces.&#8221; Each time a Codelet wants to establish a conflicting structure in a Branch, this Branch is forked and the alternative can be explored without interfering with the existing Branch. Now Branches would compete against each other instead of lower level structures. Each Branch gets a score and if one Branch falls behind too much, it is discarded.</p>
<p>There a various ways how this could be implemented. All Branches could be active at any time, which means that the processing capacity has to be shared by all Branches. This makes branching very expensive, so a mechanism that limits the number of Branches is required. The expected value of a proposed structure has to greater than a threshold value before it can be established &#8211; this is a mechanism that already exists in Copycat as it is now. If the structure now conflicts with other structures, a penalty is added to this value which is based on the number of existing branches, so it become very unlikely that a new Branch is created when already many Branches exist.</p>
<p>Another option would be to have only one Branch active at a time and every once in a while the system decides if it should switch to another Branch. Or it might shard its attention to all Branches based on the Branch&#8217;s scores, with a very large skew towards the highest score &#8211; but still leaving some attention to lower scored Branches.</p>
<p>Just an idea&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://the-game.odahoda.de/2009/11/representing-conflicting-states-in-the-workspace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Workspace and Slipnet</title>
		<link>http://the-game.odahoda.de/2009/11/workspace-and-slipnet/</link>
		<comments>http://the-game.odahoda.de/2009/11/workspace-and-slipnet/#comments</comments>
		<pubDate>Tue, 10 Nov 2009 16:25:00 +0000</pubDate>
		<dc:creator>pink</dc:creator>
				<category><![CDATA[Simulated intelligence]]></category>

		<guid isPermaLink="false">http://the-game.odahoda.de/?p=94</guid>
		<description><![CDATA[There are some parts of the Copycat architecture that I haven&#8217;t touched yet. Namely the Workspace and the Slipnet. That&#8217;s mostly due to the fact that I don&#8217;t yet know, how they would fit into the system as I envision it. In some way the Workspace is the short term memory of the system and [...]]]></description>
			<content:encoded><![CDATA[<p>There are some parts of the Copycat architecture that I haven&#8217;t touched yet. Namely the Workspace and the Slipnet. That&#8217;s mostly due to the fact that I don&#8217;t yet know, how they would fit into the system as I envision it. In some way the Workspace is the short term memory of the system and the Slipnet is the long term memory. But only in some way and I think both cannot that easily reused from Copycat as Codelets and the Coderack.</p>
<p>In Copycat the Slipnet is a network of nodes that is not unlike other networks, i.e. typical neural network implementations. Nodes have activation levels and this activation spreads to connected nodes. But unlike a pure neural network &#8220;brain,&#8221; the Slipnet is not the place where the main action happens. Instead the nodes and their connections capture the (abstract) knowledge that the system has about the domain and the activation levels reflect what Copycat currently considers as important. Highly activated nodes can spawn Codelets, e.g. if the node &#8220;successor&#8221; is activated, it may spawn Codelets that actively search for more successor groups. Information flows in the other direction by Codelets that do discovers certain structures and then add some activation to the corresponding node (some generic search Codelets are constantly spawned and if they find something they activate a node &#8211; which then triggers more targeted Codelets looking for things like that).</p>
<p>The Slipnet in Copycat is (apart from the activation levels) completely static. So it&#8217;s not really &#8220;memorized memories,&#8221; because it has no way to learn, but more &#8220;a priory knowledge.&#8221;</p>
<p>The workspace is the place where Copycat builds up the structures and representations of its domain. It is a highly dynamic network of nodes, which is constantly modified by the Codelets. It also has some properties that make it very different from the network of the Slipnet (or neural networks). Connections are built up in several stages, i.e. they are first &#8220;proposed&#8221; and only later (if they survive long enough) &#8220;established.&#8221; And while two nodes can only be connected by one established connections, there might exist other, contradicting connections at the same time, which are still in the proposed state. That means that Copycat can build up and evaluate an alternate view of the domain without replacing the current view right away, but only when the new view seems better that the old.</p>
<p>The Workspace is also able to build up hierarchic structures of groups and treat those groups as nodes to operate on.</p>
<p>Both of these components need some changes to be used in a NPC brain. There definitely needs to be some notion of learning and memory. The lack of memory is one of the biggest issues I see in current Game AI (it is somewhat emulated by scripting, but in a very limited way). The Slipnet in Copycat only contains very abstract knowledge, e.g. characteristics of platonic letters and such things (instantiations of letters only exist in the Workspace). So putting knowledge like &#8220;Fred has red hair and owes me 20 bucks&#8221; in there is a very different thing.</p>
<p>The Workspace will also need some adaptions for my use of it. For example spatial information is one important domain that needs to be represented, so a character can find its way around the world and correctly react to its environment. And there are many other things that need modeling, e.g. relations with other characters, dialogs, etc.</p>
<p>I will have to spend much more time thinking about these things. But I&#8217;ll leave that for another day (not implying that I could even scratch the surface on a single day).</p>
]]></content:encoded>
			<wfw:commentRss>http://the-game.odahoda.de/2009/11/workspace-and-slipnet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Links 2009-11-01</title>
		<link>http://the-game.odahoda.de/2009/11/links-2009-11-01/</link>
		<comments>http://the-game.odahoda.de/2009/11/links-2009-11-01/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 20:08:18 +0000</pubDate>
		<dc:creator>pink</dc:creator>
				<category><![CDATA[Reading]]></category>

		<guid isPermaLink="false">http://the-game.odahoda.de/?p=85</guid>
		<description><![CDATA[Artificial Intelligence and the Future of Games as an Expressive Medium (Youtube): Artificial intelligence methods open up new possibilities in game design, enabling the creation of believable characters with rich personalities and emotions, interactive story systems that incorporate player interaction into the construction of dynamic plots, and authoring systems that assist human designers in creating [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://www.youtube.com/watch?v=PsvsZuFgBzc">Artificial Intelligence and the Future of Games as an Expressive Medium</a> (Youtube):<br />
<blockquote><p>Artificial intelligence methods open up new possibilities in game design, enabling the creation of believable characters with rich personalities and emotions, interactive story systems that incorporate player interaction into the construction of dynamic plots, and authoring systems that assist human designers in creating games. Games are fast becoming a major medium of the 21st century, being used for everything from education, to editorial news commentary, to expressing public policy and political opinions. Game AI research can radically expand the expressiveness of games, supporting them in becoming a mainstream medium for societal discourse. These ideas will be illustrated by looking at two projects: the interactive drama Façade (released July 2005, downloadable from www.interactivestory.net) and current work on automated game design support.</p></blockquote>
</li>
<li><a href="http://en.wikipedia.org/wiki/Belief-Desire-Intention_software_model">Belief-Desire-Intention software model</a> (Wikipedia):<br />
<blockquote><p>[...] is a software model developed for programming intelligent agents. Superficially characterized by the implementation of an agent&#8217;s beliefs, desires and intentions, it actually uses these concepts to solve a particular problem in agent programming. In essence, it provides a mechanism for separating the activity of selecting a plan (from a plan library) from the execution of currently active plans. Consequently, BDI agents are able to balance the time spent on deliberating about plans (choosing what to do) and executing those plans (doing it). A third activity, creating the plans in the first place (planning), is not within the scope of the model, and is left to the system designer and programmer.</p></blockquote>
</li>
<li><a href="http://www.youtube.com/watch?v=FlhNbQNDCU4">Automated Support for Game Design</a> (Youtube &#8211; more detailed version of the second part of the first talk above):<br />
<blockquote><p>Game designers currently have no formal, abstract tools or representations they can use to reason about designs in progress. This talk describes research in the Expressive Intelligence Studio at UC Santa Cruz that seeks to build systems that can reason about the consequences of and interactions between game design mechanics, as well as make heuristic game design suggestions. Michael and his team have identified four different design domains that interact during game design, the thematic, abstract mechanics, game state representation, and input mapping domains, and seek to provide semi-automated and automated support to assist with these domains. They have experimented with common-sense reasoning approaches for reasoning about game thematics, and event calculus representations of game mechanics and state representation. This talk provides an overview of the research agenda, present the demo systems they&#8217;ve created, and describes the two primary application directions they&#8217;re pursuing, namely, design support tools (&#8216;CAD for game designers&#8217;) and computer creativity systems that discover new and interesting game mechanics.</p></blockquote>
</li>
<li><a  href="http://conceptnet.media.mit.edu/">ConceptNet 3 &#8211; A Semantic Network Representation of the Open Mind Common Sense Project</a> (MIT):<br />
<blockquote>ConceptNet aims to give computers access to common-sense knowledge, the kind of information that ordinary people know but usually leave unstated.<br />
The data in ConceptNet is being collected from ordinary people who contributed it over the Web. ConceptNet represents this data in the form of a semantic network, and makes it available to be used in natural language processing and intelligent user interfaces.<br />
<blockquote></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://the-game.odahoda.de/2009/11/links-2009-11-01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The role of randomness in the Copycat architecture</title>
		<link>http://the-game.odahoda.de/2009/09/the-role-of-randomness-in-the-copycat-architecture/</link>
		<comments>http://the-game.odahoda.de/2009/09/the-role-of-randomness-in-the-copycat-architecture/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 11:24:28 +0000</pubDate>
		<dc:creator>pink</dc:creator>
				<category><![CDATA[Simulated intelligence]]></category>

		<guid isPermaLink="false">http://the-game.odahoda.de/?p=82</guid>
		<description><![CDATA[This is an addendum to my post The Coderack and Codelets. I forgot to write about one important characteristic of the Copycat architecture. In traditional Game AI randomness is used to make the character behave less predictable and thus look more human. But this randomness is applied at a very high level, for example upon [...]]]></description>
			<content:encoded><![CDATA[<p>This is an addendum to my post <a href="/2009/09/the-coderack-and-codelets/">The Coderack and Codelets</a>.</p>
<p>I forgot to write about one important characteristic of the Copycat architecture. In traditional Game AI randomness is used to make the character behave less predictable and thus look more human. But this randomness is applied at a very high level, for example upon an encounter there is a 80% chance that the character reacts hostile to the player and 20% chance that he is not. While this might be fine in many cases, there might be situations where such &#8220;dumb&#8221; randomness leads to quite absurd behaviors. So the random weights would need to be adjusted to the situation, which in itself is a very hard job.</p>
<p>Copycat also makes extensive use of randomness, i.e. every time it picks the next Codelet to execute it will do so randomly &#8211; weighted but still random. But this randomness happens at a very low level. As can be seen in Copycat the top level behavior is much more stable &#8211; if there is one obvious behavior, it will pick that quite deterministically. Only if there are multiple conflicting behaviors which are valid reactions to the situation, each one will have a certain probability to win (if you repeat the decision making process multiple times with the same input, it will pick decision A<sub>i</sub> with probability p<sub>i</sub>). But these probabilities are highly dynamic, depending on the input, and will (hopefully) always lead to decisions that &#8220;make sense&#8221; in the given situation. And the probabilities are not defined in advance by the programmer but a result of the interactions of the different Codelets as the system comes to a conclusion.</p>
]]></content:encoded>
			<wfw:commentRss>http://the-game.odahoda.de/2009/09/the-role-of-randomness-in-the-copycat-architecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The problem of Game AI</title>
		<link>http://the-game.odahoda.de/2009/09/the-problem-of-game-ai/</link>
		<comments>http://the-game.odahoda.de/2009/09/the-problem-of-game-ai/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 16:52:57 +0000</pubDate>
		<dc:creator>pink</dc:creator>
				<category><![CDATA[Simulated intelligence]]></category>

		<guid isPermaLink="false">http://the-game.odahoda.de/?p=70</guid>
		<description><![CDATA[This is the second part of the thread I started in The Coderack and Codelets, which was a brief and probably incomprehensible introduction to the Copycat architecture. Now I want to look at the actual problems that I want to solve, i.e. the problems and limitations of Game AI as it exists today. Consider are [...]]]></description>
			<content:encoded><![CDATA[<p>This is the second part of the thread I started in <a href="/2009/09/the-coderack-and-codelets/"><span id="sample-permalink">T<span id="editable-post-name" title="Click to edit this part of the permalink">he Coderack and Codelets</span></span></a>, which was a brief and probably incomprehensible introduction to the Copycat architecture. Now I want to look at the actual problems that I want to solve, i.e. the problems and limitations of Game AI as it exists today.</p>
<p>Consider are fairly typical but complex situation that a good Game AI should be able to handle: a group of warriors that does an ambush on a bandit&#8217;s lair. As the battle evolves each character AI has to perform a number of tasks (in no specific order):</p>
<ul>
<li>Path finding: don&#8217;t run into trees or get trapped in a dead end.</li>
<li>Group movement: the group should stay in formation, warriors should not get singled out and become easy prey for the enemy, and gaps in the formation should quickly be closed so the enemy cannot break through and split the group.</li>
<li>Battle: well, fight for you life or you&#8217;ll be dead.</li>
<li>Communicate: listen to orders and adjust behavior, or react to a comrade&#8217;s call for help.</li>
<li>Situation assessment: where are the enemies, who should I attack?</li>
</ul>
<p>The biggest challenge is to make these tasks interact properly. For realistic behavior the fact must be acknowledged that each character has just a limited &#8220;cognitive capacity.&#8221; Let&#8217;s look at an example:</p>
<p>A character that is busily defending himself against two enemy fighters will not turn around to help a comrade, he might not even hear (or better: have the mental capacity to process) his call. His movement is mostly determined by the battle and his enemies, so his path finding is reduced to hold position or retreat &#8211; and he has no time to look around to realize that the direction is he moving to is a deadly dead end. Once his enemies are defeated the character is able to spend more cycles on other actions, like looking where the battle has taken him, reassessing the situation, regrouping, looking for new enemies to attack or noticing the archer hiding on a roof.</p>
<p>These are just the most obvious tasks which are directly related to a combat situation. Characters have much more behaviors which &#8211; on first sight &#8211; are not related to combat. For example taking shelter when it is raining, because getting wet is somewhat unpleasant. This is of course a behavior that should be suppressed while fighting. But what if it is a pitch black night and the torch in his hand is the only source of light? Letting the torch get extinguished would be suicide, so in some circumstances seeking shelter from rain can make sense even in the middle of a fight.</p>
<p>And a combat situation is one of the easiest things to handle, because of its nature only short term and tactical decisions have to be made. Dialogs or strategic decisions are much harder because they can be influenced by all previous player actions. Traditional system quickly reach their limits here, for example I encountered several situations in games like Oblivion or Fallout 3 where I completed quests in an order that was not anticipated by the designers and the dialogs conflicted with my previous interactions with certain characters.</p>
<p>Many, many rules will not apply or get activated in any situation, but there&#8217;s no a priori way to sort out unneeded rules. At any given point the whole repertory of behaviors as well as the full range of sensory input the character gets from his environment has to be considered by the AI engine. Selecting a subset in an &#8220;intelligent&#8221; way just moves the problem to another layer without reducing the complexity. And just applying some simple heuristics to cut down the complexity leads to strange and nonsensical actions and discontinuities in behavior (which can often be seen is current titles).</p>
<p>The point is that the complexity of the problem growth exponentially with the wealth of rules and behaviors that the characters have. And for more realistically behavior of characters you <em>want</em> a lot of rules. The current state-of-the-art AI architectures, which build on rather rigid algorithms (finite state machines, decision trees, etc.), become very hard to maintain and their runtime characteristics go down the drain when faced with this combinatorial explosion.</p>
<p>After this short exploration of what is problem is, let me try to explain why I think the Copycat architecture could solve these issues.</p>
]]></content:encoded>
			<wfw:commentRss>http://the-game.odahoda.de/2009/09/the-problem-of-game-ai/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

