17 mai 2012

Des cubes et autres formes bizarres dans le brouillard

 

En admirant les précédents screenshots, vous avez sûrement pensé que les 3 sphères flottants dans le ciel étaient un peu perdues, les pauvres. Rassurez-vous, désormais elles ont trouvé d’autres amies, et se sont même organisées dans une grille cubique.

Un peu de brouillard

Depuis le dernier avancement, un premier changement est l’ajout de brouillard dans la scène. Rien de bien compliqué, il utilise directement une fonction OpenGL, et 5 petites lignes de codes suffisent à le définir et l’activer1. On mélange la couleur des objets avec la couleur du brouillard, dans des proportions qui varient linéairement avec la distance. Ainsi, plus un objet est loin, plus il se fondra dans le brouillard. Outre l’aspect esthétique, cela permet d’améliorer la lisibilité de la scène en mettant davantage en évidence la profondeur. Deux petites captures d’écran côte à côte pour illustrer : à droite avec du brouillard, et à gauche sans.


 

Pourquoi jouer sur une grille simple quand on pourrait en prendre une compliquée ?

Le brouillard aide un peu, mais la meilleure façon de comprendre comment se positionnent les différentes sphères et surtout lesquelles sont alignées est de faire tourner la caméra. La rotation se fait au choix à la souris ou au clavier, et on tourne autour d’un point fixe situé au centre de la grille. Lors d’une discussion avec Ekho, ce dernier avait objecté que cette possibilité de faire tourner la scène pour mieux la visualiser fait perdre une part du charme du morpion en 3D : avec une grille griffonée sur une feuille de papier, c’est beaucoup moins lisible et on peut plus facilement arriver à cacher ses sombres desseins à un adversaire peu attentif et qui n’a pas assez bien regardé la diagonale tout au fond.

Histoire de rendre au morpion 3D l’aspect fouilli qui faisait partie de son charme, j’ai rajouté la possibilité de jouer sur des grilles de forme variées, tout en conservant une maille cubique2. Vous en avez un exemple sur la capture d’écran ci-contre. Il est possible de définir n’importe quel arrangement de sphères dans un fichier texte au format XML3, où sont indiquées les coordonnées entières des sphères ainsi que celles des cylindres qui relient les sphères entre elles. A noter que ces cylindres n’auront aucun impact sur les « coups » possibles pour marquer un point en alignant plusieurs sphères de sa couleur, ils sont juste là pour améliorer la lisibilité de la grille.

Pour l’instant, c’est un peu fastidieux : il faut écrire tout cela à la main, se faire des noeuds au cerveau pour trouver les bonnes coordonnées, et vérifier en chargeant la grille qu’elle correspond à ce qu’on avait en tête. L’idéal serait de développer un éditeur de grilles où on pourrait partir d’un cube où toutes les sphères seraient initialement présentes et choisir lesquelles on conserve, puis quelles arêtes on souhaite matérialiser par un cylindre et enfin enregistrer le tout. On pourrait même y rajouter une fonction qui cherche si la grille est jouable : s’il y a des solutions pour marquer un point en alignant n sphères, vérifier qu’il n’y ait pas de sphère inutile, et que toutes les solutions ne passent pas par la même sphère. Mais il reste encore beaucoup à faire pour rendre Newt-Puzzle jouable, ce ne sera donc pas ma priorité.

 

Et alors, c’est quoi la priorité ?

La prochaine étape est tout simplement de rendre le jeu… jouable ! C’est bien joli d’afficher des sphères, mais il faudrait maintenant qu’un joueur puisse en sélectionner une en cliquant dessus pour la faire passer de sa couleur. Et puis il faudrait aussi faire les routines qui vont vérifier si le joueur a marqué un ou plusieurs points en alignant 44 sphères de sa couleur.

Le premier point est déjà bien avancé. J’ai implémenté un système d’indices sur les sphères qui s’adapte à la taille de la grille et permet de retrouver quelle sphère est sélectionnée avec la souris. À partir de là, changer la couleur de la sphère peut se faire facilement.

Pour les tests d’alignements de sphères, je vais devoir adapter ce que j’avais fait pour la première version de Newt-Puzzle et qui était limité à une grille cubique. Je n’ai pas encore décidé comment je vais gérer le cas où un joueur va aligner par exemple 5 sphères au lieu de 4 : doit-il marquer 2 points au lieu d’1 ?
 

  1. Il est rare que ce soit si simple !
  2. J’ai commencé en parallèle à préparer des grilles à base d’hexagones et d’empilements de Kepler, mais ce n’est pas encore fonctionnel, ce sera pour un autre article.
  3. Extensible Markup Language. Il s’agit d’un langage à base de balises permettant de structurer des données.
  4. En fait, on pourra jouer avec un objectif de 3 sphères alignées, ou 5, ou plus : d’un point de vue développement, ce n’est pas plus compliqué à faire que de limiter à 4. Cependant, dans la pratique, j’ai constaté que 3, c’est trop peu, on ne peut pas bloquer son adversaire. Et à partir de 5, il faut des grilles trop grandes, et c’est illisible.
Réactions : 5 Commentaires
 

Commentaires

Vous pouvez poster un commentaire ou laisser un trackback à cette adresse.

 
 
  • Ekho
    22 mai 2012
     

    J’adore l’idée des grilles non-cubiques ! Ca promet effectivement des surprises, et ça compense la possibilité de faire pivoter la grille ! Très bien vu.

    Pour le comptage des points, je propose une idée toute simple : 1 point par boules alignées. Du coup, en général, une victoire rapporte 4 points, mais un alignement supérieur rapporte « un peu plus », de manière proportionnelle. Sur plusieurs manches, ces petits points supplémentaires peuvent commencer à peser dans la balance…

  • Eldermê
    22 mai 2012
     

    Effectivement, cela permet de valoriser les alignements supérieurs à 5, et ce serait plus équilibré que 2 points pour 5 sphères alignées et 1 points pour 4. Par contre je suppose que tu ne comptes pas de point s’il n’y a que 3 (ou moins) boules alignées ? Sinon, on marquerait des points à chaque coup !

    A noter aussi que je prévois qu’on puisse désigner comme vainqueur le premier qui a aligné au moins 4 boules, ou alors le premier qui arrive à un certain score, ou encore celui qui a le plus de points lorsque la grille est pleine. Les stratégies à mettre en oeuvre pour gagner ne sont pas tout à fait les mêmes.

    • Ekho
      24 mai 2012
       

      En effet, l’idée, c’est de dire qu’il n’est pas deux fois plus difficile d’aligner cinq boules que quatre (donc pas de raison de passer d’1 point à 2). Par contre, il est proportionnellement plus difficile d’aligner 5 ou 6 boules que 4. D’où mon idée (qui reste quand même ultra-basique dans le principe).

      En effet, dans mon idée, on ne compterait les points qu’au delà de 4 boules alignées…

      …toutefois, dans ta logique de plusieurs types de jeux, lors du comptage final des points pour une grille remplie (par exemple), compter des alignements de 3 pourrait ne pas être idiot, et rapporter des points bonus (par exemple 1 point pour 3 boules alignées).

      • Eldermê
        29 mai 2012
         

        J’ai un peu modifié ta proposition initiale, comme tu peux le lire dans mon dernier article.

        Je ne suis pas très pour compter des points pour des alignements de 3 : pour moi 3 boules alignées, c’est une tentative d’en aligner 4 qui a échoué. Je pourrais le mettre en option, cela dit.

        Après, j’ai aussi pensé à une option où lorsqu’on aligne 4 boules ou plus de sa couleur, elles passeraient dans une couleur neutre, ce qui les rendrait définitivement inutilisables pour marquer des points avec de nouveaux alignements. Cela pourrait donner des stratégies intéressantes.

        • Ekho
          29 mai 2012
           

          Je pense qu’il va falloir étudier pas mal de combinaisons d’options différentes, et proposer les plus sympas (originales et jouables) par défaut, tout en laissant la possibilité de la customisation.

          Sinon, les joueurs resteront sur le jeu basique, et n’oseront jamais trop tester de nouvelles options, qui peuvent pourtant être interessantes.

 

Réagissez

Vous pouvez utiliser ces balises : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
 
 
 

© 2012 Eldermaeblog | Joyeusement propulsé par WordPress