loading…
  • Auteur
    Luigi De Rosa & Thierry Michel
  • Date
    08.11.2019
  • Temps de lecture
    7 min
  • Catégories
    Article technique
Province de Liège - Tip Top - Playscreen
Chaque tour de jeu est personnalisé en fonction des particularités de chaque école et des enfants qui y jouent.

Tip top kids

Une étude de cas technique

La province de Liège nous a contactés pour développer une application tablette visant à aborder les problèmes de santé physique et mentale chez les enfants. L’application était prévue pour être déployée dans toutes les écoles primaires de la province.

Vous souhaitez en savoir plus sur le résultat final ? Consultez le case Tip Top Kids

Du web à la technologie Native (Unity)

Lors de la présentation, nous avions imaginé une série de fonctionnalités nécessitant des choix techniques dès le début du projet. La première étape consistait donc à effectuer un peu de recherche et développement, d’autant plus que nous devions fournir des spécifications techniques au client afin qu’il puisse acheter les tablettes appropriées pour mener l’expérience.

Chez EPIC nous sommes familiers avec les technologies web et au fil des années, nous avons développé plusieurs jeux et expériences web en utilisant des technologies telles que HTML5 et WebGL.

Il était donc naturel pour nous d’opter initialement pour une approche PWA. Cependant, nous avons rapidement réalisé que la plateforme web n’était pas tout à fait à la hauteur de nos attentes. De nombreuses normes que nous souhaitions utiliser étaient en réalité incomplètes ou tout simplement pas encore implémentées (WebXR, API Bluetooth, etc.).

En prenant conscience de cela, nous avons opté pour une approche entièrement native en utilisant Unity. Nous avions déjà eu l’occasion de nous familiariser avec cette plateforme auparavant et avons décidé de l’essayer dans le cadre d’un véritable projet de production !

Jusque-là, tout allait bien (en ce qui concerne les choix technologiques), mais cela n’a pas été facile au début. Étant habitués au développement d’applications web, nous avons rapidement constaté d’importantes différences lors du développement avec Unity pour des plateformes natives.


Les Pour et Contre d’un moteur de développement natif

« Les bonnes surprises »

👍 C# est en réalité facile à comprendre, surtout si vous avez de l’expérience en TypeScript.
👍 Vous pouvez modifier des éléments pendant que l’application est en cours d’exécution.

« Les trucs moins cool »

👎 Le débug et les déploiements sont lents et laborieux
👎 Tester la réalité augmentée est une torture
👎 Il y a un manque de bibliothèques en open-source solides
👎 Bonne chance avec Git LFS et les conflits… Nous avons essayé de suivre les meilleures pratiques, mais nous avons quand même rencontré plusieurs problèmes
👎 Appliquer des modèles de conception classiques est assez difficile lorsque vous avez la moitié de l’application en code et l’autre moitié en GUI
👎  Unity peut planter facilement… et souvent plusieurs fois par jour

Android vs iOS

Lorsque nous avons envisagé la solution de réalité augmentée que nous allions utiliser,  ARKit et ARCore semblaient plus ou moins équivalents. Nous avons donc choisi lequel utiliser en fonction d’autres critères : la compatibilité des appareils.

Android semblait offrir un choix plus large de matériel et des processus de déploiement/mise à jour plus simples… et d’après la liste des appareils pris en charge par Google, le Samsung Galaxy Tab S4 semblait cocher toutes les cases en termes de « meilleur » appareil.

Cela étant dit, c’est un choix que nous réévaluerons soigneusement pour chaque nouveau projet à l’avenir, car les deux technologies AR ont leurs avantages.

Google, à l’aide!

Nous rencontrions de gros problèmes lors de l’exécution d’ARCore sur la tablette, avec d’énormes retards et un manque de stabilité dans la détection et le suivi des fonctionnalités. Nous avons passé des jours et des nuits (principalement des jours) à déboguer cela, sans parvenir à comprendre quel était le problème.

Nous avons eu la chance de recevoir de l’aide d’un des ingénieurs de Google travaillant sur le projet ARCore, et la chose amusante, c’est que le problème était simplement dû à la malchance: nous avons eu le malheur d’avoir un appareil défectueux pendant la phase de développement.

Dès que nous l’avons remplacé, *Poof*, tout s’est remis à fonctionner parfaitement !

Province de Liège - Tip Top - Mail

Réalité augmentée vs reconnaissance d’images

Une fois que nous avons décidé de nous orienter vers Android, nous nous sommes concentrés sur les fonctionnalités clés telles que la reconnaissance des images et de leur distance. Cela a soulevé une question majeure : une véritable réalité augmentée ou une simple reconnaissance d’images par des marqueurs ?

Nous avons testé une multitude de solutions : ARCore, Image Recognition, Wikitude, ARToolKit, Arcolib, EasyAR, Maxst,… (la liste est longue). Lorsqu’une solution ne fonctionnait pas du tout, une autre, bien que très stable, coûtait deux fois le coût total du projet… pas une bonne façon de maîtriser le budget…Bienvenue à la “3rd party” party !

Bien que la reconnaissance simple d’images donnait d’excellents résultats pour une ou deux images, la détection de 4 images simultanément posait des problèmes majeurs (par exemple, la taille de chaque image à l’écran n’était plus suffisamment grande).

L’avantage d’une véritable solution de réalité augmentée était la capacité à détecter une image de près, à laisser un marqueur dans l’environnement, puis à passer à l’image suivante

L’inconvénient (majeur) : il ne suffit pas de placer la tablette devant l’image. En réalité, sans un minimum d’informations sur l’environnement réel, ARCore ne peut ni détecter les images ni estimer les distances, les échelles, etc.

Un test ‘scan’ est donc nécessaire au préalable, même si en pratique, cela s’est avéré être difficile en termes d’expérience utilisateur (tutoriels, explications, vidéos, superpositions, instructions audio, etc.) pour nos utilisateurs cibles (des enfants enthousiastes de l’école primaire).

Reconnaissance faciale - Place à la grimace!

Focus sur l’expérience utilisateur

Le projet était très ambitieux. Pas tant d’un point de vue technique, mais en raison de son public cible : des enfants de 8 et 9 ans jouant ensemble par groupe de 3 ou 4. Nous devions nous assurer de :

  • Donner à chaque enfant du groupe l’occasion de prendre le contrôle de la tablette à un moment donné
  • Rendre l’interface utilisateur facile à utiliser
  • Délivrer tous les « messages éducatifs » de manière ludique

Nous avons collaboré avec des psychologues et des enseignants de la province pour développer l’expérience et l’interface de l’application. Voici quelques-unes des solutions d’expérience utilisateur que nous avons choisies :

Province de Liège - Tip Top - Playscreen
Chaque tour de jeu est personnalisé en fonction des particularités de chaque école et des enfants qui y jouent.
Province de Liège - Tip Top - Interface
Grâce à une combinaison secrète, l'administrateur peut accéder au tableau de bord, où il peut recueillir des informations sur la dernière session, modifier les paramètres et lancer des sessions de test/débogage.
Province de Liège - Tip Top - Testing4
In some parts of the app, the children need to put their finger on the screen to unlock a mission.
Province de Liège - Tip Top - Photo Groupe
Souvenir ! À la fin du jeu, nos héros peuvent prendre et imprimer une photo avec leur totem personnalisé et les personnages du jeu.

TipTop est le boss

Dans le jeu, nous avons intégré un personnage existant en tant que protagoniste : un personnage un peu comme un grand frère appelé TipTop.

Son objectif ? Aider nos héros à accomplir les différentes missions du jeu. Son rôle consistait à expliquer les règles, à définir à qui le tour de jouer était ; à aider ou à donner des conseils quand c’était nécessaire.

Nous avons créé TipTop à partir d’une illustration 2D existante, puis nous l’avons modélisé dans Blender, et nous l’avons animé grâce à la technologie de capture de mouvement (merci à nos amis de Mysis!)

Nous avons considérablement utilisé Blender pour créer des vidéos, des images et des modèles 3D à utiliser dans le jeu.

Voici quelques-uns des éléments que nous avons créés :

Province de Liège - Tip Top - Tip Top
Modélisation 3D de Tip Top.
Province de Liège - Tip Top - 3D
Rendu des fluides dans Blender.
Province de Liège - Tip Top - Testing8
Nous avons créé un ensemble de cartes qui seront utilisées comme marqueurs augmentés en réalité augmentée (AR).
Province de Liège - Tip Top - Animaux
Série de dessins de personnages.
Province de Liège - Tip Top - Food2
Publicité trompeuse pour des boissons sucrées.
Province de Liège - Tip Top - Food
Publicité mensongère pour des friandises sucrées.

Construction du radar

Pour certaines missions dans le jeu, les enfants doivent trouver des objets spéciaux cachés quelque part dans l’école. Nous avons utilisé des balises de proximité Estimote qui utilisent le protocole Bluetooth Low Energy.

La lecture du RSSI Bluetooth nous a aidés à estimer la distance entre la tablette et la balise. Comme la valeur RSSI est assez instable par nature, nous avons essayé de supprimer le bruit en utilisant une implémentation du filtre de Kalman. Nous l’avons portée en C# à partir d’une implémentation JavaScript.

Province de Liège - Tip Top - Graph
crédits https://www.wouterbulten.nl/blog/tech/lightweight-javascript-library-for-noise-filtering/
sugary
Découvrir le phare caché.

Niveau final

Le défi du dernier niveau : avoir un jeu collaboratif joué en temps réel tout en utilisant la réalité augmentée.

Apparemment, ce n’est pas de la science-fiction. Un Raspberry Pi crée un point d’accès Wi-Fi et intègre un petit serveur Node.js avec WebSocket. ?

Bienvenue de nouveau à la “third-party” party!  Une autre différence “web-vs-unity” nous a surpris : l’esprit communautaire derrière les outils de développement natifs. Bien sûr, il y a des forums, de l’entraide mutuelle, et ainsi de suite, mais c’est loin d’être une source ouverte.

Et pour cause. Nous pouvons immédiatement sentir que nous sommes dans un environnement axé sur le profit où il y a potentiellement beaucoup d’argent en jeu, d’autant plus au vu du monopole sur le marché. ¯\_(ツ)_/¯

En résumé, nous sommes revenus vers Google et/ou l’Asset Store pour trouver le package parfait.

En ce qui concerne le serveur, cela nous a donné l’occasion d’utiliser TypeScript.
Quant au client… nous avons découvert les “threads”!!!

En JavaScript, l’asynchronie est gérée avec des promises et des callbacks.. Mais en C#, entre Unity et .NET, comment exécuter du code à partir d’un thread en arrière-plan dans le thread principal de Unity ?

Bonjour les coroutines, invoke et autres files d’attente !

Province de Liège - Tip Top - Testing6

Tests utilisateurs

Bien sûr, toute l’expérience a été testée de long en large et en travers chez EPIC… mais nous devions encore nous assurer de réaliser des tests avec de vrais utilisateurs pour soulever d’éventuels comportements et usages inattendus.

Heureusement pour nous, , il n’était pas très difficile de recruter des enfants pour tester le jeu . Nous avons même eu l’opportunité de réaliser plusieurs sessions à grande échelle dans différentes écoles pour nous assurer que rien n’était laissé au hasard.

Une fois de plus, nous avons réalisé que même si toute une équipe d’experts digital avait testé de manière approfondie une expérience numérique… 10 enfants amèneront toujours à ouvrir quelques tickets de débogage supplémentaires dans Gitlab !

Province de Liège - Tip Top - Testing7
Journée de tests utilisateurs dans une école.
Province de Liège - Tip Top - Testing9
C'est l'heure du selfie ! Des "funny faces" sont nécessaires pour débloquer l'une des missions.
Province de Liège - Tip Top - Testing3
Getting organized as a group
Province de Liège - Tip Top - Testing2
Test de la MVP d'un des niveaux.

C’est tout, les amis

Ce projet a été extrêmement amusant et nous a occupés pendant plusieurs mois. Il nous a permis de sortir du monde immatériel des produits 100 % numériques et de créer quelque chose de concret où nous pouvions directement voir l’impact sur les utilisateurs finaux.

Jouer avec des outils de développement natifs nous a montré un aspect de notre travail que nous avions rarement eu l’occasion d’explorer à l’époque, et nous avons vraiment beaucoup appris.

Petite note: le jeu continue d’être déployé dans toutes les écoles de la région en 2022/2023 et continue de recevoir de très bons retours de la part de tous les utilisateurs.


Headless & Wordpress

Comprendre notre infrastructure

  • Article technique
LIRE L’ARTICLE

Motion Design

Level up

  • Article technique
LIRE L’ARTICLE

Airdrop

Article technique

Nous avons développé un jeu instantané sur Facebook pour Red Bull, afin de promouvoir leur campagne médiatique AirDrop pour le lancement mondial d'une nouvelle gamme de boissons.

  • Article technique
LIRE L’ARTICLE

Airdrop