--- title: "Architecture moteur 3D" tags: ARCHITECTURE MOTEUR 3D, 3D, ENGINE, ARCHITECTURE --- # Session #1 ### Why do we need architecture anyway? ### Architecture principle: rely on lower level, cannot access to higher level. ### Overview of a typical game engine architecture. # Session #2 ### Dependency cycles to be avoided. ### Singletons can facilitate architecture breaches. ### Division of responsibilities. ### Interfaces to break dependency cycles. ### Dependency injection. ### Dependency inversion. ### pImpl. ### void*: C-style pointer to user data. # Session #3 ### RAII. ### Ownership. Lorsqu'on alloue une certaine zone mémoire, il est utile que cette zone mémoire n'ait qu'un seul propriétaire. ```cpp= S* s1 = new S(); auto s2 = s1; s1 = nullptr; // VERY IMPORTANT ``` Si la zone mémoire mémoire avait plusieurs propriétaires, on risque potentiellement de libérer plusieurs fois la même zone (segfault), et si jamais il n'y en a aucun on peut aboutir à ne jamais la libérer (leak). :::success D'où le fait d'utiliser RUST ::: ### std::unique_ptr En C++ pour garantir le fait d'avoir un seul owner par zone mémoire, on utilise les unique_ptr ### std::shared_ptr Etant donné le fait qu'il faut toujours essayer d'avoir un seul ownership par zone mémoire, l'utilisation de shared_ptr est généralement déconseillé. Bien entendu, il arrive certains cas (rare) où l'utilisation de shared_ptr est utilisé. ### Move semantics Le principe du move semantics est d'éviter de copier à chaque fois le contenu d'une zone mémoire tout en gardant qu'un seul propriétaire de la zone mémoire concerné. https://www.youtube.com/watch?v=ehMg6zvXuMY ### Interface with opaque structures through handlers. # Session #4 ### Specialization through inheritance. ### Specialization through components, entity-component-system. ### Camera system. ### Separation between Model and View. ### Visitor pattern. # Session #5 ### Serialization. ### Visitor pattern, again. ### Model-View, again. ### Command pattern. ### Test-driven development, unit tests, integration tests... ### Metrics