tag:blogger.com,1999:blog-5439941893980599296.post3235867297673845939..comments2023-09-24T07:49:19.084-04:00Comments on Games By Design Has Moved!: Designing Emergent AI, Part 1: An IntroductionChristopher M. Parkhttp://www.blogger.com/profile/16719365007524426389noreply@blogger.comBlogger12125tag:blogger.com,1999:blog-5439941893980599296.post-75712690008219850092012-07-28T18:40:04.993-04:002012-07-28T18:40:04.993-04:00The individual agents aren't really that intel...The individual agents aren't really that intelligent -- they do see and recognize many different kinds of threats and opportunities, but they have only a certain percentage chance of really reacting to them.<br /><br />Something I've been increasingly realizing lately is how important the scale of this game is to the way that the AI seems intelligent. It's really using something akin to "the wisdom in crowds" in making its decisions, because it's not really making one decision when there are 100 agents, it's making 100 decisions. Those 100 decisions might have 50 that are very similar to one another, then another 30 that are kind of divergent, then another 20 that are various forms of more-divergent-still behavior. That makes for a very fluid and alive-feeling adversary, taking advantage of many of the heuristics that we humans have innately as part of us. <br /><br />I've been reading "Thinking, Fast And Slow" lately and realizing just how much of that psychology I had unintentionally, intuitively, or intentionally added to the AI in the game (it runs the gamut in terms of intentionality on my part).Christopher M. Parkhttps://www.blogger.com/profile/16719365007524426389noreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-85388686445441326882012-07-28T02:02:16.639-04:002012-07-28T02:02:16.639-04:00Hello,
I was reading about this and doing some ex...Hello,<br /><br />I was reading about this and doing some experimentation because I find it so interesting (also because I just read <i> I, ROBOT </i>). I have a question though - did you or do you know how to design each agent to be able to analyze patterns to avoid pitfalls?cyfrhttps://www.blogger.com/profile/01897752008788587461noreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-56214338594767104012009-06-03T21:48:03.215-04:002009-06-03T21:48:03.215-04:00CT,
Like I said, that's the most controversia...CT,<br /><br />Like I said, that's the most controversial thing. However, the basis of my decision for that was this: the most important thing is what unique challenges the player has to face, unless it's a competitive multiplayer context.<br /><br />There are a zillion other symmetrical RTS games out there. The economic AI in AI War is patterned more like one of the old space opera type games, or like a single-player scripted campaign in a modern RTS. I'll be doing another article about this, but asymmetry can make for a lot of new and interesting situations. I'm not going to convince everyone with this argument, but the players who bought the game seem to be having a blast, so I must have done something right.<br /><br />The point being that there are many different systems in an AI, and just because one of them is asymmetrical doesn't mean that the others can't be symmetrical. The strategic and tactical elements don't get any advantages, and the AI is segmented in such a way that it's not like they can just overwhelm you or something. It all works out, but it's hard to explain briefly. Hence the whole other article on this one topic sometime soon.<br /><br />Thanks for stopping by.Christopher M. Parkhttps://www.blogger.com/profile/16719365007524426389noreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-87654649601547796722009-06-03T19:15:25.210-04:002009-06-03T19:15:25.210-04:00When you said you skipped the economic simulation,...When you said you skipped the economic simulation, that pretty much killed it for me. Why not put that at the start? It seems pretty important.CThttps://www.blogger.com/profile/03817594411005347295noreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-42993418787550613582009-06-03T10:31:58.434-04:002009-06-03T10:31:58.434-04:00Thanks to everyone else who is commenting here, to...Thanks to everyone else who is commenting here, too -- I'm really super flooded with conversations at the moment, so I can't respond to everything individually, but I do read them all. Thanks for stopping by and posting!Christopher M. Parkhttps://www.blogger.com/profile/16719365007524426389noreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-56011959276670233382009-06-03T10:30:55.326-04:002009-06-03T10:30:55.326-04:00Hi Kurt,
I'd definitely be interested in talk...Hi Kurt,<br /><br />I'd definitely be interested in talking to you guys over there. I'll hop over to that forum and register.<br /><br />Anything you want to know, just ask and I'll do my best to explain my thinking on it.<br /><br />The game engine is 100% from scratch, the only outside code we are using are the .NET libraries, an ogg vorbis decoder, the SlimDX libraries, and a Mersenne Twister random algorithm.<br /><br />To be clear, I'm not really using a true database in the game engine itself -- not a relational database, anyway. What I'm basically doing is applying relational database concepts into native C#, using LINQ as well as using a system of rollups and indexes for efficiency (more on that in my article <a href="http://christophermpark.blogspot.com/2009/06/optimizing-30000-ships-in-realtime-in-c.html" rel="nofollow">Optimizing 30,000+ Ships In Realtime In C#</a>).Christopher M. Parkhttps://www.blogger.com/profile/16719365007524426389noreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-71138143461375230702009-06-03T10:24:15.518-04:002009-06-03T10:24:15.518-04:00Okay, you guys ask, and I deliver: the second art...Okay, you guys ask, and I deliver: the second article in my series is now up, and it includes some parts of the database-inspired code, as well as talking about how the AI uses "danger levels" to make interesting decisions:<br /><br />http://christophermpark.blogspot.com/2009/06/designing-emergent-ai-part-2-queries.html<br /><br />I'll also be doing future articles about other topics in this series. I have a laundry list of things I want to discuss, but I'm mostly just doing them in the order in which readers seem most interested. So let me know what else you'd specifically like to see addressed!<br /><br />I won't be posting the entire code from my AI system, but I'm not shy about posting a lot of snippets. The best approach in your own games would be to look at the ideas I'm presenting, and then come up with your own implementation based on your specific game design. Many parts of the AI in this game (like with any game) are pretty specific to the design. It's the overall concepts that are transferrable, and my goal with posting code is to help get the concepts across.Christopher M. Parkhttps://www.blogger.com/profile/16719365007524426389noreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-25808408513273257932009-06-03T10:21:03.815-04:002009-06-03T10:21:03.815-04:00I just started taking an AI course in my graduate ...I just started taking an AI course in my graduate program, and I have to say that this was an enticing read! I can't wait to see more in this series! <br /><br />Now I'll have to check out the game. Very neat ideas. Kudos!Adamhttps://www.blogger.com/profile/17626782126977075937noreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-3498516237171824982009-06-03T10:18:39.439-04:002009-06-03T10:18:39.439-04:00Very interesting article :) I'm eagerly awaiti...Very interesting article :) I'm eagerly awaiting the next part.<br /><br />I'm interested in trying something similar, with individual AI in the swarm setting you explained :)<br /><br />I don't know yet how it'll work, but I'm considering using first order logic together with fuzzy logic. (Fuzzy with the same reason as yours, to avoid perfect solution finding)<br /><br />We'll see :) I haven't seen any first order logic based game AI's, but it seems as a great possible tool.<br /><br />But thanks again for your writings :) I'll have a look on the other stuff on your blog when I find time as well :)Unknownhttps://www.blogger.com/profile/11273542021206885453noreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-86395467562864684662009-06-03T10:15:42.883-04:002009-06-03T10:15:42.883-04:00Hi Christopher,
A member over at AiGameDev.com li...Hi Christopher,<br /><br />A member over at <a href="www.aigamedev.com" rel="nofollow">AiGameDev.com</a> linked to this article via Slashdot in the thread <a href="http://forums.aigamedev.com/showthread.php?p=11395#post11395" rel="nofollow">scaling game AI with relational databases</a>.<br /><br />I was curious if you could share your database, game and C# wisdom with us there.<br /><br />Otherwise I'll keep hammering you for details here, especially the rule system as I am writing one myself.<br /><br />BTW did you write your own engine or is it part of the database system your using and if so which database?<br /><br />Neat stuff, thanks for sharing!Kurthttps://www.blogger.com/profile/09204380726687323592noreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-71772994461372774012009-06-03T09:54:11.705-04:002009-06-03T09:54:11.705-04:00I was working on a system that was again rules bas...I was working on a system that was again rules based but with randomness used to make a decision of which rules to run - based on goal that needed to be converged on.<br /><br />My pet project secured sponsorship to an AI conference, but I have left it where it is since there are some flaws that I admit have beaten me.<br /><br />Its a great read detailing what you have done - and I'd love to see high level snippets of code or pseudo code detailing how you went about it.<br /><br />Bravo !Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5439941893980599296.post-4928036835373320762009-06-03T09:32:06.141-04:002009-06-03T09:32:06.141-04:00Interesting stuff, it reminds me of my college day...Interesting stuff, it reminds me of my college days. Maybe I can break out of dull database programming and back into cool AI coding too.Chris Wnoreply@blogger.com