Concevoir des architectures logicielles performantes en mobilisant des approches orientées données (Data-Oriented Programming, Entity Component System) ou des patterns non orientés objet (table-driven design, CPS, etc.), en vue d'optimiser l'organisation du code, la gestion mémoire et l'exécution parallèle dans des environnements bas niveau.
Niveaux dans la compétence
1 - Identifier les principes fondamentaux des architectures orientées données ou non orientées objet. Exemple : expliquer la différence entre une architecture orientée objet et une architecture type ECS ou data-driven.,2 - Appliquer une architecture orientée données ou non-objet dans un cas simple. Exemple : structurer un système de composants (position, vitesse) mis à jour par un système unique sur un ensemble d'entités.,3 - Adapter une structure logicielle existante pour intégrer un modèle orienté données. Exemple : convertir une classe orientée objet en structure de données plate pour améliorer la localité mémoire.,4 - Concevoir un sous-système complet basé sur une approche ECS ou data-driven. Exemple : implémenter un gestionnaire d'animation ou de physique via une architecture ECS en exploitant des structures SoA.,5 - Reconfigurer un sous-système existant vers une architecture orientée données pour résoudre des limites de performance ou de scalabilité. Exemple : transformer un système de navigation orienté objet en architecture ECS pour permettre un traitement massivement parallèle des entités.,6 - Développer et promouvoir de nouvelles approches d'architecture logicielle orientée données adaptées aux enjeux du moteur temps réel, influençant les pratiques du secteur. Exemple : proposer une méthodologie avancée d'ECS adaptée aux contraintes multi-plateformes AAA, publiée comme référence ouverte et adoptée par d'autres studios.
Activités associées
- Conception de l'architecture logicielle
- Développement des briques moteur
- Maintenance et évolutions du moteur
- Optimisation des performances Engine et debugging
- Veille technologique ciblée engine