Accueil du site - Actions - Collège 3D - Collège 3D (version 2008)

La version 2008 du collège 3D est terminée.

Voici tout d’abord une vidéo du jeu :

Installation :

  • Les prérequis (dépendances) :

Dans tous les cas, il faut d’abord installer Python et Soya3D, ainsi que pygame pour les musiques.

On peut aussi ajouter Psyco qui permet d’accélérer le fonctionnement du programme.

pour Linux : Python est normalement déjà installé. Installer soya et pygame si ce n’est déjà fait (pour Ubuntu, ce sont les paquets "python-soya" et "python-pygame"). Ajouter éventuellement psyco (paquets "python-psyco").

pour Windows : tout est décrit dans l’article Installation pour les "windowsiens".

  • Le collège 3D :

Télécharger le fichier college3d_2008.tar.gz joint à cet article (voir au bas de la page).

Ensuite, le décompresser (cela donne un dossier "college3d" et sous Windows il faudra sans doute décompresser en 2 fois) et lancer le fichier "college3d.pyw".

On peut ensuite se créer un lanceur vers l’emplacement du fichier "college3d.pyw".

  • Quelques explications :

Python est le langage de programmation dans lequel "Collège 3D" est développé.

Pyrex permet de lier Python avec le langage C (il est utilisé par Soya).

Soya3D est le moteur 3D.

PIL permet de manipuler les images.

Pygame est utilisé pour les sons.

Psyco permet d’accélérer les programmes écrits en Python.

Historique :

13/04/2008

Quelques modifications suite aux premières visites d’élèves de CM2.

  • Par défaut, on démarre en plein écran (visiblement ils préfèrent mais beaucoup confondent avec "agrandir la fenêtre" ce qui n’agrandit pas les messages).
  • Ajout de la position initiale du personnage au lancement d’un niveau (jusqu’à présent, on démarrait toujours à l’entrée du collège).
  • Pour les windowsiens : comme ce système ne gère pas correctement les changements de la résolution de l’écran, j’avais désactivé les boutons correspondants ("Plein écran" et "Résolution"). Je les ai rétablis, mais les changements ne sont pris en compte qu’après avoir quitté et relancé le jeu.

22/03/2008

Un gros travail sur les scénarios, en prévision de la visite du collège par les élèves de CM2.

02/03/2008

Les salles C13 et A15 sont faites !

Mises à jour précédentes

Les intérieurs des bâtiments B et C sont en place, ainsi que les escaliers pour accéder aux étages.

Une première texture est visible en salle info.

Fonctionnement du projet. Le club :

Le club a lieu une fois par semaine et il y a une quinzaine d’élèves.

Comme tous sont débutants, il y a une période d’apprentissage des logiciels à utiliser (Blender et Gimp) qui devrait prendre à peu près tout le premier trimestre.

L’objectif pour cette année est de s’attaquer aux intérieurs des bâtiments (cloisons et portes avec leurs textures ; ça suffira bien pour commencer) et de faire les escaliers pour qu’on puisse se rendre aux étages.

D’autre part, les élèves du club serviront aussi de testeurs du jeu et feront les scénarios.

En parallèle, je m’occupe du développement afin de pouvoir intégrer tout cela.

Aspects techniques :

Description des modifications apportées depuis la version précédente.

Un menu au lancement du jeu :

Sons et musiques :

Ils sont gérés par PyGame.

Scénarios :

Début d’essai d’une sorte de moteur de scénarios. Un premier scénario pour faire des tests consistant à trouver l’entrée des différents bâtiments.

2 caméras :

Il y a maintenant 2 possibilités de vue :

  • soit la caméra suit le personnage (au fait, les touches du pavé numérique permettent de changer la position)
  • soit la caméra remplace le personnage (utile pour les intérieurs)

On passe d’un mode à l’autre avec la touche c.

Détails chargés à la demande :

Afin d’éviter de trop gros fichiers et de ralentir le jeu, les détails peuvent être chargés en fonction de la proximité du joueur. Par exemple, l’intérieur du bâtiment B ne sera chargé que si l’on est assez proche de lui, et déchargé si on s’éloigne.

Résolution du problème des collisions :

Avec l’ajout de détails, les fichiers deviennent plus gros et les collisions ont de plus en plus de mal à fonctionner. C’est particulièrement visible sous le hall, du fait des casiers qui sont faits de nombreux morceaux, et le personnage et la caméra ont tendance à s’y bloquer.

La solution adoptée est la suivante :

Le "monde" est séparé en 2 parties :

  • l’une visible, avec tous les détails, mais pour laquelle les collisions ne sont pas gérées.
  • l’autre invisible, avec des formes simplifiées, uniquement pour gérer les collisions.

Les fichiers Blender sont créés en double, le premier pour la partie visible, et le second (avec l’ajout du suffixe "_c") pour les collisions.

Par exemple, le fichier "Hall.blend" contient ce qui est visible dans le hall du collège (en particulier les casiers) :

Et le fichier "Hall_c.blend" contient des "cubes" à la place de la plupart des objets. Le toit y a été carrément supprimé :

Lorsqu’on est dans le jeu, on voit le premier fichier, mais le second est invisible et sert à gérer les collisions.

Le chargement des fichiers dans le fichier "college3D.py" se fait ainsi :


# level what you see, but no collisions :
level = soya.World.get("level_college")
level.solid = 0
scene.add(level)

# for collisions, but invisible :
level_c = soya.World.get("level_c_college")
level_c.visible = 0
scene.add(level_c)

Pièces jointes