François Hautier

Programmeur Gameplay

Kouji

Créée par Spooklight Studio, Kouji est une application de messagerie en réalité augmentée, disponible sur iOS et Android. Avec Kouji, vous pouvez créer votre avatar et le placer dans votre environnement. Après lui avoir choisi une animation, il ne reste plus qu’à le filmer seul ou avec les avatars de vos amis, puis de partager la vidéo.

Sous la direction du Lead Programmeur, puis en tant que responsable de l’architecture du code, j’ai créé de nombreux aspects de l’application : développement de plugins natifs en Objective C et Java, développement client-serveur, développement UI ou encore intégration d’analytiques.

Développement initial

Le développement de Kouji a débuté aux environs de mai 2017, soit peu de temps avant mon arrivée à Spooklight Studio début juillet. Nous étions initialement 6 développeurs à travailler sur Kouji, dans une équipe également composée d’artistes et d’un technical artist.

Mon rôle de développeur Unity m’a donné l’opportunité de créer de nombreux aspects de l’application, pensés en amont par l’équipe créative. Les éléments sur lesquels j’ai travaillé sur Kouji durant mes 6 premiers mois à Spooklight Studio comprennent :

  • Création d’une interface permettant d’accéder depuis Unity aux fonctionnalités natives d’iOS et d’Android, lesquelles sont respectivement codées en Objective C et Java. Cela comprend l’accès au carnet de contacts du téléphone, l’ajout de watermark sur une vidéo, l’ajout d’une piste audio à une vidéo, etc.
  • Développement de l’écran des amis : authentification par SMS, synchronisation des données de l’utilisateur avec un serveur. En collaboration avec un développeur Java anglophone (externe à Spooklight) qui était chargé de développer le code serveur, j’ai créé le code client ainsi que le comportement complet de l’écran.
  • Création d’éléments de l’UI, comme le sélecteur de couleurs, les tutoriels utilisateurs, etc.
  • Intégration du SDK Facebook Messenger pour permettre à l’utilisateur de partager ses vidéos directement dans Facebook Messenger.
  • Intégration de toutes sortes d’analytiques dans l’application, pour pouvoir traquer et comprendre le comportement de l’utilisateur dans Kouji. Nous avons utilisé Mixpanel pour collecter les données, puis plus tard Facebook Analytics.
  • Ajout de notifications « push ».
  • Création d’un système de synchronisation labiale. Quand l’utilisateur parle, son avatar ouvre la bouche en fonction de sa voix.
  • Création d’un système de filtre de voix : l’utilisateur peut choisir de modifier sa voix avec des filtres (aigu, grave, robot, reverb).

Réécriture de l’application

Prévu pour être mis en ligne sur l’App Store au lancement de ARKit en septembre 2017, Kouji a connu un développement mouvementé. Pour différentes raisons (délais de développement très court, technologies pour la plupart en bêta et incompatibles entre elles), l’architecture du code de Kouji est rapidement devenue un immense no man’s land. Fin 2017, il était impossible d’intégrer facilement n’importe quelle fonctionnalité sans qu’il en découle de nombreux problèmes.

Ayant travaillé sur de nombreuses parties de l’application, et suite aux départs de certains développeurs, j’avais la plus grande connaissance du projet dans l’équipe. J’ai donc été nommé responsable de l’architecture du code sur Kouji, dans le but de la réhabiliter.

Parmi les grandes lignes de mon travail sur cette « nouvelle architecture » pour Kouji figurent :

  • Refonte complète de l’ordre d’initialisation des différentes parties de l’application.
  • Réécriture complète de la gestion de l’UI ainsi que du comportement des différents écrans de l’application.
  • Utilisation de techniques (instanciation dynamique des éléments, système de routeur pour naviguer dans l’application, etc.) pour rendre chaque partie de l’application indépendante au maximum, et éviter le « code spaghetti ».
  • Nouveau système de gestions des animations, inspiré de l’outil de gestion de l’histoire dans le projet Phobia.

Après avoir achevé cette grande tâche en mai 2018, j’ai continué à faire évoluer l’architecture du code, tout en implémentant de nouvelles fonctionnalités dans l’application comme les kouji favoris, les kouji stars ou les costumes.