JEUX VIDEOS
Transcription
JEUX VIDEOS
JEUX VIDEOS Développement d'un Puzzle-Quest like Énoncé : Le but de ce projet est le développement d'un jeu similaire à Puzzle-Quest (ou Ironcast). Ce jeu est un jeu hybride mélangeant un système de match-3 (CandyCrush) avec des éléments de combat issus de jeux de rôle (comme des alignements rouges provoquant des dégâts, des bleus donnant de l'armure, etc.). Dans un premier cycle de développement, il sera nécessaire de développer un moteur de jeu (un match-3) ainsi que la mécanique de combat (contre un punching bag). Dans un second cycle, il sera question de proposer l'intelligence artificielle de l'ennemi (devant être paramétrable) et d'enrichir le système de combat. Liens utiles : • Puzzle Quest (Wikipedia) • Puzzle Quest 2 (Editeur) • Ironcast (Editeur) Développement d'un Manic Shooter Énoncé : Le but de ce projet est le développement d'un Manic Shooter. Ce jeu d'arcade consiste à piloter un vaisseau et survivre le plus longtemps possible en affrontant des vagues successives d'adversaires. La première phase de ce projet consiste à développer un prototype du jeu en insistant sur l'aspect dynamique du jeu (défilement de l'écran, des projectiles, etc.). Pour cela, il est possible d'utiliser la bibliothèque Pygame. La seconde partie du projet consistera à améliorer l'expérience de jeu, en intégrant des bonus et des adversaires présentant différents comportements, un générateur de niveaux, etc. Liens utiles : • Shoot 'em up (Wikipedia) • Pygame (Bibliothèque) Défier l'ordinateur sur Sokoban Énoncé : Sokoban est un jeu vidéo de puzzle dans lequel le joueur contrôle un personnage dans un entrepôt constitué de cases. Il doit alors ranger des caisses sur des cases cibles sachant que le personnage ne peut se déplacer que dans les quatre directions et pousser une seule caisse à la fois. Comme le personnage ne peut pas tirer de caisse, il est possible de se retrouver bloqué après un mouvement mal choisi. Ce projet a pour objectif de réaliser un jeu de Sokoban en permettant à un utilisateur de jouer en parallèle d'une intelligence artificielle et de comparer ses performances. Dans un premier temps, il s'agit de réaliser un jeu jouable pour un humain avec importation de niveaux. Pour cela, des formats de données (comme .xsb, .sok ou .stb) dédiés peuvent être utilisé. Bien entendu, une interface graphique devra être réalisée avec l'aide, par exemple, de la bibliothèque Pygame. Une fois ce travail préliminaire fini, il conviendra de proposer une fonctionnalité de résolution automatique de niveau (comme l'agorithme A*) et de permettre de faire jouer humain et ordinateur en parallèle. Enfin, une dernière étape consiste à rendre anytime l'algorithme de l'intelligence artificielle : cette dernière est obligée de jouer dès que l'humain fait un mouvement. Liens utiles : • Sokoban (Wikipedia) • Algorithme A* (Wikipedia) • Pygame (Bibliothèque) • Algorithme anytime (Wikipedia) OPTIMISATEURS Le Castor Affairé Énoncé : Le but du problème du castor affairé est d'écrire sur une sortie standard (ruban, écran ou variable) la plus grande valeur possible. Afin de rendre ce petit jeu de programmation intéressant il existe deux contraintes : (1) le programme doit pouvoir s'arrêter (ne pas posséder de boucle infinie) ; (2) la taille du programme est limitée (cette taille est une donnée du problème). Ce problème a été pensé initialement sur machine de Turing qui est une machine à états fonctionnant à l'aide de rubans infinis. Dans ce cas, la taille du programme est un nombre d'états. Toutefois, il est aussi possible d'utiliser une machine RAM qui est une machine utilisant des instructions proches de l'assembleur où, cette fois, la taille correspond à un nombre maximal d'instructions. Dans un premier temps il est nécessaire d'implémenter un émulateur de la machine que vous comptez utiliser. Puis dans un second d'implémenter une méthode permettant de générer des programmes et d'optimiser ceux-ci afin d'améliorer le score du castor affairé. Liens utiles : • Castor affairé (Wikipedia) • Machine de Turing (Wikipedia) • Machine RAM (Wikipedia) Optimisateur de WarGame Énoncé : Le but de ce projet est fournir un outil permettant d'aider à construire une armée efficace pour un jeu de figures tel que Warhammer dans une limite de points d'armée donnée. Dans un premier temps, il faudra développer un moteur de combat entre deux armées avec des règles fortement simplifiées (quelques unités de base, affrontement des armées en ligne sur un échiquier, dégâts fixes, pas d'obstacles, etc.). Dans un second temps, il s'agira de proposer un générateur automatique d'armée respectant une limite de points. Dans la dernière étape, il faudra proposer une méthode (construction aléatoire, système à base de règle ou encore algorithme génétique) permettant d'obtenir une armée performante. Liens utiles : • Argad (Règles génériques) • Algorithmes génétiques (Wikipedia) Solveur de Ricochet Robots Énoncé : Le principe du jeu de société Ricochet Robots est de trouver en moins d'une minute la séquence de mouvement qui permettra à un robot donné (parmi quatre) d'atteindre un objectif désigné sur une case du plateau de jeu. Cependant, les robots ne peuvent que se déplacer en ligne droite jusqu'à rencontrer un obstacle. Le but de ce projet est de développer un programme permettant de trouver une solution optimale pour toute situation du jeu. Dans un premier temps, il s'agira de développer le moteur du jeu (cf. règles) puis d'implanter un algorithme de résolution naïf, appelé A*. Cependant, le problème est trop complexe pour être résolu dans de bonnes conditions. Dans un second temps, il s'agira alors de proposer des méthodes d'optimisation de l'algorithme, par exemple en utilisant des tables de transposition. Enfin, s'il reste du temps, il pourra être intéressant de réaliser une interface graphique permettant à un utilisateur de sélectionner un objectif. Liens utiles : • Ricochet Robots (Règles du jeu) • Plateau de jeu (Image) • Algorithme A* (Wikipedia) • Tables de transposition (Wikipedia) LOGICIELS Interpréteur de programmes chimiques Énoncé : La programmation chimique (aussi appelée paradigme de programmation par réécriture de multiensembles) est un paradigme de programmation dans lequel les données en entrée sont réécrites par des règles du type remplacer A par B si C. Par exemple, un programme qui calcule le maximum d'un ensemble utilise la règle remplacer les entiers x et y par x si x>y et un crible d’Ératosthène utilise remplacer les entiers x et y par x si y est multiple de x. Le but de ce projet est d'écrire un interpréteur de programme chimique qui, à partir d'un langage simple, permettent de spécifier des éléments et des règles de réaction deux à deux. Un premier jalon consistera à définir le langage, réaliser un parser et un interpréteur simple. Dans un second temps, il s'agira d'interpréter de manière parallèle des multi-ensembles (l'équivalent de sous-programmes). Enfin, il est demandé d'étendre le langage pour utiliser des règles de dissolution (détruisant un sous-programme) et d'injection (produisant une donnée sans un sous-programme). Liens utiles : • Programmation chimique et membranes (Thèse ; pages 11 à 19) • Programmation chimique (Article scientifique) • P-Systems (Wikipedia) • Parallélisme en Python : Threading et Multiprocessing Lecteur de musique augmenté Énoncé : Le but de ce projet est la réalisation d'un lecteur de musique augmenté (comme par exemple Amarok). Les fonctions élémentaires d'un tel logiciel sont la lecteur de pistes, d'albums ou de playlists et la gestion d'une bibliothèque stockée localement. Ce lecteur sera augmenté par des fonctionnalités améliorant l'expérience utilisateur comme par exemple : la création de playlists à contraintes (imposer un style, limiter les répétitions, etc.), l'utilisation de service externes (last.fm, Wikipedia, etc.) et la gestion de statistiques d'écoute (nombres d'écoutes, dernières écoutes, durées des écoutes, etc.). Liens utiles : • Amarok (amarok.kde.org) • Last.fm (www.last.fm) • Wikipedia (en.wikipedia.org) • MusicBrainz (musicbrainz.org) Logiciel de stéganographie Énoncé : La stéganographie consiste à cacher un message secret à l'intérieur d'un autre message ayant lui-même une signification. Le but de ce projet est de proposer un outil permettant de cacher et de décrypter automatiquement un message au sein d'un texte. Pour cela, nous proposons dans un premier temps d'analyser et d'exploiter la répartition des mots ou des caractères dans un texte. Par exemple, en français la lettre "E" est la plus fréquente. Le message peut ainsi être caché en modifiant légèrement la fréquence d'apparition des différents caractères. Il est important de conserver le sens du message original afin qu'un lecteur externe ne se doute pas qu'il existe un message caché en utilisant un dictionnaire de synonymes. Au-delà du sens, il est important de conserver le style original en maintenant le niveau de langage lors de l'utilisation de synonyme. Liens utiles : • Stéganographie (Wikipedia) • Analyse fréquentielle (Cours simplifié) • Dictionnaire de synonymes (http://www.synonymes.com/)