---
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