Wednesday, October 10, 2007

Confessions of an academic crack smoker

Look, I got some attention again. This time from Christer Ericson at Sony Santa Monica, "the God of War team". His blog post is a scathing critique of most of what I've been doing for the last three years, without going into any detail whatsoever, and devoid of constructive suggestions.

I'll try to be less rude.

Christer's argumentation consists in showing one of my early videos with two cars on a track, and pointing out that the AI is not very impressive, as the cars behave erratically and crash into walls. He also makes fun of question I posted to Slashdot, where I was genuinely wondering about what people perceive as being the flaws of current game AI. From this, he implies that my contribution to game AI is null and that I could as well stop what I am doing.

Now, if someone from industry came and argued that what I'm doing is completely useless for game developers, I would take this seriously. Even if he was right, it seems that at least some of what I do is appreciated by the CI community, which is at least equally important to me, so I could accept developer' thinking my ideas were all stupid. However, I would only take such criticism seriously from someone who had actually read my papers and knew what I was doing, and bothered to come up with some suggestions on how to improve my work. None of this is true for Christer's rant.

It's true that the cars in the video don't seem to be driving very well. That was never the objective. Instead, the video is from a series of experiments where I manipulated the fitness function in order to produce interesting driving behaviour. Evolution of controllers that drove a particular track better than any tested human was already reported in our very first car racing paper. It's also true that the cars never learned to recover from some wall crashes. I had wanted this to emerge from the overall progress-based fitness function, which it didn't, and I might get back to work on this later; however, it would be straightforward to either add crash recovery as a specific learning objective, or add a hard-coded function for this. After all, normal game AI is 100%hard-coded.

In short, it would help if Christer either judged my experiments based on their actual objectives, or told me in what way I needed to change my objectives.

It would also help if he looked at some of the work that I myself consider more useful for game development, at least conceptually. (I'm not an expert in graphics, physics, or for that sake real-time collision detection, and don't profess to be one.) Especially the experiments on player modelling and track evolution, but also generalization and specialization for quickly creating drivers for any track, and co-evolution of diverse sets of opponents.

If he read these, and came back and still thought it all stank, I would be very happy to listen to his ideas on how to make my research more relevant for hard-working game developers like him. In the meantime, I'll continue my vacation.

And by the way, I don't smoke.


Unknown said...

He seems to have gotten his proverbial panties in a bunch about the phrase "game developers are not incorporating cutting-edge academic AI into their projects." I suppose he thinks you're implying that developers half-ass it and do the bare minimum.

As someone who has worked on game AI in a production setting, I know that trade-offs are eventually made between "ultra-realistic" and "fun."

Looks like he just needs to take a deep breath and calm down before hitting "Post," especially when the source of this is a question on Slashdot. A simple, "as a professional game developer, my answer is 'You're wasting your time, as all interesting game AI is made at production time, and we already program all the AI our NPCs need, because our games rock your face. Because of this, the academic field of research in this area is the academic equivalent of a circle jerk.'"

Or something to that effect...

At least honestly answering the question instead of complaining because someone outside your industry asked a question that might be difficult for you to answer.

Anonymous said...

I wouldn't worry about it. He was equally abrasive in his follow-up post...

It's a shame we went for a personal attack instead of formulating a well constructed argument though, I would certainly like to hear his take on the subject.

Unknown said...

Er, that last bit sounded awkward. It should be, "At least honestly answer the question instead of complaining..."

Anonymous said...

You know when those annoying know-it-all students grow big? This is it. Still clueless, but the salary gives even more confidence.

Just ignore them...

flohofwoe said...

I can understand Christer's rant and I think it's totally justified. AI in games "just needs to work, no matter how". It *must* be predictable and verifiable by the QA (i.e. the same input parameters must always produce the same results). AI must never mess up the game (for instance by producing a story stopper). Also, there are often very clear descriptions from the game-design guys how entities in a game should behave ("if the player does this, then the opponent should do that..."). The easiest way to code this stuff up is often to use some simple state-machine (so in the end, a bunch of if-else and state variables). If a game has "poor AI" this simply means that not enough time and effort has been dedicated to it, not that the wrong methods were used.

One of the success-stories of academia and industry working together seems to be the "driver AI" in Forza Motorsport (
Although to be honest, I haven't seen any difference in behaviour compared to other driving games where the AI is "cheating".

Also, I think the term "AI" is a problem in itself, because it suggests that some sort of "intelligence" is involved when it's really just a glorified feedback loop.

Julian Togelius said...

Christer has now replied to this post in a comment on his original post:

His answer makes sense, and I can respect his standpoint there. I replied there, as well.

Floh: I'll get back to the issue you (and a poster on Christer's blog) raise in a blog post soonish (still on a beach, though...).

Marcelo said...

Hi, Julian! :)

Man, don't mind upon his words!

I guess that soon you will become his boss at SCEA when Sony realizes what they are missing for getting stick in old fashioned AI. :)

If I were you, I would prepare a Viking raid to crush'em all! :)

By the way, congratulation for achieving your PhD! :)



Phil said...

I haven't read Christers post yet, but having written numerous sports and racing games, and done the AI in a number of them, I can say that when I first came up with my "real" racers vs "follow the dots" it gave the game a better feel. So academics can't hurt, but there is a ton to be said for "don't overdo it".
Your idea for an endless track that evolves along with the racers is not many years off. The AI is the easiest part of that IMO, it's the track development on the fly based on your driving skills that for me would be the challenge.
Games like NFS and others that do the "canned" AI again IMO arent even doing AI. Programmers get caught up in overblown control schemes, while producers and designers say "I want the AI here at point X in the race". Well now that's not really intelligent but highly artificial :).
Anyways, I'm gonna do some reading on your site, Christers and others and see what pops up.

Anonymous said...

floh said: "It *must* be predictable and verifiable by the QA (i.e. the same input parameters must always produce the same results"

I disagree. The AI in a game is required to be "fun" for the player generally - to have exactly the same output from the same input gives a standard FSM AI, which is what acadamia is working on moving away from (providing at least the legs for moving away from)

I would say that from the car video, I liked the fact that the cars seem like real players, albeit noobs, who haven't found the reverse key... :P In my opinion this is what the NN and more academic C-AIs interesting for future project ideas - that AI can produce entities acting as though they too are controlled by human players, at least to some extent. If the next MMO with actual RP came out and had towns full of people where I couldn't pick an NPC movement from a bunch of players without looking closely, I'd be overjoyed.

have a great day

Anonymous said...

I read your dispute with great pleasure. Not only because of the wonderfully Hysteriskt-esque scolding tone of the argument, but also since it is so obvious that you're both wrong.

We all know that the ultimate racing game, Super Mario Kart (released in 1992), did very well without any other AI than the usual "cheat and gang up on the player"-routine. If you would like to do mankind a real favour, you should invent a decent AI for the next Civilization game.

Now that's science.

jwatte_food said...

What I think Christer was commenting against was the words to the effect that current game AI is bad. He then took the visible proposals you had on your project as counterpoint, and basically said "if the current game AI is 'bad' then I have some choice words for what you show here." I think you agree that any game using the AI shown in those movies would be killed in the marketplace.

So, don't say "game AI is currently bad" _until_ and _unless_ you can yourself do better. Currently, I'm not aware of any academic AI that can currently do better, as in produce a game that plays better and is more fun. However, the reason I stumbled over this thread is that I'm actively looking for things that can improve the current situation. If you know where to look, please let me know!