renjuofmyyouth.png

Comme Renju of my Youth commence à devenir gros, je transfère tout son journal de développement ici, plutôt que de continuer remplir le fichier README qui l'accompagne.

Version 0.1.0


  • Première version jouable comme un simple Puissance 5
  • Distinction du dernier jeton joué

Version 0.2.0


Ajout

  • Mode debug
  • Règles pour empêcher le double 3, double 4 et overline
  • Les coups interdits font trembler le plateau et sont annulés

Version 0.2.1


Ajout

  • Clignotement des pierres à partir d'un alignement de 3
  • Touche D pour afficher ou cacher le mode Debug

Debug

  • Correction des bugs concernant les doubles 3 et 4 dans les coins

Version 0.2.2


Ajout

  • Curseur de déplacement pour placer les pierres
  • Flèches de directions pour déplacer le curseur et de la barre espace (ou touche entrée) pour valider le coup au clavier
  • Touche backspace pour annuler un ou plusieurs coups

Version 0.3.0


Ajout

  • Bruitages
  • Écran de règles du jeu
  • Menu à l'écran titre
  • Support gamepad natif

Optimisation

  • Transfert du code source sur HaxeFlixel
  • Tous les éléments ont maintenant des coordonnées relatives pour toujours être centrés quelle que soit la taille de la fenêtre de jeu
  • Remplacement de tous les sprites par des graphismes vectoriels

Réglages

  • Toutes les pierres intéressantes clignotent
  • En plus de faire trembler la grille, un coup interdit fait clignoter les pierres incriminées
  • La fenêtre de debug suit le curseur de la souris

Debug

  • Le double 3 aligné noir est maintenant impossible
  • L'overline gagnant blanc est maintenant valable
  • On ne peut plus placer une pierre sur une autre avec la barre espace

Version 0.3.1


Debug

  • Les inputs avec plusieurs gamepads branchés ne fonctionnaient pas

Version 0.3.2


Optimisation

  • Mise à jour du code pour compiler avec HaxeFlixel<dev>

Version 0.4.0


Ajout

  • Première version de l'IA
  • Écran Lobby de choix Player / Computer
  • Ecran de fin "it's a draw"

Optimisation

  • Simplification du code : le tableau de jeu ne fait plus qu'une seule dimension
  • Allègement des fonts utilisées

Réglages

  • Qualité HD sur Android

Version 0.4.1


Optimisation

  • Compatibilité Nvidia Shield TV, OUYA et GSM

Debug

  • Réparation manette OUYA
  • Réparation affichage caractères japonais

Version 0.4.2


Ajout

  • Boutons Back et Revert en bordure de plateau
  • Ombre portée sous les stones

Optimisation

  • Clean garbage memory à l'écran titre
  • Mise à jour de la sémantique pour compiler avec flixel 4.6.3
  • Simplification code Main.hx
  • Suppression de black_tv.svg et white_tv.svg
  • L'écran Result devient un FlxSubState
  • Clean des imports inutilisés

Réglages

  • Remise en page du lobby
  • Positionnement des textes et boutons vertical en pourcentage d'écran de jeu
  • Curseur plus visible
  • L'écran Result apparaît temporairement, puis revient à l'écran de jeu
  • Mélange initial des opening patterns possibles, puis on suit l'ordre du tirage pour ne pas avoir de répétition entre deux parties
  • Affichage des règles plus gros et large
  • Les stones changent de taille au lieu de clignoter
  • La partie ne se termine que sur action du joueur (boutons Back ou Revert)
  • Le contenu de l'écran Result est remonté
  • Suppression shake camera lors du Draw
  • Sur Android, la touche retour pendant la partie lance Revert au lieu de Quit
  • Réglage taille et position curseur sur écran Rules

Debug

  • Réparation bouton BACK pour Android
  • Réinitialisation du temps de réponse de l'IA lors d'un revert
  • Black Stone qui glissait toute seule après un avertissement double trois
  • Hack bidon pour afficher l'apostrophe (') manquante dans "it's a draw"

Version 0.4.3


Ajout

  • Action joueur requise sur écran intro pour activer l'audio en mode html5

Version 0.5.0


Ajout

  • Le pattern d'ouverture apparait maintenant au fur et à mesure
  • Ajout d'un heatmap pour visualiser le poids de chaque case
  • Utilisation de la librairie howlerjs pour gérer le son de la version html5 du jeu
  • Affichage du bouton QUIT a l'écran titre pour la version desktop du jeu
  • Ajout de la touche H pour afficher le heatmap
  • Layout des boutons Back, Heat et REvert different pour la version Android
  • Boutons de menu vectoriels au lieu d'être les boutons basiques de Flixel on zoom pixélisés
  • Choix de la taille de la grille en mode debug pour débugger plus rapidement les conditions de fin de jeu
  • Début de parties toutes prêtes pour le mode debug pour tester les double trois de l'IA
  • Apparition des pierres avec un léger scale animé
  • Sauvegarde du choix PLAYER / COMPUTER pour ne pas avoir à le refaire à chaque partie

Optimisation

  • Tous les svg sont convertis en BitmapData et mis en cache durant l'intro, pour éviter d'avoir à les détruire puis les recréer à chaque nouvelle partie
  • Suppression du BitmapFilter DropShadowFilter, gourmand en CPU. Il est remplacé par un simple BitmapData mis en cache en début de partie, comme les stones
  • Suppression des conditions #if flash #end
  • Optimisation et refactoring de la totalité du code
  • Réécriture totale de la façon dont sont détectées les pierres à faire clignoter
  • Refonte de la manière dont sont gérés tous les boutons
  • Remplacement de flixel.system.FlxSound par flixel.sound.FlxSound
  • Remplacement de FlxMouseEventManager par FlxMouseEvent
  • Suppression du hack pour afficher l'apostrophe ('), et utilisation du caractère virgule (,) à la place pour l'afficher
  • Utilisation hack des parenthèses pour afficher les guillemets
  • En plus d'arrêter le tween size sur une pierre, la fonction stopBlink appelle maintenant FlxSpriteUtil.stopFlickering
  • Remplacement du tableau des poids contenant un FlxPoint pour les poids blanc et noir, par un tableau Int contenant l'addition de ces deux poids, ça évite de les additionner chaque fois que j'en ai besoin
  • Le FlxGroup stones devient un FlxTypedGroup<Stones> afin de pouvoir itérer dedans sans avoir à tout mettre en mémoire dans le tableau grid<Stone>
  • Remplacement du history Array<Stones> par Array<Int> plus léger et facile a détruire

Réglages

  • L'affichage du gagnant apparait au bout de 1.5 seconde au lieu d'une seule
  • Augmentation de l'épaisseur du cartouche Lobby lors du rollover 4 -> 6
  • Réorganisation des informations du panneau debug
  • Le panneau debug a maintenant une position fixe, au lieu de suivre le curseur souris, c'est plus facile à lire
  • Taille de l'info debug adaptée en fonction de la taille de l'écran de jeu
  • Déplacement des touches debug écran de fin sur les touches F5, F6 et F7 parce que F2 affiche le mode debug de HaxeFlixel
  • Suppression de la touche D pour le mode debug. Celui-ci n'est accessible qu'en compilant le jeu en mode -debug
  • Temps de réaction IA VS IA plus court que IA VS Player
  • Suppression de l'interdiction des double trois alignés et double quatre alignés pour noir
  • Amélioration du curseur, dont les bords gauches et haut étaient trop au bord du cadre
  • Position de l'ombre des pierres en accord avec leur reflet

Debug

  • Human VS human, la partie ne pouvait pas terminer sur un Draw
  • Il y avait un problème de position et taille de pierre si on faisait plusieurs shake double trois d'affilée avant de déposer la pierre noire sur une autre case
  • Un bug pas facile à trouver permettait de faire correspondre une diagonale collée au bord droit avec une pierre en position x=0 sur la même hauteur y
  • Le calcul du poids pouvait renvoyer un chiffre négatif dans le cas des coins de la table
  • Le son OK n'était plus joué dans l'écran Lobby
  • L'info debug n'était plus mis à jour en fin de partie
  • On pouvait cliquer sur les boutons QUIT et BACK durant l'affichage de l'écran résultat
  • Il y avait un gros memory leak sur la manière dont étaient créés les ombres des pierres

Version 0.6.0


Ajout

  • Ajout de l'export de l'historique des coups joués dans le fichier history.txt via la touche E pour faciliter le débogage (version PC)
  • Mouvement des pierres dans le lobby
  • Turn-over des patterns de debug comme les patterns d'ouverture pour éviter d'avoir à recompiler pour chaque test
  • Affichage de la couleur du Stone dans le panneau info debug
  • Bouton gamepad X pour afficher le heatmap durant la partie
  • Différentes icônes adaptées pour desktop, android et web

Optimisation

  • Les assets sont dorénavant intégrés dans l'exécutable
  • Suppression du tableau qui contenait les sprites de heatmap et utilisation du group déjà présent à la place
  • Suppression de tous les warnings : (WDeprecated) use `MyState.new` or `()->new MyState()` instead of `new MyState()`)
  • Utilisation des Stones a l'écran lobby pour bénéficier de l'ombre portée sans avoir à recréer le sprite manuellement
  • Le bloc debug info ne s'affiche plus si la souris est en dehors du plateau
  • Un seul tableau d'objets plutôt que quatre tableaux par Stone pour les stats
  • Suppression des sprites de faux roll over sur les boutons de menus (barre noire et triangle noir)
  • Réécriture totale des boutons de menu, triangle, et cartouche maintenant que je sais comment créer les graphismes vectoriels pour les animations
  • Réécriture totale du Sound Manager qui reste maintenant en mémoire d'un écran de jeu à l'autre sans avoir besoin de le recharger
  • Désactivation des clics droits et centre de la souris dans Project.xml
  • Suppression de la banner pour console Ouya qui ne servait plus à rien

Réglages

  • Remplacement de l'icone du bouton REVERT par celle du bouton QUIT
  • Remplacement de l'icone du bouton QUIT par une croix
  • Refonte totale de la manière dont je calcule le poids de chaque case
  • Diminution du multiplicateur poids de sa propre couleur pour éviter les erreurs de l'IA en bordure de plateau
  • Multiplication x10 du poids d'une line 4 pour forcer la victoire
  • Le bouton QUIT devient translucide pendant l'affichage de l'écran de fin
  • Les boutons revert et heatmap deviennent totalement invisibles en fin de partie (sauf mode debug)
  • Les boutons de menu ne s'activent que quand la page est entièrement affichée après le fade caméra, pour éviter le son roll over sur le bouton QUIT au retour des pages lobby ou rules
  • Nouvelle manière dont l'écran result disparait plutôt qu'un simple fade caméra
  • Le son "line" se lance à l'affichage de result, après le son "stone"
  • Toutes les tailles de boutons d'interface sont calculées en fonctionne de la taille de Stone
  • Réglage deadzone joystick de 0.3 à 0.4
  • Désactivation de la sélection automatique du bouton QUIT à l'écran titre avec les boutons B et Y du gamepad
  • Désactivation de la perte de focus avec apparition du logo Flixel

Debug

  • Réglage problème roll out boutons rules previous/next entre souris et touchscreen
  • Appuyer sur ALT+ENTER ne compte plus comme une pression ENTER pour valider un bouton ou une pierre
  • Le blink caméra à la disparition du résultat était blanc pur au lieu de blanc cassé
  • Le tableau des opening patterns ne s'initialisait pas correctement avant remplissage et mélange
  • On pouvait lancer plusieurs écrans result en même temps en mode debug
  • On pouvait presser plusieurs directions en même temps