Home Technical Talk

In-Game Crowd Techniques, such as FIFA 10

So I was looking at FIFA 10 trying to work out how they did the crowd scenes and it sparked my curiosity. I only have a demo here but it looks like they have something clever going on to give the effect of so many people without killing the polycount. When rotating the camera in replay mode it appears that you can see from one side of each audience member to the other (from left hand side to RHS). If they are all on individual billboards then perhaps they're animated textures that animate based on the tagent/camera vector? Even if that's how they did it - it still seems like a hell of a lot of polys to do each member of the audience that way - though maybe this parallax effect could apply to a whole row without rotating the plane?

Any one know how it's done or have any good tips on doing crowds in general?



  • Eric Chadwick
    In-engine instancing is the key. These are likely polygonal characters, not billboards. Video memory is at a premium, so it would take too many frames of bitmap animation to pull off all the character variations and their motions. But the 360 and PS3 can push a ton of polys. That's my theory, dunno for sure.
  • Target_Renegade
    Offline / Send Message
    Target_Renegade polycounter lvl 11
    They could be culling most of the crowd, depending on what camera view you use?
  • Eric Chadwick
    Oh, certainly. Also LOD has to play a big part when you're seeing a wide shot.
  • renderhjs
    Offline / Send Message
    renderhjs sublime tool
    and batching :D all using 1 drawing call
  • Lamont
    Offline / Send Message
    Lamont polycounter lvl 13
    When we did the crowd on NBA for the PS3, we had one file that dictated the crowds. When I did the enviros, our tech artist made a tool for us to covert strips of polys into crowd placements (even define the type of character it is). We export the location data and it loads into the game. The character team would make the characters, fill in some database entries and that's it. We did the crowd sections in chunks. Had control over initial LOD of the chairs they sat in.
  • CrazyButcher
    Offline / Send Message
    CrazyButcher polycounter lvl 16
    you could also render the characters to a billboard texture (along with normals) on the fly, and then re-use this same texture with color variations as "crowd particles". Means very low memory and computational costs. But mesh-instancing could be viable as well (there is also a demo in the dx sdk on this topic, if you want to see that in detail). There is not exactly much going in the game when it comes to geometry, just a static stadium, with rather simple shapes, so optimizing the engine to draw the crowd and the players really well should have been the main focus.
  • pixeldamage
    Really interesting hearing your ideas. The reason I figured it was texture/billboard based rather polygons was also because each audience member tends to have a lot of aliasing just around their shiloutte/border that reminds me of the edges of textures with alpha channels. The seats look flat to me too.
Sign In or Register to comment.