Release 0.6

De WikiPlee.
(Redirigé depuis Dernière version)

La release 0.6 est prévue pour le début du mois de septembre 2011.

Les objectifs de cette version sont d'avoir le boss de la forêt et le système de sauvegardes. Il y aura aussi sûrement des corrections de bugs et des améliorations des fonctionnalités existantes.

Les tâches effectuées sont dans l'historique.

Sommaire

Feuille de route

Listes des grandes étapes avant la release :

  • + Système de sauvegardes
    • + Sauvegarde des variables de jeu
    • + Interface d'ouverture d'une sauvegarde
  • + Système de boîtes de collision sur les modèles
    • + Dans l'éditeur
    • + Dans le moteur
  • + Lapin (boss)
    • + Dessins du lapin qui se transforme
    • + Dessins du gros lapin
  • + Rencontre du boss
    • + Dessin de Dieu qui transforme le lapin
    • + Script de rencontre de Plee/Dieu/Lapin
    • + Code des actions du lapin
  • + Mise à jour des traductions

Plee the Bear

Priorité Description Attribuée à
+ Quand on appuie en direction du mur en essayant de s'accrocher, on ne s'accroche pas.
+ La boîte englobante du boss est trop grand quand on lui envoie les carottes.
+ Bug : commencer une partie, prendre des pierres et gagner quelques points. Revenir ensuite à l'écran titre. Dans la sélection de niveau, le nombre de pierres et de points sont conservés (les vies aussi et c'est embêtant quand on revient à l'écran titre à cause d'un game over).
+ Bug : trouver Ray dans la forêt 1. Après le générique et l'écran titre, relancer la forêt 1 et la terminer normalement. Une ligne de points pour Ray apparaît.
10 Bug : Les objets globaux ne sont pas avertis quand ils entrent ou quittent la zone d'activité. Du coup les carrot_monster ne meurent pas et ça fini par ramer.
+ L'icône du boss reste noir dans la sélection de niveau même s'il a été tué.
5 Les carottes en cercle ne sont pas toujours créées comme prévu.
+ La barre des points apparaît au dessus des carottes durant le décompte de fin de niveau.
5 Quand l'acte 3 de la forêt est terminé, il n'y a pas de niveau à proposer pour la suite dans la fenêtre de sélection de niveau. Du coup les joueurs seront obligés de re-battre le boss pour pouvoir jouer à la forteresse dans la release suivante.
5 Faire une animation de Plee pour le game over. Julien
5 Faire un visuel indiquant la fin du niveau. Julien
1 Players present devrait être une condition passée à un trigger. Julien
+ Faire un objet qui envoie un message anonyme à notre site pour faire des statistiques sur l'utilisation du jeu. Julien
1 Ajouter le système de carte du monde. aucun
1 Ajouter le système de carte du monde avec objets spéciaux. aucun
1 Ajouter l'objet qui active la carte du monde. aucun
1 Ajouter l'objet qui active les objets sur la carte du monde. aucun
2 Dans le mini-jeu de l'arène, faire que ce qui sort d'un coté réapparaisse de l'autre. aucun
2 Dans le mini-jeu de l'arène, augmenter la taille minimum de la caméra. aucun


Moteur

Priorité Description Attribuée à
3 Lors d'une collision entre deux marques, appeler une fonction spéciale de collision entre modèles.


Notes sur l'erreur de segmentation en quittant

Il arrive parfois qu'une erreur de segmentation se produise en quittant le jeu. Cette erreur intervient sur la ligne 70 de claw/impl/factory.tpp, qui est :

  1. template<typename BaseClass, typename IdentifierType>
  2. claw::pattern::factory<BaseClass, IdentifierType>::~factory()
  3. {
  4.   typename class_map::const_iterator it;
  5.  
  6.   for (it=m_classes.begin(); it!=m_classes.end(); ++it)
  7.     delete it->second;
  8.  
  9.   m_classes.clear();
  10. } // factory::~factory()

L'instanciation du patron de classe pour laquelle l'erreur se produit est layer_factory, dès la première itération de la boucle. Cependant, c'est la première à être détruite donc on ne peut conclure que ça n'arriverait pas à item_factory.

La factory est détruite lorsque l'instance du singleton est détruite. Il s'agit d'une instance statique déclarée dans le get_instance().

Éditeurs

Priorité Description Attribuée à
5 Arranger les noms des nœuds XML pour ne plus avoir de tests du type node->GetName() == wxT("node-name"). Il n'est pas possible de les mettre dans les classes *type*_node à causes des templates ni d'unifier ces classes dans une factory à cause des façons différentes de retourner le résultat. Julien


Éditeur de niveaux

Priorité Description Attribuée à
3 Mettre le calcul de boîtes d'opacité pour les sprites, y compris dans les animations. Pour les calculer, penser à regarder le problème du plus grand rectangle vide (Largest empty rectangle sur Wikipédia). À voir : Julien
5 La barre d'outils n'est pas mise à jour quand le calque actif change. Julien
5 Supprimer l'image-cutter et faire un menu pour faire ce qu'il fait (prendre une grande image, la découper et générer un calque de déco). Penser à paramétrer le type de calque, le format d'image, l'objet utilisé et le champ dans lequel on met le sprite. Julien
1 Faire un assistant pour créer un niveau. Image de fond automatiquement découpée, calques classiques (deco, action, deco). Julien
4 Ajouter la possibilité d'indiquer une icône dans les fichiers de description d'objet. Les utiliser dans l'arbre des classes et dans la vue. La difficulté est de trouver où stocker les icônes (spécifiques au jeu) et comment les indiquer à l'éditeur. Julien


Lancement du jeu

Pour pouvoir effectuer le lancement du jeu depuis l'éditeur, il nous faudra ajouter dans la configuration la possibilité d'indiquer le chemin de l'exécutable du jeu (running-bear par exemple, ou alors plee-the-bear pour avoir des paramètres par défaut). Ensuite, l'éditeur compile le niveau dans un dossier temporaire puis lance l'exécutable en passant le dossier temporaire à un paramètre --data-path et le niveau compilé à un paramètre --start-level.

Si on part sur l'idée que l'utilisateur peut donner running-bear comme exécutable (la solution préférée de Julien), il faut qu'il puisse lister les bibliothèques d'objets, indiquer la taille de l'écran et de la zone d'activité. Voir les paramètres de la ligne de commande pour lister les plus pertinents. Les dossiers de données déjà définis dans la configuration font aussi partie de la ligne de commande.

Pour que le joueur puisse apparaître là où le niveau est dans l'éditeur, il faut pouvoir ajouter des objets au niveau temporaire. Comme l'éditeur ne se limite pas à Plee, les objets à mettre sont à définir par l'utilisateur. L'idéal serait d'avoir une sorte de configuration d'exécution qui ajouterait des item_instance définis par l'utilisateur.

Éditeur de modèles

Priorité Description Attribuée à
8 Créer une marque puis lui ajouter une animation : choisir d'abord un content_file (rabbit_fall.canim), puis passer sur content_animation, puis revenir sur content_file. L'éditeur plante avec le message :

bear-editor/src/bf/code/animation.cpp:177 get_frame : precondition failed: index < size().

Tous
+ Bug : Mettre une durée de zéro à une action fait planter l'éditeur.
5 Faire une animation pour une marque avec comme seule image un sprite avec une rotation. L'affichage ne correspond pas au résultat dans le jeu.
5 Permettre de conserver le ratio quand on redimensionne un sprite ou une animation (le faire dans tous les éditeurs).
5 Afficher le résultat de l'interpolation des positions des marques et de leur angle dans les modèles. Julien
3 Redimensionner graphiquement des boîtes associées aux marques dans un snapshot en gardant la position du centre de la marque. Julien
3 L'état des entrées du menu « View » n'est pas synchro avec l'état de la barre d'outils et de l'affichage initialement. Julien
3 Le déplacement d'une marque à la souris en cliquant sur sa boîte englobante centre la marque sur la souris au lieu de garder le décalage initial entre le curseur et le centre. Julien
Outils personnels