Application mobile - Compagnon Rallyman GT

Vues : 1107

Qu'est-ce que Rallyman GT ?

Avant de parler de l'application compagnon, il est nécessaire de présenter Rallyman GT. Rallyman GT est un très bon jeu de société utilisant pour thème le rallye, l'auteur de ce jeu est Jean Cristophe Bouvier, un monsieur fort sympathique est totalement passionné par ce qu'il fait.
Le jeu est édité par Holy Grail Games, une société d'édition mettant un point d'honneur à éditer des jeux de qualités, c'est une équipe de passion, les jeux sont majoritairement lancé sur la plateforme de financement participatif KickStarter.
Rallyman GT a été financé sur KickStarter en décembre 2018.

Qu'est-ce que permet l'application ?

L'application dispose de trois fonctionnalités principales : Circuits, contre la montre et Championat.

Circuit

Application Rallyman GT - Circuits

Cet onglet regroupe l'ensemble des circuits officiels, afin de permettre aux joueurs de rapidement assembler les tuiles afin de crée le plateau du circuit en question, pour chaque circuit la liste des tuiles le composant est fournie sous forme de liste, deux images représentant le circuit sont également fournis, une image montrant à quoi ressemble le circuit une fois les tuiles assemblées, une image avec plus de détail montrant directement l'identifiant de chaque tuile composant le circuit.

Le contre la montre

Application Rallyman-GT - Solo

C'est la partie qui accompagne le mode solo du jeu, il permet aux joueurs de suivre leurs parties en solo, ils y entrent le circuit choisit (officiel ou personnalisé), il y entre son pseudo anis que d'autres infos comme la météo ou le type de pneu... enfin il entre on score pour chaque tour effectué, en fin de partie l'application calcul et sauvegarde les scores dans une "Score Board" afin de permettre aux joueurs de revoir le détail de leurs parties quand ils le souhaitent.

Le championnat

Application Rallyman GT - Championnat

Ce mode accompagne le mode multi joueur du jeu, ses fonctionnalités ressemblent a peut prêt au mode solo hormis que là il y a plusieurs circuits et plusieurs joueurs (qui peuvent être en équipe ou non), tout a long de la partie l'application recueil les informations nécessaires au calcul des résultats finaux et comme pour le mode solo, c'est résultats sont sauvegardés dans une "ScoreBoard" afin de permettre aux joueurs de consulter leurs scores plus tard, de comparer les parties ... etc.

Quel est le type de cette application ?

C'est une application dite hybride (j'en parle ici), celle-ci utilise les technologies web pour son interface, ce choix a été fait pour plusieurs raisons :

  • Raccourcir le temps de développement.
  • Être le moins dépendant possible des systèmes d'exploitation de chaque constructeur.
  • Permettre de la transformer en PWA, ce qui permet par exemple aux joueurs de l'utilise sur toutes les plateformes ou si la validation App Store devenait plus complexé que prévu à l'origine (les développeurs iOS me comprennent :p).

Une application uniquement faite de web ?

Même si elle est hybride, celle-ci utilise des technologies dites "natives", par exemple, les données des "ScoreBoard" sont stockées via SQLite, les deux plateformes mobiles ont une version embarquée de SQLite.
Le web a des systèmes de stockage intégrés comme le "localStorage", mais j'ai préféré utilise le SQLite embarqué pour plusieurs raisons :

  • Être sure que les données des "scoreBoard" soient sauvegardées quand le téléphone est sauvegardé (Google Drive / iTunes / iCloud)
  • Pouvoir stocker plus de données, de mon point de vue iOS limite beaucoup de chose dans les APIs web, WKWebview (qui est le moteur de safari utilisé dans les applications hybride) est bien plu limités par rapport a ce que propose Android (avec la Webview de Chrome), du coup hormis pour l'affichage je préfère utiliser le natif.

L'affichage et le "Pinch to zoom" des images est également un module natif lié a chaque plateforme, il est possible de le faire en web de base, mais sachant qu'un module pour Cordova existe déjà et faisais ça très bien j'ai fait le choix de l'utiliser, ce qui donne une bonne expérience utilisateur quand on veut regarder une image en détail (comme les images des circuits).

Les fonctionnalités intéressantes de l'application

D'un point de vue technique cette application ne fut pas un gros challenge, elle est totalement hors ligne, aucun appel API sur aucun serveur, elle embarque les données nécessaires a son fonctionnement directement dans le binaire. Afin de la rendre plus intéressante, j'y ai intégré un "watcher" qui surveille l'état d'une partie en cours, afin de la sauvegarder de manière intelligente.
L'idée derrière ce "watcher" est d'empêcher la perte de donnée, je m'explique imaginons qu'une partie est en cours et que le joueur ai pour x ou y raison besoin d'utiliser son téléphone, et quitte l'application, sans garde-fou toutes les données de la partie en cours seraient perdues. Hors ici quand il relance la partie (que ce soit le mode solo ou championnat) l'application lui propose de revenir là ou il en était, cela fonctionne également si le smartphone s'éteint, car il n'a plus de batterie, bah oui quand on est pris dans une partie on surveille pas sa batterie :p. enfin la sauvegarde automatique de l'état est compatible iCloud, iTunes et Google Drive... Et oui, même si le joueur casse son téléphone, il retrouvera sa partie sur le nouveau même si dans ce cas-là c'est vrai ... j'imagine que retrouver sa partie ne sera pas son premier problème... haha.
Précédemment je disais qu'en tant qu'application hybride elle pouvait être portée en PWA, en fait ça a été fait, mais ce n'est pas utilisé en production, car la majorité des joueurs l'utilise sous Android (et une petite partie sous iOS).
Enfin Microsoft CodePush étant compatible avec Cordova il aurait été possible de l'utiliser pour raccourcir le déploiement de correction de bogue, mais le temps de développement ne l'a pas permis.

Conclusion

Après, il y a deux semaines vous avoir présenté l'application React Native "Neartrip" de Josselin, Rallyman GT est un bon exemple d'application hybride simple, j'ai développé d'autres applications hybrides plus complexes (avec des appels API, du cache et même des notifications ... je rigole ZÉRO. :p), que je vous présenterai plus tard.