Jeu et apprentissage de la programmation
Risques :
« Les filles n’ont pas forcément de freins, mais des intérêts différents.»
« C’est avant tout un conditionnement qui survient bien en amont de la première et du lycée.»
La discipline est-elle austère ?
Les clichés sont-ils trop tenaces ?
En 2020, Nintendo vendait plus de 22 millions licences de Animal Crossing: New Horizons en 6 mois.
Un prétexte pour mobiliser la créativité, l’imagination et le travail en équipe, dans un contexte ludique
Changer l’image du jeu vidéo
python
python
SQL
linux
linux
Voir tableau collaboratif créé par Pascal
Avantages
Inconvénient
Effet « scratch »1 :
Ludique Concevoir un jeu est parfois plus amusant qu’y jouer. L’objectif « divertissement » désaustérise la matière.
Inclusif Créer un jeu vidéo requiert :
Complet Algorithmique, programmation, base-de-données voire réseau… La création de jeux couvre une grande partie du programme
Découragement : il s’agit de projets assez longs et chronophages
Déception : vouloir atteindre les « standards » des jeux du commerce est illusoire, le résultats peut être décevant
Noyade : certains éléments d’un jeu peuvent s’avérer critiques et nécessiter une technicité hors de portée
Cadrer un projet de jeu vidéo consiste à fixer la réponse à une ou plusieurs de ces questions :
Il n’existe pas de typologie ni de nomenclature qui fasse autorité, on peut cependant lister ces dénominations fréquemment utilisées :
FPS, Combat, Simulation, Plateforme, RPG, MMORPG, Sandbox, MOBA, Battle Royale, Action, Aventure, Beat Them All, Puzzlers, Réflexion, Survival Horror, Rogue Like, Rythme…
La difficulté ne dépend pas vraiment de la catégorie du jeu.
La narration, et l’« écriture » du scenario sont essentielles.
Elles sont aussi un bon moyen d’impliquer les participants qui manquent de confiance en leurs compétences techniques.
L’univers « graphique » du jeu est un autre vecteur d’implication des élèves qui collent moins au stéréotype du gamer.
La création d’un jeu se prète particulièrement bien au travail en équipe.
La gestion de projet est importante (c’est d’ailleurs une figure imposée dans les trophées NSI)
python
Il existe de nombreuses bibliothèques qui facilitent le développement d’un jeu en python
.
On peut distinguer :
Les bibliothèques classiques, listées dans le programme de la spécialité peuvent s’avérer largement suffisants :
pygame
turtle
On pourra leur ajouter keyboard
qui permet facilement d’utiliser les touches du clavier pour jouer, et rich
si les codes ANSI rebutent un peu trop ;-)
Valoriser le jeu créé en le diffusant :
Participation à des événements :
La plupart des jeux peuvent s’implémenter à l’aide de la boucle suivante :
TANT QUE la partie n'est pas terminée FAIRE
**Recueillir et traiter les actions des joueurs**
**Mettre à jour l'état du jeu**
Afficher le résultat
FIN TANT QUE
Le choix de structures de données adaptées est un point essentiel pour représenter les caractéristiques du joueur et de son environnement.
Exemples :
dictionnaire
,dictionnaire
,tuple
L’abstraction la plus fréquente d’un jeu est le graphe, dans lequel :
L’effort de modélisation est important.
La programmation du comportement d’un PNJ (un agent qui n’est pas un joueur), appelé un peu abusivement “IA” repose le plus souvent sur des algorithmes de graphes (recherche de chemins optimaux, parcours, etc.)
Exemple : utilisation d’A* pour déplacer des ennemis du joueur
La génération procédurale consiste à créer un environnement de manière automatisée, et nécessite de faire appel à des algorithmes avancés.
Exemple : générer un labyrinthe parfait aléatoirement
Pour les jeux multijoueurs, ou pour ceux qui nécessitent des ressourcent distantes, il sera nécessaire d’utiliser une architecture client/serveur et faire appel aux communications réseaux :
Le temps-réel complique sérieusement l’affaire…
Objectif du projet initial : utiliser les algorithmes de graphes vus en cours pour générer et résoudre des labyrinthes
Projet de maths discrètes et d’algorithmique.
« Mise en scène du travail réalisé : » en faire un rogue-like