L'objectif de ce module est de fournir les fondements de géométrie et de programmation pour la conception d’architectures de moteurs de jeux.

  • Anatomie d’un moteur de jeu (core, graphics, sound, physics, gameplay, network)
  • Outils mathématiques:
    • Vecteurs, matrices, transformations.
    • Systèmes de coordonnées, systèmes de rotation, quaternions.
    • Objets géométriques: points, droites, plans, triangles, sphères, boites, objets convexes, objets non-convexes, triangulations.
    • Courbes et surfaces: types de courbes (cubiques, Hermite, Bézier, B-splines), types de surfaces (polygonales, B-splines), maillage.
    • Caméras: vues, frustums, interpolations, projections (perspective, oblique, orthographique), culling, clipping.
  • Outils de programmation:
    • (Rappels) Bases: types, instructions, fonctions, pointeurs, gestion de flux, gestion d’erreurs.
    • (Rappels) Programmation par objets: classes, opérateurs, surcharge, hiérarchies de classes.
    • Programmation par templates: instantiation, spécialisation, hiérarchies de templates.
    • Programmation multi-taches: concurrence, gestion des threads, parallèlelisme dans les moteurs de jeux
    • Gestion de la mémoire: architectures de mémoire (consoles, mobiles, PCs), méthodes d’allocation (sequential-fit, buddy-system, segregated-storage), méthodes de défragmentation.
  • Infrastructure de jeu (core module):
    • Game Loop: états, événements, boucles événementielles, initialisation et terminaison, mesure et gestion du temps, gestion des événements, gestion des processus.
    • Graphes de scènes: hiérarchies, attributs géométriques, attributs de rendu, mises à jour géometriques et de rendu, passes de dessin, passe de culling
    • Gestion de ressources: formats de ressources (modèles, textures, sons, animations), chargement, compression/décompression, caching, streaming
    • Human Interface Devices (HID): types de périphériques, entrées/sorties, analyse d’API périphériques pour consoles, PC & mobiles.
    • Etude de quelques design patterns appliqués aux moteurs de jeux: Prototype, State, Singleton, Listener, Observer, Command, Flyweight.

Exemples de projets: analyse de moteurs existants (Unity, UDK, Cryengine, Ogre3D, etc.) ; construction d’un jeu 2D pour PC (avec SDL, SFML, etc.); portage d’un jeu 2D sur mobile/console (optimisation);