Schéma Game Architecture


Niveau 1 : (couches non dépendantes de la machine)
- Game Loop (gestion du jeu très haut niveau, appelle la mise a jour des managers en passant le delta time)
Niveau 2 :
- Game | Menu | Interface (Menu ou Interface, mais toujours jeu derrière). Prevoir aussi les mini jeux ici.
Niveau 3 :
- Entités (Gestion de toutes les entités. Créatures, papillons, décors, ballons, etc .... tout ce qui bouge). "Affichage". "Update". Créature gérée à partir des ordres donnés. Elle est quasiment complètement autonome.
- Background (Gestion du décor). "Affichage", Donne les infos pour les collisions.
- Camera (Gestion de la vue). Bouge la camera à partir des infos du joueur "Update". Découplé des créatures.
- Visual FX. Manageur d’effects speciaux (bulles, vapeur cascade, vapeur douche).
Niveau 4 : Couche
basses, non dépendant de la plateforme.
- Display : Gestion d’objets 3D. Chaque objet a une position, une orientation et peut être animé (ajouter un gestionnaire d’animations). Chaque objet pointe vers un objet bas niveau.
- IO. Gestion des entrées sortie. C’est l’interface entre le haut niveau et le bas niveau. Donc pas grand-chose ici.
- Audio : Gestion des sons et musiques haut niveau. Interface avec le bas niveau.
Niveau 5 : Couche low level (dépendant de la plateforme)
- Display : Affiche des objects 3D / 2D. C’est ici que tout se fait. Les données sont chargées (au format de la plateforme). Fonctions : Load, Update, SetPosition, SetRotation
- IO : Gestion des entrées sorties. Fichiers, controles.
- Audio : Moteur son pour la plateforme.
- Exportation Objets Skinnés. (On travaille depuis MAYA, le format d'export est Collada.)
- Exportation des animations.
- Exportation Objets. (On travaille depuis MAYA, le format d'export est Collada. Il faut écrire un convertisseur Collada->G3o et Collada->PS2).
La première version montre que cela fonctionne bien, le système peut être utilisé. La version de collada utilisée est la 1.4.0.
L’export d’objets texturés se passe bien (reste à debugger sur PS2 le mapping qu’est un peu a coté).
- Création zones carte (PolyLigne ou plygone crée sous MAYA)
Idem que point précèdent. L’exporteur détecte le nombre de vertices dans un polygone et en déduis que c’est une polyline.
- Squelette de l'application (10 modules) (Voir graph architecture)
- Gestion Souris
- Animation persos Skinnés
Faire du code pour lire des anims et les enchaîner. Les anims n’ont pas de rapport avec le déplacement du personnage. Par contre les anims peuvent contenir un déplacement local du perso, comme par exemple un saut. L’anim représente le perso qui saute sur place.
Coder aussi l’enchaînement des animations, comment faire ça ? Faire ça sans transition ou faire un blend des animations pour avoir un truc sans coupure.
- Animations Objets
Le seul objet animé c’est la balançoire. Elle à un pivot et une simple rotation peu suffire. L’animation de la balançoire sera faite en code.
- Gestion Camera (Zoom, déplacements)
La gestion est simple, déplacement, zoom. Le travail consiste à gérer des transitions entre deux états.
- Audio sons. Audio musique
Intégration d’un moteur son haut niveau.
Et ensuite bas niveau (PC ok, PS2 multistream plus long).
- Affichage persos Skinnés
Ceci est fait par le moteur graphique en théorie donc pas trop de travail.
- Affichage Objets
Ceci est fait par le moteur graphique en théorie donc pas trop de travail.
- Localisation
Gestion d’un fichier multilingue. Faire un fichier Excel qui sera exporté au format texte (format CSV). La colonne a un id, ensuite on a la traduction langue par langue. On prévoit d’abord les langues les plus courantes (au niveau des pays les plus susceptibles de vendre notre jeu). Anglais, français, Allemand, Italien, Espagnol.
Pour le moment, pas de gestion de l’Unicode (pour des langues plus exotiques comme les pays de l’est ou l’asie). On fera sur demande.
- Module system : File system, mémoire et temps
Faire des petits modules haut niveau pour gérer tout ça avec une interface commune. Les modules bas niveaux existent déjà pour PC et PS2.
- Sauvegarde / Chargement (PC ok, PS2 bien plus long)
Sur PS2 il faut respecter toutes les règles imposées par les TRC (Technical Requirement Checklist) c’est donc beaucoup plus long (compter au moins 2 semaines).
- Déplacements créatures
Le déplacement est fait en code. Il faut jouer les animations en fonction de l’action.
- PathFinder (simple)
Faire un pathfinder local et un pathfinder global. Une créature sais rejoindre un point pas trop loin en reestimant son deplacement a chaque frame (ça donnera plus de vie). Créer une liste d’ordre pour atteindre une destination plus loin ou plus complexe (la map est faite pour qu’il n’y ait pas de destination complexe justement). Déplacement = Succession d’ordre « VA ICI ».
- Gestion zones écran
En fonction de la position de la souris, gérer les actions possible (c’est un system en plus de l’interface).
- Action Mange/boire
- Action Jouer
- Action Laver
- Action Faire ses besoins
- Action se faire gronder, féliciter …
Jouer une anim, et peut être une anim camera. Mettre a jour la créature. La créature passe dans la lecture d’un petit script en recevant cet ordre. Certaines actions déclenche des animations au hasard.
- Collision créature/sol
Le sol est une grille avec pas fixe et des altitudes. Donc la détection de la hauteur est simple.
- Collision créature/créature
Pas vraiment de collision, juste empêcher que les créature se rentre dedans, elle vont donc glisser les unes sur les autres. Chaque créature aura une enveloppe de collision en forme de cercle (soit une polyligne, soit un cercle).
- Collision créature/objets (ou zone)
Chaque objet a une forme de collision simple (polyligne ou cercle).
- Ia Créatures (15 actions) (Gestion d'ordre)
Les créatures utilisent des états ainsi qu’une liste d’ordre. Les ordres sont lus quand l’état le permet. Chaque ordre peut déclencher un petit script (codé) et l’état varie en fonction de ce script. Par exemple, la créature est dans l’état « attente », elle exécute le script attente (jouer tout seul), elle reçoit un ordre « aller a », elle termine le script en cours (termine l’anim en cours) et passe dans l’état « bouge » et exécute le script de déplacement. Chaque script a ses propres caractéristiques (peut être interrompus ou pas). Les ordre se cumulent ou s’annulent si ils sont contradictoires ou non compatibles.
- Gestion des jauges (5 jauges)
Chaque créature a en interne son état de santé (5 paramètres). Ces indicateurs changent suivant le temps ou les actions effectués.
- Etat Maladie
L’état maladie se traduit par une modification du comportement et des interfaces (voir game design). Les animations sont un peu différentes.
- Gestion des besoins créatures
Il faut gérer les besoins et les priorités de ces derniers. Voir game design.
- Interface Besoins créatures
L’interface est juste l’affichage. Au dessus de la tête de la créature un petit icône apparaît.
- Gestion Evolutions ronrons
Suivant le temps, les ronrons évoluent.
- Créature PNJ (5 créatures)
Elles obéissent à des ordres (tout comme les créatures joueurs). Les ordres sont générés par un script.
- Gestion Toboggan
Ceci est une entité (comme la créature et tout ce qui bouge ou peut être utilisé)
- Gestion Balancoire
Ceci est une entité (comme la créature et tout ce qui bouge ou peut être utilisé)
- Gestion Zone Rocheuse
Ceci est une entité (comme la créature et tout ce qui bouge ou peut être utilisé)
- Gestion Cascade
Ceci est une entité (comme la créature et tout ce qui bouge ou peut être utilisé)
- Gestion Anim scriptée papillons
Ceci est une entité (comme la créature et tout ce qui bouge ou peut être utilisé)
- Interface InGame
Simple affichage
- Interface Statistique
Simple affichage
- Curseur Dynamique
Suivant la position à l’écran, les actions sont différentes. Voir game design
- Gestion du temps
- Gestion Aide Dynamique
- Affichage Aide Dynamique
- Menus Mini jeux 3 pages
- Interfaces Mini jeux 6 pages
- Mini jeu Taupe
- Mini jeu marelle
- Mini jeu pêche
- Mini jeu tir ballon
- Mini jeu trouve cuicui
- Menu 6 écrans
Pour les polices de caractères on utilise un générateur de fonte bitmap depuis une fonte vectorielle. Sur www.dafont.com il y a tout ce qu’il faut comme fonte. Le logiciel de génération est « Bitmap Font Generator » sur angelcode.com.
- Customisation créature
Ceci est une option.
Règles :
- Commencer par les trucs les plus difficiles (exports, fontes)
- Faire d’abord la version PC et ensuite travailler sur un portage PS2
- Sur PC on utilise un écran de 640x512, c’est la résolution d’un téléviseur PAL. Ce sera plus facile pour les portages. Si on vend une vraie version PC, faudra prévoir une résolution configurable.
- Pour le jeu, faire peu de répertoires.