Color Case bientôt en version Beta !

Monde 3 - Color Case
Bonjour à tous.

Cela fait un moment que je n’ai plus poster d’article.

Me revoici avec une petite nouvelle.
Après une nouvelle année à développer Color Case et la sortit de son Alpha Test, Color Case est toujours là et est bientôt en version Beta.
Pour l’occasion, je souhaite lancer une beta test qui aura lieu prochainement.
Cette beta test sera « privé » mais si vous êtes intéresser, il suffit juste de me contacter soit en laissant un commentaire ici, me MP ou encore me contacter sur ma page FB « TackTyl Appz« .

Beaucoup de changement à eu lieu pendant cette années :

  • Après le retrait de l’artiste en charge du design de Color Case où on devait créer plusieurs thèmes pour chaque monde du jeu, j’ai donc décidé de faire machine arrière et de repartir sur un design moderne et épuré.
  • Color Case à été en pause un très long moment n’ayant plus le temps de programmer à cause des cours, j’ai du aussi reprendre de zéro le code ,car il était trop complexe à comprendre et sa maintenabilité était devenu trop difficile.
  • À la base, Color Case était composé de Mondes qui eux-mêmes étaient composés de Niveaux qui eux étaient composés de Grilles. (Mondes -> Niveaux -> Grilles)
    J’ai choisi de simplifier ceci, en supprimant l’ancienne entité Niveau qui sera remplacement par l’entité Grille (renommer pour l’occasion Niveau), j’avoue que c’est un peu complexe :) mais en gros, ça me permet de supprimer une entité pour simplifier.
  • Certains menu ont aussi changé, vous pouvez le voir sur l’image ci-dessous. Le choix des couleurs en jeux n’est plus matérialisé par des ronds de couleurs, mais par une bande de couleurs.
    Autre changement que vous verrez dans la version Beta du jeu, le menu de sélection des niveaux à été complètement revu pour coller avec la suppression d’une entité dit plus haut.
  • Pour éviter une chute du niveau de difficulté à chaque nouveau monde débloqué, j’ai décidé que chaque monde possédera une taille fixe de grille. Au lieu de l’ancien système où les niveaux d’un monde avaient leurs propres tailles. Dorénavant, chaque monde débloqué permettra de jouer sur des grilles de plus en plus grande.
  • Actuellement, 3 mondes ont été dessinés et implémenter dans le jeu. Cela fait pas moins de 108 niveaux jouables ! Pour la Beta Test, 2 mondes seront disponibles, il y aura tout de même 72 niveaux à tester.

Restez à l’affût, je repasse bientôt pour un nouvel article concernant les dates de la Beta Test !

Publicités

Tutoriel N°2 – Partie 3 Bonus : Système de spawn pour le joueur et coffre.

Bonjour à tous.
Comme prévu, voici la 3e partie du tutoriel sur la création d’un générateur de labyrinthe avec Unity 3D.
Cette dernière partie est consacrée à la création d’un système de spawn pour faire apparaitre le joueur et des objets.
Certaine grande images ont été réduite, vous pourrez cliquez dessus pour avoir un aperçu de meilleur qualité.

Commencez par télécharger ce modèle 3D : https://www.dropbox.com/s/7flhz4nb3detewr/Coffre.fbx?dl=0
Lors de ce tutoriel, nous utiliserons un coffre que j’ai créé sur Cinema4D.

Une fois téléchargé, ouvrez votre projet et glissez le modèle 3D dans Unity pour l’importer dans le projet.
Encadré en rouge les fichiers qui apparaissent une fois l’importation terminée.

importationCoffre

N’hésitez pas à créer un dossier pour les modèles 3D pour organiser votre projet.

Commençons par configurer notre modèle 3D. Cliquez sur le coffre.
Dans l’onglet « Model » changez le « Scale Factor » de l’objet à 0.5 puis cliquez sur Apply.
Dans l’onglet « Rig » changez le type d’animation en « Legacy » puis dans « Generation » choisissez « Store in Root (New) » puis cliquez encore sur Apply pour sauvegarder.
Dans l’onglet « Animations », renommez l’animation en « OpenClose » et cliquez sur Apply.

Voici ce que vous devriez avoir en face des yeux.

model Rig Animations

Nous allons maintenant, créer le préfab du coffre, pour cela glissez le coffre dans la scène puis centrez-vous sur lui.
Ajoutez le composant « Box Collider », puis faite en sorte que le collider englobe le coffre, et qu’il soit assez grand pour empêcher le futur joueur de sauter dessus par exemple.

boxColiider

Maintenant que notre coffre possède sa boite de collision, glissez le coffre de notre scène vers le panneau « Project » pour créer son préfab automatiquement. Puis supprimer le coffre de la scène.
Notre préfab est maintenant terminer.
Concernant le joueur, je vous invite à utiliser le pack « Characters » qui fait partie des Standard Assets d’Unity.
Importez-le à partir de l’onglet Assets > Import Package > Characters. Pour ce tutoriel, nous allons utiliser le FirstPersonCharacter.

Et enfin, nous aurons besoin d’un dernier préfab, le spawn.
Créez simplement un nouveau GameObject vide dans la scène. Mettez-le en position 0 dans les 3 axes, glissez-le pour créer son préfab et supprimez-le de la scène.

Nos 3 préfabs sont maintenant créer, passons à la partie script.

Nous allons d’abord modifier le script « MazeGenerator » pour qu’il puisse prendre en compte notre préfab de spawn et créer une liste de spawn lors de la génération du labyrinthe.
L’idée est que quand le labyrinthe créé une cellule sans issue (cul-de-sac), le script instancie un prefab du spawn.

Juste en dessous de la liste des voisins créer lors du précèdent tutoriel. Déclarez trois variables publiques.
Un « Transform » pour notre préfab qui sert de spawn, une liste de « Transform » qui contiendra tous les spawns que le labyrinthe possèdera et un offset pour placer correctement le coffre.
Nous initialisons maintenant notre liste de « Transform » dans la méthode « Start ».

transform

Allez maintenant à la méthode « InitVisualCell » et ajoutez ces lignes justes après le ToString.
culdesac

Ce code permet de savoir dans quelle direction est le cul-de-sac, comme ce dernier est composé de 3 murs, il suffit d’interroger les cellules ayant encore 3 murs.
En fonction de la direction, on instancie le spawner dans la direction inverse pour permettre au coffre d’être dans la bonne direction.
On ajoute ensuite le spawner dans la liste de spawn.

Nous allons maintenant créer un nouveau script C#. Nommez le « SpawnItem ».
Ajoutez-le sur l’objet qui possède le script « MazeGenerator ».
Comme son nom l’indique, le script permet de faire apparaitre des objets dans le labyrinthe. Le script utilisera la liste de spawn du script « MazeGenerator ».
Commençons par initialiser quelques variables et écrire la méthode « Start ».

initSpawn

Et voici la méthode « InitChest ».

initChest

Elle permet donc de faire apparaitre le montant de coffre que vous avez choisis.
À chaque tour de boucle, la méthode sélectionne un emplacement au hasard, fait apparaitre le coffre, supprime l’emplacement dans la liste et diminue le nombre de coffre à faire apparaitre.
Il nous reste maintenant à créer le dernier script.

Créez un nouveau script C# et nommez-le « SpawnPlayer ». Ce script est quasiment identique que celui pour les objets.

spawnPlayer

Voilà tous nos scripts sont maintenant terminer.
Placer les préfabs dans les scripts via l’inspector et attribuez une taille et le nombre de coffres à faire apparaitre dans le labyrinthe.

drop

Restez logique sur le nombre de coffres. J’exagère un peu, mais ne mettez pas 2000 coffres pour un labyrinthe en 10 x 10 par exemple.

Il reste maintenant une chose à faire.
Allez dans Edit > Project Settings > Script Execution Order.
Ajoutez, en cliquant sur le petit “+”, le script “MazeGenerator”, “SpawnItem” et “SpawnPlayer”.
Ceci permet d’exécuter les scripts dans l’ordre et éviter qu’ils ne s’exécutent en même temps pour éviter des erreurs.

scriptexec

Si tout s’est bien passé, en lançant le jeu, vous devriez voir le joueur apparaitre. Vous pouvez vous déplacer avec les flèches du clavier et pourrez voir les coffres un peu partout dans le labyrinthe.

play

Voilà pour cette 3e partie du tutoriel. Merci de l’avoir suivi.
N’hésitez pas à laisser un commentaire si vous avez aimé ou pas ou si vous avez des difficultés.

Vous pouvez télécharger le projet ici : https://www.dropbox.com/s/g311h6ey8y67z44/TutoLabyrinthePartie3.rar?dl=0

Quelque amélioration possible que vous pouvez faire.
– Le modèle 3D utiliser possède une animation d’ouverture et fermeture du couvercle du coffre, vous pouvez donc faire une interaction entre le joueur et le coffre qui permettrait d’ouvrir et de fermer le coffre.
– Permettre au spawn d’objet de faire apparaitre plusieurs objets différents.
– Permettre au spawn du joueur de faire apparaitre des joueur contrôler par l’ordinateur (I.A).

Licence Creative Commons
Le tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.

75 j’aime atteint et news

Bonjour à tous.

Je vous annonce que la partie 3 du tutoriel arrivera ce week-end.
Merci à vous de m’avoir permis d’atteindre 75 j’aime sur ma page.
Hier encore nous étions 31, aujourd’hui, nous sommes 79 précisément. C’est incroyable.

Je remercie aussi le petit groupe d’alpha testeurs qui ont pu tester Color Case.
Vos retours m’ont bien aidé pour le développement futur du jeu.
Concernant son avancement, le projet progresse à une vitesse réduite notamment à cause des révisions et des examens blanc.

N’hésitez pas à suivre le blog et à aimer ma page Facebook pour ne rien raté sur le projet Color Case et les tutoriaux.

Tutoriel disponible, Color Case en Alpha test et Déco du blog.

Salut à tous.
La partie 2 du tutoriel sur la génération d’un labyrinthe est désormais disponible sur le blog.
Cliquez-ici pour aller à l’avant propos du tutoriel.
Bonne lecture et n’hésitez pas à me dire ce vous en pensez dans les commentaire.

Je vous annonce aussi qu’après plus de 4 mois de développement Color Case va bientôt passer en Alpha test privé.
Quelques personnes seront choisis pour tester le jeu et trouver des bugs si il y en a.
Si vous êtes intéresser n’hésitez pas à le dire dans les commentaires.

Vous pouvez remarquer aussi que le blog fait peau neuve aux couleurs de TackTyl Appz.
TackTyl Appz est mon nom de développeur sur le Google Play.
Étant donné que je parle de mes jeux-vidéo, je pense qu’il est mieux de m’identifier en tant que TackTyl Appz.

J’ai aussi ajouté quelque Widget, vous pouvez retrouver ma page Facebook directement sur le blog. Et me suivre plus facilement avec le nouveau bouton « Suivre ».

Restez connecté pour de nouvelle news ou de nouveau tutoriel.
Passez de bonne fêtes de fin d’années !

Tutoriel N°2 – Partie 2 : Création et codage des classes.

Bonjour et bienvenue dans cette 2e partie du tutoriel sur la création d’un générateur de labyrinthe aléatoire sur Unity 3D.

Cette partie du tutoriel est la plus grande, nous allons programmer toute les classes qu’utilisera notre générateur pour pouvoir fonctionner.

Avant d’ouvrir le projet, je vous informe que cette partie sera faite avec la version 5.3.0 f4 d’Unity.
Il ne devrait pas avoir de problème avec les versions antérieur.
Une fois le projet Unity ouvert.

Commencez par créer un script C# et appelez le ListExtensions.
Comme son nom l’indique, cette classe est une extension de la classe générique « List ».

ListExtenstionclasse

Cette classe ne possède qu’une méthode permettant de mélanger une liste. Elle sera utile dans la classe MazeGenerator.

N’hésitez pas à créer plusieurs dossiers pour que le projet soit mieux organiser.
Voilà l’arborescence de mes dossiers.

ArborescenceProjet

Créez maintenant un nouveau script et nommez le VisualCell.
Ce petit script servira à contenir les composants Transform des murs de notre préfab que l’on a créé la dernière fois.

visualCellscript

Effectuez un Drag and Drop du script sur notre prefab puis glissez les murs du prefab dans le script.

Continuons avec les petits scripts. Créez encore un nouveau script et nommez le Cell.
Ce script représente une cellule de notre labyrinthe, avec ses portes, sa position ainsi que son « état » si elle a était visitée ou non et bien sûr sont constructeur.

Cellscript

Pour finir créez un script et nommez le CellAndRelativePosition.
Ce script contient une cellule, une énumération de direction, qui servira à savoir dans quelle direction aller pour construire notre labyrinthe, et son constructeur.

CellAndPositionscript

Voilà tous les petits scripts étant écrit, nous pouvons passer au script le plus gros.

Créez un nouveau script et nommez le MazeGenerator et ajoutez la directive using « System.Collections.Generic » pour avoir accès aux listes.

Attaquons par les attributs de la classe.

attributMazeGenerator

Voilà les attributs de notre classe MazeGenerator.
Nous avons besoin de :
– Deux entiers pour définir la taille de notre labyrinthe.
– De notre prefab créer dans le précédent tutoriel.
– Un tableau à deux dimensions représentant notre labyrinthe.
– D’un Vecteur pour stocker la position de départ de la génération.
– D’un deuxième prefab, cette fois-ci privé, qui stocke la copie du premier prefab pour permettre de le modifier.
– Une liste des cellules voisines qui servira pendant la génération du labyrinthe.

Continuons avec les deux premières méthodes de la classe.

premiereMethodes

Ici rien de bien compliquer.
Le point d’entrée du script est la méthode Start. Elle initialise notre tableau de cellule à deux dimensions et lance la méthode Init.
La méthode Init, parcourt notre tableau grâce aux deux boucles imbriqué et créer une cellule et lui attribut sa position à chaque index.
La méthode lance ensuite deux autres méthodes, RandomCell et InitVisualCell.

La méthode RandomCell.

randomcell

Cette méthode permet de choisir aléatoirement une position dans le labyrinthe et de lancer la méthode GenerateMaze avec la position choisis en paramètre.

La méthode GenerateMaze.

generateMaze1

generateMaze2

L’image est coupé mais écrivez directement à la suite.

Cette méthode est une méthode récursive, c’est-à-dire qu’elle s’appelle elle-même.
Elle permet de parcourir chaque cellule et de rechercher les cellules voisines non visitées.
Pour chaque cellule non visitée, elle relance la méthode avec la position de la cellule voisine.
Cette méthode permet de générer le labyrinthe « virtuellement ».

La méthode InitVisualCell.

InitVisualCell

C’est la méthode qui permet de de créer le visuel du labyrinthe.
Elle instancie notre prefab et désactive les murs en fonction des booléen.
Par exemple : quand le booléen _North est sur true (dans la méthode GenerateMaze), cette méthode indique au prefab que son mur nord est désactiver.

Pour finir créez un GameObject vide dans votre scene et glissez le script MazeGenerator.
Ce GameObject permet de contenir tous les prefabs instancié.
Indiquez la taille de votre choix, glissez le prefab de la cellule dans la case approprié.
Attention à ne pas choisir une très grande taille, vous risquerez de faire planter Unity.
Au-delà de 70 x 70 vous verrez une baisse des FPS.

La 2e partie de ce tutoriel touche à sa fin, n’hésitez pas à commenter si ce tutoriel vous a plu ou si vous avez des problèmes de code.

Vous pouvez télécharger le projet compresser au format 7zip en suivant ce lien : https://www.dropbox.com/s/p3r9jtlhvpjhv71/TutoLabyrinthe.7z?dl=0

Licence Creative Commons
Le tutoriel est mis à disposition selon les termes de la Licence Creative Commons Attribution – Pas d’Utilisation Commerciale – Pas de Modification 4.0 International.

Nouveau jeu, mise à jour et tutoriel

Salut à tous.

Cela fait un petit moment que je n’avais pas poster de nouvelle.
Comme dit dans le titre, je suis sur un nouveau projet, toujours avec le moteur Unity, que je développe depuis 4 mois.
Ce nouveau jeu sera aussi sur Android comme Circle Reflex et Planet Guardian.
Son nom…Color Case, pour vous en dire un peu plus, c’est un jeu qui reprend les mécaniques de gameplay de Kami, un jeu de réflexion où le joueur doit remplir un tableau d’une seule couleur. N’hésitez pas à cliquer sur son nom pour voir sa page Google Play.

Vous pouvez voir un visuel non-définitif ci-dessous. Le visuel du jeu est créé par un ami artiste, Krueder, pour pouvez retrouver son DeviantArt ici.

ColorCaseMenu ColorCaseSelectionLevel

Concernant mes précédents jeux, Circle Reflex et Planet Guardian, ils ont été mis à jours depuis le temps.
Circle Reflex actuellement en version 1.0.15 et Planet Guardian actuellement en version 1.0.2.5 .
Une mises à jour sera de nouveau faite d’ici la fin du mois, si tout ce passe bien.
Les deux jeux profiteront d’un système de localisation avec deux langues pour l’instant, le Français et l’Anglais.

Pour finir la 2e partie du tutoriel arrivera très bientôt, je pense qu’elle sera mis en ligne d’ici la fin du mois.

Bonne vacances à tous et bonne fête de fin d’années 🙂