CppCon 2014: Nicolas Fleury "C++ in Huge AAA Games"

CppCon · 80K views · 2014 · 48:43

Open on YouTube

C, C++, Rust, Go & systems languagesGame programming & enginesSoftware performance & optimizationtalkdated

Why Stack Overflow recommends it

Stack Overflow users link it as a real-world source for claims about game-industry C++ practice, such as custom containers, avoiding string-keyed maps, unity builds, and template-driven binary bloat.

Recommended by 1 people across 1 different months, 2017 to 2022.

What it is

A CppCon 2014 talk by Nicolas Fleury, a technical architect at Ubisoft Montreal, on how C++ is used in huge AAA game codebases like Assassin's Creed and Rainbow Six. It covers performance, debugging, and keeping iteration and compile times manageable in single statically linked projects.

Cited in 1 Wikipedia article, including Assassin's Creed Unity.

What people said

Recommends Dundo · 2021-06 · Stack Overflow · on “Is there any difference in performance of unordered_set (C++) in case of strings vs in case of integer?”

Maybe a little OT: I remember this talk of this guy from Ubisoft, he says that they don't ship games with maps that have a string as key, here [this video] , he also says that they use custom containers, so maybe it is not applicable with STL containers. But maybe what he is saying is correlated with what you are asking. I would be curious to know where the truth is! :)

Cites rationalcoder · 2017-05 · Stack Overflow · on “What percentage of my binary is taken up by a class/function template in C++?”

I am a game developer, and I often find myself writing specialized, templated containers for my needs. After watching one of my (now) favorite cppcon talks, I am interested in finding the percentage of my final binary that is taken up by a given class/function template in order to determine if some hoisting would be beneficial. Here [this video] , Nicolas mentions that programmers at Ubisoft used their in-house .obj analyzer to determine that their Array class was taking ~80% of their total binary size before they got it down to ~15% (in debug targets) by hoisting. I want to know how to write such a tool. Specifically, am looking for a tool that can tell me: the percentage of total binary size ta

Cites user7860670 · 2017-09 · Stack Overflow · on “What are the drawbacks of single source project structures?”

First thing I would like to mention are advantages of project with Single Compilation Unit: Drastic compilation time reduction. This is actually one of the primary reasons to switch to SCU. When you have a regular project with n translation units compilation time will grow ~ linearly with each new translation unit added. While with SCU it will grow ~ logarithmically and adding new units to large projects hardly effects compilation time. Compilation memory reduction. Both disc and RAM. "big" translation unit will obviously occupy considerably more memory than each individual "small" translation unit containing only part of the project, however their cumulative size will greatly exceed size of

Cites Stefanos Baziotis · 2022-04 · Stack Overflow · on “No need to define functions in header files for inlining?”

One reason is because you want to distribute single-header libraries, like STB [LINK] . Also, linking is notoriously slow, even with new linkers like gold and LLD. So, you might want to avoid linking, and instead include everything in a single file. This can go beyond linking and just function definitions. The idea is to generally include everything only once to reduce compile-time, because the C++ compilation model is quite bad and slow [LINK] , and part of the reason is that things are re-compiled. This is the idea of the unity build. If you think that a unity build sounds super dumb, consider that Ubisoft (at least used to) use it [this video] .