Combien d’outils ?
Je ne saurai même pas le quantifier exactement. Dans mon précédent post sur les outils, je n’ai pas précisé que je ne présentais que les outils dont j’ai payé l’utilisation. Bien d’autres outils gratuit m’ont permis de créer Gurido.
Tween
Dotween est un outil fantastique. Sans mentir, c’est le meilleur asset de tween qui existe pour Unity … et il est gratuit !
Je ne savais pas comment expliquer ce qu’est un Tween et wikipedia vient de m’en donner la réponse : “Le tweening (ou interpolation) est un procédé dans le film d’animation qui permet de créer des images intermédiaires successives de telle sorte qu’une image s’enchaîne agréablement et de façon fluide avec la suivante.”
Voilà, l’asset permet d’animer ce que l’on veut et je m’en sers pour quasiment tous les menus. Par exemple, quand un joueur appuie sur le bouton “skins”, le menu des thèmes apparaît de la gauche de l’écran et se place en 0.8 secondes au milieu de celui-ci. J’utilise Dotween pour la configuration de cet effet et j’utilise un easing pour indiquer la courbe de vitesse que prend l’objet pour aller de la gauche au milieu. Quand je ferme le menu, j’utilise une vitesse supérieur, et un easing avec un effet de rebond, pour le faire disparaître sur la droite de l’écran.
L’outil ajoute un effet “wahou” que j’adore. Une version Dotween Pro existe permettant de le paramétrer depuis la fenêtre de l’inspector dans Unity. L’outil m’a tellement aidé que je pense l’acheter à l’avenir.
Code
Je travail sur un MacBookPro 13″. Il n’y a aucun choix politiques derrière cela, j’ai Windows 10 au travail, j’utilise un raspberry Pi comme media center et j’ai un ordinateur portable sous ubuntu pour aller sur internet à la maison. Non, j’utilise un Mac car si on veut déployer un jeu pour iOS, il faut obligatoirement un mac, point. Seulement sur MonoDevelop, l’outil fournis avec Unity pour programmer, il manque quelques fonctionnalités, comme avoir plusieurs parties du code visible dans une seule fenêtre, ou une meilleure visibilité des dépendances.
Visual Studio Code, un produit Microsoft, est sortie l’été dernier sur toutes les plateformes et n’a fait que s’améliorer depuis. Pour moi, il comble toutes les lacunes de MonoDevelop. L’asset VSCode de dotBunny permet de lier facilement Unity à VSCode.
Object Pooling
J’ai cherché une bonne explication mais pas sûr que ce soit compréhensible. Pour faire simple, l’object pooling est le fait de réutiliser un object déjà utilisé.
Par exemple : Lorsque je détruis une suite de cellules, j’utilise un effet de destruction pour chacune des cellules. Cet effet est déjà chargé en mémoire au démarrage du puzzle. A dire vrai, je charge une vingtaine de ces effets et je les affiches quand le joueur détruis les cellules. Une fois l’effet exécuté, au lieu de le détruire, je le met en pause dans un coin de l’écran et je l’appellerai à nouveau quand j’en aurai besoin. Si un joueur détruis plus de 20 cellules en une fois, je charge en mémoire les objets manquant et je les garderai dans ce que l’on appel le pool. Ainsi, la fois suivante, si le joueur détruis à nouveau plus d’une vingtaine de cellules, l’effet sera en mémoire et sans chargement, je pourrais l’exécuter.
L’object pool est un pattern de programmation “classique” et il a tout un chapitre de dédié dans l’excellent livre (gratuit) Game Programming Patterns de Robert Nystrom. En suivant son instruction, j’aurai pu développer mon propre asset d’object pooling, mais de projet en projet, j’utilise le script fournis par … un site web qui n’existe plus. Une recherche internet m’a permis de trouver facilement d’autres scripts mais celui que j’utilise fonctionne très bien et je le mets à disposition sur ce lien : http://pastebin.com/GbRXwbah
Singelton
Dans la même veine, j’utilise une classe Singleton dont je n’ai plus accès au site web qui me l’a fournis. Je met le code à disposition sur ce lien : http://pastebin.com/UwgRtEEU
Un Singleton est un classe qui ne peut avoir qu’une seul instance dans le projet. En exemple, je n’ai qu’une seule classe qui contiens les informations du joueur. Ainsi partout dans le code, lorsque je veux connaître le score actuel du joueur il me suffit de l’appeler et je suis sur d’avoir toujours le bon chiffres.
JSon
Pour terminer, j’utilise JsonFX pour lire et créer des fichiers Json. Le fichier Json est un format de texte permettant de représenter de l’information structuré. En gros, cela permet de créer un tableau mais au lieu que celui-ci soit écris dans un format avec des colonnes, il est écris sous la forme d’une suite de lignes.
Je l’utilise pour l’édition des thèmes. Chaque thème a ses propres caractéristiques et en l’écrivant en Json, soit un fichier extrêmement léger, je peux demander à l’utilisateur d’aller chercher l’information du thème sur internet. Il récupere le tableau avec les caractéristiques du thème et se retrouve avec toutes les nouvelles informations. Je peux modifier/ajouter/supprimer alors facilement un thème sans que l’utilisateur n’est à télécharger une nouvelle version du jeu.
Exemple en tableau :
Nom | Conditions | Couleur
|
Type | |||
First | Atteindre 1.000 points |
|
cellule carrée | |||
Second | Atteindre 2.000 points |
|
cellule ronde |
La même chose écris dans un fichier Json :
[{
“Nom”: “First”,
“Conditions”: “Atteindre 1.000 points”,
“Couleurs”: [“bleu”, “blanc”, “rouge”],
“Type”: “cellule carrée”
}, {
“Nom”: “Second”,
“Conditions”: “Atteindre 2.000 points”,
“Couleurs”: [“jaune”, “vert”, “bleu”],
“Type”: “cellule ronde”
}]
Un site web comme Json Editor Online permet de créer et de lire des fichiers Json depuis une interface web. En recopiant l’exemple de fichier Json donné précédemment, vous devriez retrouver la structure du fichier.
Conclusion
Un multitude d’outils sont nécessaires pour créer un jeu. Aussi simple que paraît être Gurido, ce sont des centaines (milliers ?) d’heures entre plusieurs développeurs qui sont nécessaire pour lui donner naissance. Toujours passionnant. Si vous avez des questions sur un des outils utilisé ou sur comment l’utiliser, n’hésitez pas à me contacter.