Search this blog

09 April, 2008

My work: rendering crowd

What I've done in the last month: Xbox 360, 2000+ visible instances (10000+ total), 32 different animations, 4 lod levels (from 4500 to 50 vertices), 16 textures, 100% 3d, no lighting, 1-bone skinning (done each frame, for all lods): 3.5-2.5ms (everything has still to be tuned, there's probably still some space for improvement, it varies a lot depending on the camera position etc...)

Problems? Yes, this week I have to do the same on ps3...

9 comments:

Unknown said...

just like publicco for SBK ;)

Anonymous said...

Quite impressive, Did you write that crowd from scratch?

DEADC0DE said...

No, it started as a port of an existing crowd system (that's still in development, is only a few weeks older than this one) to another rendering system.
The rendering code itself has been rewritten from scratch, and now, as also the other system is WIP, we're continously integrating the best ideas from both.

DEADC0DE said...

to remigiusz: the main difference between the SBK crowd and this one is that I had one month to write this for the x360, at the start of the project (prepro) while Marco did the SBK one in two weeks at the end of the project...

Unknown said...

Of course, I understand.
I guess that creating a couple of textured, skinned and rigged models together with animations would take even more hours of peoples' work than coding. But eventually we will have to grow bigger and do just that...

Anonymous said...

Was the port from another console or from pc?
Apart from porting to that new rendering system you mentined, What parts did you add to the crowd that were not written already? What were the challenges you found in that port?
Thanks ;)

DEADC0DE said...

We're working only on consoles. The port was from another rendering system, same platforms, and I didn't have any big problem, surprisingly eveything worked quite smoothly, only a few nasty bugs. But it wasn't really a port, we worked together as both crowd systems are not finished yet, we're working with the same ideas and the same high level structure, but the implementations are different and that's nice because we always try then to merge in both implementations the best ideas we had. Not only porting exactly the same code would have been harder for me, because I found a lot easier to rewrite the rendering than to understand the details of the other system, and not as optimal as they are two different games with different goals (i.e. mine has less visible people but they are nearer to the camera, so they have to be more high quality, have head tracking etc). I'm happy of how this is going on, it has been well managed in my opinion.

Anonymous said...

That's sound like real peer programming!!!!.
Fantastic!.
I envy you, In my studio there are fellows that easily take credits from other people's work, and it is so dissapointing.
It is good to see that doesn't happen in your studio.

DEADC0DE said...

Bah, I'm new to this studio so I don't really know its dynamics, but I haven't really found anyone that was stealing other people work in my career. That sounds really lame. But it's not like real peer programming, we're in two different teams, two different offices really so we don't talk too often, if I came up with an idea or something I'd like to try, I usually drop a mail to the other guy to keep him informed and to know what he is thinking about that idea. And every couple of weeks or I go to him to talk about his progress. I'm not directly porting his code just because I think I'm more productive now writing my own, even if the underlying ideas are the same. It wasn't planned to do it that way it just turned out to be that way, my game needed a crowd system, we are huge, the first thing we do it leveraging on our size and searching for someone that already did the same job. The solution this other team was building seemed to be good, so we based our on thiers, and then went to our road. It was quite natural and I'm really happy that even if we are such a large studio, it's still easy to take our own decisions on how to make a given technology.

Where are you working, if I can ask?