Release 0.7

De WikiPlee.
(Redirigé depuis Prochaine version)

La release 0.7 n'a pas de date de sortie prévue.

Les objectifs de cette version sont de faire le niveau du château.

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

Voir aussi les images à faire.

Sommaire

Feuille de route

Listes des grandes étapes avant la release :

  • Actes
    • Acte 1
      • Niveau principal
      • Niveau secret
    • Acte 2
      • Niveau principal
      • Niveau secret
    • Acte 3
  • Ennemis
    • L'armure
      • Faire les dessins
      • Faire le code
    • Le fantôme
      • Faire les dessins
      • Faire le code
    • La gargouille
      • Faire les dessins
      • Faire le code
    • L'araignée
      • Faire les dessins
      • Faire le code
  • Le Boss : le Tigre Enflammé
    • Faire les dessins
    • Faire le code
  • Mini-jeux
    • De l'acte 1
    • De l'acte 2

Plee the Bear

Priorité Description Attribuée à
+ Quels sont les bonus de corruption ?
  • Un truc inflammable qu'on jette sur le tigre pour attiser le feu et lui faire perdre de l'énergie : bois, paille ?
+ Quel type d'âme l'armure donne-t-elle ?
5 Les ressources suivantes ne sont pas préchargées avant le niveau :
  • gfx/ui/bonus-icons/bonus-icons.png
  • gfx/forest/bonus-icons/bonus-icons.png
  • animation/stones/air_sliver_1.canim
  • animation/stones/air_sliver_2.canim
  • animation/stones/air_sliver_3.canim
  • animation/stones/air_sliver_4.canim
  • animation/stones/air_sliver_5.canim
  • sound/tick.ogg
+ Enlever les protected d'item_with_toggle.
+ Corriger les bulles. Voir partie moteur
+ Bug: quand on jette une pierre d'air et eau, l'explosion ne se termine pas et on ne peut plus lancer.
5 Supprimer l'effet rouge de l'invincibilité.
10 revoir FREE_SYSTEM : plusieurs bugs a priori :
  • quand plee saute depuis un slope;
  • impossibilité de faire la rolling_ball; (corrigeable si on gère l'angle visuel en dans rolling_ball)
  • La tête de l'armure rebondit mal sur les slope. A cause probablement de free_system qui est à vrai.
julien
8 bear-engine/core/src/audio/code/sdl_sample.cpp:396

inside_set_effect :

precondition failed: m_channel <ou égal à 0

julien
8 Bug: on passe parfois au travers quand on est blessé près des flèches.
7 Bug : la jauge d'oxygène n'apparaît pas quand on est dans l'eau dans le tutoriel (car le joueur est en marionnette). Du coup le commentaire « la jauge bleue représente […] » n'est pas clair.
7 Bug : la traduction de certains textes n'est pas prise en compte (intro, « where is the exit » dans le tutoriel).
5 Les balles roulante n'hérite pas de base_train.
5 Paramétrer l'intensité des animation d'explosions dans l'acte 2.
5 Boss de la forêt : quand on a tué le boss, on reste bloqué sur la gauche mais pas la caméra; ca fait bizarre.
+ Bug : dans la forêt (et après); en mode 1 joueur, certains bonus_box sont retirés. Mais ils sont comptés dans le nombre de bonus_box à prendre.
5 Ajouter l'envoi des niveaux effectués pour les stats.
5 Trouver un moyen pour que Plee ne puisse plus être posé sur un bloc par un pixel, donnant l'impression de flotter dans le vide. Une solution qui corrige le problème même si ce n'est pas Plee qui est sur le bloc serait bien.
  • Une piste : Faire que les blocs ayant un côté activé se comportent comme les pentes. Si l'objet dessus a son centre hors bloc alors il est aligné sur le côté. (Penser qu'il faudra gérer ça sur tous les trucs qui alignent).
  • Autre piste : gérer pour que les physical_items connaissent la forme du solide avec lequel ils sont en contacts (on pourra faire un Plee en équilibre :))
+ Mettre le rectangle jaune derrière l'icône des notifications (ou derrière l'icône et le texte avec le texte en noir ?) sebastien
5 Bug : Le fantôme clignote un coup avant de sortir du mur. sebastien
5 Vérifier que la caméra est déplacée après les joueurs.
+ Faire apparaître le dessin qui indique que le temps est accéléré quand une touche est pressée pendant l'intro.
5 Réparer l'objet qui sauve les actions histoire de pouvoir faire des scripts de référence.
5 ne pas oublier de mettre l'âme de l'armure quand elle sera dispo.
+ Le calcul de la boîte opaque de l'étoile semble mauvais. Un carré bizarre apparait derrière l'étoile du score.
3 Faire qu'un appui sur F1 affiche la liste des touches magiques.
1 Faire un mouvement forcé naturel julien
1 Faire en sortie de niveau un fanion avec un bonus. Voir comment gérer le mode deux joueurs avant.


Réflexions sur le tutoriel

Les retours sur la dernière version suggèrent que les joueurs ne lancent pas le tutoriel ou qu'il ne le comprennent pas. Les principaux défauts du tutoriels sont :

  • on ne sait pas comment aller dans le menu pour configurer les touches ;
  • c'est très long ;
  • les scripts n'arrêtent pas de se relancer ;
  • il a la même tête que le niveau de la forêt.

Sans que cela soit une priorité pour la prochaine version, il nous faut revoir le tutoriel et son intégration au reste du jeu.

Encourager le joueur à passer par le tutoriel

En plus de l'option tutoriel dans le menu principal, il pourrait être lancé automatiquement au lancement de l'histoire. Pour ceux qui ne veulent absolument pas le faire ou qui l'ont déjà fait, on pourrait mettre une sortie pour le quitter directement ou une option dans le menu pause pour passer le niveau de tutoriel et enchaîner avec l'histoire.

Découper le tutoriel en plusieurs niveaux

Plutôt que d'avoir un grand tutoriel avec toutes les actions on pourrait proposer de nombreux tutoriels où chacun serait concentré sur une activité particulière. Par exemple :

  • Contrôler Plee
  • Apprendre à sauter
  • S'accrocher aux murs
  • Jeter des pierres
  • Le pouvoir de feu
  • Le pouvoir d'eau
  • etc.

Rendre le tutoriel accessible de partout

Si le découpage du tutoriel est fait, proposer un menu « Tutoriels » dans le menu pause pour pouvoir à tout moment relancer un tutoriel pour s'entraîner sur une activité. Il faudra alors avoir une option pour quitter le tutoriel et revenir au niveau, et éventuellement deux sorties dans le tutoriel : une pour passer au tuto suivant par défaut et une pour revenir au niveau.

Rendre le menu pause plus évident

Annoncer l'existence du menu pause et les touches associées dans le tutoriel serait mieux mais ne serait pas suffisant si le joueur ne passe pas par les tutoriels. On pourrait ajouter un petit texte à l'écran de chargement affichant diverses astuces et commentaires, en particulier pour le chargement du premier niveau : « Appuie sur Échap ou Pause pour mettre le jeu en pause et accéder aux options ».

Faire un style de déco unique pour le tutoriel

Il serait facile est presque pas trop long de faire un style de blocs fantaisistes pour les tutoriels.

Activation explicite des scripts

Maintenant que le players_present peut s'activer sur certaines actions seulement, il est possible de modifier ceux du tutoriel pour que le script ne se lance que sur une action (baffe, grogner, sauter).

Moteur

Priorité Description Attribuée à
3 Lors d'une collision entre deux marques, appeler une fonction spéciale de collision entre modèles.
5 Le sound_manager devrait retourner une sorte de connexion à un signal de boost lorsqu'on demande la lecture d'une musique, afin de pouvoir ajouter un écouteur pour être notifié de la fin de la lecture, et éventuellement de demander directement l'arrêt de la musique via le connecteur.
+ Mettre du bitmap_rendering_attributes dans gui::visual_component. julien


Priorité Description Attribuée à


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 à
+ Le spritepos n'est pas sauvegardé lorsqu'on configure un sprite, mais il est bien détecté et défini au rechargement du fichier.
+ Dans la fenêtre d'édition de sprite, le réglage automatique du « clip rectangle » ne fonctionne pas bien. Quand je choisis un spritepos la largeur ou la hauteur se retrouve souvent à 1.


Éditeur de niveaux

Priorité Description Attribuée à
+ Les animations sont perdues lorsque l'on change leurs attributs d'intensité. L'erreur a l'air de se produire uniquement lorsque le champs est une liste d'animations.
10 Les raccourcis clavier ne fonctionnent pas toujours. Une correction a été faite. Notez ici si le problème persiste.
  • Suppr ne fonctionne pas pour supprimer les objets,
  • Ctrl-Z ne fonctionne pas pour annuler.
  • Le problème semble s'accentuer avec l'utilisation de la fenêtre de vue globale.

j'ouvre le château 1, je sélectionne l'action_layer, j'ouvre l'overview, je vais au miroirs, je sélectionne celui de droite et j'appuie sur supprimer : rien ne se passe

10 Modifier la taille d'un calque, puis ouvrir ses propriétés et cocher « match level size ». Valider pour avoir l'erreur :

precondition failed: !m_fit_level || ( (m_width == lvl.get_width()) && (m_height == lvl.get_height()) )

+ Bug de WxWidget. Quand on sélectionne la fenêtre principale et que l'on appuie sur page_haut.
+ Permettre de donner un nom aux calques, histoire de s'y retrouver plus rapidement dans la liste.
 ? Fusionner les calques de même type et même taille lors de la compilation ? Si on permet de renommer les calques on pourra mettre des noms sympas comme « fond », « décos de fond », « couleur de l'eau », « décos devant l'eau ». Cependant il serait peut-être mieux qu'ils soient fusionnés pour l'exécution ? Comment gérer le pos_z ?
5 La mise à jour des images par le menu ne fonctionne pas bien : les spritepos notamment ne sont pas pris en compte.
5 Ajouter les options d'alignement au dessus, en dessous, à gauche, à droite.
+ Lors d'un double-clic sur un objet, ouvrir l'éditeur de propriété pour la dernière propriété éditée (si elle existe dans l'objet).
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
1 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
1 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


Éditeur de modèles

Priorité Description Attribuée à
+ L'éditeur plante quand on clique sur une marque et que l'on est pas sur un snapshot.
+ 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
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.
1 Permettre de conserver le ratio quand on redimensionne un sprite ou une animation (le faire dans tous les éditeurs).
+ Afficher le résultat de l'interpolation des positions des marques et de leur angle dans les modèles.
1 Redimensionner graphiquement des boîtes associées aux marques dans un snapshot en gardant la position du centre de la marque.
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.
1 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.
Outils personnels