
The first FIFA on 360 was Road To World Cup 2006. Was that an early version of the engine we have now?
No – so that was, like, they wanted to release a FIFA 06 game on next-gen but didn’t have the new engine, so they used the current-gen engine with some enhancements.
Is there a specific high-level ideal for what FIFA should achieve as an experience?
I think at the high level we almost start out with a vision of how we want users to play the game. When we started FIFA 08, when I first started working on the current generation of 360 and PS3, we argued about it a little bit but in the end we came up with this strategy where we wanted the game to be about building up a play, and breaking down the opposition and getting into an opportunity to score.
We didn’t want it to be about ‘Can I do a ten-yard pass?’ We wanted a ten-yard pass to be easy for someone to do, so that requires a level of AI and a level of assistance to do that for you. Things that are easy for a professional footballer to do should be easy for the player to do. So that was the sort of high level statement about how we wanted the game to play: ‘How can I make a series of ten-yard passes to get into a position to score a goal?’
In terms of more detail about how individual systems work. I mean, I grew up playing football, and I grew up playing football videogames, and I grew up watching football, so some of it’s just inherent. You just know that this is football and this isn’t football, so you know what you have to try to build to mimic football. I think also we’re driven a lot by technology. We’ve created a good set of technology and that opens up its own ideas and solutions at a football level. I know that’s not really the answer to your question - maybe if you keep digging…
How does the system work specifically, between overall AI and individual player systems, and pull them together in any given play?
OK, maybe I could talk about a shot. So the way our code works is that the CPU AI plays the game with a virtual pad. The reason we did that was we wanted to make it so the CPU couldn’t cheat at all: it could only do what a human could do. There’s logic to determine what buttons the CPU presses on the pad, and that feeds into the next level the same way that a human controlling a pad would.
We work it all around an AI level, an action level and an animation level. The AI level kind of takes your button input and tries to do this figuring out and give you a bit of assistance around ‘What were you trying to do?’ and it sets that outcome as the ideal. The action level then tries to make that happen. So, for example, if the user wanted to shoot the ball the player has to run to a certain point and play a certain animation to make contact with the ball, so the action level figures that out and sends information to the animation level to play this kick.
The way that kicking the ball works is that there’s a section of the code that determines the trajectory of the ball based on the animation and the situation around it. It’s quite complicated. but what we’re trying to do is look at all the context that affects kicking the ball, so if the ball’s moving towards me, when I kick it it’s going to be moving faster, but it’s also more likely to go up in the air. If I’m kicking it at a 90 degree angle, I could maybe hit the far side of the ball, and when I hit the far side of the ball I’ll put topspin on it. If the ball’s coming down, then there’s a chance I’ll put topspin on it. If the ball’s coming up, it’s very easy to hit it over the crossbar. If I’m under pressure, if I’m kicking with the inside of my foot or the laces of my foot, what other kind of factors are in there? The lateral velocity of the ball is important, so if it’s coming across me maybe I’ll shank it – the idea is that we’re trying to look at the situation we’re kicking the ball in and understand how you would then kick the ball in real life.
The flow of play in football games is, in part, dependent on the AI-controlled position of the other 21 players on the pitch. How does FIFA 10 control all that?
I guess it’s a little bit of a cheat, because it’s a team level AI. It decides the general positioning of the players depending on the formation – ‘this is roughly what 4-4-2 looks like when the ball is in this position’ – at a team level. The reason we do that is because for each player to have the AI running for them to understand that ‘this is 4-4-2 because he’s there and he’s there and I’m here’ is very expensive. So we cheat a little bit and give every player a knowledge about where everyone else is, and it’s algorithmically worked out, but from a team level rather than a player level.
But we layer on top of that all the different behaviours. They’re affected by tactics and attributes but, for example, your fullback’s actions depend on his tactics, the space – we have a module in the code which analyses space in the field and feeds the results to the player AI – the tactics you’ve given him and his attributes.
So there’s lots of different behaviours a player could do when, say, you’ve got possession. He can be supporting you, so basically what he’s looking for is open passing lanes to move himself into. He’s looking also at the threat. So we have this idea about how threatening different areas of the field are, based on information about where the goal is, about shooting positions, if the position is covered and things like that. So the players use all that information, plus distance from the ball, tactics and spatial analysis, to move themselves into a position where there’s space.
Also, there’s covering. If you run a player out of position with the ball, for example, then obviously the AI will cover that. Some positions on the field are more important than others to get covered, so if the centreback runs out, the fullbacks will realise this space in the middle is really threatening for the opposition, so they’ll start squeezing their positions to cover. There’s a lot of logic there.
FIFA International Soccer for the Genesis in '93.
simply the best.
http://en.wikipedia.org/wiki/Sega_Genesis