Mindflock.com
Social Game Artificial Intelligence
Social Game Artificial Intelligence
Mar 20th
There was a discussion on this during the AI roundtables at GDC about the Assasins creed not using IK for pushing characters. Well, here’s the video to prove it DOES use IK. Clearly the arms are IK’d towards certain points on the character to be pushed. Interestingly the people touched then play a reactive “move backwards” animation which is where you find the oscillation going on here I think. Anyway, score +1!

Enjoy.
Mar 20th
This last few weeks we were over at GDC as part of the AI summit. We had two full days of AI discussion which was pretty wide ranging in content. Phil did two presentations, one on social behavior and another on some “tales from the trenches” under the name “Little big AI”. The big takeaway from the GDC as a whole, is that games are diverse in nature. On the high end, we saw presentations about using driven ragdolls (powered by Havok physics and animation products) in Just Cause 2. On the other end of the spectrum, we saw many indie games on the IGF stand and plenty of social games in attendance (particularly interesting was Daniel James’s talk about Three Rings facebook game experiments).
So we’re left with a feeling of wanting to work on high end 3D animation and low end flash-based facebook social simulation!
Having a quick poke through the Facebook API and how we can tie flash into it (via adobe flex) seems like it would be fun to experiment with. So its likely we will do some work on that. but will also continue work on the behavior tree code library and work on pushing box mental in a new direction. Box Mental is our 3D game/experiment and following some feedback from Sony, we decided that the concept was too hard to explain and understand as it was. It feels like we need to join the dots somewhere and actually work on something that does both high-end 3D and low end flash in a way that works with the same core gameplay and backend infrastructure. We have a background in network and distributed systems code, so it feels natural that we will bring some of that into play. We are considering how we might use either google’s appengine and/or amazon EC2 to power the backend. The key of course is to find a simple mechanic that works across a range of platforms, has a core online element but that works scalably and asychronously and that still has interesting complexities that can be controlled by AI direction.
More on all this once we have some ideas prototyped out.
Feb 25th
Forgot to mention we’ll be at the GDC early next month, March 9th-13th as part of the AI summit.
Hopefully we should be able to post some video of the event when we return.
Feb 23rd
2009 Conference
So we’ll be at the Paris game AI conference in June (23/24th).
More details on the conference itself is available here
This conference is very much focussed on practical AI techniques for developers of all sizes. Last year we had a blast and we’re hoping for some brilliant content for this years conference too. It takes place in Paris which is lovely at that time of year too!
Hope to see you there!
Phil.
Feb 7th
So, we promised that we would release the colonisation prototype from the global game jam (and AI game marmalade). Well, we’re doing just that. But before you get to having a look, we should discuss what you’re looking at.
Right now, this is a really rough prototype. It is also incomplete. The main issue is that colonies simply expand with no consequence for that expansion. The initial plan was to have four different types of AI entities (well, 5 if you count colonies), these were foragers for gathering resource, attackers (pretty obvious what they do), defenders (same) and finally pioneers. Pioneers are the expansion mechanism for colonies. So the plan was to haveĀ each colony contain resources. These resources would then be “spent” on the various population types. During development it seemed fairly obvious what pioneers did, in that you spawn them and they go out and try and create a new colony of their own. If they cannot start a colony (perhaps it is too close to another one) they simply join the colony that is closest to them, thus adding back to that colonies resource pool. At the current stage of development of the prototype, we have a bit of an issue with controlling colony expansion. Colonies simply increase their resources over time, this needs to be scaled by the number of foragers in the population. The other issue is that when colonies come into contact with one another, currently they simply overlap, whereas the design really calls for some aspect of competition here. The plan was to inititally spawn attackers and defenders and to have a mass skirmish, but that is a bit overkill. What we really need to do is to simply figure out the result of the competition between colonies, either a merger or a conflict.
Conflict should be decided on the balance of attackers to defenders. The winner of any conflict should take on the resources of the loser and the loser should disappear. Currently none of this happens as we’ve not quite figured out unity’s method of having colonies trigger each other when they touch. In all, as our first project using unity to prototype and considering we knew nothing about unity, C# or javascript (the languages used by unity to script the prototype) it went pretty well. Certainly it doesn’t achieve much yet, but we certainly made progress and have a clearer understanding of unity usage so things should speed up development wise when we next get time to work on this.
So right now the prototype is pretty dull, with just a few things you can alter.
1) You can change the rate at which population increases, 1 second delay is faster, 10 second is slower.
2) You can set a maximum population for pioneers. This controls wether pioneers can spawn (its safer to keep this number low).
3) You can set the maximum number of colonies. This helps make sure that the simulation doesnt completely collapse under the CPU load.
To be clear, if you set these sliders too high (for max pop/col counts) you WILL kill your CPU. It generally tends to be gradual, but just take care when using the webplayer version.
Controls in the prototype are WASD and right mouse button for looking around (we plan on using left mouse to select colonies later).
So, just so you can see where we’re at. Here are the different versions:
This is the standalone executable version zipped up.
Please take care when running these. They are very rough and ready.
Normally we’d end with “have fun”, but it doesn’t really count with the current prototype. BTW: No idea why these are now called population instead of colonisation. Temporary schizm.
Jan 30th
Ok, so colonies are setup. They spawn pioneers and you can control some options from the GUI (took a while and had to switch from C# to Javascript, neither of which we’ve used before).
Right now the pioneers just set off in random directions. They travel for a set amount of time and at a set speed. Then when they time out, they attempt to place a new colony. If the colony is too near another colony, they simply dont place the new one.
Next task is to add the colony sizing (colonies grow as resources allow) and the integration of pioneers such that if a pioneer cannot place a colony because of its proximity to a new one, the pioneer simply integrates back into the existing colony, adding to its population. Once we get that up and running and fix up a few UI issues so that there’s a maximum population and colony cap, we’ll put up a webplayer version. Never tried that before either 
Fun!
Jan 30th
So last time we talked about doing some social simulation. As ever time is tight, so we put off actually doing the work until this weekend.
We’re taking part in both the Global Game Jam and the Global Game Marmelade: http://aigamedev.com/open/upcoming/2009-marmalade/
As a fun little learning experience, we’ll be using Unity3D for this little test. Plus we’ll try and release some interim builds here on the blog. You’ll have to install unity web-plugin if you want to try them out, but I think the faster access to a demo build should be worth it.
So anyway, on with the show! First up is some kind of colony structure and the initial “pioneer” implementation. Colonies are representations of groups of people, pioneers represent the types of people who move away from the colony to start their own. Sounds like some kind of ant farm initially!
More soon.
Jan 20th
Right now there are a lot of reasons why we should be rethinking our approach to society. With the meltdown of international finance has come a need for re-evaluation of our social structures. Not least here in the UK where we are in a very poor position.
It started a chain reaction of thought, that led from the outer edges of the nations politics, to the very core of socialism vs capitalism and then deeper still.
Ultimately it led to this question:
Does land ownership lead to fundamental inequalities?
In order to explore that question, we’re putting together a prototype game concept that explores the absolute basics of population. It starts off with a model of a single civilised dwelling space and then models the spread of population from there. Here are the rules so far:
These simple rules should form at least the basis of the starting phase of population. There are other small rules involved about how far pioneers travel and how big populations can grow, but roughly the idea is that a certain amount of population is sustainable, but the concept of “growth” which is used throughout capitalist economies suggests that populations inevitably rise. This should in theory lead to imbalances in the population and more importantly the rise in increased population density in a concentrated mass of population.
It really is just a simple little prototype experiment. No particular goal other than to see what happens. If it turns out anywhere near interesting we’ll try and make it available somehow (maybe do a unity web-player version).
Anyway, need to go and work on population growth now. Video soon!
Jan 6th
Social greetings like the kind you get when a new person approaches a group is what interests me right now. The whole “social greeting” aspect of groups can be quite varied both within and between cultures. In some cultures, it is quite common to kiss as a form of greeting. In others that would imply a level of intimacy that is quite uncommonly displayed. The anthropologist Dr E.T. Hall (who sadly died in 2009) called the study of this phenomenon “proxemics”. To quote his definition proxemics is: “The study of man’s transactions as he perceives and uses intimate, personal, social and public space in various settings while following out of awareness dictates of cultural paradigms.”
You can read more about Hall here
The relationship of proxemics and other non verbal cue’s such as kinesics, paralanguage and others is where my current focus lies. My theory being that without a deeper understanding of the human methods of non-verbal communication we simply cannot engender our virtual characters with a fully developed “human-like” set of behaviours.
One of the biggest issues, is that we are constrained by so many factors when creating games. It is almost impossible to imagine that fully capable non-verbal communication is ever going to be something that we will achieve with a hand-crafted approach, like many other aspects of characters are today. The industry as a whole has taken to using motion capture data to drive character animation because it is as close to human-like as it can be (although I have spoken to many animators who decry the use of motion capture data). But I feel that only via modelling and run-time generation of aspects like gesture, posture, gaze, proxemics, kinesics and paralanguage are we truly going to make our characters feel believable.
One current technical problem which must be overcome is that of inter-agent touch. Without contact based communication we will never make our agents feel alive. So the big question is how to achieve that. I see some potential for the inverse kinematic approach that was used in Assasins Creed, although I can’t find the video on youtube right now that shows some issues with the crowd pushing IK.
Human touch is a key aspect of communication and yet we hardly ever see it displayed in games outside of cutscenes which denote intimacy. The big problem is weirdly one of physics, in that currently it is very hard to get agents to actually contact each other without getting inter-penetration of limbs. Basically the issue is that humans in games are visually represented as meshes of increasing complexity, however their physical counterparts in the simulation are actually represented commonly as sets of linked bodies. Typically these bodies are simple volumes, often spheres or capsules. Clearly this representation is a vast simplification of the overall form of a human, but it is required in order for the physical simulation to be able to perform at an interactive rate.
So touch is definitely an area that needs considerable work. However right now my main concern is proximity as I feel that it is proximity (and posture, gaze etc) that leads to the relationships required for touch to be applicable. Proximity is the first part of any human interaction, in that in order to have real human communication (not mediated via some other system) we are required to be in proximity to each other. Hall actually determined that there were different aspects of proximity and different affective relationships amongst them. He also noted that there were differences between cultures and between varying relationships (same sex, different sex, different stages of intimacy etc). Issues like how far apart we are, wether we are actually facing each other or not. Unfortunately I don’t feel games are really very good at this yet. Often games have characters looking directly at each other, with an unflinching gaze and with a posture that seems aggressive. It will take some time for the industry to start considering these aspects to be important, but as we see more work developed in this area I feel we will slowly work things out. Much like facial and body animation has improved, I see the other elements of non-verbal communication improving.
The real question is can we actually use this to make more convincing and compelling characters and does that add significantly to the experience of the game?
Dec 22nd
Bah, we didn’t get the money from GITG. But it doesn’t really matter, because we can self-fund anyway.
After Xmas we should be on with some more anims for the characters. The first pass of the smart object system will be done and we’ll have the first test version of the city gen to look at.
Last week we got some mocap working from the mocap rig. It was pretty exciting to see Gabe in his silly black jumpsuit with all the IR balls on. But you can so easily tell that mocap data is human. There’s a research paper right there!
Merry Xmas and Happy New Year!
Phil.