<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>game-ai &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/game-ai/</link>
	<description>Feed of posts on WordPress.com tagged "game-ai"</description>
	<pubDate>Wed, 19 Jun 2013 20:44:27 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Freekick news: single player mode and first menu drafts]]></title>
<link>http://codeflow.wordpress.com/2009/02/22/freekick-news-single-player-mode-and-first-menu-drafts/</link>
<pubDate>Sun, 22 Feb 2009 16:15:45 +0000</pubDate>
<dc:creator>Antti Salonen</dc:creator>
<guid>http://codeflow.wordpress.com/2009/02/22/freekick-news-single-player-mode-and-first-menu-drafts/</guid>
<description><![CDATA[Time for a small update again. The last time I wrote I mostly reviewed the work done last year, wrot]]></description>
<content:encoded><![CDATA[<p>Time for a small update again. The last time I wrote I mostly reviewed the work done last year, wrote about the tools used and spent some time comparing Haskell with C++ as I had been busy rewriting the Freekick server in C++. So what&#8217;s been going on in the past month? Well, some of the points mentioned in &#8220;things to do next&#8221; part of the last post have been worked on, while others aren&#8217;t. Also, as I have now been using C++ for a few months there have been some signs of the need to wander off to another &#8211; hopefully better and shinier &#8211; programming language again, just like one would expect. This time I&#8217;m not thinking of Haskell though, but <a href="http://www.python.org/">Python</a>.</p>
<p>I&#8217;ll first let you know what&#8217;s new with Freekick core development. There&#8217;s been a lot of small improvements &#8211; I&#8217;ve added some server functionality such as allowing human players to play along or goal detection, but the most important update is that the OGRE client now has the ability to control a player and kick the ball around. This actually makes Freekick a soccer game that can be played. This doesn&#8217;t mean, however, that it would actually be fun to play the game &#8211; the relatively silly AI makes sure we&#8217;re not quite there yet. Another thing that makes the game less fun is that the clubs aren&#8217;t really there; the players have no differences in skills or personality, there are no kits or club names or tournaments.</p>
<p>The next thing for me to do is try and eliminate these two problems: first, the AI needs to be made better. At the moment it&#8217;s not really <strong>that</strong> bad &#8211; they pass the ball and try to score &#8211; but they only have a few actions which makes the match seem repetitive, and the goalkeepers are horrible. Second, the soccer match needs to have a menu around it, including creating and viewing tournaments, lineups, league tables &#8211; the whole deal. Actually I&#8217;ve already started work on that, which brings me to Python.</p>
<p>You see, working with C++ the whole time with Freekick core was not bad, but after you&#8217;ve seen something like Haskell in action, sooner or later you start to wonder if everything really needs to be so complicated. I&#8217;m talking about the sheer amount of time spent typing the code in, the loops, the iterators, the classes and headers and declarations, the curly brackets&#8230;</p>
<p>As Freekick was designed with modularity in mind and was split to multiple processes from the beginning on, the question of using Python for the game menu arose. After poking around with <a href="http://wiki.python.org/moin/PyQt">PyQt</a> for a while the first drafts of the game menu were already finished. I had had my doubts about dynamic languages and duck typing before, but now, after having written a few small applications with Python I&#8217;m slowly starting to see the advantages such a dynamic high-level language can bring. I was amazed how fast you could actually write a simple-looking Python script that does the same thing as an application you could spend weeks writing in C++.</p>
<p>Encouraged by my Python adventures, I played around with the idea of solving the other problem &#8211; AI &#8211; with Python. Since I don&#8217;t really fancy writing all the Freekick client side logic in Python, I thought about using <a href="http://www.boost.org/doc/libs/1_38_0/libs/python/doc/index.html">Boost.Python</a> to export the C++ classes into Python. Doing the <a href="http://github.com/anttisalonen/freekick/tree/a37e04c6b8ffbf85addb4f8c8e962da0f83d1f43/src/freekick/match/client/python">experiment</a> was interesting, but the unfortunate truth is that exporting the classes still seems like too much work, even with the excellent library, especially with the page-long error messages and the fact that the STL containers would apparently also be have to exported <a href="http://wiki.python.org/moin/boost.python/StlContainers">manually</a>. The other way would be <a href="http://www.python.org/doc/2.5.2/ext/lower-level-embedding.html">embedding Python</a> in C++, but I&#8217;d still have to export the data structures to Python and back, which makes me think it&#8217;s probably faster just to stick with C++ after all.</p>
<p>The GUI part is still far from ready &#8211; the only event that starts a match at the moment is a friendly match, and the GUI-match interface is non-existent at the moment &#8211; but the base is there and will be expanded when the time is ready. At the moment I think improving the soccer match itself is more important, since there is really no good reason to start a match if playing it isn&#8217;t fun, which brings me back to C++ and the AI. I&#8217;ve been reading the book &#8220;<a href="http://www.amazon.com/Programming-Game-Example-Mat-Buckland/dp/1556220782">Programming Game AI by Example</a>&#8221; by Mat Buckland again, which really is quite an inspiring work, but I think it will still take a while for me before the AI code is in a state where it both seems halfway smart and is easily extensible.</p>
<p>Luckily there are still a couple of mini projects for me to do in case writing AI gets boring. First of all there&#8217;s the GUI with all the tournament and schedule creation to do, but I think the time is also slowly getting ready for another Freekick client, this time with <a href="http://www.gnu.org/software/ncurses/ncurses.html">ncurses</a> as the &#8220;graphics&#8221; library. I&#8217;ve been wanting to get my hands dirty with ncurses for a while now, and I&#8217;m all for minimalistic software, so hey, why not. Other fun things include creating a TV style soccer camera in <a href="http://www.ogre3d.org/">OGRE</a> and taking player skills into account on the server side. I&#8217;ll keep you posted.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Game AI review: Left 4 Dead.]]></title>
<link>http://lifeamongthemachines.wordpress.com/2009/02/07/game-ai-review-left-4-dead/</link>
<pubDate>Sat, 07 Feb 2009 13:39:00 +0000</pubDate>
<dc:creator>lifeamongthemachines</dc:creator>
<guid>http://lifeamongthemachines.wordpress.com/2009/02/07/game-ai-review-left-4-dead/</guid>
<description><![CDATA[Valve has always been a game developer corporation close to my heart. From the early days of my chil]]></description>
<content:encoded><![CDATA[<p><a href="http://upload.wikimedia.org/wikipedia/en/thumb/5/5b/Left4Dead_Windows_cover.jpg/252px-Left4Dead_Windows_cover.jpg"><img style="float:left;cursor:pointer;width:252px;height:365px;margin:0 10px 10px 0;" src="http://upload.wikimedia.org/wikipedia/en/thumb/5/5b/Left4Dead_Windows_cover.jpg/252px-Left4Dead_Windows_cover.jpg" alt="" border="0" /></a></p>
<p>Valve has always been a game developer corporation close to my heart. From the early days of my childhood running scared through Half Life&#8217;s laboratory complex to the more complex Half Life 2 Saga.</p>
<p>Now, of course, they&#8217;ve released another game called Left 4 Dead.</p>
<p>Left 4 Dead, as you might tell by the picture, is a horror, a survival horror. Now, I&#8217;m not a big fan of these kind of games, because normally I play to be entertained, not play to later require a change of underclothes.</p>
<p>Even worse, it&#8217;s a cliché; you and three other people have to shoot down hordes of zombies in order to escape from the zombie infection.</p>
<p>But it isn&#8217;t as bad as it sounds, Valve has developed a system they call the &#8216;AI Director&#8217;. This Director controls where the zombies spawn, what kind of zombies they are and how many there are. It also controls what items spawn and where. Everything aside from the terrain and the survivors are controlled by the AI Director.</p>
<div style="text-align:center;"><span style="font-size:85%;">&#8220;A gasp, a scream&#8230;and all was silent, I crept up to the window and looked through it, a good thirty zombies where there; lying on the ground, against the wall, vomiting, stumbling&#8230;</p>
<p>I got into position around a half broken door, I brought my hunting rifle&#8217;s scope up to my eye and looked around. I fired , one zombie dropped; her&#8230;<span style="font-style:italic;">it&#8217;s&#8230;</span> brains scattered a good two yards across the concrete, another came into view, eyeing up a potential meal; another shot, and it goes down as well.</p>
<p>A sickly cough, and my heart raced. A Smoker! I located it on the roof of the opposite building, staring right through me. It&#8217;s tounge was hidelosuly long, and it spat it out. It wrapped around Zoey&#8217;s neck and the Smoker pulled&#8230;dragging Zoey with it, kicking and screaming.</p>
<p>Francis ran after her, I focused on the Smoker and fired&#8230;but missed.</p>
<p>&#8220;Get it off me, get it off!!&#8221; Shouted Zoey, the long sickly tounge choking her.</p>
<p>I shot again, and hit it, we called it a smoker for a reason, it gave out a huge cloud of smoke then fell, it&#8217;s tounge limp now that the head was no longer attached to it&#8217;s body.</p>
<p>Too late, screams all around us, Zoey&#8217;s cry had awoken the horde.</p>
<p>We assumed positions, I kept watching the street, Bill was watching my back. Zoey and Francis were back to back on the street below. A growl and Francis was down, hit by a hunter. I had already targeted the hunter and shot it, but the damage was done, a huge gaping hole in his adobmen.</p>
<p>The horde drew closer, running, screaming, eager for food. Zoey had her duel pistols out, shooting at this massive steamroller collection of Zombies, one grabbed her from behind, I took aim&#8230;but was covered in bile. I turned around and saw a Boomer, a huge monstroity of flesh whose liquidised and oddly voilitile innards attracted these beasts. Bill was down, his skull caved in. I pushed the boomer away and fired again. An explosion and I&#8217;m covered in even more bile.</p>
<p>I look down and see Zoey free of her captors, of course, they love boomer bile and wouldnt miss the oppotunity to eat boomer bile along with some rare meat.</p>
<p>I take Bill&#8217;s assult rifle and fire into the horde, they drop but are as quickly replaced. I throw one ofmy pipe bombs and the horde can&#8217;t resist a beeping stick. They gather around it, trying to pick it up and shoving others out of the way.</p>
<p>&#8216;BOOM&#8217;</p>
<p>I jump down to meet Zoey, she asks about Bill and I tell her.</p>
<p>&#8220;&#8230;Goodbye, old man&#8221; she says to Bill&#8217;s body.</p>
<p>A Roar, and we both look to our left; a Tank, a massive bastard whose simple goal in life is to pound everything to little pieces. It lifts up a car and flings it, I push Zoey out the way and try to move myself&#8230;too late, the car&#8217;s bonnet hit&#8217;s me&#8230;</p>
<p>&#8230;I awake and watch as Zoey empties her last clip into the tank, no effect. The Tank runs up to her and punches her, sending her 20 feet away. She dosent get up.</p>
<p>Then a light catchs my eye, a medkit, a god-damn medkit! I crawl to it with my one good arm and start patching myself up.  Getting ready to face that Tank.&#8221;</p>
<p>-Louis</p>
<p></span>
<div style="text-align:left;">The AI Director&#8217;s goal is to make sure the player has a challenge, it will not be hard on the player if it detects the player isnt coping well, and will provide ammo and other supplies. However, should the player go fully into &#8216;shoot everything&#8217; mode and push the game, the game will push back just as hard.</p>
<p>I only wish all games had this system&#8230;</div>
</p></div>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Game AI : A Collection of Useful Resources]]></title>
<link>http://programming4game.wordpress.com/2009/02/06/game-ai-a-collection-of-useful-resources/</link>
<pubDate>Fri, 06 Feb 2009 10:17:42 +0000</pubDate>
<dc:creator>mahbuburraaman</dc:creator>
<guid>http://programming4game.wordpress.com/2009/02/06/game-ai-a-collection-of-useful-resources/</guid>
<description><![CDATA[Artificial Intelligence (AI) in games has taken the backseat in development for a long time for many]]></description>
<content:encoded><![CDATA[Artificial Intelligence (AI) in games has taken the backseat in development for a long time for many]]></content:encoded>
</item>
<item>
<title><![CDATA[On-Line Case-Based Planning]]></title>
<link>http://ashwinram.org/2009/01/20/on-line-case-based-planning/</link>
<pubDate>Tue, 20 Jan 2009 04:00:55 +0000</pubDate>
<dc:creator>cognitivecomputing</dc:creator>
<guid>http://ashwinram.org/2009/01/20/on-line-case-based-planning/</guid>
<description><![CDATA[Some domains, such as real-time strategy (RTS) games, pose several challenges to traditional plannin]]></description>
<content:encoded><![CDATA[<p>Some domains, such as real-time strategy (RTS) games, pose several challenges to traditional planning and machine learning techniques. In this paper, we present a novel on-line case-based planning architecture that addresses some of these problems. Our architecture addresses issues of plan acquisition, on-line plan execution, interleaved planning and execution and on-line plan adaptation. We also introduce the Darmok system, which implements this architecture in order to play Wargus (an open source clone of the well-known RTS game Warcraft II). We present empirical evaluation of the performance of Darmok and show that it successfully learns to play the Wargus game.</p>
<p>Read the paper:</p>
<h4>On-Line Case-Based Planning</h4>
<h4>by Santi Ontañón, Neha Sugandh, Kinshuk Mishra, Ashwin Ram</h4>
<address>Computational Intelligence, 26(1):84-119, 2010.</address>
<pre><span style="color:#000000;"><span style="text-decoration:none;"><a href="http://www.cc.gatech.edu/faculty/ashwin/papers/er-09-08.pdf">www.cc.gatech.edu/faculty/ashwin/papers/er-09-08.pdf</a></span></span>
<a href="http://www3.interscience.wiley.com/journal/123263882/abstract">www3.interscience.wiley.com/journal/123263882/abstract</a></pre>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Game AI Development Event at Kurukshetra 09]]></title>
<link>http://thegreendestiny.wordpress.com/2008/12/22/game-ai-development-event-at-kurukshetra-09/</link>
<pubDate>Mon, 22 Dec 2008 12:11:47 +0000</pubDate>
<dc:creator>Sanjeev S</dc:creator>
<guid>http://thegreendestiny.wordpress.com/2008/12/22/game-ai-development-event-at-kurukshetra-09/</guid>
<description><![CDATA[College of Engineering, Guindy is organizing a game AI development event this time at  Kurukshetra,]]></description>
<content:encoded><![CDATA[<p style="text-align:justify;">College of Engineering, Guindy is organizing a game AI development event this time at  <a title="Kurukshetra home" href="http://kurukshetra.org.in" target="_blank">Kurukshetra</a>, the annual International Techno-Management festival.</p>
<div id="attachment_122" class="wp-caption alignright" style="width: 391px"><img class="size-full wp-image-122" title="K09" src="http://thegreendestiny.files.wordpress.com/2008/12/to-sanjeev.jpg?w=381&#038;h=92" alt="Kurukshetra 09" width="381" height="92" /><p class="wp-caption-text">Kurukshetra 09</p></div>
<p style="text-align:justify;">We wanted the event to reflect the current trends in the Game AI development industry. It is left to the participants to be the judge of to what extent the main goal is accomplished. The trends seem to be</p>
<ul style="text-align:justify;">
<li>Player specific content</li>
<li>A move away from hard-coded-rules based opponents.</li>
</ul>
<p style="text-align:justify;">We chose<a title="Luanr Lander applet" href="http://www.frontiernet.net/~imaging/lunar_lander_game.html" target="_blank"> Lunar Lander</a> to be the test game for both problem statements. Why? Lunar Lander was one of the earliest games to use Vector Graphics. But that&#8217;s not the reason why. Lunar Lander is simple, to code and to play. And.., it seemed to offer scope for hacking both problem statements. And now to the problem statements.</p>
<p style="text-align:justify;">The First problem statement is a challenge to create a player that plays the Lunar Lander. You could try a rule based approach and try coding it. And you may succeed too. But I&#8217;ll bet the easier way out is to make your player learn how to handle the Lander. There are many situations where a rule based approach would fail. Consider the case of a car racing game, a rule based approach may satisfy the initial requirements of the game. Your racer may successfully out-race the human player, but it wouldn&#8217;t do well on tracks you, as its programmer would not have seen.  Because your AI doesn&#8217;t know how to &#8216;drive&#8217;. Well, that&#8217;s the motivation for this problem statement.</p>
<p style="text-align:justify;">The second problem statement is with regards to content creation. Simple games such as Lunar Lander, I think deserve to engage the player for longer than 3 levels. The content of the game is very simple. It involves very little graphics. Is it possible to use modern / not-so-modern techniques to generate an infinite set of levels?? Theoretically, yes. Further, would these levels, &#8216;engage&#8217; the player as much as hand-crafted levels would? It is definitely worth a try.</p>
<p style="text-align:justify;">Well, if you are a Game AI developer PRO, and all this seems, well, &#8216;childish&#8217; to you,  or in case you disagree with what we have identified as the current trend in the industry, try the third problem statement. If you have any innovative ideas on game AI, an implementation of your concept is most welcome. Although, we are not intending to accept any text-book based search algorithms. Even slightly modified but better versions are accepted.</p>
<p style="text-align:justify;"><a title="Kurukshetra 2009" href="http://kurukshetra.org.in/events/index.php?req=AI_Game_Dev&#38;cat=0" target="_blank">This</a> is the link to the event&#8217;s page. Please go through the problem statements again. This is the first time we are attempting such an event. Your comments and suggestions are welcomed. They would be most invaluable to making this a more successful event in the next editions of Kurukshetra. Have fun, Merry Christmas and Happy New Year!!!</p>
<p style="text-align:justify;">
<p style="text-align:justify;">
]]></content:encoded>
</item>
<item>
<title><![CDATA[AI Architecture: Anim AI layer con.]]></title>
<link>http://dankline.wordpress.com/2008/12/11/ai-architecture-anim-ai-layer-con/</link>
<pubDate>Thu, 11 Dec 2008 17:35:51 +0000</pubDate>
<dc:creator>Dan Kline</dc:creator>
<guid>http://dankline.wordpress.com/2008/12/11/ai-architecture-anim-ai-layer-con/</guid>
<description><![CDATA[Dave Mark raises a good question: Hmpf. God help us all in trying to get this bit squared away anyti]]></description>
<content:encoded><![CDATA[<p><a href="http://dankline.wordpress.com/2008/12/09/ai-architecture-anim-ai-layer/#comment-235">Dave Mark </a>raises a good question:</p>
<blockquote><p>Hmpf. God help us all in trying to get this bit squared away anytime soon, Dan.</p>
<p>I’ll just stick to the top 3 layers and let other people figure out the rest.</p></blockquote>
<p>Should the Anim Coordinator be in the province of the Game Industry AI Programmer?  I define success as being used by designers and animators, shouldn&#8217;t it be their runtime support engineers?</p>
<p>In our cases, I would say the AI Programmer has to get this started.   While long-term I hope that there are specialists or standardized tools to handle this problem, but we aren&#8217;t there yet.  And right now most of the information originates in the AI decision maker, and the coordination is the main outlet for traditional AI data, such as locomotion planning, AI decisions and gameplay data.  It&#8217;s our bottleneck.  The animation layers, on the other hand, are used to thinking they run almost independently.   Hey, they run the player too!   So Animation programmers can&#8217;t see the problem, and Locomotion programmers are frequently too busy and specialized to see it either.  If another discipline had thought it was an important goal, we&#8217;d have a better concept to build on!</p>
<p>Plus, the benefits to the AI Programmer are significant.  So much of AI&#8217;s value comes from the animation results, and that means having efficient tools to convert sophisticated AIs into complex animations.  Even though I haven&#8217;t seen great success yet, what I have seen shows the value and pay-off for AI.  Anim script is a great parallel &#8211; it used to be that no animator wanted to do scripting, but many now have seen the value in being able to work faster, add variety, and add new techniques.  I want those same gains in my AI&#8217;s output!</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[AI Architecture: Anim AI layer]]></title>
<link>http://dankline.wordpress.com/2008/12/09/ai-architecture-anim-ai-layer/</link>
<pubDate>Wed, 10 Dec 2008 04:28:54 +0000</pubDate>
<dc:creator>Dan Kline</dc:creator>
<guid>http://dankline.wordpress.com/2008/12/09/ai-architecture-anim-ai-layer/</guid>
<description><![CDATA[I&#8217;ve been getting my hands dirty again in the guts of our AI for a little project and it has g]]></description>
<content:encoded><![CDATA[<p>I&#8217;ve been getting my hands dirty again in the guts of our AI for a little project and it has got me thinking about refactoring AI Architecture.  I&#8217;ve been pretty happy with my comprehension for the layers of the AI Architecture, from top to bottom.</p>
<p style="text-align:center;"><img class="size-full wp-image-229 aligncenter" title="AI Architecture" src="http://dankline.files.wordpress.com/2008/12/untitled2.jpg?w=228&#038;h=127" alt="AI Architecture" width="228" height="127" /></p>
<p>I think we&#8217;ve got a pretty good generally consensus on most of these, but there&#8217;s that vague one in the middle that we don&#8217;t talk about much and it&#8217;s kinda a mess.  That Anim-type chooser thingy.  I&#8217;ve heard it called the Animation AI or just the &#8220;state machine&#8221; for those who&#8217;ve given up, but usually it just ends up being this vague code API that relies on some sort of horrifying combination of data-driven and hard-coded strings.  If you&#8217;re lucky.</p>
<p>It should really be called something like the Anim Coordinator.  An Anim Coordinator is the layer that takes your vague AI request and identifies the specifics needed for the Anim layers below.  Back in the day, we thought this was pretty simple, but animations are getting pretty complex, and there&#8217;s a lot going on in there.   For example, given the &#8220;go there&#8221; behavior, the Anim Coordinator identifies that the full body should then be walking, and serves as a central hub for fielding the related data requests: the destination from your Behavior, how much to turn from your Locomotion interface, the walk type from the game data, or whether you can even walk right now at all or have to wait for something, for example.  The Behavior above doesn&#8217;t really care about these things.  It wants to know when you&#8217;re done getting there, or maybe if you failed, but for the X seconds that it takes to negotiate the world, the upper part of the AI goes on holiday and can spend its CPU cycles getting drunk on jagermeister shots.</p>
<p>But just because the upper AI&#8217;s decided the best thing to do is go across a room doesn&#8217;t mean animation has enough information to pick some keyframes.  There&#8217;s signals in and signals out that need to be processed, game state requests, conditionals, transitions between sequences of anims, etc.  In particular, sequences of synchronized anims is tricky, like the Quick Time Events in God of War, and yet something that builders should be able to easily do frequently, and with substantial variation.  (Do we really want the AI to have to have  seperate Stun behavior for every sequence where the AI is stalling waiting for a button?)</p>
<p>So far, the best architecture I know of for this is the finite state machine.  And there&#8217;s one big advantage to using a FSM &#8211; your player is probably already using one.  Most games with lots of actions available to the player have a similar problem.  Players hit buttons, which sends signals to animations to play.  But not every animation can play after every button press, so there&#8217;s a whole FSM of valid animations from every point in time, game state interfaces and queries, conditions, etc.  In my experience, works pretty well.  Looks pretty much like what an FSM is supposed to look like.</p>
<p>There&#8217;s one problem &#8211; the Anim Coordinator doesn&#8217;t look like that.</p>
<p>In practice, most AI Behaviors want to be able to switch to every other behavior.  Consider Behavior Trees, where there are traditionally no limitations on valid transitions, just pre-conditions in the Decision Making layer.   If the Behavior says it should run, 9 times out of 10 the Anim Coordinator should try and comply.  That means every macro Anim state in your FSM is connected to every other macro Anim state (assuming some sort of hierarchical organization for sanity).  That&#8217;s the worst case for an FSM architecture imaginable.  Oops.   Some games have used planning to map through this morass, but that doesn&#8217;t make the FSM any easier to work with, it just means you can have longer independent state strings.</p>
<p><img class="alignleft size-full wp-image-227" title="Send All State" src="http://dankline.files.wordpress.com/2008/12/untitled.jpg?w=125&#038;h=86" alt="Send All State" width="125" height="86" />In the other Anim Coordinator architectures, the parts that seem to work well are these automatic transition-based approaches (insert the technical term here) &#8211; recognize the request to switch anim types, end the current type, and start the new one.   Unfortunately, the UI for these is pretty horrible, and in an ideal world, an animator/designer can go into your Anim coordinator and add custom transition states and custom game state reactions.  I&#8217;ve never once seen that happen.  I heard of it happening one time, but apparently that animator was a whiz kid coder too who half-built the FSM, so I&#8217;m not sure that counts.</p>
<p>We need a UI that expresses this  &#8220;send all&#8221; and &#8220;receive all&#8221; concept with good debugging to follow them, but still has all the functionality of the hFSM, for those cases where we really do need to force a certain kind of transition.</p>
<p>I want to see animators/designers sitting in front of these kinds of AI tools and using them.  I think this time around I&#8217;d like to try a hFSM with these 2 special kinds of jump nodes, and make my initial version of the AI only use these nodes.   Then allow the hFSM to use custom signals that different parts of the tree can set, to emulate a level of content scripting that the game state code doesn&#8217;t really need to know about right away.  Like &#8220;my posture is sitting now&#8221;.   It sounds simple.  Hopefully, this time we&#8217;ll get it right.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Developing a Drama Management Architecture for Interactive Fiction Games]]></title>
<link>http://ashwinram.org/2008/11/26/developing-a-drama-management-architecture-for-interactive-fiction-games/</link>
<pubDate>Wed, 26 Nov 2008 04:00:31 +0000</pubDate>
<dc:creator>cognitivecomputing</dc:creator>
<guid>http://ashwinram.org/2008/11/26/developing-a-drama-management-architecture-for-interactive-fiction-games/</guid>
<description><![CDATA[A growing research community is working towards employing drama management components in interactive]]></description>
<content:encoded><![CDATA[<p>A growing research community is working towards employing drama management components in interactive story-based games. These components gently guide the story towards a narrative arc that improves the player&#8217;s experience. In this paper we present our Drama Management architecture for real-time interactive story games that has been connected to a real graphical interactive story based on the Anchorhead game. We also report on the natural language understanding system that has been incorporated in the system and report on a user study with an implementation of our DM architecture.</p>
<h4>Developing a Drama Management Architecture for Interactive Fiction Games</h4>
<h4>by Santi Ontañón, Abhishek Jain, Manish Mehta, Ashwin Ram</h4>
<address>1st Joint International Conference on Interactive Digital Storytelling (ICIDS-08), Erfurt, Germany, November 2008</address>
<pre><a href="http://www.cc.gatech.edu/faculty/ashwin/papers/er-08-11.pdf">www.cc.gatech.edu/faculty/ashwin/papers/er-08-11.pdf</a></pre>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Stupid and Dumb problems]]></title>
<link>http://dankline.wordpress.com/2008/11/18/stupid-and-dumb-problems/</link>
<pubDate>Tue, 18 Nov 2008 09:15:30 +0000</pubDate>
<dc:creator>Dan Kline</dc:creator>
<guid>http://dankline.wordpress.com/2008/11/18/stupid-and-dumb-problems/</guid>
<description><![CDATA[It seems there&#8217;s 2 different classes of problems that just drive me nutty, because it&#8217;s]]></description>
<content:encoded><![CDATA[<p><img class="alignleft" style="margin:0 5px;" title="Doh! by striatic from flickr.com" src="http://farm3.static.flickr.com/2250/2192192956_c9023211ca.jpg?v=0" alt="Doh! by striatic from flickr.com" width="120" height="90" /></p>
<p>It seems there&#8217;s 2 different classes of problems that just drive me nutty, because it&#8217;s difficult to tell when I&#8217;m dealing with them.  Knowing the difference between them helps.  I call them stupid problems to solve and dumb problems to solve.  Consider a simple situation of trying to add 2 numbers.  Here&#8217;s a stupid solution:</p>
<pre>function AddUp(int totalToAdd, int&#38; originalValue)
     originalValue += totalToAdd</pre>
<p>This could be called the &#8220;why bother&#8221; solution.  Here&#8217;s the dumb solution:</p>
<pre>for(totalToAdd; totalToAdd &#62; 0; totalToAdd--)
    totalSum -= 1;</pre>
<p>Otherwise known as the &#8220;WTF&#8221; approach.</p>
<p>Now both of these are not good solutions, but the dumb solution is way worse.  It not only doesn&#8217;t solve the problem well, it makes every problem harder to deal with too, because it makes everything using it unreasonably slower.</p>
<p>So am I just saying don&#8217;t be dumb or stupid?  If only it was that easy.  But not every problem is this simple.  There are some genuinely hard problems out there.  And every once in a while I find myself working on something, and discover I&#8217;m actually trying to solve a dumb or stupid problem.  Stupid problems are easy to fix:  just ask someone else whose done it before.  But some problems are inherently dumb.  These problems are <em>evil</em>.  Think NP-complete problems.  These problems, by their very nature, will eat up your time and drag your project down.  They will seem right, but every solve you think of will bloat your schedule, or your CPU time, or something.  That&#8217;s a sign your problem could be a dumb one to solve.  But frequently, once I realize I&#8217;m tackling a dumb problem, all it takes to fix is to take a step back, say &#8220;This is a dumb problem, there has to be an easier way to achieve this.&#8221; I just change the question I&#8217;m answering to something easier, or cheat the output a bit.  Most of the time, I didn&#8217;t really need to be solving the dumb problem in the first place.</p>
<p>Yes,  I guess that means most dumb problems in development are stupid problems as well.  What can I say.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Introductions All Around]]></title>
<link>http://onlinealchemy.wordpress.com/2008/11/13/introductions-all-around/</link>
<pubDate>Fri, 14 Nov 2008 02:41:05 +0000</pubDate>
<dc:creator>Mike Sellers</dc:creator>
<guid>http://onlinealchemy.wordpress.com/2008/11/13/introductions-all-around/</guid>
<description><![CDATA[A new blog!  How unusual!  How exciting! Okay, what&#8217;s this all about? In this blog I&#8217;ll]]></description>
<content:encoded><![CDATA[<p>A new blog!  How unusual!  How exciting!</p>
<p>Okay, what&#8217;s this all about?</p>
<p>In this blog I&#8217;ll be writing about artificial intelligence, game design, virtual worlds, massively multiplayer online games, social games, and a variety of usually related subjects.  I welcome topical, respectful discussion.</p>
<p>My background: I run Online Alchemy, a small company in Austin, Texas, specializing in online social games, particularly those with a virtual world component.  We have been working for six years on advanced social AI for games and simulations (I&#8217;ll talk about that in another post), including working for several years with the Defense Advanced Research Projects Agency (DARPA). We have also created a unique social networking technology and have a variety of games in development.</p>
<p>Read on for more details of my past (well, not that many).</p>
<p><!--more-->Before founding Online Alchemy in 2002, I worked for Electronic Arts for three years as a Senior Game Designer, leading game designs for several projects including SimCity Online, The Sims 2, and Ultima Online.  Prior to that I co-founded and was the Chief Creative Officer for The Big Network, an early family-oriented social networking company.  There I designed and produced several Java-based games, and in 1998 designed our primary product, MyPlace.   Before The Big Network I was one of the co-founders of Archetype Interactive (started in 1994, acquired in 1996), where I was the lead designer on Meridian 59, the first 3D massively multiplayer online game (MMOG).</p>
<p>Before getting into games I worked in software engineering, primarily in developing 2D and 3D CAD systems, and in user interface design and user-centered design for medical and scientific visualization systems.  In the early 1990s I designed the user interface for the first 3D visualization system used in the operating room by neurosurgeons.</p>
<p>I have a BS in cogntive science and have done graduate work in AI (expert systems, neural networks, genetic algorithms, etc.)</p>
<p>Oh, I live in Austin, Texas, with my wife, the last of our six kids (the rest are married or in college), three dogs, and a sugar glider.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Bragging time]]></title>
<link>http://gimmereward.wordpress.com/2008/11/07/bragging-time/</link>
<pubDate>Fri, 07 Nov 2008 08:40:22 +0000</pubDate>
<dc:creator>szityu</dc:creator>
<guid>http://gimmereward.wordpress.com/2008/11/07/bragging-time/</guid>
<description><![CDATA[I got some really good news yesterday: Pieter Spronck presented our paper (we = Pieter, Marc Ponsen]]></description>
<content:encoded><![CDATA[I got some really good news yesterday: Pieter Spronck presented our paper (we = Pieter, Marc Ponsen]]></content:encoded>
</item>
<item>
<title><![CDATA[Game AI]]></title>
<link>http://thegreendestiny.wordpress.com/2008/11/03/game-ai/</link>
<pubDate>Tue, 04 Nov 2008 04:56:35 +0000</pubDate>
<dc:creator>Sanjeev S</dc:creator>
<guid>http://thegreendestiny.wordpress.com/2008/11/03/game-ai/</guid>
<description><![CDATA[I am afraid I have to push the &#8216;Go Engines Analysis&#8217; post to a later date. Commercial an]]></description>
<content:encoded><![CDATA[<p style="text-align:justify;">I am afraid I have to push the &#8216;Go Engines Analysis&#8217; post to a later date.</p>
<h3 style="text-align:justify;">Commercial and Academic Research in Games</h3>
<p style="text-align:justify;">Generally, most research done by academics is of some use commercially. And naturally, one would expect the same to be the case in game AI research also. Only, its not. Commercial games concentrate more on the graphics, and the user experience part of the game, when compared to AI. If there is a bold announcement from the industry stating that the next edition of their game is to have the &#8216;next-generation-human-like-AI&#8217;, they have mostly been huge let-downs, and miserable failures. The strongest AI, in commercial games, these days are those that &#8216;cheat&#8217;. Have you never wondered in-game, at least in the harder levels, &#8216;When did he get so much points?&#8217;,'Does his nitrous never empty?&#8217;. And sometimes just plain &#8216;WTF!!&#8217;</p>
<blockquote><p>Instead, the NPCs ( Non Player Characters ) in the majority of games are controlled by finite state machines, lists of conditional statements, and the occasional A<sup>*</sup> path finding algorithm. Typically, no learning is present in either development or execution of the AI. Everything is hard-coded by the human game developers.</p>
<div>-<a title="Julian's Home page" href="http://julian.togelius.com" target="_blank">Julian Togelius</a></div>
</blockquote>
<p style="text-align:justify;">Academic Research into game AI hasn&#8217;t been too rewarding either. So we built the strongest Chess player in history. And we are building better ones. Has that helped us understand how people play the game? How we learn to play the game? How we interpret patterns? Also, Academic Research is mainly focussed on making AI increasingly better at the game, aiming to make it the best. Naturally, that&#8217;s not the commercial requirement. Would anyone but Kasprov want to play Deep Blue? What is required commercially is that the player&#8217;s opponents should neither be too domineering, nor too easy.</p>
<h3 style="text-align:justify;">How Games interest us</h3>
<p style="text-align:justify;">According to <a title="Raph Koster, MMORPG's Big Daddy" href="en.wikipedia.org/wiki/Raph_Koster" target="_blank">Raph Koster</a>, a game is fun to play because we learn the game as we play; we understand and learn the patterns underlying the game, and finally &#8220;<a title="Grok -dig - understand" href="http://en.wikipedia.org/wiki/Grok" target="_blank">grok</a>&#8221; how to play it. This requires that the level of challenge always is approximately right, and that new patterns are always available to learn &#8211; games that are too simple or impossible to understand are boring.<br />
Another theorist who has tried to nail down the essence of games and why they are fun is <a title="Thomas Malone's page at MIT" href="ccs.mit.edu/malone/" target="_blank">Thomas Malone</a>. He claims that the factors that make games fun can be organized into three categories: challenge, fantasy, and curiosity.<br />
The existence of some sort of goal adds to the entertainment value. Further, this goal should not be too hard or too easy to attain, and the player should not be too certain about what level of success he will achieve.<br />
Games that include fantasy, according to Malone, show or evoke images of physical objects or social situations not actually present. The sensation of being somewhere else, being someone else, doing something else.<br />
As for the third factor, curiosity, Malone claims that fun games have an optimal level of informational complexity in that their environments are novel and surprising but not completely incomprehensible. These are games that invite exploration, and keeps the user playing just to see what happens next.
</p>
<p style="text-align:justify;">
<h3>The most interesting applications of real Computational Intelligence and Machine Learning methods</h3>
<p style="text-align:justify;"><a title="NERO" href="http://nerogame.org" target="_blank">NERO</a>, is a fantastic new concept. The player &#8216;teaches&#8217; (initially stupid) bots to become &#8216;trained&#8217; soldiers. In the core of the game is a learning system called NEAT. It involves using Genetic Algorithms to train Artificial Neural Networks( NeuroEvolution ). NEAT involves continually taking ANNs, from an initially random population, and then combining the best among them in the hope that it&#8217;ll result in a better ANN.<br />
Another place where learning methods may be put to use is Automatic Content Generation. <a href="http://togelius.blogspot.com/2007/08/how-better-ai-can-make-racing-games.html" target="_blank">Here </a>is an intriguing new concept. Customized racing tracks according to a player&#8217;s skill. The next Prince of Persia edition claims, custom player experience. Although it is not clear of how &#8216;custom&#8217; it is to be, this sounds like the beginning of something big. So Automatic Content Generation is definitely IN.<br />
Another instance of Content Generation, in the process of development, is a game called <a title="GAR @ UCF" href="http://gar.eecs.ucf.edu/" target="_blank">Galactic Arms Race</a>, being developed by Ken Stanley, and his team at UCF, the same dude who pioneered NERO. Remember the classic, Space Invader arcade game? It seems to be something similar except, there is a large and INCREASING variety of guns you can choose from. And each gun fires differently. That is, the graphics is different. And the graphics was not coded by hand, it was EVOLVED by a custom version of NEAT.</p>
<h3 style="text-align:justify;"><a title="GECCO SIGEVO 2009" href="http://www.sigevo.org/gecco-2009/competitions.htm" target="_blank"><br />
Game competitions at GECCO</a></h3>
</p>
<p style="text-align:justify;">GECCO 2009, is to conduct two competitions, Salamander and Car Racing. The details of Salamander are not too clear to me, but looking at <a title="Genetic Argonaut" href="http://geneticargonaut.blogspot.com/2007/05/racing-with-evolutionary-algorithms.html" target="_blank">this</a> and <a title="Austin's Aibos" href="http://www.cs.utexas.edu/users/AustinVilla/?p=research/learned_walk" target="_blank">this</a>, it seems, the Salamander is to learn to walk and then catch flies around the house.<br />
The car racing controllers are tested on <a title="TORCS' Home" href="http://torcs.sourceforge.net/" target="_blank">TORCS</a>. (TORCS, does not have dynamite graphics, but I find it a lot more difficult than NFS, but thats just my perception. It was built mainly for testing AI conntollers). Last year&#8217;s entries were quite a variety. There was a controller based on NEAT, and there was also a hand coded controller(Although, I doubt it performed as well as the other trained/evolved controllers, score CI/ML!). The significance of a trained controller is that, provided it is trained sufficiently well on a good track, it acquires the basic driving skills. This would be a big plus for games like <a title="TrackMania Nations' Home" href="http://www.trackmanianations.com/" target="_blank">Trackmania Nations</a>, which allow the gamer to design his own tracks, but does not give competing cars, leaving the gamer to look for human opponents, to race in his own track. Another aspect of trained units is the versatility. A small change in the training process and the controllers become more aggressive, trying more to push the other players off the track!!</p>
<p style="text-align:justify;">And now..,<br />
The crux of the matter. If you were to host a contest, which game, do you think, considering the expanding scope for computational intelligence in games illustrated by the examples above, would be a good bed for innovative application of CI/ML?<br />
Remember, its a time bound contest. The participant should have enough to time to experiment.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[AIIDE 2008 Day 3: Live Blogging]]></title>
<link>http://dankline.wordpress.com/2008/11/03/aiide-day-3-live-blogging/</link>
<pubDate>Mon, 03 Nov 2008 08:12:24 +0000</pubDate>
<dc:creator>Dan Kline</dc:creator>
<guid>http://dankline.wordpress.com/2008/11/03/aiide-day-3-live-blogging/</guid>
<description><![CDATA[(A reminder.  I’m editing these notes a week after the fact, just making it readable, but I’ve left]]></description>
<content:encoded><![CDATA[<p><em><a href="http://www.aiide.org/AIIDE2008/Welcome.html"><img class="alignleft" title="AI IDE 2008" src="http://www.aiide.org/AIIDE2008/Welcome_files/AIIDE-Logo-Small.png" alt="AI IDE 2008" width="147" height="81" /></a></em>(A reminder.  I’m editing these notes a week after the fact, just making it readable, but I’ve left the original voice in this piece and roughness intact because I feel the live-blogging depth is more interesting then a concise, thoughtful analysis would be. I’m happy to answer any questions people have, though, and I encourage you to contact the original presenters as well for more thorough details.)</p>
<p>(links to my <a href="http://dankline.wordpress.com/2008/10/30/aiide-2008-day-1-live-blogging/">Day 1</a> and <a href="http://dankline.wordpress.com/2008/10/30/aiide-2008-day-2-live-blogging/">Day 2</a> conference live blog)</p>
<p><strong><em>Halo 3 Objective Trees: A Declarative Approach to Multiagent Coordination </em></strong>by Damian Isla (Bungie)</p>
<p><img class="alignleft" style="margin-left:0;margin-right:5px;" title="Halo 3" src="http://api.ning.com/files/j4EpQvsMTdmtQIvr6n5OjZcBz-Z8cJVuTg-qVv3h4CvrogjtsEH9UgaHQY6xNHsbNmevLj8WsSgxF-THlFgIoNN1ZwuTchWQ/halo3.jpg" alt="" width="160" height="89" />Damian Isla is stealing from me, I swear.  (Kidding!)  Unfortunately for me, this is totally the talk he gave at GDC 2008.  He&#8217;s sketching out an Encounter Manager – an AI that designs encounters and orders AIs around. He&#8217;s still talking about it in terms of squad tactics rather then narrative though – how groups move around, retreat, create “spice” variety.  I remember this sort of thing being awesome back in <em>Halo</em>.  Isla divides the encounter space up into territories, based on the player&#8217;s approach. He lays out a 3-step, 3-pronged encounter that he says is “simple”. Within each territory, he cites “tasks”: the language mission designers for telling squad AI what to do. Tasks identify an squad’s territory and their behavior – like aggressiveness, rules of engagement, and inhibitions. These aren&#8217;t individual instructions per-say, these are captain orders. <!--more-->In fact, each territory is a set of discrete points, like way points, that the low-level individual AI cycles through Fight-&#62;Flee-&#62;Cover inside. So it&#8217;s easy to switch territories on the AI – it just tells the low-level AI to use points somewhere else.  Very elegant. Ah, they did do it old-school style in <em>Halo</em> – I was right! A really neat demo of the island map where the marines springboard between rocks along the beach, switching territories. Also a really interesting demo of how the marines move and choose points – they move a lot more then I realized as a player. He draws a pretty strict line between the Individual/Squad AI (AI Engineers and designers) and the Task/Mission AI.(Mission designers and Isla). In <em>Halo 2</em> they just used a FSM with script tests with testable transitions to try and solve this. But the scripts got too complicated for some missions because of non-deterministic branching that lead to almost complete state machine interconnectivity.  FSM main limitation is that transitions have to be explicit, and that can get crazy.</p>
<p>Imperative or Declarative?  Imperative is line-by-line straight “how”, whereas declarative, like regular expressions, just describe what they are looking for. Imperative has more flexibility, but declarative is more maintainable and simpler. Declarative is just flat-out better for designers, but Isla says we usually do imperative . The Sims did a simple declarative model with their environment based AI, with the agents so simple, climbing the “happy-scape” of the object-space. In behavior trees, tasks are declarative, and have priorities, can be made up of sub-tasks, and have a finite capacity (because the territories and goals have finite capacity). So he went back to behavior trees again. In an aside Isla points out that what make behavior trees unique is that the decisions are just a prioritized list (although there is equal priority that splits individuals evenly), which is just simpler then weighting or percentage. Plus it’s nice that behaviors are self-describing and explicitly know only about themselves, and no external knowledge. They fit “objective trees” for his tasks well. As Isla puts it, it&#8217;s a dynamic plinko machine that&#8217;s run thousands of times! Doesn&#8217;t sound like he&#8217;s evaluating all trees all frames – just the conditions of the current tree until it&#8217;s finished or failed, but that&#8217;s likely a developer call. Next, he runs through the algorithm, which is straightforward. I love how descriptive Isla is – he doesn&#8217;t shy away from the math, but he keeps it understandable and his techniques simple.  The most interesting part is the cost function that determines what task should be chosen by which squad – because positional awareness of territories is important, but that requires inter-agent “communication to avoid making other squads look stupid. Instead, he weights areas by “all groups distance covered” – the cost of the distribution is the sum of the cost of all individual&#8217;s distance, and then takes a greedy approach.</p>
<p>Bungie made refinements throughout the process from designers. They added task “filters” which were type-conditions to limit who can use tasks. They used infinite costs to represent a bad filter match. They could keep tasks open or closed forever, independent of whether the initial condition was still true. Death and Living count were explicit conditions for this too because they were so frequent. Bungie also explicitly supported one-time assignment to a task. In examples, Isla showed how to do leaders with leader filters and no leader filters, and then created a “squad broken” task, that would activate when a leader was killed. (This could have been a broken override for all tasks, that shuts them off explicitly for 10-20 seconds, but I think it was just a high priority task option). Second Isla showed player pickup in vehicle encounters. He shows the vehicle filter, a player that needs vehicle detection, and then a pickup task. Designers can add this task at the top of the tree at the very end and the transitions just work themselves out.</p>
<p>Badness summary – designers require training for declarative languages, and there was a sometimes awkward relationship between overall level script and objectives, particularly dialogue syncing with objectives changing, and tying together enemy and ally fronts.  He tried matching the two fronts in concert with a scripting version because the enemies and allies were 2 separate behavior trees. And lastly it&#8217;s not always intuitive to bucket by squad – because in <em>Halo 3</em> individuals in squads couldn’t change squads when they change roles (like, grabbing a new weapon). But designers liked it, the system took requests well and it matched how designers think about encounters. It was a great quick prototyping tool. And it scaled well so everyone used it for all cases (rather then mixing with script, say). Interesting, it was also driven from the UI up, and then they chose the data and the trees. Declarative showed its chops – less direct control and flexibility by author (reliant instead on AI), but more concise representation, more manageable, and ultimately better results.</p>
<p>Question: How was training? Interestingly, the whole system was design requested, so design put forward the initial tree idea and owned the training, which really drove success. Question: The most hackiness was the front coordination – they just sort of globally script the major steps and gate both sides until they reach major points. Question: you&#8217;re using global knowledge, might not work for many players? Isla says true, but just design and tweak to make realistic, and give player feedback from AI for whys (animation, alert state, etc). To add, talks about awareness activation conditions on tasks. Question: Influence map for the fronts issue to do mapping? Issue would be designers like to be really specific in how things fall apart.  Might work well for allies.</p>
<p><strong><em>Navigating Detailed Worlds with a Complex, Physically Driven Locomotion: NPC Skateboarder AI in EA’s skate </em></strong>by Mark Wesley from EA</p>
<p><img class="alignleft" style="margin-left:0;margin-right:5px;" title="skate" src="http://z.about.com/d/skateboard/1/0/S/R/skate-icon.jpg" alt="" width="110" height="143" />After coffee, talks on paths and path following.  How do you make skating bots? Build skate paths in an editor. Unfortunately I missed some of the setup details, but there&#8217;s a path editor, and it looks like they are just creating short “skater lines” using curves and about 5 velocity points, and the skaters just direct navigate between the ends of the lines. In fact the skater tricks are encoded into the path itself.  Wesley even had path recording from player input to make it easier – creater activates, does trick, creates path. Skaters use local checking to navigate the board along the generated path. Then on top of this there are skater profiles in the AI that influence when they do the tricks on the path, use path following, and dynamic avoidance. EA also had automated testing – because AI Controller could be attached to anyone, including the player, so easy to soak test the paths. It&#8217;s a large open world &#8211; do they need a lot of paths? Yes, Wesley says, and EA relied on QA to do it. 5,000 of them, ¼ million nodes, 465 kilometers. They streamed the paths in, which was simpler then it sounds because they were small and discrete from each other. Pros: it worked and was understandable, easy to script to constrained paths, and otherwise the random path constraints gave nice emergent behavior. Cons: skaters were constrained to the path, requires a lot of data, and paths can be invalidated if underlying world moves. Wesley had a few automated tools to fix paths when art changed, but EA mostly just did paths once the levels were done.</p>
<p><em><strong>The Rise of Potential Fields in Real Time Strategy Bots </strong></em>by Johan Hagelbäck from Blekinge Institute of Technology in Sweden</p>
<p>Next up in the whirlwind is Hagelbäck. More bot building! He&#8217;s pulling potential fields from robotics, used primarily in obstacle avoidance. It&#8217;s an attractive or repelling charge at a point, looking a bit like an influence map once summed up. You can generate paths using the map as a cost.  Looks like Hagelbäck uses it to get the destination, as well as the path.  His domain was Orts, an RTS. First, find game objects, then put driving forces on the map (both from objects and goals), and then build your fields – static ones from geometry, semi-static from goals, and the really dynamic from agents. A couple of tweaks to try and get better fields, control oscillations using the field itself. After the latest version, their bot was 99.25% effective against other bots in a tournament. Interesting how it positionally aggregates to handle oscillation and can deal with incomplete information.</p>
<p><strong><em>A Cover-Based Approach to Multi-Agent Moving Target Pursuit </em></strong>from Alejandro Isaza</p>
<p>Isaza is looking at target interception pathing, using arbitrary, undirected, known graphs, turn based model, with one target and several pursuers. Problem with MTS and A* is that they can reduce distance, but not mobility, and there&#8217;s no team coordination.  It can work, but it&#8217;s not appropriate. In the demo you can see that A* just chases forever, never catches. When he says “cover” he means “corner”.  The AI in corner should progressively cut off territory from the target. It&#8217;s an interesting idea, particularly in squad shooter or horror games – you can definitely make them look a bit dumb now. Is it more fun though if the player has to avoid them when they’re closing in? Isaza&#8217;s trying to solve it – by maximizing his “cover” graph rather then minimizing the path distance only.  First, divide the space in two, then determine which is covered and what&#8217;s not. This gives automatic coordination if you share cover graphs and maximize the team&#8217;s cover. To get the cover graph, do a Breadth-first expansion simultaneously on each agent on both sides, prioritizing time-to-reach, which takes O(vertices) time, and stop the expansion where each agent’s graph meets. The cover graph is a measurement of what the agent can get to before the target. In a refinement, Isaza also incorporates risk using an offset –a willingness to sacrifice a certain percentage of cover to get closer. 10% seems to be optimal from his data.  I’m not sure I got all the steps here clearly, but it seems like there are some really good opportunities here, particularly with, say, large vehicles trying to block off ground forces – tasks that are less about one agent’s survival, since the algorithm assumes all agents are invulnerable. But it could also be incorporated with other techniques to be generally useful too. Something I expect to see implemented for certain goal types in all AIs in the future.</p>
<p><strong><em>Talking with NPCs: Towards Dynamic Generation of Discourse Structures </em></strong>from Christina R. Strong from UCSC</p>
<p><img class="alignleft" style="margin-left:0;margin-right:5px;" title="Facade" src="http://farm1.static.flickr.com/98/367030134_9a7874e472.jpg?v=0" alt="" width="160" height="113" />The last session at the conference is on Language.  Strong’s investigating dialogue generation. She starts by defining “dramatic beats” – the smallest unit of dramatic action that changes character relationship and story state – aka a little piece of interaction.  <em>Facade</em> was authored with this in mind. She&#8217;s generating discourse structures using beats automatically. Not just sentences, conversation. To do this, she needs to explicitly representing social games, characters, and social relationships. So she uses planning to make a FSM for a beat. It’s important because <em>Facade</em>&#8216;s beats are all hand authored. <em>Mass Effect </em>tried to reduce dialogue through design, but still had 28,000 lines. She wants to minimize the amount of writing the author has to do. Explicitly represent backstory, character, relationships, and higher level author goals, creating a wider variety of conversations then a human author could.  Plus, a good story should have affinity beats as in <em>Facade</em> – getting player to side with one character or another.  And a beginning, middle, and end.</p>
<p>So she uses Hierarchical Task Network Planning.  Higher level tasks are author goals, lowest level are dialogue.  She also uses forward state progression (?), which allows for functional effects like tension.  Her approach generates linear plans for specific situations, but doesn&#8217;t incorporate player interaction automatically, unfortunately (probably because they are non-deterministic).  To plan the conversations, she first chooses the characters, and then identify the steps are required to get the desired result.  In the middle parts of the conversation, she pads with support, questions, or past information nodes, to then force the player to make a choice.  She incorporates an annotation operator so that the FSM can represent all player choices. (Although, I&#8217;m not clear here why the whole conversation has to be actively mapped instead of dynamically generated to respond to the player.  I believe this is what Façade was doing).</p>
<p>She&#8217;s using small chunks of pre-written dialogue from a library, presumably because you can use less dialogue by matched more to goals then the old scripted situations.  In her work so far, they have generated 120 stories so far, and over 2000 unique dialogue FSMs – each different information or told in a different way.  It&#8217;s interesting that you could do this with vocals as well as text – it&#8217;s similar to what I was planning at one point to handle dialogue in the Encounter Manager as beats.  Her most interesting conclusion was that adding just one new information node to a character can double the number of conversations.  Strong wants to explore “Mixed Initiative Planning” because her current preconditions aren&#8217;t always good enough.  And she want to find ways to increase player interaction. Very interesting work.</p>
<p>Question: What about incorporating character actions? A great question – seems possible.  <em>Facade </em>plans actions and dialogue simultaneously. Question: Are you really helping the author do less? (Can we measure the savings? Hehe, I&#8217;ll bet <em>Far Cry 2</em> is doing exactly this just out of necessity, but a good question) (Lines are annotated with tags in both approaches.) Strong points out the dialogue generated is more dynamic then pre-written because it can use dynamic information, so it might not matter.  I’d like to see someone actually try to compare the work; depending on the scale and linearity of the game, I’d expect this work to be easier.  But it’s questionable if it would work with vocals – whether planning lines of vocals out like this will sound natural .  It’s possible voice actors would find it difficult to act out these non-linear lines.</p>
<p><strong><em>Learning and Playing in Wubble World </em></strong>by Wesley Kerr</p>
<p><img class="alignleft" style="margin-left:0;margin-right:5px;" title="http://www.wubble-world.com" src="http://www.wubble-world.com/images/screenshots/ScreenShot2.png" alt="" width="164" height="124" />The last lecture is a language construction proposal. Kerr’s building a Sentence-Scene Corpus. He wants to build a game for kids for free, have the kids play the game using his language, record it, and use that data to build a word identification library. Why kids? Cheap labor, successful outreach, patient with dumb agents, and intrinsic desire to teach. <a href="http://www.wubble-world.com"><br />
Http://www.wubble-world.com<br />
</a> is his site, a collection of mini-games. You talk with your wubble and it learns language from you. You tell it about game objects, actions, etc. Kerr is parsing the sentence semantic construction of the kids, using specializing weights to learn common phrases. Active wubble question-asking gives the interactions impetus. Problem, what if kids aren&#8217;t accurate? Yep, this happened, particularly with things like size and color of objects. But that&#8217;s what they are looking for, concepts. And they measure the probability distribution, and they gradually get closer to the right concept. More of an issues with sample size, because it was hard to differentiate, but this will go away at scale.</p>
<p>Generally, the wubbles were able to get accurate language concepts. Conclusion is that not only are games entertaining and can teach the player, they can teach the AIs right too. Kids love the online learning results, and it&#8217;s massive and cheap. Biggest catch is it&#8217;s specialized to the provided environment. They have other games they are trying as well.  In one, Kerr requires team coordination chatter and they use voice-&#62;text translators to analyze the output to understand the relations between objects. Another game has an active player avatar that can demonstrate verbs directly in the world for the wubble. Question: was there “language griefing”? It didn&#8217;t help them solve the task because it made it harder, but it will be a problem.</p>
<p><em><strong>The Past, Present, Future of Game AI </strong></em>by Steve Rabin of Nintendo</p>
<p><a href="http://www.aiwisdom.com/index.html"><img class="alignleft" style="margin-left:5px;margin-right:5px;" title="Steve Rabin" src="http://www.aiwisdom.com/steve2.jpg" alt="" width="91" height="128" /></a>Looking forward to this talk by Steve Rabin.  In his career, he&#8217;s talked to over 100,000 game players at Nintendo, helping them out. He&#8217;s been at Surreal, WizBang, and Gas Powered Games.  Now at Nintendo doing development support, as well as <em>AI Game Wisdom </em>and an instructor at DigiPen and UW extension. Going from past to future, Rabin starts with the AI in <em>Pac-Man</em>, a game that took 17 months to create, and has individual ghost AI with no randomness, with wave-patterned attack, retreat cycle. And there&#8217;s the implicit enemy cooperation. Then <em>SimCity </em>with cellular automata and influence maps. Virtual pets in 1995, adaptive, emotional, memory. Remember <em>Tamagotchi</em>? <em>Creatures</em>, which is still complex today? And <em>Thief</em>, a new sensing model.  <em>Half-Life</em> – integrating AI into storyline using script.  In 2000 was <em>The Sims</em> – smart terrain and smart objects, similar to affordances.  <em>Black and White</em> with neural nets, empathy learning, and gesture recognition (<em>AI Wisdom 1</em>).  <em>Fable</em> – player reputations (not the first, an example). <em>Halo 2</em> and behavior trees. <em>Nintendogs </em>and brain age with speech recognition that works in any language. 2005 – <em>F.E.A.R. </em>and the STRIPS system and enemies using the environment – going to more declarative languages rather then procedural. <em>Forza </em>also used neural nets to drive cars that players could train too. And <em>Facade </em>– interactive story, natural language processing, and the ignoring the player reasonably similar to <em>Nintendogs</em>. And last, he can&#8217;t help throwing in Gesture recognition in the Wii remote.</p>
<p>In the present, the living cities in <em>GTA 4</em>, Euphoria and animation.  <em>Spore </em>creature creator dynamic skinning and animating, <em>Fable 2 </em>dog and Family sim. <em>Left 4 Dead </em>AI Director to create experience, mood, and tension. <em>Far Cry 2</em>&#8216;s dynamic narrative. Very dependent on guy&#8217;s in charge understanding AI and using it. Our current AI has adequate movement, sensing, Behavior trees. It need help, voice, declaratives. What holds our AIs back? Lack of attention, experience, design vision.  But it&#8217;s not a lack of CPU time or good algorithms.  Really, most important, why are AIs still allowed to suck? For Rabin, it because it&#8217;s not required as the key driver of fun (see MMOs), and designers and scripters who don&#8217;t get it.</p>
<p>Where are we going? Cost is getting higher, risk is greater.  Nintendo trying to ease it up, but that’s just one. How do we compete back? Middleware, build once and reuse, and procedural content.  But deeper AI needs expression, which costs money.  Procedural content?  Music, story, creatures names, dialogue?  Sure.  But can procedural be original and reliable?  SpeedTree is a success story.  Yet, we see new experiences and new interfaces are expanding the market. AI also allows for new experiences.  That could be the key.  There’s diminishing returns on graphics, and input, physics and animation are hot right now, but the future is AI and game design working together (of course, at this conference *grin*).  Taking parts of the AI and making it the Hook.  Rabin points to Portal and all of these other physics games coming out now.  We know this can works, see AI pets.</p>
<p>Yes, there are the core game AI problems. save time/money, CPU/RAM, ease of authoring (complexity, scalability, readability, debugability, robustness).  But there&#8217;s also gameplay – emergent, adaptive, novel. Even though we&#8217;re always fighting how cheating works so well, AI will win.  The challenge is that 50% of AI programmers feel problem is working with designers. In the near-term, the best AI programmers will get better collaboration, and agents will get larger vocabulary.  Bringing up the AI programmer bottom requires awareness, education, proven solutions, and middleware.  Clearly we&#8217;ll get to full actors, physical, biological bodies, subtleties of performances, let’s push it now.</p>
<p>So predictions: dynamic personality, style, and emotion, leading to synthesized motion in true performances.  Unfortunately, it&#8217;s not clear how game AI gets better by the more cores that are coming. Instead, watch for new gameplay.  Manipulate and toy with intelligent sims – organize, create, nurture, teach. Or just interacting with intelligent sims – command, conquer, persuasion, negotiation, relationships, learning.  Or get inside the intelligent simulation – be part of an evolving story.  Rabin also asks about Chris Hecker&#8217;s goal of a Photoshop of AI – the decomposition of AI into it&#8217;s core element.  What would this be?  A training tool?  F.E.A.R. scripting?</p>
<p>If we had perfect AI, what games could we make? For designers – the deep future can be modeled with a simple technique; If you could make a game using real humans, what would you make?  The humans could be mates, opponents, companions, mentors, or psychiatrists.  Maybe the game would be murder mysteries, reality TV show, playing God, or leading a battle.  And with a real human writer, you would have a dungeon master.  This potential to recreate us, ourselves, is what makes AI so powerful.</p>
<p>For the researchers, tips on getting research into commercial games.  Start with a problem, not a solution, prove the solution is better then others – more efficient, faster in all ways, player approved, new gameplay &#8211; and is designer tweakable.  Then make a great demo, give the code away for free, and get it in front of game developers.  Shoot for the stars, tackle the extremely hard problems commercial guys can&#8217;t.  Go crazy.  (And he&#8217;s absolutely right here.  Go guys!)</p>
<p><strong><em>(Architecting Believable Characters the Spielberg way) </em></strong>by Borut Pfeifer from EALA</p>
<p><img class="alignleft" style="margin-left:0;margin-right:5px;" title="ET" src="http://static.guim.co.uk/sys-images/Film/News/Pictures/1999/05/14/ET.gif" alt="" width="118" height="118" />And lastly Borut Pfeifer, talking about his next title <em>Project LMNO</em>, and the future of believable characters.  He&#8217;s worked on it for several years, including in Radical&#8217;s spinoff research studio. Looking for these characters, with meaningful choice and emergent gameplay, what has to happen? The player has to understand the AI’s motivation – they have to have consistent rationale/motivation, and the player has to learn it, eventually. All at high fidelity. Pfeifer points to the “suicidal goblin problem”. It is dumb AI, but it&#8217;s not ever cited by players as dumb because the priorities of that character are very clear. We just need to bring this sort of clarity to smart AI.</p>
<p>Starting with “Spielbergness” approach, let&#8217;s run through the problems <em>Project LMNO </em>is struggling with. The goal is very clear expression, using technology that really creates that ultimate character.  The problems he&#8217;s seen come up, examined. First, Conflicting Motivations.  Watching a scene from <em>Munich</em>, the first murder, we see the actors have deep internal conflict, on-screen.  Player needs to see this to reason about NPC behavior and see them as realistic. Plus, the NPC should convey knowledge it has that the player doesn&#8217;t (there&#8217;s someone over there!). He recommends separating out “executing behavior” and “showing intent” from each other. But when running in parallel?  How do you avoid the complexity explosions?  (Good points!)</p>
<p>Next, Reactions. Watching a scene from <em>Raiders of the Lost Ark </em>golden idol scene that shows body and face reactions, comprehension leading to emotion.  Consideration, thought, giving the non-interactive feedback. Usually we do this with same decision making and executing behavior.  But many different reactions – subtle overlay going to full body, big full body shocks to falloff subtle behavior, important reactions in the middle of non-interruptible action, and you may have to stop a reaction to do something else, and then come back later.  With each Reaction, the player needs to see the connection to the world and get feedback if there is an internal change in the NPC happening.  Not only that, Reactions can cause or direct behavior change and denote the change is happening.   We can separate into pieces – initial, sustained, overlay, full body, but need lots of parameters &#8211; physical state, emotional state.  But each Reaction may only use subset of pieces or change the entire flavor of something active.  Watch out!  Complexity explosion again!</p>
<p>Let&#8217;s switch to Attention, looking at character focus in <em>Catch Me If You Can, </em>the airport pilot scene where he sneaks past the agents and escapes on the plane. Here agents are searching, distracted, and focused on objects. That all requires attitude/behavior, and player awareness of attitudes. Does each world object create distraction or not? How do we do multiple priorities for targets of current behavior, or reaction? When there&#8217;s multiple, procedural targets? Or there&#8217;s non-active behaviors that might need to know about possible attention targets. How is this communicated, priorities handled?</p>
<p>And then, Meaning, in <em>ET</em> with Elliot and ET learning to communicate in Elliot’s bedroom.  Objects in the scene have different semantic meaning to the different characters – Show, Play, Eat, Scary, Threatening.  This makes them applicable to different behaviors for different character.  And the player needs to know what meaning the NPC is applying to the target and how to change that meaning if possible.  The NPC has to perform that meaning, communicate it.  That means controlling how the NPC learns, where, and when, and then showing that back to the player.</p>
<p>Plus, Emotional Simulation, in the car crowd scene in <em>War of the Worlds</em>.  There&#8217;s a variety of short and long term clips of the crowd and characters – frightened, panic, violent, angry, intimidated.  Each has different impacts on different NPCs, based on where they started in the scene.  What&#8217;s the point of all this complexity?  New gameplay possibilities – believable, consistent, richer characters.  Player needs to know the NPCs emotional state, and the affordances for NPC behavior that come from that state that the player can manipulate.  Ideally these are as natural as possible.  Emotional state has to show and hide, based on mood – how does player track it when it&#8217;s not available?  Is it too much to keep track of?  Pfeifer’s not thinking float sliders with traits – not directable enough.  He wants emotional states that designers author rules about, and create the transitions in/out.  A FSM above a normal AI system.  It can affect everything below it – goals/actions become active/inactive, attention targets and frequency, tone of reactions and movement, and filter interpretations of objects and characters.</p>
<p>Lastly, Physicality – pathfinding, collision, world registration, object interaction, social nuance as in public/private, indoor/outdoor.  Player needs to know when/how this has changed and to believe it.</p>
<p>So there are 3 recurring problems – control and feedback between layers, mind-body problem, the complexity, explosion of assets, and interleaving authored data where necessary.  The last 2 also feedback loop each other, because procedural data requires authored knowledge to tune and case study.  With Mind-body – layers can fail to talk together, so communication needs to be good about failure, and we should have higher level layers deal with failure.  This is fundamentally software architecture problem.  But complexity and authoring, well, all these sims are intersecting at various times, and some events are more crucial to the experience then others – looking at you in tense situation versus wandering and exploring the environment when exploring. How can we Spielbergify these important moments?</p>
<p>Pfeifer presents the notion of the “Sparse Matrix” &#8211; an abstract authoring idea, a possibility space of n-dimensions with emotional states, physical state, history of behaviors, physical limitations represented.  Which combined factors do you need now to perform within the matrix?  Does the agent need to override behavior/performance for any new combination of factors?  We also need to easily define reasonable defaults and fallbacks.  Pfeifer proposes search, filter interpretation, and context author to help.</p>
<p>You need to search your set of these things.  GOAP sure – but behavior, animation planning, any content, all need to be searched.  Think youtube data tags.  Building and adding elements must be easy, ideally it&#8217;s declarative with no connections, but still requires a lot of run-time visualization.  Filtered interpretation means reduce the number of things to search on.  Build abstract sets of your things to reduce the set temporarily and get more usable results.  This mapping can be shared between characters, things, as long as the source data set remains the same.  Almost a way of hierarching people&#8217;s behaviors (or whatever), so you reduce the complexity for the higher levels when the complexity doesn’t matter to those levels.  And reduces content needs, potentially.  You aren&#8217;t removing the context, but abstracting it out, and only specializing when needed.  Using overrides when it really should be a specialized context. (aka A car is about to hit me!)  When considering authoring these context things – there are several kinds.  Global: high level, Are you in combat, in-code global detection.  Regional: one or few factors, affects a few behaviors, like what kind of space am I in,  public or private.  Regional is primarily used in script and filtering/mapping.  And lastly, Local context -  context within a behavior only. An example here is the classroom – if people are inside, it&#8217;s a different social behavior set then if the room is empty.  Unless someone is being chased by the cops, then it&#8217;s totally different and there should be a global override.  And Pfeifer believes this has to be driven through data and emergently.</p>
<p>So&#8230; the whole AI process&#8230; game events get tracked, translated into context in design and code, then filtered into meanings, which are turned into behaviors.  Each system passes this down, can search and modulate this, and pass back up failure just to get the intention performed.  Solved!  Well, not quite.  They are trying building an AI around it, and hope to have results to show in Project LMNO.</p>
<p>Question: In AI, is simulation or authored winning?  He says he&#8217;s just trying to pick his knobs, because ultimately you have to be able to override anything.  Euphoria isn&#8217;t stylistic, for example.  Games don&#8217;t do adverbs yet – that&#8217;s what he&#8217;s trying to bring.  (A nice point, good meme.)  Question: this is very much about social acts, there&#8217;s the translation to performance level, what about the reverse: player actions translating to social acts, giving the player emotional control?  Pfeifer calls for the low hanging fruit because there&#8217;s easy things players do, but player modeling is difficult, and they are trying to limit their contexts and conditions and building larger meaning slowly over time, in part because the player can only track so much.  Question: cultural emotion? <em>Project LMNO</em> is using non-humans to help create the separation from this.  Spielburg doesn&#8217;t mention working on it, explicitly, so it may be that emotions are universal.</p>
<p>(To see my thoughts on these lectures and the conference as a whole, follow my <a href="../2008/10/22/ai-ide-08/">Day 1</a>, <a href="../2008/10/23/ai-ide-2008-day-2/">Day 2</a>, and <a href="../2008/10/25/ai-ide-2008-day-3/">Day 3</a> wrap-up here)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[AIIDE 2008: Day 2 Live Blogging]]></title>
<link>http://dankline.wordpress.com/2008/10/30/aiide-2008-day-2-live-blogging/</link>
<pubDate>Fri, 31 Oct 2008 07:47:48 +0000</pubDate>
<dc:creator>Dan Kline</dc:creator>
<guid>http://dankline.wordpress.com/2008/10/30/aiide-2008-day-2-live-blogging/</guid>
<description><![CDATA[(A reminder.  I&#8217;m editing these notes a week after the fact, just making it readable, but I]]></description>
<content:encoded><![CDATA[<p><em><a href="http://www.aiide.org/AIIDE2008/Welcome.html"><img class="alignleft" title="AI IDE 2008" src="http://www.aiide.org/AIIDE2008/Welcome_files/AIIDE-Logo-Small.png" alt="AI IDE 2008" width="147" height="81" /></a>(A reminder.  I&#8217;m editing these notes a week after the fact, just making it readable, but I&#8217;ve left the original voice in this piece and roughness intact because I feel the live-blogging depth is more useful then a concise, thoughtful analysis would be. I&#8217;m happy to answer any questions people have, though, and I encourage you to contact the original presenters as well for more thorough details.)<br />
</em></p>
<p>(links to my <a href="http://dankline.wordpress.com/2008/10/30/aiide-2008-day-1-live-blogging/">Day 1</a> conference live blog)</p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>The AI of Spore</strong></em><span style="font-style:normal;"><span> by Eric Grundstrom (EA Maxis)</span></span></span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><a href="http://www.flickr.com/photos/ipodtouchscreenshots/2982859436/"><img class="alignleft" style="margin-left:0;margin-right:5px;" title="Spore" src="http://farm4.static.flickr.com/3235/2982859436_7b0885e4b0.jpg?v=0" alt="" width="106" height="151" /></a></span><span style="font-size:small;">The keynote speaker this morning, Grundstrom talked about the AI tech of <em>Spore</em> and its player-centric and asymmetrical focus.  Starting with the Cell stage, Maxis used a lot of fluid and particle simulation alongside the flocking AI to create unique movement.  I believe this was Jeff Gates work, a friend of mine.  Behavior was part-AI driven and part-design to make interesting differences between the creatures.  The key was always AI that was player-centered personality design.  They started with depth before breadth – make the first AI really compelling before you generalize it to different sorts.  A funny but familiar aside – when growl music was added for when AIs attacked QA reported that the AI seemed better, even though none of the AI had actually changed.  The whole Cell stage asymmetric AI, in that it&#8217;s PvE – the NPCs don&#8217;t grow like the player and have different goals.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Grundstrom then moved on to the creature game.  The goal was to duplicate <em>Diablo</em><span style="font-style:normal;">&#8216;s</span> model. </span><span style="font-size:small;"><!--more--></span><span style="font-size:small;">The key difference with the creature game is they wanted a real range of behaviors – responding to stimuli, interrupting and resuming behaviors, and scheduling some behaviors against time.  He started with the “Interaction system” &#8211; just rank each action and choose the highest one.  Each action runs till it stops.  It sounds very similar to the <em>Diablo</em> AI, actually.  NPCs get invited to group actions.  The big drawback was that it scaled poorly – each action needed custom code to handle interrupts and stimulus to switch to other actions.  So the big takeaway &#8211; they switched to behavior trees.  The win was that they can now have all actions re-evaluate every frame, so interrupts are simpler.  They wished they&#8217;d done an animation state machine to sequence animations to their actions.  Another lesson was to keep the NPCs passive at nests and let players seek out interaction, because the chasing gameplay is harder to do then it sounds – it just comes down to who is faster.  You&#8217;d get followed forever or you&#8217;d be dead.  This general role of treating NPCs different from players was important – very not-multiplayer.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">On to game 3 – the tribe game.  The big new play was specializing and upgrading tools.  It&#8217;s an economy slider balancing game.  Still autonomous agents and packs, so the needs are fairly similar to creature game.  Grundstrom kept behavior trees, but wanted to do group behaviors for the tribes.  Thus there&#8217;s a new join behavior and a lead behavior, and the lead behavior gives orders to the members.  This was helped by a group manager – because otherwise if the lead individual was killed, the group would lose track of its goal.  There was still a general design focus on player-centered PvE – pace the AI attacks for drama, warn player of impeding attacks, etc.  Not much new AI so far – the stages are so broad and vague that I believe individual games have gone farther in each AI type.  The organization and reuse became correspondingly more important then normal, however.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">The penultimate game AI is “Civ-style” &#8211; a very different kind of challenge, more RTS then action game.  There are now cities, and a communication screen to communicate with city agents.  The relationships between the various agents were very complex &#8211; <em>Civ4</em> style attributes that aggregate to a number, using <em>Civ4</em><span style="font-style:normal;">&#8216;s</span> the improvement of the added player feedback.  Here the AI is strategic – building, upgrading, relationships, managing attack tactics, pathing (for the first time really, beyond steering!), and citizen vignettes that give appropriate feedback to the player.  They used 2 kinds of scripts for strategy – domestic and expansion scripts, but the engineers unfortunately ended up doing them all in C++.  These scripts formed each tribes plan.  Grundstrom forced the AI to attack their lowest relationship so as to create a better story.  He also used different relationship decay rates across attributes to add more dynamism. </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Behavior trees and groups were again used for the individual attack units.  The units routed using A* with some optimization, focusing on the path following rather then the path creation. </span><span style="font-size:small;">There were a wide variety of unit types to support: planes, ships, and vehicles.  Which meant a desired facing pathing solution as well as a position solution.  In the end could have used better obstacle management and environmental awareness to handle routing.  Reserved destinations on the map would have helped too.  Maxis used emergent formations, coming from each group picking nodes in sequence (from front to back?), and group&#8217;s members around existing picks.  (In practice, this had some problems, particularly in tribe where pathing was trickier and all members had to be in place before performing.)  Player/NPC Asymmetry was less in civ stage, almost even, but he did give the player a head start and super-weapons to end the stage faster.  Much more going on here AI-wise then in the stages so far.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">And lastly, space.  Relationship management here was key, and there are is a lot of new data throughout space to manage.  It&#8217;s an avatar game, lite RPG upgrading rather then strategy.  Key new techs were the terraforming and ecology simulation, and NPC empires with the same conversation, trade, expansion and war needs of civ.  There was a neat random name generator for all those planets, which used a similar approach to Cope&#8217;s music generator – using frequencies of letters in common names to generate whole new names.  In space they went for a turn-based expansion feel, so the pacing was very deliberate and relied on externally controlled events.  This included “random” disasters and raids, which create an implicit limit on empire size (although design could tie “random” rate to size).  They liked the plate-spinning aspect of it.  Each empire also has a random personality, which affected diplomacy and relationship changes from events.  Initially each personality was a separate goal and voice, which made a lot of combinations that were less predictable.  But the problem was that the writer had to write for each combination, so they settled on only 8-9 types.  Overall, data management was the key issue for the project, because not all of it was in memory at once.  They still focused on staying player-centered and asymmetric – transparent relationship, local simulation, and simplified ecology, no real economy at all, and different technology tree for the player.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Big conclusion was to keep it simple and stick with established practices for low risk and ease of tuning.  Use player-centered illusions because they are efficient and compelling, even though you lose the emergent simulation which is so AI-dreamy.  If he did it again, he would have tried a more complex AI setup while focusing on a simple interface (not clear how this is not just a radically different goal with a interface requiring more work, but I think he wished they could have done more emergence).  Grundstrom points to the ecology as an example,  saying they kept the model simple for the ecology – carnivores, herbivores, etc – but simulate more behind the scenes.  Lastly, the PvE asymmetry was important because it was significantly easier to balance and tune and adjust the NPCs when the game design changes if it doesn&#8217;t affect the player.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Grundstrom future desires from the AI community are more living worlds – an illusion of more complex worlds that allow players to go anywhere, do anything.  This requires NPCs that are interesting, change over time, and react to others and the environment.  He also wants to see more believable people that reacts to a mental model – personality, memory, relationships, emotion – as well as events and behavior customizable for any game.  He also points to movie stories that are really “tight” &#8211; everything matters and builds progression to overall global goals.  Mentions <em>Facade </em>as a direction, but thinks things can be simpler – probabilistic state machines that can be tuned. </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Overall, the data issues sound like the most interesting challenge, here, but unfortunately there&#8217;s little detail.  Question about the LOD touches on this a bit – there was local simulation of empires.  Tribe LOD did something similar – different levels of processing for each distance.  I asked him about the data management afterwards and he answered the senior engine programmers were able to solve it and keep the data invisible from the AI through something like 10 substantial refactoring, using a mix of data caching, time delays, and data structure optimization.  It was made trickier by the need for procedural content from the network, but they pre-streamed content packages in, and used Maxis content off the disk in a pitch.</span></p>
<p style="margin-bottom:0;font-style:normal;"><span style="font-size:small;">Into the sessions! </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>Stochastic Plan Optimization in Real-Time Strategy Games</strong></em> from  Andrew Trusty (I believe)</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Games have huge decisions spaces, huge state spaces, non-deterministic, real time – your classical approaches don&#8217;t work directly.  We could abstract the game state or abstract the decision space or add domain knowledge.  Trusty&#8217;s approach is to use case-based planning for RTS micro battles – use a pre-created planning library, find a plan that is similar to the goals of the current problem, and adapt it to the situation.  So, where do the plans come from?  How do we find them?  And how do we adapt them?  He calls their approach the Darmok architecture.  The idea is to get plans by observing human experts.  Today he&#8217;s focusing on fixing bad plans from the experts, unintentional errors.  Stochastic Plan Optimization is called for!  When a plan fails, the algorithm evolutionarily reevaluate the plan and finds a better plan for the failed goals the next time.  Assumption though, the entire plan space can been searched and the original plan isn&#8217;t wholly bad.  Phase 1 of the search – take the original plan and alter it randomly, to get a search space.  Then <em>run each plan in-game</em> (for hours) behind the scenes and apply a fitness to each plan.   Phase 2, take the top 4 plans, and then randomize/prune/mix/in-place randomize them together.  They check to make sure that there aren&#8217;t duplicating a plan here, to explore further.  Then run them through the generations again, evolvingly.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">First issue in tests was that the experts were just not very good at this particularly game – or situations compounded inside the gameplay that forced them to make obviously bad tradeoffs.  This led to a pretty bad overall database.  So how well did this algorithmic fix them?  Pretty well, the expert plans turned out better.  The catch?  The algorithm still takes a lot of time, particularly because you are running the game every time you test and evolve your plans.  He needs to reduce the search space or run the game faster.  And this is for only winning local RTS battles.  This needs to scale up to wars for larger plans. There&#8217;s some potential here for micro in RTSs though, which is otherwise really hard AI.  Trusty needs to account for terrain more, but that could probably be done in the plan actions.  There would also have to be some accounting for difficulty, like APM limits – since the optimal plan here is likely just more complex and faster actions wouldn&#8217;t be perceived as fair by most players. There&#8217;s player coaching potential too – training players to make better RTS decisions in during their play or while analyzing replays.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>Constructing Complex NPC Behavior via Multi-Objective Neuroevolution</strong></em> with Jacob Schrum from University of Texas.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Daytime television programming for kids!  Nope, couldn&#8217;t fool you, that&#8217;s not what this is.  It&#8217;s making tools that discover NPC emergent behavior ahead of time and provide levers to tune emergence.  Or, more directly, Schrum&#8217;s concern is that reinforcement learning and evolution don&#8217;t consider multiple objectives in their fitness function.  So he applied a “Prareto optimization” approach(?), which requires exceptional performance in every objective considered.  Since most objectives are in conflict, this will find a “front” along the trade-off axes where the trade-offs are most optimal.  This also means the trade-offs could be optimized in different ways (the levers), by moving the optimization algorithm along the front.  He uses a Non-dominated Sorting Genetic Algorithm II (K. Deb 2000) algorithm to find the points.  (Catch here is you have to be able to quickly generate the possible data points, which means simulating each one as they are randomly moved as the rewards for each trade-off are varied).  Schrum used neural networks to be the bots for each mutations.  He started with the simplest static player strategies to evolve against and then went to more aggressive strategies.  He compares his tests  to the standard approach using the weighted sum from individual objectives.  Results show definite improvement.  In examples the single objective approach can&#8217;t find a good balance of the objectives – in one case they just run away and chase forever (because all agents are the same speed).  With Schrum&#8217;s multiple objectives approach, there is better teamwork – baiting the player bot by getting the player to turn away or a charging strategy that takes advantage of the player&#8217;s facing and swing direction after getting the player gets hit from another angle.  Both are valid answers, but balance the objectives along the front differently.  Many of these behaviors evolved were in fact unpredicted, but successful.  The research definitely creates a distinctive fixed behavior model for the NPCs that players could play and learn against, because the player trainer bot is static.  Haven&#8217;t noticed this feature before &#8211; makes it much more viable in games, because predictable NPC behavior is so important.  Others must be doing it too.  Schrum proposes learning against humans (which would remove this benefit, so I&#8217;m not sure that&#8217;s the best step).  He also wants to optimize the training and sim iterations for real time learning.  The big win of the research is the emergent strategies are more apparent and more integrated across multiple conflicting goals  – there&#8217;s a balanced approach rather then the oscillations that comes from using a single fitness score for multiple goals.  The drawbacks are just the complexity of the training algorithm – the game would have to be really focused on this need. </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>Effects of Communication on the Evolution of Squad Behaviours</strong></em> from Darren Doherty. </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Doherty&#8217;s domain is squad-based shooters, an area that needs AI for situation-based tactics.  He looked at PvP players and cited communication, role definition, and skill as 3 factors of team success, and tried to build them into a bot.  Using goal driven agents, he evolved a ranged combat decision making tree constrained by limited senses and memory.  He minimized his evolutionary algorithm against damage taken, team damage taken, and maximizes enemy health, and then tested the bot in a squad, fighting a more capable single enemy.  Unfortunately his data comparisons are just against communicated data versus uncommunicated data, and shows communications improve team performance, but only 2.5%, yikes, less then sensory improvements.    I&#8217;m not sure I understand the goal of the research here.  Since we can fake this pretty well with shared team knowledge, I&#8217;m not sure how valuable this is.  Even setting this up on individuals alone isn&#8217;t too hard (I&#8217;ve set it up myself several times).</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>Implementation Walkthrough of a Homegrown “Abstract State Machine” Style System in a Commercial Sports Game</strong></em> from Brian Schwab of SCEA. </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong><img class="alignleft" style="margin-left:0;margin-right:5px;" title="The Inside" src="http://image.com.com/gamespot/images/bigboxshots/5/946395_102507_front.jpg" alt="" width="120" height="138" /></strong></em></span><span style="font-size:small;">Schwab created a situational data-driven system for the non-technical staff on SCEA&#8217;s basketball title, similar to a scripting language, and goes into the slimy guts of the language.  In the tool, any resolution of game state was important, and multi-agent coordination was key.  Schwab built his AI starting with a global FSM that ran a gross game state, using a custom script, for taking care of pausing, free throws, etc.  Then a perception layer (variables, condition bools that are optimized, and percepts – ramped conditions) that can be tested against in agent behavior.  Then there was the agent behavior animation-selection layer – a FSM with nodes representing animation selection.  Next he went into the designer&#8217;s scripting language.  Each agent was defined by a set of game roles in the script that were collections of expressions and conditions using AND based logic (to keep them simple to create technically).  The scripting language itself was built around situations – the general decision making using expressions, conditions, and roles.  Situations weren&#8217;t just states, but nodes within a decision tree, with grouped children under parents, priority based.  There were many different node types: abstract nodes to partition states, persistent states &#8211; the current head of the tree for the team, and the non-physical situation nodes which are abstract but can change variables and fire events (not clear why better then abstract nodes here).  I think this was to allow multiple “threads” to run at once from one script.  The roles for agents supported “inheritance” that give the scripts memory.  There were several types of special roles as well: non-required, non-physical roles, and exclusion roles.  This language wasn&#8217;t an abstract state machine so much as a formal method for specifying algorithms for the designers to follow.  A state with a set of values and rules.  It&#8217;s a data structure that models code – aka a scripting system.  Designers used it for cameras, cutscenes, crowd, commentary, storylines, minigames, etc.  They could switch between reactive script to interactive AI, and could filter out interrupts from other places and declare how the script was allowed to exit.  For debugging, Schwab used the game&#8217;s replay buffer to get debug visual and text data, including any situations running.  He supported dynamic loading and a nifty “teleport” button to setup each situation immediately for debugging.  His big takeaways – don&#8217;t change your AI engine and rewrite the content in less then 2 years.  Also, Usability is key – steep learning curve is no fun.  There were lots of pitfalls and gotchas.  There&#8217;s a lot of special case situation times added. Make sure you support syntax checking and keep GUI conventions that are useful and consistent.  He has a great search bar for searching every behavior, variables, and situations.  This  helps organize and track the situations.  It even has scoping windows to see who could interrupting each situation!  These kind of usability details are very handy.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>Dynamic Expansion of Behaviour Trees</strong></em> by Gonzalo Flórez-Puga. </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Florez-Puga has been studying Damian Isla&#8217;s behavior trees in the seat next to me.  Ah, it was for his presentation.  He goes into the backstory of what the behavior tree is – see Damian Isla&#8217;s paper if you want the details, it&#8217;s quite good.  Florez-Puga recalls that within each hierarchical state the priorities can change at runtime.  And users can get parameter creep in tuning trees.  Since they are used across all characters trees  could get wrecked by other designers at runtime unknowingly.  So he&#8217;s building tools to help designers author behavior trees.  In particular, there&#8217;s a search of existing trees to help designers jump start making new states (states in the tree?  He&#8217;s falling into FSM language&#8230; ah, he&#8217;s using a FSM inside each node of the behavior tree, where the behaviors are more goals).  He points out the trees are similar to case-based reasoning in their reuse.  Maybe we can use case-based reasoning to fill our behavior tree at run-time?  (Hmmm&#8230; why couldn&#8217;t the behavior tree have those cases in it already and run the reasoning inside its initial preconditions?  This seems to be research that&#8217;s strayed far from it&#8217;s stated purpose. &#8211; helping designers)   Now he&#8217;s got a neat demo of a simple 3d environment where each room in a dungeon is a C++ class and contains methods as quests and byte code data as prey.  He&#8217;s using this as his domain.  But I&#8217;m losing where he&#8217;s going.  He shows the process for his research, but I&#8217;m not clear on the benefits.  He&#8217;s pointing out that you could dynamically remove and add nodes to the tree based on general game state.  (But the tree evaluates that inherently within each action.  Are you effectively pulling the evaluation outside of each action?  Since the case needs to know the action&#8217;s parameters, I&#8217;m not sure if that&#8217;s a win, over generalizing the evaluation to data for all actions.  It it&#8217;s a win, it seems pretty straightforward).  Florez-Puga says this could add dynamic learning and unplanned behavior mid-game.  But it still requires tweaking floats and regressive testing and QA.  The big question is whether it actually makes authoring easier, unanswered.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>Hierarchical Petri Nets for Story Plots Featuring Virtual Humans</strong></em> from Daniel Balaš</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Last before lunch.  Balaš wants to compare dynamic Finite State Machines to “petri nets” for controlling story agents.  FSMs are formal, comprehensive, graphical, and can be made hierarchical.  But they can&#8217;t run in parallelism and it&#8217;s hard to represent variables and constraints within the transitions.  He displays a story as a FSM with each node as a location to travel to or an action or result that can be reached.  Issue is that it&#8217;s difficult to remove nodes from the machine, and then enable new story transitions simply.  Instead, petri nets are directed graphs of places and transitions.  But, transitions can also be from multiple input places and output places.  The key is there can be multiple ins and outs from each node that both get traveled. The petri net will pause each branch until transitions join back together in a node.  Petri nets are also are non-deterministic, supporting dynamic movement between nodes.  In a story, Balaš represents the agents as occupying a node (“a token”), and then creates story conditions based on the location of each token.  This makes the results of each transition predictable.  He modifies tokens with attributes, like color, to add query for the transitions, as well as supporting hierarchical petri nets.  He built this technique into Europe2045, an educational multiplayer online game for high schoolers.  He demonstrates the game&#8217;s Conflict in Darfur story branch setup in a petri net.  Can we use it to control agents and specify a whole story?  Yes, with some changes – petri nets can&#8217;t specify “when all agents come”, but he uses a new kind of transition to guard against this. </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Balaš is still working on the testing and development of the technique within the specific game to get results. </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">This is a representation model for stories, but I&#8217;m not clear how this is useful – it&#8217;s an algorithmic model of things that already had to be created somewhere else.  It would only help if this model&#8217;s construction is faster then other methods.  Question: yes, Balaš can also extend the petri nets to account for time.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>Logical Agents for Language and Action</strong></em><span style="font-style:normal;"> in Martin Magnusson</span></span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><a href="http://www.logicagents.com/"><img class="alignleft" style="margin-left:0;margin-right:5px;" title="Andi-Land" src="http://www.logicagents.com/files/andi-land-01.gif" alt="" width="148" height="91" /></a>Unfortunately,  I missed the talk over lunch.  Check <a href="http://www.logicagents.com/">www.logicagents.com</a> for his work.  Magnusson is exploring a theorem proving out language as a new form of gameplay,.  I&#8217;ve seen the demo video before, but haven&#8217;t played with it.  He really focused on constraining the gameplay options so that the logic is more communicative and more interpretable by a machine.  Worth checking the demo out.  How different will this feel in practice, from something, say, like Creatures?</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>Recomibinable game mechanics for automated design mechanics</strong></em> by Mark J. Nelson</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Nelson is trying to give answers to game designs using formal logic for game representation, rapid prototyping, level randomizers, etc.  He&#8217;s breaking down mechanics-heavy design dynamics using MDA (mechanics-dynamics-aesthetics) into a fashion that could be formalizable.  So he can sim it.  For example, Nelson references Spore&#8217;s rapid prototypes – each either investigating specific mechanics or building a more complete model.   The idea is interesting – theoretically designers could queries their ruleset on outcomes – max # of zerglings in 3 minutes, can 2 turrets make base impregnable, can base be overrun with [units]?  The goal is to answer balancing questions and provide new information-visualization features.  He&#8217;s been interviewing game designers, mainly Chaim Gingold, to learn more of what designers need.  The idea here is actually blindingly simple – if mechanics are rules, why can&#8217;t we analyze them mathematically and make computer queries about their structure?</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Nelson&#8217;s work focused on board games, using first-order logic.  He&#8217;s writing a designer tool in a declarative logic language, supports arbitrary reasoning, but requires frame axioms and has no real natural representation of time.  Event calculus provides the framework within the first-order logic for reasoning about the system dynamics.  The tool he&#8217;s writing has states &#8211; fluents, events, and timepoints.  Fluents can holdAt() timepoints, events happen at time points and can start or end fluents.  The axioms define the semantics (rules).  Fluents don&#8217;t change their values, and you don&#8217;t have to specify what isn&#8217;t effected, only proactive rules.  Fluents thus become game state, events encode player input and game-world events.  Game mechanics are the state-evolution rules that result from these rules and states.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Momentary realization rant: part of the problem with AI for design is AI is a procedural solution to a one-off problem.  If you only need one solution, one time, making a program to find that solution is a tough sell.  Outsiders (read Middleware) could provide solutions to lots of people, or you could find situations (like fine tuning) where AI is needed to respond to the simulation frequently, but one-run AI solutions just won&#8217;t be used by designers.  They like thinking about it themselves the first time too much.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Last, Nelson focuses on setups that are already procedural or have tunable rules.  The tool&#8217;s still “assembly-ish”.  The potential is good though , particularly for game-games rather then story-games.  There&#8217;s also a setup time issue – whether this sort of tool is actually useful depends on how long an idea takes to setup to test against.  But there seems to be a lot of good potential uses – map balancing in starcraft, for example, or drama management testing.  I think it needs more formalization and design input, but while it&#8217;s a bit vague, it&#8217;s interesting, applicable work, and I&#8217;d like to stay in touch with him.  Question:  How to deal with non-determinism of games, given logic is deterministic?  Some models don&#8217;t require it, and logic can be modified to do some of it (say with multiple simulations).  True – many times you are trying to model a particular path anyways.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Into the poster sessions!</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>PaSSAGE: A Demonstration of Player Modelling in Interactive Storytelling</strong></em> from David Thue</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Thue had data to show that drama management had greater then a 75% increase in surveyed enjoyment in <em>Neverwinter Nights </em>if you just picked events using a calculated player archetype.  I&#8217;ve never really tried to model player archetype because I thought players liked to choose and change their archetype while playing, but he&#8217;s trying it.  He&#8217;s doing player modeling across 5 archetypes, mapping the encounters to these axes, and then choosing the most appropriate encounter from the results.  There&#8217;s feedback within each encounter to change the player&#8217;s archetype – conversation optoins within the encounters that are pre-weighted to signal a certain desire.  This give, some feedback into the model.  The data is a great feather for player modeling, but I&#8217;m not sure it&#8217;s a big enough finding to be significant yet – there&#8217;s still reusing all the content lost in the encounter branches, for example.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>EMPath: Integrating Experience Management into an adventure game</strong></em> from Anne Sullivan and Sherol Chen</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Sullivan and Chen tried to do Drama Management in adventure games to see if it provides a better experience specifically for quests.  Correction, they call it Experience Management rather then Drama Management because they really aren&#8217;t trying to create drama, they are just trying to guide and improve the experience.  Their test game uses real event sequencing to control the experience – measuring Story Density, Information Intensity, Thought Flow, and Manipulation to manage the overall experience.  There&#8217;s also a differentiation of hints and other types of changes from new events that I need to remember to ask for more detail on.  The Experience Manager has a set of actions it can do – move an event, stall an event, force an event on a player – and it chooses them based on those controls to push you along it&#8217;s multi-branched story path.  This is somewhat more similar to what I was doing before.  They use significant plot points rather then zones to demarcate when to take Experience Manager actions.  The Manager really helped remind people of things they otherwise would have missed within the plot line.  Most importantly , Sullivan and Chen did surveys of players that show significant experience improvement.  Really interesting, familiar work.  I had more of the drama element in my attributes, and a bit more larger game plot pointing and content development, but it&#8217;s definitely down the same lines and they have some data to show for it.  Hopefully this will become another good argument for doing narrative management – demonstrable experience improvement – along with the reduced content reasons that I&#8217;ve used in the past.  Exciting!  A good take-away from the conference, and I&#8217;ll be interested if they can show the content reduction games as well.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>Direction Maps for Cooperative Pathfinding</strong></em> from M. Renee Jansen looked like a faster simpler way to do patrol routes using vector flow fields, although this problem doesn&#8217;t seem to come up too often.  I could really see using it in crowd pathfinding tech.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><em><strong>Automatically-generated Convex Region Decomposition for Real-time Spatial Agent Navigation in Virtual Worlds</strong></em> from D. Hunter Hale should give the path-planners and maybe collision detection guys a lot of fun.  Hale proposes an interesting technique for simpler and faster convex mesh filling, with the downside being the merging and reduction steps are left to the user and it works only for fixed, known convex obstacles.  Basically, in 2D, the technique relies on slowly growing out the mesh starting inside user-grid defined regions.  Region edges stop growing if they hit something, vertices grow along anything they hit.  Wait until they stop growing, then detect adjacent empty space, and repeat these steps until all regions are full.  Then combine any regions that would stay convex, remove the collinear vertices and zero length edges, and you&#8217;re done.</span></p>
<p style="margin-bottom:0;">
<p style="margin-bottom:0;"><span style="font-size:small;">Whew! Two down, one more to go.  Another day with tons to cover.  But I learned a lot!</span></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[AIIDE 2008: Day 1 Live-blogging]]></title>
<link>http://dankline.wordpress.com/2008/10/30/aiide-2008-day-1-live-blogging/</link>
<pubDate>Thu, 30 Oct 2008 09:42:31 +0000</pubDate>
<dc:creator>Dan Kline</dc:creator>
<guid>http://dankline.wordpress.com/2008/10/30/aiide-2008-day-1-live-blogging/</guid>
<description><![CDATA[(I&#8217;m editing these notes a week after the fact, just making it readable, but I&#8217;ve left t]]></description>
<content:encoded><![CDATA[<p><em><a href="http://www.aiide.org/AIIDE2008/Welcome.html"><img class="alignleft" title="AI IDE 2008" src="http://www.aiide.org/AIIDE2008/Welcome_files/AIIDE-Logo-Small.png" alt="AI IDE 2008" width="147" height="81" /></a></em></p>
<p><em>(I&#8217;m editing these notes a week after the fact, just making it readable, but I&#8217;ve left the original voice in this piece and roughness intact because I feel the live-blogging depth is more useful then a concise, thoughtful analysis would be.  I&#8217;m happy to answer any questions people have, though, and I encourage you to contact the original presenters as well for more thorough details.</em></p>
<p><em>I&#8217;ll be posting Thursday and Friday&#8217;s notes shortly.  Enjoy!)</em></p>
<p>(links to my <a href="http://dankline.wordpress.com/2008/10/22/ai-ide-08/">Day 1</a>, <a href="http://dankline.wordpress.com/2008/10/23/ai-ide-2008-day-2/">Day 2</a>, and <a href="http://dankline.wordpress.com/2008/10/25/ai-ide-2008-day-3/">Day 3</a> conference analysis posts)</p>
<p><span style="font-size:small;">I&#8217;m at <a href="http://www.aiide.org/AIIDE2008/Welcome.html">the Artificial Intelligence and Interactive Digital Entertainment Conference 2008</a> (AIIDE) as I write this.  Here&#8217;s the <a href="http://www.aiide.org/AIIDE2008/Program.html">program</a>.   I&#8217;m not sure what the conference etiquette is here, but I&#8217;m planning to live blog as the event continues.  The big push this week seems to be into proceduralism and &#8220;Drama Management&#8221;, what I&#8217;ve been calling Encounter Management, so I&#8217;m looking forward to that tomorrow.  I cover a lot of ground in the notes here fast, particularly on the more interesting talks, so please give a more leeway on the editing, etc. </span></p>
<p><span style="font-size:small;"><em><strong>Panel Discussion: Realistic Human Characters</strong></em><span style="font-style:normal;"><em><strong> </strong></em>with Borut Pfeifer (Project LMNO), Michael Mateas (UCSC), and Richard Evans (Sims 3)</span></span></p>
<p>I just caught the end of a panel on Realistic Characters.  The questions were wide-ranging and wandering, as much about proceduralism as about AI or behavior.  There was an interesting question about having 2 human reactions rather then just one.  As in, if you tap someone on the shoulder, there&#8217;s 2 reactions &#8211; the &#8220;reptilian brain&#8221; jump and then the spin around &#8220;huh&#8221;.  Usually we do this with one animation, but maybe it should be 2 separate states.  The procedural animation discussion focused on if you could blend code as opposed to just animation data, unfortunately only raising questions.  Also, some discussion of player-human interaction &#8211; once characters get real in games, shouldn&#8217;t the player&#8217;s verbs get better?  Shouldn&#8217;t the AI be two-way?  This was an interesting point, and one that surfaced a couple of times through the conference.<!--more--></p>
<p><strong><em>Intelligent Trading Agents for Massively Multi-player Game Economies</em></strong> by John Reeder from Stanford.</p>
<p>He&#8217;s looking at the game auctions like in World of Warcraft and Eve.  Developers can control item frequency, &#8220;taxes&#8221; and fees, and ways players making money, but there aren&#8217;t great levers for developers to push, and players can easily drive the economy into the ground.  He&#8217;s looking for a way to be the anonymous federal bank of the market.  In low population you can provide liquidity.  (I&#8217;m getting reminded of the economy crisis.)  He cites TAC Classic and TAC supply chain management papers as other sources, for those interested.  He focused his research on Eve because of its economic focus and the production steps of complex materials.  So he pulls from real market economics to structure his AI bot &#8211; market orders (stock requests) and limit orders (sale proposals?), buy and sell orders that create a mid-spread balance sheet.  Steps are Collect Data, Infer Transactions, List of Transactions, Generate an order book, and then put the item up.  Just by collecting the data he can simulate what the whole of the market is doing by watching items and catching when they disappear, assuming disappearances that aren&#8217;t based on expired time are sales.  This helps him identify the true price, much like a human player would.  Focusing on minimizing cost and maximizing profit,  he evaluates the agents on the gains over time.  His process sounds good but it&#8217;s not clear how he defines success.  Ah &#8211; he&#8217;s using reinforcement learning on the evaluation, and he&#8217;s trying to find the optimal algorithm. He shows that reinforcement learning does generate a better result then a traditional fixed market techniques.  Seems like a straightforward and reasonable application of reinforcement learning, although he&#8217;s not taking the final step of showing how designers can control the market significantly better with this work.  Interestingly, having his bot guessing prices ahead of time didn&#8217;t help, because the time cycles were so short and the markets move so fast.  He also plans to compare the bot&#8217;s success to humans traders, although from a design point of view there&#8217;s not a need that it be superior.  Question: is cheating if you tie the economy to real money?  *chuckle*  Where&#8217;s an ethicist when you need one?</p>
<p>These 20 minute sessions are fast.  This is going to be a long set of posts!</p>
<p><strong><em>Learning to be a Bot: Reinforcement Learning in Shooter Games</em></strong><span style="font-style:normal;"><strong> </strong>by Michelle McPartland</span></p>
<p>She&#8217;s trying to reduce code through reinforcement learning, although that dodges the production issues with it (we don&#8217;t care about how much code we ship!).  I missed her other reason, unfortunately.  She brings up that there&#8217;s 2 versions of reinforcement learning, Tabular and Generalization, which I wasn&#8217;t aware of (shows how often I&#8217;ve built this stuff).  She&#8217;s using the Tabular method, with the Sarsa-Lambda algorithm.  There&#8217;s 4 parameters, Learning rate, greedy value, discount factor, and trace factor.  It&#8217;s been researched in racing, RPGs, fighting, and squads in FPSs.  Her research is in FPS bot training navigation and combat.  It&#8217;s funny, researchers use FPS for the same reason we create them, it&#8217;s one of the simplest designs.  She chooses her own discrete reward values, which seems unfortunate (is getting items or killing someone more rewarding more frequently?), but I&#8217;m probably missing something.  She did run several different reward models.  Basically it seems like it comes down to what you measure, rather then how much.  Intuitively, seems like that means the model is too simple.  The stories of how the reinforcement learning gaming the reward system are pretty funny &#8211; camping the item spots because that&#8217;s what&#8217;s rewarded.  For navigation, she didn&#8217;t find she needed planning &#8211; that reactive behavior worked quite well.  Good reinforcement for current obstacle avoidance models.  Even given how simple this is, it&#8217;s interesting that she&#8217;s able to fix the rules and just vary the rewards to get such different results from the bot.  Biggest takeaway is that the bots got very different personalities.  But that&#8217;s part of what makes reinforcement learning hard to use &#8211; small changes lead to big emergent differences.  It seems like the biggest potential here is the thing that I recall Unreal did, not less code but more unpredictability and different bot styles.  A good question: could it be used to also help train the player.  I&#8217;m also surprised they used so few trials &#8211; is that common?  If I had these sims and was going for data, I&#8217;d run it for a thousand different variants and train them against each other.  Ah, the learning trials were 500 iterations, but they didn&#8217;t generate more then a few bots.  I&#8217;d actually love to see this research applied to a Starcraft bot, which is a notorious problem.</p>
<p><strong><em>Agent Learning using Action-Dependent Learning Rates in Computer Role-Playing Games </em></strong><span style="font-style:small;">from </span>Maria Cutumisu</p>
<p>She&#8217;s looking at improving NPCs that lack adaptability so that we can produce more captivating stories.  She seems to be focusing on combat “stories” though.  In Neverwinter Night, she&#8217;s looking at generating adaptive behaviors without programming.  Cool!  First finding was that fixed learning rates or decaying learning rates learned too slow in games &#8211; action is too fast.  Actions can also be lost if they aren&#8217;t learned early.  So she created ALeRT to replace Sarsa-lambda algorithm, using action-dependent learning rates, trend detection, and exploration rate decrease/increase with wins and losses.   This creates a pretty interesting return for reinforcement learning &#8211; she&#8217;s essentially added an AI to her reinforcement rewards to better tune them.  If it works, this is actually pretty useful &#8211; it would allow people to be much more hands off in the highly dynamic game environments.  Well, her data says it&#8217;s not always better then basic reinforcement learning.  Over time it&#8217;s actually less optimal.  But it adapts substantially better, which in the game&#8217;s highly dynamic choice-space is more valuable.  The most interesting of this set, I&#8217;d say.  Against or with humans, I expect it would do much better.  It&#8217;s higher complexity does make it harder to implement, though.</p>
<p><strong><em><a href="http://ianhorswill.wordpress.com/2008/08/19/final-version-of-aiide-paper-on-procedural-animation/"><img class="alignleft" style="margin-left:5px;margin-right:5px;" title="twig" src="http://ianhorswill.files.wordpress.com/2007/08/image-thumb2.png?w=198&#038;h=74#38;h=240" alt="" width="198" height="74" /></a>Lightweight Procedural Animation with Believable Physical Interactions </em></strong><span style="font-style:small;">from Ian Horswill</span></p>
<p>And we&#8217;re on to the Singular techniques section.  In a switch up, <span style="font-style:small;">Horswill </span>hops in first. He wrote <em>twig</em>, a procedural animation and simple physics library, open source and runs on XNA, to be a platform for some emotion research.  It&#8217;s pretty cool &#8211; &#8220;fast, AI-friendly, scriptable and authorable&#8221; and open source.  He shows a great demo of parent child attachment, including some great mother-leg grabbing, then running off to play, then runs back.  The library&#8217;s based on Jakobsen&#8217;s work on the Hitman engine from GDC 2001 on Advanced Character Physics.  The trick is you represent character bodies as particles &#8211; point masses connected by massless rodes and represented only with position and time.  Thus can easily capture state of system with only 2 frames.  So if something is out of the way you just move it.  Then you use rigid distance constraints as springs to keep it together.  Moving hands becomes really easy.  Emulates real life, constraints, physics, and IK sim just handles everything else for you.  No joint angles, just c artesian coordinates.  It need help to handle joint constrains, that&#8217;s a bit harder without angles, but it&#8217;s worth it.  <span style="font-style:normal;">Horswill</span>&#8216;s got a posture control system modeling the spine.  I had a friend actually propose something very similar to this idea before, but..</p>
<p>OK, problem one, no conservation of mass and energy.  The forces are directly applied.  They break things using real physics.  <span style="font-style:small;">Horswill </span>cites Perlin&#8217;s gait generation &#8211; move the center and using balistic motion to drive legs when they get stretched to far.  twig also has sensing and attention.  Collisions generate &#8220;pain&#8221; and attention and a gaze reaction.  He&#8217;s using the library to create a web comic &#8211;  used XNA&#8217;s pipeline and Google sketchup to put the art together (although it takes C# to define collision volumes and prop actions).  Interestingly, holding some object, the &#8220;something&#8221; can just drag the arm around.  (How does he keep from breaking the arm?  Common Sense character relative? Nope, just loose snapping, unfortunately)  He&#8217;s added behaviors such as Hold and Write for props, Walk, Gesture, Speak, etc.  The Hug, reach, grapple, drag stuff is usually really hard and he makes it sound trivial.  Scripting is RPC interface or read from a text file.  He cites some related papers, Jakcobsen, Veriet, PhysX doing &#8220;Position-based physics&#8221;.  Procedural character control from Badler, Goldberg &#38; Perlin, etc.  Well, ok, I didn&#8217;t know this was this far along yet.</p>
<p>Problems:  twig&#8217;s bad at accurate simulation, photoreal, handle complicated collision, or path planning.  But twig&#8217;s good rough-and-ready character behavior, relatively expressive motion and dynamic (even though it&#8217;s inaccurate), and seems expandable.  Neat to see this stuff in open source, but most of these problems are the core things that need to work well in games, so this still likely has a long way to go for complex commercial applications.</p>
<p><strong><em>Combining Model-Based Meta-Reasoning and Reinforcement Learning for Adapting Game-Playing Agents</em> </strong>from Patrick Ulam</p>
<p>As in, &#8220;How can agents act in highly complex non-deterministic limited information environments?&#8221;  Ulam proposes combining existing approaches.  Use symbolic reasonings with numeric machine learning, localized failures, and adaption.  In model-based meta-reasoning the agent reasons about its failure, and then tries to target and correct it.  Big weakness, a lot of expert knowledge is needed to use this.  Reinforcement learning, on the other hand, requires little knowledge and can get optimal, but is slow and suffers &#8220;curse of dimensionality&#8221;, it doesn&#8217;t scale.  Not so good for these environments.  So he combines both &#8211; uses meta-reasoning to localize the failure, and then reinforcement learns against the failed solution.  He tested this approach in FreeCiv &#8211; defending a city for 100 turns using the TMKL model &#8211; Tasks, Methods, and Knowledge separation.  E.g. what is done by the computation, how a computation is done, and concepts used (i.e. data).  The adaptations and failure database itself is first designed by an expert.  The model-based reasoning tries to find the task in the database that failed.  The reinforcement learning is used to help build new libraries.  Model-based in general does pretty well, but here he got slightly better results with this hybrid.  Hybrid does reduce the amount of knowledge engineering necessary and reduces training time, but you still need an appropriate model.  It&#8217;s interesting how focused Ulam is on the gameplay side possibilities for this &#8211; but this is an interesting step along the path for smart design tool.  Most of this research can&#8217;t be put into development until it&#8217;s much more developed and has better interfacing, and no one seems to be focusing on that end of it yet.  Are they leaving that up to development?</p>
<p><strong><em>TAP: An Effective Personality Representation for Inter-Agent Adaptation in Games</em> </strong>by Chek Tien Tan.</p>
<p>Tactical Agent Personality &#8211; synthesizing adaptive inter-agent behavior.  Oh, he just criticized the Diablo 2 Necromancer pet AI as being too blindly dumb and then said &#8220;there&#8217;s no Blizzard AI guys here, right?&#8221;  (Must.. keep&#8230; from&#8230; laughing&#8230;)  “Let&#8217;s fix that” he says, by trying to measure player and/or NPC motivation, extracting Agent motivation from its actions.  For players he just tracks number of uses over time, for NPC he uses chance-to-use.  Then for each interlude, he calculates an error value to back propagate into a <em>neural</em><em> network</em>.  Whoa.  Where did that come from.  OK.  Think I&#8217;m fully over my game programmer reaction to unnecessarily complex AI techniques.  For now.  I&#8217;m here to be proven wrong.  So he&#8217;s using the neural network to predict what the agent&#8217;s goal is.  His latest research is to switch his weights from the actions to the action transitions, so that he can build one-step deep combo sequences.  Wouldn&#8217;t this skew the neural net badly in situations like fighting games, where combos go to 2-5 steps?  Plus, one-step combos are almost always designer-created, so the expert knowledge is there without needing the neural network to find it.  More interesting use would be for long term strategies &#8211; aggregating big picture patterns in an RTS and then predicting tech, econ, or attack, for example.  Although here, it seems reinforcement learning does pretty well to, and expert knowledge might even be the best design (we want to train rather then win).  Maybe for helping designers predicting emergent behavior?  A good question on why he aren&#8217;t searching for the higher personalities traits that the net could communicate back to the user.  But I&#8217;m not convinced this is a fruitful solution for games yet.</p>
<p style="margin-bottom:0;"><strong><span style="font-size:small;"><em>Offline Planning with Hierarchical Task Networks in Video Games </em></span></strong><span style="font-size:small;"><strong> </strong>by John-Paul Kelly</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">After lunch off-site, we&#8217;re back for some tools related help.  “A method that uses AI Planning to generate game scripts automatically” in Oblivion.  Scripting is manual off-line planning by a human being &#8211; takes time, is costly, error prone, and doesn&#8217;t scale well (depends on the design of course, but generally true).  He says we could try on-line planning, (UT, Fear) but scripts are standard, easy to implement broadly, fast, can&#8217;t be interfered with by the user, so let&#8217;s consider off-line.  Can AI tools generate scripts automatically?</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Hard but interesting: almost “Can you script fun with AI?”  His approach – represent the daily plans of NPCs in an Oblivion town as scripts that map actions in a plan to AI behavior packages.  Game programmer writes a hierarchical task network, then the planner runs through the HTN, and sends the results to the translator.  The script interprets the translation and sends it to the game.  The gain here is that the hierarchical task network is an abstraction of game knowledge and can be reused cross-character.  Each node is an abstract task -&#62; method-&#62; atomic tasks.  It&#8217;s hierarchical goals, basically, like a decision tree.  Attributes drive the goals chosen, can be character or world based.  (It&#8217;d be nice if they were not just linear decays in the planner, more realistic algorithim.)  Used JSHOP2, open source HTN planner.  Plan that comes out  represents all NPCs, because they are just interactions.  The translator then creates an individual script for a per character basis.  Then when the script gets executed – cthe script hecks the plan is still valid in world state, updates NPC state, activates AI to implement actions, and send messages between individuals.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">OK, in practice not as much fun driven as living world driven.  Not necessarily very reactive to the player.  It&#8217;s offline, so it&#8217;s really just pre-generating scripts we&#8217;d normally do by hand, and the planner can be debugged to handle the interactions correctly every time.  It&#8217;s interesting because I was just reading that Oblivion had to simplify their AI script systems down because the player interactions were breaking it.  So this is ignoring the player and making the scripts more complicated.  Whoops.  It&#8217;s still a very creative idea.  Because the scripts check world states it&#8217;s more robust then pre-scripted usually is (fixes eating even though we stole food off the table for example – although this might have more to do with the backend package?).  Catch is if script is checking world conditions and not AI, then script need a lot of extra “ifs” &#8211; contingent planning – and the player can <em>still </em>break it during play.  Seems not too difficult to set up for very predictable attribute behavior, but hardly a replacement for dynamic AI.   Really how well can you do the contingent planning in script?    Could also be very good for quick-dying combat, just to do an initial pass.  Could you just grab a new script when the current one failed?  It might be more interesting to make the scripts themselves more akin to swappable AI packages.  I&#8217;ll mention it to him. </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><strong><em>Simulation-Based Story Generation with a Theory of Mind</em> </strong>from Hsueh-Min Chang and Von-Wun Soo</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Next!  Can agents generate stories through their interactions? Arbitrary plans probably, but not usually story – they need some new AI.  Chang believes it&#8217;s a mental-level interaction among agents.  Chang separates Agent and Patient – influencer and influencee and define a social plan as a character plan whose goal or subgoal is to change the mind of others.  Their characters use theory of mind to infer other&#8217;s goals and change them.  The influencer creates a plan using the game&#8217;s public knowledge of character attributes (envy, fear, etc.) to find actions that manipulate the influencee&#8217;s attributes to get the desired result.  Their tests modeling Othello, creating fairly manipulative characters, for sure.  Visible feedback from the influencer would be regularly required, which could make the social behavior seem silly right &#8211; “I&#8217;m trying to fool you!”.  And of course, the plan has to be redone if the conditions change or the actions are not verifiable by the influencer to have happened.  Most interesting here, this idea of a “social villian” could create a “new” kind of information game – players competing against (known or unknown) social agents.  “New” as in done by Crawford in Legacy of Siboot, but that was 20 years ago, so who remembers that?  There&#8217;s definitely potential here.  Question:  Do you have to replan after to every action because of interfering plans?  “Yes”  More evidence this works best with only one active agent and the player.</span></p>
<p style="margin-bottom:0;"><strong><span style="font-size:small;"><em>Automatic Generation of Game Level Solutions as Storyboards</em></span></strong><span style="font-size:small;"><strong> </strong>with David Pizzi from the University of Teesside</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">And finally, Pizzi, who was working with Alex Whittaker, an Eidos AI programmer.  Pizzi points out game designers are reluctant to use planning to procedurally generate content because of QA issues.  But planning can provide all the alternative solutions that a designer might not see.  His research was used in </span><span style="font-size:small;"><em>Hitman: Blood Money</em></span><span style="font-size:small;">, where they needed particularly good level planning tools.  He interprets the levels using STRIPS interpreter on game actions.  Then plans out a possible level solution using heuristic search planning, and generate a storyboard to show the result.  Storyboards are normally expressive, easy to produce, universal, and easy to understand.  But they describe animation or possible situations, aka a plan.  The issue he ran into was that each plan implies a new drawing.  He solved this with dynamic generating each storyboard panel from parts.  Analyze the world state, pick the next action in the plan, and load the corresponding pane template, filling in the details of the pane dynamically.  Draw the result using automatic composition techniques, drawing an atmosphere, environment and then actor layers.  Seems like it could be a very useful for some games.  Combinatorial explosion of possible panels?  They had 90 possible actions, but only 24 templates – each template can cover multiple actions.  Solutions usually numbered 25 to 40 actions for an area.  In the planner, iteration led to a temporal element to account for NPCs that moved around, and designers could select walkthroughs by player&#8217;s play style as well.  He shows the designer&#8217;s tool.  The sheer number of possible plans here just seems to make it useless as a comprehensive check – many of the plans would be nearly exactly the same.  Being able to filter down the plans would help, but then you start to miss the QA aspect of it checking all aspects of your level design.  Also might be cumbersome to import the level into the tool, rule by rule.  They are actually looking at the final level, this is more for design planning, pre-production level planning. It&#8217;s kind of neat to see the planning tree and walk through the options at each level though.  And to rate how complex the plans coming off each potential choice in the level are, so you can balance them in the design, a critical part of Hitman design.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><strong><em>Modeling Culturally and Emotionally Affected Behavior</em> </strong>given by Vadim Bulitko.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">It&#8217;s 3:00, time for social intelligence.  My social intelligence is telling me we should have a short break first, but to shut up about it.  (Yes, clearly working.)  So, Bulitko asks,  “why model culture?”  Because, say, you&#8217;re trying to be more realistic in virtual trainers for soldiers going to Iraq.  His demo shows a conversation that would normally be pre-created.  Bulitko says that would be laborious and error-prone.  Why not model “procedural culture”?  He defines “schemas” that are a framework of cultural knowledge and “shared symbols” that are shared icons of a culture.  We can build a library of schemas and create plans to show what steps a cultured NPC would support, i.e. rates highly.  As an aside, in this plan we can also model how NPC buys into a player&#8217;s promise-commitment by measuring the player&#8217;s cultural commitment, “trust”, a future predictor initiator the player will follow through.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">He combines this with procedural emotional behaviors.  Using Smith and Lazarus&#8217; appraisal theory, emotions are modeled by the appraisals of current state with respect to goals and beliefs.  Tie your procedural culture plan output to a higher decision level that maps to desirable and undesirable emotions, and then you can get one weight to evaluate each potential plan.  Combining plan layers models humanistic emotional reaction alongside culture affronts – ie disrespecting Islam.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Basically this is just a dual layer plan evaluation system, emphasizing culture and emotion, rather then just emotion as games normally handle it (behaviors weighted by emotional impact).  It seems like a pretty obvious approach and could be applied to any other situation with two factors to incorporate. Qs:  How do you select the plan&#8217;s weights?  In this case, he used a human expert and they watch results and then say yeah or nay, and then you debug what happened.  With training, he might be able to have experts tune the numbers without playing.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><strong><em>Otello: A Next-Generation Reputation System for Humans and NPCs</em> </strong>from Michael Sellers.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Advantage of 20 minute conversations: we cover a lot.  Downside: tech setup between presentations isn&#8217;t fast.  Here&#8217;s something from within the industry.  Well, the web industry.  Otello&#8217;s a web site combining Facebook and Digg, because Digg doesn&#8217;t rank stories based on who your friends are.  Sellers separates out opinion (what you know) from reputation (what you heard from someone).  Reputation is outside of your control.  It&#8217;s what someone else heard from your associates about you.  So he wants you to rate relationships by value and confidence, while keeping them one-direction, transitive.  These ratings could be done by humans or AI bots, and by being transitive, humans could choose to “trust” the output of these search bots.  He uses a weighted recursive aggregation search using the relationship value and confidence, as well as a “social friction” value to restrict the length of the search.  This search can trace the network to find early adapters, key connectors, and sharing-killers.  The whole site could be used for news story, safe chat with kids, limited visibility of individual&#8217;s content (or anything that drives funding, really.)  He&#8217;s looking for a game connection, but admits it&#8217;s been trouble in the past (Facebook friends aren&#8217;t great gameplay because you just end up with competing for thousands of friends you don&#8217;t know).  Mostly an idea and a sales pitch, but might be some ideas in this. Interesting proposal for using this approach to relationships as a score in an MMO, to enable UO-kind of stores, taverns, or theater feedback and gameplay aka the gameplay Sims Online tried to capture that the Sims does well.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><strong><em>Modeling the Dynamics of Non-Player Characters&#8217; Social Relations in Video Games</em> </strong>by Vincent Corruble from the University of Paris.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Working with Quantic Dream (of </span><span style="font-size:small;"><em>Indigo Prophecy</em></span><span style="font-size:small;"><span style="font-style:normal;">) </span></span><span style="font-size:small;">and an AI middleware company, Corruble had worked in the past towards improving dialogue in adventure games through measuring Emotions, Experience, and Personality.  He wanted to add another layer: Social Relations.  Usually this is scripted, he&#8217;s trying to go procedural.  Starting from emotional/personality/social relations models from psychology, he searching for a model that is comprehensive, manageable, computational and implementable.  He settles on the same emotional appraisal as the planning above (Bulitko), as well as measuring personality attributes (Big Five, EISN? Models) and social roles (Brown and Levinson – Liking, Dominance, Solidarity, Familiarity).  His AI is event-driven.  Given an event, first the raw emotions the event causes are selected.  Then the personality is overlaid to get the character&#8217;s true reaction.  Then the character&#8217;s overall emotional state is aggregated, and the AI behavior is changed (modified by the social role).  The social role reacts to your emotions and other people&#8217;s emotions (i.e. solidarity, dominance when they are same/different).  Seems like they still have quite a ways to go, not much detail here to go on yet, particularly on how the social role contributes to the model.  It&#8217;s interesting, though, to see a model that tries to take into account so many diverse character factors.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;"><strong><em><a href="http://arts.ucsc.edu/faculty/cope/"><img class="alignleft" style="margin:0 5px;" title="David Cope" src="http://arts.ucsc.edu/faculty/cope/images/dcope.jpg" alt="" width="193" height="102" /></a>Experiments in Musical Instruments</em></strong><span style="font-style:normal;"><strong> </strong>by David Cope</span></span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">The invited talk of the afternoon is David Cope, an AI programmer/artist and professor.  Cope, faced with a bad case of composer&#8217;s block, decided one day that instead of writing an opera by hand he&#8217;d try to get a computer to construct Bach&#8217;s chorales for him!  The chorales had a lot of competing rules, but there are a lot of examples and the structure is generally well understood.  For example, each has independent running music lines, but there&#8217;s always a  repeating note because they are 3 chords for 4 parts.  So he wrote a program that followed the rules and came up with something that seemed to work.  But it was missing something.  And he wanted to handle different rules as well.  He really just wanted to analyze the rules arising from a database of music.  As simply as possible.  So he started over, creating a Bach database, organizing it using grouping only the chords that came from the same previous note.  So as the program choose notes, it could search and know where it could go next.  The rules are embedded in the data organization.  And he noticed Bach doesn&#8217;t follow the rules!  Well, only 5% of the time.  (Take that my music theory teacher – I get to break a few too!)  His program&#8217;s algorithm – Eliza &#8211; randomly samples all of Bach&#8217;s chorales. It&#8217;s never breaking the rules, because it&#8217;s only using Bach&#8217;s notes.  There&#8217;s no sophisticated knowledge.  Just Bach.  Can&#8217;t get more expert knowledge then that.  The results were better.  But there were still problems.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">First, his program created phrases of uncertain lengths and direction-less music.  No place to take a breath, no shape or form.  So the program needs a model to limit phrase length.  At first he tried to program form and create rules in the code.  But then he tried went back to the data sampling the same way, pulling out models of a Bach phrase.  This whole thing really reminds me of Encounter Manager and story arcs – matching story beats rather then music beats from data, so to speak.  To measure phrase, Eliza just matches the first and last chord and Bach&#8217;s overall phrase length and then just fills individual notes in as above.  He then added overall form, modulation, key changes, balance, theme, shape, etc.  He just scaled bigger and bigger.  Recursively building it up.  I&#8217;m sure Lisp was great for this.  What&#8217;s particularly interesting here is that the singer&#8217;s breath time comes from Bach&#8217;s own sense of timing, automatically, not the program&#8217;s inherent design..  He&#8217;s put 5000 of these songs on his website.  He can&#8217;t even listen to them all. </span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">Pushing beyond Bach chorales, most music doesn&#8217;t have 4 voices without rests.  Different instruments, textures, styles, volumes, form.  Can we emulate all that?  We&#8217;d have to track character , section, cadence, variation and repeats and more all within the beats themselves.  Cope gave it a shot.  The Rachmaninoff piano piece he shows here is stunningly pretty, with incredible variation given his small sample set.  “It means, Rachmaninoff wasn&#8217;t dead.”  Poetic.  The meaning of art recreated procedurally, beautifully.  He does all this data by hand, meticulously copying and checking each note.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">He didn&#8217;t start composing his opera until a month and a half before the premiere, and he completed it in 3 days, to the best reviews of his life.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">A question whether he&#8217;s tried to do this with text.  He tried it to create a world anthem, with music.  In essence, it worked, although he didn&#8217;t like the data.  Close to being deemed the world anthem by the UN, but it&#8217;s a terrible piece of music.  The whole program right now is about 20,000 lines of code, optimized down.  It&#8217;s past the “Turing Test” with 9 out of 10 faculty at a school of music.  He&#8217;s had a lot of trouble getting it performed, because people know he can always make more – there&#8217;s no sense of rarity, of special.  The program isn&#8217;t rare, so it&#8217;s not valuable to perform.  So he has destroyed the databases.  It takes a long time and a lot of work to put the databases together because they have to match the style you are going for.  And es, they perform it now a bit more, but in a sense the program is dead.  We took a vote on if it is creative.  I voted yes – I&#8217;ve done it before by hand, and I believe it&#8217;s little different.  Cope says he believes it&#8217;s not and he&#8217;s written a book on that question.  I ask him about the difficulty caused when the database sample size, the expert knowledge, is too small, and he says that it&#8217;s definitely an issue, but it&#8217;s very case-specific – some data is easier then other because it&#8217;s significantly different enough from itself, while some just falls apart.  But there&#8217;s no shortcut for the sample size problems the encounter approach can run into, unfortunately.</span></p>
<p style="margin-bottom:0;"><span style="font-size:small;">A great talk to end a day that covered a lot of ground on a lot of different.  His technique is very similar to the technique I originally drafted to do procedural interactive stories, before I knew anyone else was even attempting it.  It&#8217;s still surprising to see how many people have tried it and how often its worked.  Gives me some good hope.  The most useful part of this approach is how straightforward it is and how no beat needs to be generated before all the ones before it have been played.  Less use in music, but a significant win in game narrative.  Well, off to rest and get ready for Thursday.</span></p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[AIIDE 08 Post-mortem]]></title>
<link>http://wordsonplay.com/2008/10/28/aiide-08-post-mortem/</link>
<pubDate>Tue, 28 Oct 2008 17:52:09 +0000</pubDate>
<dc:creator>Malcolm</dc:creator>
<guid>http://wordsonplay.com/2008/10/28/aiide-08-post-mortem/</guid>
<description><![CDATA[The best thing about AIIDE has to be the industry participation. In my experience, AI researchers ar]]></description>
<content:encoded><![CDATA[<p><a href="http://wordsonplay.files.wordpress.com/2008/10/aiide-logo-small.png"><img class="size-full wp-image-193 alignleft" title="AIIDE logo" src="http://wordsonplay.files.wordpress.com/2008/10/aiide-logo-small.png?w=147&#038;h=81" alt="" width="147" height="81" /></a>The best thing about <a href="http://www.aiide.org/AIIDE2008/Welcome.html">AIIDE</a> has to be the industry participation. In my experience, AI researchers are prone to a kind of hubris that expresses itself as &#8220;Here is a problem (in games or engineering or medicene) that could be solved using AI. I know all about AI. Therefore, I can solve this problem.&#8221; The &#8216;solutions&#8217; that are thus produced are often laughably innapropriate or otherwise bad when examined by someone who actually works in the field.<br />
<!--more--><br />
In the field of game AI, the temptation is always to make a really clever AI that can play the game &#8216;properly&#8217;, which generally means that it can beat the player and that it doesn&#8217;t need to cheat. Neither of these things are necessarily of interest to game designers, whose goal is to entertain the player. The role of a good enemy AI is to put up a good fight and then lose. The role of a good ally AI is to support thr player&#8217;s decisions. In neither case does this necessarily mean playing the game as well as possible. If the player can&#8217;t tell the difference between cheating and &#8216;proper&#8217; play, then by all means cheat. In fact, cheating often allows us to craft the play experience more finely, tailoring it for drama and difficulty.</p>
<p>The industry presense at AIIDE gives the academic researchers a much-needed reality check. After almost every talk, the questions were &#8220;How does this improve the player experience?&#8221; or &#8220;How does this make the designer/developer&#8217;s job easier?&#8221;. Sadly, in many cases the presenter did not have a good answer to this question. In many cases it seemed more that the game was merely being used as a simulation for testing the AI research, and not the focus of the research itself. This is, of course, totally valid. AI researchers need simulations in which to test their algorithms, and games provide us with some of the richest simulated worlds available. However I would have expected a conference on &#8220;AI for Interactive Digital Entertainment&#8221; to contain more work which was actively trying to advance the art of games.</p>
<p>That said, there was some very interesting work presented. The interesting theme for me this year was that of &#8220;social games&#8221;. There seemed to be a strong interest both among academics and industry in producing better character AI, to simulate emotion or knowledge or language-use or deal-making. These are areas of AI that are beginning to become mature enough to start appearing in games, and they offer the promise of more meaningful characters and stories.</p>
<p><a href="http://wordsonplay.files.wordpress.com/2008/10/freeman.jpg"><img class="size-full wp-image-190 alignright" title="Gordon Freeman never smiles" src="http://wordsonplay.files.wordpress.com/2008/10/freeman.jpg?w=210&#038;h=256" alt="" width="210" height="256" /></a>This presents us with a problem: As our NPCs become more complex, the poverty of the player&#8217;s expressive power becomes increasingly evident. As someone pointed out, Gordon Freeman never smiles. The input pipe is very thin &#8211; 2 joysticks and 12 buttons does not allow for much expression &#8211; and this, I think, is going to be our next major hurdle in gaming.</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[AIIDE 2008: Day 3]]></title>
<link>http://dankline.wordpress.com/2008/10/25/ai-ide-2008-day-3/</link>
<pubDate>Sat, 25 Oct 2008 21:30:37 +0000</pubDate>
<dc:creator>Dan Kline</dc:creator>
<guid>http://dankline.wordpress.com/2008/10/25/ai-ide-2008-day-3/</guid>
<description><![CDATA[Well, the conference is over, and I think each day was more enjoyable then the last.  Big thanks to]]></description>
<content:encoded><![CDATA[<p><a href="http://www.aiide.org/AIIDE2008/Welcome.html"><img class="alignleft" title="AI IDE 2008" src="http://www.aiide.org/AIIDE2008/Welcome_files/AIIDE-Logo-Small.png" alt="" width="147" height="81" /></a>Well, the conference is over, and I think each day was more enjoyable then the last.  Big thanks to Michael Mateas and Chris Darken and the organizers for setting it up.  While not all the work was relevant to my interests, a good proportion was, and most invaluably I got to meet a number of insightful developers and researchers and push my thought boundaries further then the everyday.  I&#8217;m hopeful at least some of the work will make it into my next product.  For those interested I&#8217;ll hope to post the full 20 pages of notes here, so you can get a sense of the types of work presented and where I personally saw the most utility.</p>
<p>The highlights of Friday were both personal and professional.  I was honored that Steve Rabin put some of my ideas on the future of game AI up alongside those of Damian Isla, Chris Hecker, and others.  The presentation was a nice way to really bring the goal of the conference home and focused, almost such that it should have been the first speech rather then the last.  But the most insightful presentation Friday was Borut Pfeifer, who discussed the AI architecture Project LMNO at EA is creating to try to make believable  &#8220;Spielburgian&#8221; human characters.  My notes were quite extensive, and his analysis of Spielburg&#8217;s films as source material for character behavior was very useful and contextualized to industry.  We do have the groundwork for such AI frameworks already, but there&#8217;s a long way to go.  His summary of how he intends to move forward was fantastic.  But the first challenge (which unfortunately he didn&#8217;t discuss) is a design one.  How can we make these characters seen?  It&#8217;s all well and good to do facial anims, create appropriate reactions, and model emotions.  But if the player can&#8217;t see enough pixels to tell, or the camera isn&#8217;t focused on the character, or if the player is incentivized to do other things, then the AI work would be poorly focused.  I believe we can solve the character priority behavior problem fairly well, given time.  The design solution, though, needs to be proven out and chosen first.  Even the 1st person emergent shooter environment that Doug Church is likely making at Project LMNO (give his love of Deus Ex, System Shock, etc), have much to grow to reach the level of manipulation and timing in film.</p>
<p>This was one of my biggest takeaways from the conference.  The AI technique development is good, but solving AI problems without the context of solving game design problems is tricky.  Ignoring the struggles of game design yields results that are likely poorly targeted.  Instead trying to predict the struggles of game design, particularly without the designers in the conference, is paralyzing.  AI research is still at this stage where we need the designers to be driving the problems, not the other way around, and yet the designer-&#62;programmer-&#62;academic relationship is maybe not strong enough or consistent enough to do so yet.  I&#8217;m not sure bringing game designers to the conference is that solution.  Maybe it&#8217;s time I went to a serious academic game design conference to find help bridging that gameplay/AI divide.</p>
<p>(links to <a href="http://dankline.wordpress.com/2008/10/22/ai-ide-08/">Day 1</a> and <a href="http://dankline.wordpress.com/2008/10/23/ai-ide-2008-day-2/">Day 2</a>)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[AIIDE 2008: Day 2]]></title>
<link>http://dankline.wordpress.com/2008/10/23/ai-ide-2008-day-2/</link>
<pubDate>Fri, 24 Oct 2008 06:05:50 +0000</pubDate>
<dc:creator>Dan Kline</dc:creator>
<guid>http://dankline.wordpress.com/2008/10/23/ai-ide-2008-day-2/</guid>
<description><![CDATA[Man I find conferences so professionally refreshing.  Thanks to all the people today who were so inv]]></description>
<content:encoded><![CDATA[<p><a href="http://www.aiide.org/AIIDE2008/Welcome.html"><img class="alignleft" title="AI IDE 2008" src="http://www.aiide.org/AIIDE2008/Welcome_files/AIIDE-Logo-Small.png" alt="" width="147" height="81" /></a>Man I find conferences so professionally refreshing.  Thanks to all the people today who were so inviting and open to discussion &#8211; I admire the work you all do greatly.</p>
<p>I&#8217;m still checking on those notes.  Today the highlights were the discussions about game design formalism through formal logic.  It seems like a really neat approach to help develop the science of game design, and give game designers more demonstrable tools.  There was a lot of agreement (among AI programmers anyways) that game designers need to be able to think on a rules-based level, not truly code, but in a specific scientific  sense, something that certainly fits my experience.</p>
<p>Oops and feelings of dread, I just discovered I left my fiance&#8217;s laptop cord at the conference.  I hope I can get that back tomorrow.</p>
<p>The big topic of conversation was <a href="http://en.wikipedia.org/wiki/Steve_Rabin">Steve Rabin&#8217;s</a> talk tomorrow on the Future of AI.  I recall <a href="http://chrishecker.com/Homepage">Chris Hecker&#8217;s</a> <a href="http://dankline.wordpress.com/2008/04/27/chris-hecker-on-ai-at-gdc-2008/">similar challenge</a> at GDC.  We covered the main obvious areas &#8211; animation, environmental interaction, more believable humans, etc.  But Steve ultimately was most excited about the next improvement not in development process but in gameplay.  As he put it: think of Portal, a successful game built around a new technology that was fantastic.  It had a new technology and a new gameplay at its core.</p>
<p>Steve is far more qualified to talk about this subject then I, but I&#8217;m not sure new gameplay is the most important role AI can play.  Sure, there will be new genres future AI creates.  Facade and Far Cry 2 are leading examples of this.  The difficulty is that Portal, while fantastic, isn&#8217;t fantastic because of portals.  Narbucular Drop and several other games have had portals, but were hardly impressive.  Portal was fantastic because of its narrative experience.  Portal was fantastic because it was <em>polished</em>.  This is the true challenge in modern game development.  You look at all the top games, and they take half a decade.  Blizzard.  Valve.  Bungie.  Maxis.  Popcap wins at casual games in large part because it&#8217;s dev cycles are 5x longer then everyone else.  Braid and Castle Crashers took somewhere around 4-5 years.  The irony is that the ideas for these games came in around the first 20% of the time.  They had to, because no team will work on a game for that long that doesn&#8217;t have something to build on.  to prove the trend, the reverse of this also holds reasonably true.  Games that spend little time on polish consistently do worse in both reviews and the marketplace, certain factors such as franchising withstanding.</p>
<p>This is a serious problem because there&#8217;s really no sense in creating a fantastic game today, and then spending 4 years of your life getting people to play it, all just to justify the idea you had in the first place.  Being good isn&#8217;t enough, being marketed isn&#8217;t enough &#8211; you have to be polished.   If you aren&#8217;t polished someone else will just copy your rules overnight and put the game up for free.</p>
<p>So what makes a game polished?  I can think of a few key things: design core iteration, design variation, content quality, content quantity, and technology.  A game has to polish each of these facets to varying degrees to turn out a great product.  How can AI help the games of the future?  By making these tasks easier, so polish can be completed in a more reasonable amount of time.</p>
<p>AI, like most code, is fundamentally about taking repetitive things and making them procedural.  But it&#8217;s also about modeling and predicting behavior.  For example, to improve content quality and quantity, modeling creator behavior could be very useful &#8211; making easier interfaces or automated tools.  Testing is a key part of design iteration, so automated playtesting could be very useful.  And once you&#8217;ve identified problems of a particular class, automated solutions could be very useful &#8211; things like patching collision mesh, fixing animation transitions and sequences, moving spawn points, or even elongating stream signals.  It&#8217;s tricky to say if any parts of these systems would be automatible, but each such step builds towards a major time savings and quality improvement.  Design variation (mapping design rules onto understood patterns and then selecting new longer-term games or mini-games that best build a deeply interesting game) could benefit from tools that construct and balance new rules and rule interactions built on the core experience.  And finally there&#8217;s technology, where middleware is helping keep standard functionality simple, along with helping AI research techniques be generally applicable.</p>
<p>Is this at all practical?  I don&#8217;t know.  I&#8217;ll be pleasantly surprised if there&#8217;s substantial progress in 10 years.  But it is important.  Polish is almost soul sucking &#8211; the cost to the industry as a whole is incalculable.  Certainly, parts of it are not only necessary, but important and even engaging.  But current project time frames are excessive in every possible way, and they are trending worse.  Just as Maya makes art more achievable, we need comprehensive tools and techniques that make the overall construction and polish of games straightword and mind engaging, rather then mind numbing, or we risk drowning our medium in a sea of repetitive grunt work.</p>
<p>(link to <a href="http://dankline.wordpress.com/2008/10/22/ai-ide-08/">Day 1</a>)</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[AIIDE 08]]></title>
<link>http://dankline.wordpress.com/2008/10/22/ai-ide-08/</link>
<pubDate>Thu, 23 Oct 2008 04:07:01 +0000</pubDate>
<dc:creator>Dan Kline</dc:creator>
<guid>http://dankline.wordpress.com/2008/10/22/ai-ide-08/</guid>
<description><![CDATA[I was at AI IDE 2008 today &#8211; an AI conference at Stanford.  I&#8217;ve got notes that I&#8217;]]></description>
<content:encoded><![CDATA[<p><a href="http://www.aiide.org/AIIDE2008/Welcome.html"><img class="alignleft" title="AI IDE" src="http://www.aiide.org/AIIDE2008/Welcome_files/AIIDE-Logo-Small.png" alt="" width="135" height="74" /></a>I was at AI IDE 2008 today &#8211; an AI conference at Stanford.  I&#8217;ve got notes that I&#8217;m hoping to publish, after I get it cleared through all the channels.  Long story short, general AI research is getting a new life now that procedural is the new buzzword, and there&#8217;s definitely a great industry focus and a broadening of research accordingly.  There were 2 specific industry driven talks, and one that even specifically dealt with tools!  But there&#8217;s also still a lot of algorithms being proposed for advanced AI that are impractical for 95% of the games out there, and a general avoidance of game design importance.  Academics are catching up, and the push in college programs towards dedicated games programs and games professors is going to pay off for the entire industry.</p>
<p>I was talking with Pat Olivier (I believe) and the proposal came up, as it is wont to do in AI circles &#8211; &#8220;How long will it be before AIs are replacing our humans in games?&#8221;  The designer and the AI guy in me clashed.  There was a circle of fire, spikes, chanting, side betting, the whole works.  But looking at market data always wakes me up.  The data just doesn&#8217;t support this.  We use AIs now to communicate experiences that we couldn&#8217;t do any other way.  But the reality is, given a choice, humans prefer to play against other humans.  World of Warcraft, Counter-strike, even GTA, Madden, these are games people play <em>with other people</em>.  Far and away.  It&#8217;s a similar problem to what David Cope spoke about today &#8211; there is little joy in playing against a machine that you know will exist, repeatably, forever.  Chess is &#8220;solved&#8221;, people train against computers at chess, but far far more people play chess against other humans.</p>
<p>The counter argument is that yes, this is true now, but what if the AI passes the Turing test?</p>
<p>Well, assuming such a thing is reasonable over the long scale, even then I don&#8217;t think it will matter.  If you could have a meaningful relationship with an AI you would by definition be engaging in it.  But would you only engage with AIs of that type?  I don&#8217;t think there&#8217;s much evidence of that.  People engage with their family, their co-workers, their spouses, their lifelong friends.  Maybe some people engage with their dogs more then they do with other humans, but that&#8217;s a rarity.  It seems likely that if AIs do start <em>impersonating</em> these other humans, people will just demand tests that differentiate.  Because it&#8217;s no fun to be friends with someone who deep down, you know, is just telling you you&#8217;re right because they want to be your friend.</p>
<p>But what if they aren&#8217;t just game entertainers or companions, they have intrinsic human motivations that don&#8217;t rely on consumers?  It&#8217;s allows possibly to say but what if they are just more human in that way.  But each one of these depths is a new scale of learning, and we still aren&#8217;t even baby stepping down the path.  I think a better question would be: Will humans ultimately create such an AI?  Or will it be an AI creating this AI?</p>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Stochastic Plan Optimization in Real-Time Strategy Games]]></title>
<link>http://ashwinram.org/2008/10/23/stochastic-plan-optimization-in-real-time-strategy-games/</link>
<pubDate>Thu, 23 Oct 2008 04:00:11 +0000</pubDate>
<dc:creator>cognitivecomputing</dc:creator>
<guid>http://ashwinram.org/2008/10/23/stochastic-plan-optimization-in-real-time-strategy-games/</guid>
<description><![CDATA[We present a domain independent off-line adaptation technique called Stochastic Plan Optimization fo]]></description>
<content:encoded><![CDATA[<p>We present a domain independent off-line adaptation technique called Stochastic Plan Optimization for finding and improving plans in real-time strategy games. Our method is based on ideas from genetic algorithms, but we utilize a different representation for our plans and an alternate initialization procedure for our search process. The key to our technique is the use of expert plans to initialize our search in the most relevant parts of plan space. Our experiments validate this approach using our existing case based reasoning system Darmok in the real-time strategy game Wargus, a clone of Warcraft II.</p>
<p>Read the paper:</p>
<h4>Stochastic Plan Optimization in Real-Time Strategy Games</h4>
<h4>by Andrew Trusty, Santi Ontañón, Ashwin Ram</h4>
<address>4th Conference on Artificial Intelligence and Interactive Digital Entertainment (AIIDE-08), Stanford, CA, October 2008</address>
<pre><a href="http://www.cc.gatech.edu/faculty/ashwin/papers/er-08-09.pdf">www.cc.gatech.edu/faculty/ashwin/papers/er-08-09.pdf</a></pre>
]]></content:encoded>
</item>
<item>
<title><![CDATA[An Intelligent IDE for Behavior Authoring in Real-Time Strategy Games]]></title>
<link>http://ashwinram.org/2008/10/23/an-intelligent-ide-for-behavior-authoring-in-real-time-strategy-games/</link>
<pubDate>Thu, 23 Oct 2008 04:00:10 +0000</pubDate>
<dc:creator>cognitivecomputing</dc:creator>
<guid>http://ashwinram.org/2008/10/23/an-intelligent-ide-for-behavior-authoring-in-real-time-strategy-games/</guid>
<description><![CDATA[Behavior authoring for computer games involves writing behaviors in a programming language and then]]></description>
<content:encoded><![CDATA[<p>Behavior authoring for computer games involves writing behaviors in a programming language and then iteratively refining them by detecting issues with them. The main bottlenecks are a) the effort required to author the behaviors and b) the revision cycle as, for most games, it is practically impossible to write a behavior for the computer game AI in a single attempt. The main problem is that the current development environments (IDE) are typically mere text editors that can only help the author by pointing out syntactical errors.</p>
<p>In this paper we present an intelligent IDE (iIDE) that has the following capabilities: it allows the author to program initial versions of the behaviors through demonstration, presents visualizations of behavior execution for revision, lets the author define failure conditions on the existing behavior set, and select appropriate fixes for the failure conditions to correct the behaviors. We describe the underlying techniques that support these capabilities inside our implemented iIDE and the future steps that need to be carried out to improve the iIDE. We also provide details on a preliminary user study showing how the new features inside the iIDE can help authors in behavior authoring and debugging in a real-time strategy game.</p>
<p>Read the paper:</p>
<h4>An Intelligent IDE for Behavior Authoring in Real-Time Strategy Games</h4>
<h4>by Manish Mehta, Suhas Virmani, Yatin Kanetkar, Santi Ontañón, Ashwin Ram</h4>
<address>4th Conference on Artificial Intelligence and Interactive Digital Entertainment (AIIDE-08), Stanford, CA, October 2008</address>
<pre><a href="http://www.cc.gatech.edu/faculty/ashwin/papers/er-08-08.pdf">www.cc.gatech.edu/faculty/ashwin/papers/er-08-08.pdf</a></pre>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Real-Time Plan Adaptation for Case-Based Planning in Real-Time Strategy Games]]></title>
<link>http://ashwinram.org/2008/09/02/real-time-plan-adaptation-for-case-based-planning-in-real-time-strategy-games/</link>
<pubDate>Tue, 02 Sep 2008 04:00:27 +0000</pubDate>
<dc:creator>cognitivecomputing</dc:creator>
<guid>http://ashwinram.org/2008/09/02/real-time-plan-adaptation-for-case-based-planning-in-real-time-strategy-games/</guid>
<description><![CDATA[Case-based planning (CBP) is based on reusing past successful plans for solving new problems. CBP is]]></description>
<content:encoded><![CDATA[<p>Case-based planning (CBP) is based on reusing past successful plans for solving new problems. CBP is particularly useful in environments where the large amount of time required to traverse extensive search spaces makes traditional planning techniques unsuitable. In particular, in real-time domains, past plans need to be retrieved and adapted in real time and efficient plan adaptation techniques are required.</p>
<p>We have developed real-time adaptation techniques for case-based planning and specifically applied them to the domain of real-time strategy games. In our framework, when a plan is retrieved, a plan dependency graph is inferred to capture the relations between actions in the plan suggested by that case. The case is then adapted in real-time using its plan dependency graph. This allows the system to create and adapt plans in an efficient and effective manner while performing the task.</p>
<p>Our techniques have been implemented in the Darmok system, designed to play WARGUS, a well-known real-time strategy game. We analyze our approach and prove that the complexity of the plan adaptation stage is polynomial in the size of the plan. We also provide bounds on the final size of the adapted plan under certain assumptions.</p>
<p>Read the paper:</p>
<h4>Real-Time Plan Adaptation for Case-Based Planning in Real-Time Strategy Games</h4>
<h4>by Neha Sugandh, Santi Ontañón, Ashwin Ram</h4>
<address>9th European Conference on Case-Based Reasoning (ECCBR-08), Trier, Germany, September 2008</address>
<pre><a href="http://www.cc.gatech.edu/faculty/ashwin/papers/er-08-06.pdf">www.cc.gatech.edu/faculty/ashwin/papers/er-08-06.pdf</a></pre>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Situation Assessment for Plan Retrieval in Real-Time Strategy Games]]></title>
<link>http://ashwinram.org/2008/09/02/situation-assessment-for-plan-retrieval-in-real-time-strategy-games/</link>
<pubDate>Tue, 02 Sep 2008 04:00:01 +0000</pubDate>
<dc:creator>cognitivecomputing</dc:creator>
<guid>http://ashwinram.org/2008/09/02/situation-assessment-for-plan-retrieval-in-real-time-strategy-games/</guid>
<description><![CDATA[Case-Based Planning (CBP) is an effective technique for solving planning problems that has the poten]]></description>
<content:encoded><![CDATA[<p>Case-Based Planning (CBP) is an effective technique for solving planning problems that has the potential to reduce the computational complexity of the generative planning approaches. However, the success of plan execution using CBP depends highly on the selection of a correct plan; especially when the case-base of plans is extensive.</p>
<p>In this paper we introduce the concept of a situation and explain a situation assessment algorithm which improves plan retrieval for CBP. We have applied situation assessment to our previous CBP system, Darmok, in the domain of real-time strategy games. During Darmok&#8217;s execution using situation assessment, the high-level representation of the game state i.e. situation is predicted using a decision tree based Situation-Classification model. Situation predicted is further used for the selection of relevant knowledge intensive features, which are derived from the basic representation of the game state, to compute the similarity of cases with the current problem. The feature selection performed here is knowledge-based and improves the performance of similarity measurements during plan retrieval. The instantiation of the situation assessment algorithm to Darmok gave us promising results for plan retrieval within the real-time constraints.</p>
<p>Read the paper:</p>
<h4>Situation Assessment for Plan Retrieval in Real-Time Strategy Games</h4>
<h4>by Kinshuk Mishra, Santi Ontañón, Ashwin Ram</h4>
<address>9th European Conference on Case-Based Reasoning (ECCBR-08), Trier, Germany, September 2008</address>
<pre><a href="http://www.cc.gatech.edu/faculty/ashwin/papers/er-08-07.pdf">www.cc.gatech.edu/faculty/ashwin/papers/er-08-07.pdf</a></pre>
]]></content:encoded>
</item>
<item>
<title><![CDATA[Sympathy for the ghosts]]></title>
<link>http://gimmereward.wordpress.com/2008/08/19/32/</link>
<pubDate>Tue, 19 Aug 2008 23:48:29 +0000</pubDate>
<dc:creator>szityu</dc:creator>
<guid>http://gimmereward.wordpress.com/2008/08/19/32/</guid>
<description><![CDATA[I&#8217;ve spent a fair bit of time playing Pac-Man, and even more by watching it. I didn&#8217;t do]]></description>
<content:encoded><![CDATA[I&#8217;ve spent a fair bit of time playing Pac-Man, and even more by watching it. I didn&#8217;t do]]></content:encoded>
</item>
<item>
<title><![CDATA[About AI and neural networks]]></title>
<link>http://codeflow.wordpress.com/2008/08/03/about-ai-and-neural-networks/</link>
<pubDate>Sun, 03 Aug 2008 09:53:54 +0000</pubDate>
<dc:creator>Antti Salonen</dc:creator>
<guid>http://codeflow.wordpress.com/2008/08/03/about-ai-and-neural-networks/</guid>
<description><![CDATA[In my last post I described the high-level architecture of my software, how the soccer match part is]]></description>
<content:encoded><![CDATA[<p>In my last post I described the high-level architecture of my software, how the soccer match part is divided into a client that does the work on showing the graphics and receiving input, a server that actually has all the match info and the AI process that actually acts as a client but controls more players at once. I also said my next task would be to write a small working piece of code for each task to get me started. Well, I&#8217;m still there; the main physics part is done. As an exercise to working with the BSD sockets interface in another language than C I did the physics part in Haskell, which was fun. Fun, but not easy.</p>
<p>Basically the difficult part was that I wanted the server to establish connections with many clients, send them some information about the match during connection and then broadcast the match data to all clients simultaneously. For this, of course, you need concurrency and threads, though the fact that Haskell as a purely functional language already threads everything confused me a bit. The answer is Control.Concurrent.forkIO and, for the more complicated stuff (i.e. communication between threads) Control.Concurrent.STM. For tutorials on how to program servers with Haskell, a nice, light introduction can be found at <a href="http://metavar.blogspot.com/2007/03/simple-socket-programming.html"><br />
http://metavar.blogspot.com/2007/03/simple-socket-programming.html<br />
</a>while a bit more difficult but certainly as interesting article is at <a href="http://sequence.complete.org/node/258"><br />
http://sequence.complete.org/node/258<br />
</a>. For a client, check out <a href="http://www.haskell.org/haskellwiki/Roll_your_own_IRC_bot"><br />
http://www.haskell.org/haskellwiki/Roll_your_own_IRC_bot<br />
</a>. But I digress. Actually I wanted to write about AI.</p>
<p>So, after finishing my physics server (actually it&#8217;s not completely finished, it has no soccer rules yet, but it&#8217;s a server with some physics understanding after all), I went on to do the AI part. Since it can get quite complicated, I thought about doing some exercises on AI first. Now, the way how to start designing and programming AI was not really clear for me. I have the book &#8220;Programming Game AI by Example&#8221; by Mat Buckland, (a very nice book by the way) which has installed the relatively simple scheme of state machines in my head. I was not all sure, however, if a state machine would really be enough for soccer players, so I went on to do some more research.</p>
<p>I then stumbled upon neural networks, a topic about which I had only briefly read in the past &#8211; they seemed interesting but I never had the patience to sit down and try to grasp the theory. I finally went through the basics about them on a few sites including Wikipedia, but noticed none of those sites really showed any practical examples. I finally came upon two web sites that really explained how to use neural networks in detail. The first one is actually in German and describes the use of neural networks in a Counter-Strike bot, see <a href="http://johannes.lampel.net/bll137.html"><br />
http://johannes.lampel.net/bll137.html<br />
</a>. It was a very interesting read, but for grasping the details you&#8217;d need to dive in the source code. The second site can be found at <a href="http://www.ai-junkie.com/ann/evolved/nnt1.html"><br />
http://www.ai-junkie.com/ann/evolved/nnt1.html<br />
</a>; this one is a very very practical introduction to neural networks, it helped me a lot and it&#8217;s also by Mr. Buckland, who keeps surprising me how simple it can be for some to make difficult things seem simple. His tutorial trains the networks with genetic algorithms, for which he also wrote a great tutorial (<a href="http://www.ai-junkie.com/ga/intro/gat1.html"><br />
http://www.ai-junkie.com/ga/intro/gat1.html<br />
</a>). The code, like all code from Mat, seems to be written for a less standards compliant compiler such as Visual Studio 6.0 or similar, which means you have to tweak it a bit if you want it to compile on a compiler that follows a C++ standard, but it&#8217;s doable.</p>
<p>Encouraged by the theory and these practical tutorials, I went on translating Mat&#8217;s Minesweepers into Haskell. During this process I also realized why almost all of the tutorials and the theory of artificial neural networks didn&#8217;t show any practical examples; my neural network code itself is merely about 50 lines of active code and contains mostly just the mathematical formulas to the networks. The applicaton of neural networks, however, is nearing 200 lines of code (huge, isn&#8217;t it?) and basically describes the whole learning and using process of the brain, err, neural network.</p>
<p>What I learned was that how the neural networks work is basically just a few formulas that don&#8217;t really say much about the application; in the end the network is really just a black box that you don&#8217;t really know, but it just &#8220;magically&#8221; gives you the correct values. The difficult part when applying neural networks to a problem is designing the way they&#8217;re used and figuring out how to make them learn as well and fast as possible. (I haven&#8217;t figured out any of the other ways of getting networks to learn (like simulated annealing and whatnot), i.e. providing positive feedback to them than genetic algorithms, but for now it seems good enough.) I also realized how the whole process was based on randomness, and while I thought that was quite funky, I did have my moments of despair trying to figure out if the thing had actually learnt something or not. (If in doubt, wait.)</p>
<p>Well, in the end it worked, though the minesweepers weren&#8217;t rolling around the screen like in the Windows/C++ counterpart, but the path of a minesweeper is drawn into a SVG file instead, as in <a href="http://finder.homelinux.org/haskell/Mines-0.1/svg_sample/gen400.svg"><br />
http://finder.homelinux.org/haskell/Mines-0.1/svg_sample/gen400.svg<br />
</a>. In this picture, you can actually see a minesweeper (the line) going for the mines nearby (the dots). Oh, want to take a look at the code? That can be found at <a href="http://finder.homelinux.org/haskell/Mines-0.1/"><br />
http://finder.homelinux.org/haskell/Mines-0.1/<br />
</a>.</p>
<p>That being cleared out, the next thing to do would be to actually finally implement a simple soccer AI. And, well, if I actually did it like I originally planned, with the locations of all the players and the ball and the player skills and personality as input, action including the direction and power of the action (let it be running, kicking the ball etc.) as output, it would probably end up being a pretty big neural network. The time to train it would probably also be pretty long, I guess.</p>
<p>The solution I&#8217;m trying to come up with includes state machines, neural networks, decising trees and maybe an occasional Markov decision process. (I also need to finally get my hands on the book &#8220;Artificial Intelligence: A Modern Approach&#8221;, which I&#8217;ve managed to miss&#8230; until now.) The basic principle is the same one as discussed in my last post &#8211; breaking everything into smaller parts, with state machines or decision trees to assist with the splitting, while using neural networks for the smaller, more limited problems. Probably my next post will still be on AI, but when that&#8217;s done (or at least the skeleton of it), and the AI players are kicking the ball, the only bigger thing missing is a client that actually shows us the action&#8230;</p>
]]></content:encoded>
</item>

</channel>
</rss>
