Quote:Original post by Koshmaar
Sorry, I meant: we want MORE profesionalls ;-)
OK, I'm a professional so I guess I'll chime in :)
First, I'll give you some background. Most of the projects I've worked on were console titles. On these projects using STL in game code was forbidden and the use of templates was kept to a minimum. However, the last project I worked on was a PC title and the STL was used a lot and templates in custom code were used quite a bit more, and in more exotic ways.
Before I get into talking about the details, I think it's important to note that when people say they do/don't use the STL they're mostly referring to the STL's containers. I don't think most people have a problem using the STL algorithms, for instance. So, effectively, when you choose to use the STL containers(or not) you're deciding how you're going to hold and access most of the data used in your game. Which is a pretty big deal.
Now, one of the big differences between these projects is that on the console titles we used multiple compilers(VC6, SN Systems, Code Warrior, etc) on a single project for the different platforms. This, by itself, is one of the big reasons that the console guys tried to avoid using the STL. Since the implementation of the STL is different with each compiler it means that the way you store and access your games data on each platform is going to be different. This makes development much harder since you can't do something on one platform and expect the same memory usage, performance, etc on all of the other platforms. Also, we did much of our development on the PC for quicker iteration times. On the PC we used VC6, which had horrible template support and a it's implementation of the STL wasn't very good. And that pretty much put the nail in that coffin.
In stark contrast, on the PC title we only had one platform to support and it was the same platform we worked on every day. This meant we could use the STL containers and see their effects on speed and memory use easily. Furthermore, we started with VC7 and upgraded to VC7.1 early in the project, which has really good support for templates and a pretty nice STL implementation.
In the end, like the use of any tool, I think it pays to be pragmatic. There's no clear-cut answer for anything. And I think the choice to use the STL or not on each of the projects I've worked on was probably the right choice.
On a final note, one thing to think about is that when it comes right down to it, 99% of the general container use in any game will consist of arrays and linked-lists. Sure, you might need the occasional map/hash-table, set, and maybe a queue here and there. But, the bread and butter are your arrays and lists. And, as luck would have it, if you find that the STL won't work well for most of your needs it's not very hard to make your own array or list class :)
-John