J'ai codé un jeu de surf : ce qu'il m'a appris

SurfByte, un projet personnel né à l'époque des NFT, et tout ce que ses premiers joueurs m'ont appris.

Pour une fois, on ne va pas parler de clients ni de CMS maison, mais d'un jeu !

Oui, vous avez bien lu, un jeu. J'en avais écrit le concept pendant la grande mode des cryptos et des NFT. La bulle a éclaté si vite que je n'ai jamais pu lui donner vie. Le projet a gardé le surf et laissé tomber tout le reste.

L'idée est quand même restée dans un coin de ma tête, et avec un peu de temps libre, c'est devenu un projet personnel : SurfByte, un jeu de surf en pixel art qui se joue dans le navigateur, surtout sur téléphone. Vous créez votre surfeur, vous choisissez vos figures vague après vague et vous affrontez des locaux ou vos amis en série, sur des spots bien réels comme La Gravière à Hossegor.

Il se veut « feel good », mais j'ai voulu rester fidèle à ce qui rend le surf si dur à apprendre : on tombe souvent, et on progresse lentement.

Beaucoup de code

Je l'ai développé avec Laravel, mon framework habituel. Le premier commit date du 24 septembre, et le jeu est ouvert à tout le monde depuis le 12 octobre. Pour qu'il s'installe sur un téléphone en quelques clics, j'en ai fait une PWA (une application web qu'on ajoute à son écran d'accueil comme une vraie appli), avec des notifications : un ami vous défie, votre spot marche bien ce matin.

Il existe aujourd'hui en six langues. Derrière, plus de 670 tests automatisés vérifient à chaque modification que je n'ai rien cassé, ce qui me rassure dans un jeu où le serveur calcule tous les scores.

Tester comme un joueur

Puis il a fallu tester comme un utilisateur. Je me suis bien pris au jeu, il faut l'avouer : mon surfeur en est à 188 sessions, sur 21 jours différents. J'y joue tous les jours, et c'est comme ça que je note les améliorations possibles.

Le jeu est pourtant pensé pour ne pas vous prendre trop de temps chaque jour. Chaque session coûte de la forme, un peu plus sur les gros spots, et en dessous de 60 la fatigue vous fait rater plus de figures. Elle revient toute seule, en une demi-journée environ. Au bout de quelques séries, le mieux est souvent de faire une pause et de revenir plus tard, comme après une vraie session.

Les joueurs ne sont pas encore nombreux, une quinzaine de comptes. Par contre ils jouent beaucoup : l'un d'eux a enchaîné plus de 200 séries en deux semaines. Leurs retours, envoyés depuis le jeu, ont déjà donné plusieurs mises à jour.

Ce que les chiffres m'ont appris

Est venu ensuite le temps des audits : performances, SEO, parcours utilisateur…

J'ai d'abord découvert un problème de rétention. Au début, chaque nouveau joueur faisait une session d'entraînement et ne revenait jamais, la moitié abandonnait même après une seule vague. J'ai remplacé cette première session par une vraie série contre un jeune local du spot, suivie d'une carte qui explique quoi faire ensuite. Sur les cinq joueurs inscrits juste après, trois ont joué au moins six sessions.

La plupart des visiteurs arrivent d'Instagram. Quand vous touchez un lien depuis l'application, la page s'ouvre dans le navigateur intégré d'Instagram, où Google refuse la connexion avec un compte Google. L'erreur s'affiche chez Google : des visiteurs essayaient de s'inscrire, échouaient, et je n'en savais rien. Le jeu repère maintenant ces navigateurs et affiche une explication à la place du bouton Google.

Côté partages, chaque série terminée produit une image dessinée avec les sprites du jeu, au format lien ou story. Sur le compte Instagram du jeu, les vidéos font pourtant trois à cinq fois plus de vues que les images. J'ai donc ajouté de quoi enregistrer en vidéo la meilleure vague du jour, directement depuis l'administration.

Les pages d'accueil

Je ne fais pas de vrais tests A/B, avec aussi peu de visiteurs ils ne prouveraient rien. Je change une chose, je laisse tourner quelques jours et je compare. Pour ça, je compte moi-même chaque étape de façon anonyme, de la page d'accueil jusqu'au compte créé.

Le dernier relevé parlait de lui-même : 32 visites sur la page de démonstration, 2 vagues surfées. Sur téléphone, la bannière des cookies cachait la vague. Elle tient maintenant dans une bande en bas de l'écran, et l'accueil montre directement la vague du jour avec un seul bouton pour la surfer, sans créer de compte.

Le référencement

Au départ, la langue du jeu dépendait de celle du navigateur. Sauf que Google ne donne aucune langue quand il visite un site : il n'aurait jamais vu qu'une seule version. Chaque langue a maintenant sa propre adresse (/fr, /en…), et chaque spot sa propre page, que Google peut trouver.

Et pour mon métier ?

Tout ça, je le pratiquais déjà sur les sites que je développe. Le vivre sur mon propre produit, en regardant les chiffres chaque matin, m'a fait progresser sur ce qui se passe après la mise en ligne, et je l'applique maintenant à chaque projet.

Si vous voulez essayer, c'est sur playsurfbyte.com, et vous pouvez surfer une vague sans même créer de compte.

En résumé, énormément de choses apprises, dans le code comme dans les usages des joueurs, et donc forcément utiles pour mes clients… Ah mince, on avait dit qu'on ne parlait pas des clients !