L'objectif de ce projet de programmation est d'élaborer une base de code générique qui servira de cadre pédagogique pour les projets et certains travaux pratiques dispensés dans l'UE Programmation Système (L3).
L'idée est de construire une bibliothèque fournissant des routines facilitant le dévelopement de petits jeux 2D simples (tels que les anciens mais intemporels Boulder Dash, Super Mario, Pac Man, Lode Runner ou Time Pilot... bref, vous voyez l'idée). Dans ce type de jeux, il faut bien sûr pouvoir afficher rapidement une grande quantité de sprites et de textures, mais pas seulement : il faut aussi calculer rapidement les collisions entre sprites (en parallèles au moyen de threads ou d'OpenMP), programmer des traitements réguliers (au moyen de temporisateurs et de signaux), gérer des communications entre processus (pour les aspects multi-joueurs ou pour brancher une IA externe), etc.
Pour les aspects graphiques (et donc a priori non directement liés à la programmation système), on pourra utiliser une bibliothèque telle que SDL (Simple DirectMedia Layer) qui permet d'utiliser très simplement les capacités d'accélération d'une carte graphique pour l'affichage d'images/textures en 2D. Avec peu de lignes de code, il est possible développer en langage C des petits jeux simples (http://dept-info.labri.fr/~namyst/ens/pdp/Capture_ecran.png).
L'accent sera porté sur le côté pédagogique de la base de code (facilité d'utilisation et lisibilité du code) ainsi que sur son côté modulaire. Dans le cadre de ce PdP, un jeu complet sera développé pour illustrer les capacités de la bibliothèque, et on veillera à ce que certaines parties du code (gestion des collisions, communications avec un serveur) puissent être laissées en exercice à des élèves de L3.
N'importe quel poste de travail du CREMI ou ordinateur personnel fera l'affaire.