Fiche projet
Mahjong Zen — Jeu mobile de Mahjong Solitaire
Présentation du projet
Mahjong Zen est un jeu mobile de Mahjong Solitaire développé avec React Native et Expo. Le projet propose une expérience de jeu calme, fluide et accessible, centrée sur la réflexion, l’observation et la détente.
L’objectif était de créer un jeu mobile complet, publiable sur Google Play, avec une interface moderne, un système de tuiles interactives, une progression locale, des classements, des succès et une intégration publicitaire.
Le joueur doit associer des paires de tuiles libres afin de vider progressivement le plateau. Le jeu intègre des aides comme l’indice, le mélange et l’annulation afin de rendre l’expérience plus agréable et moins frustrante.
Détails techniques
Objectifs techniques
Le projet avait plusieurs objectifs principaux :
- créer une base de jeu mobile fonctionnelle avec React Native ;
- gérer un plateau de 144 tuiles interactives ;
- détecter les tuiles libres ou bloquées selon leur position ;
- proposer des animations de sélection et de disparition ;
- sauvegarder localement la progression du joueur ;
- intégrer Google Play Games pour les classements et les succès ;
- préparer la publication sur Google Play Console ;
- intégrer un système publicitaire compatible avec les règles Android récentes ;
- produire les pages légales nécessaires : politique de confidentialité, contact et suppression de compte.
Technologies utilisées
- React Native
- Expo
- TypeScript
- Expo Router
- Zustand
- AsyncStorage
- React Native Reanimated
- Expo Haptics
- Google Play Games Services
- Google Play Console
- EAS Build
- Git / GitHub
- GitHub Pages
- AdMob / publicité mobile
Fonctionnalités principales
Le jeu comprend :
- un plateau complet de Mahjong Solitaire ;
- un système de sélection de tuiles ;
- une détection des tuiles jouables ;
- la suppression automatique des paires compatibles ;
- un score dynamique ;
- un chronomètre ;
- un compteur de tuiles restantes ;
- un bouton d’indice ;
- un bouton de mélange ;
- un bouton d’annulation ;
- plusieurs thèmes visuels ;
- une sauvegarde locale de la partie ;
- une reprise de partie depuis l’écran d’accueil ;
- des classements Google Play ;
- des succès Google Play ;
- une intégration publicitaire ;
- une fiche Play Store complète avec visuels, description et pages légales.
Architecture du projet
Le projet est organisé de façon modulaire afin de séparer clairement la logique du jeu, l’interface et les services externes.
La logique métier du Mahjong est isolée dans des fichiers dédiés afin de faciliter les tests, la maintenance et les futures évolutions. Les composants visuels sont séparés des règles de jeu, ce qui permet de modifier l’apparence du jeu sans casser le fonctionnement du plateau.
L’état global du jeu est géré avec Zustand, tandis que les données persistantes comme les paramètres, les statistiques ou la partie en cours sont stockées localement avec AsyncStorage.
Défis rencontrés
Le projet a nécessité de résoudre plusieurs problématiques techniques :
- adapter un plateau dense de 144 tuiles sur des écrans mobiles ;
- gérer correctement les interactions tactiles ;
- différencier les tuiles libres, bloquées, sélectionnées ou supprimées ;
- optimiser la fluidité des animations ;
- éviter les rendus inutiles pendant les interactions ;
- intégrer Google Play Games avec les bons identifiants de projet, classements et succès ;
- configurer les tests fermés obligatoires avant la mise en production ;
- gérer les exigences Google Play concernant l’identifiant publicitaire AD_ID ;
- créer et publier les pages légales via GitHub Pages.
Publication Google Play
Le projet a été préparé pour une publication Android avec EAS Build. Une version de production au format AAB a été générée puis envoyée sur Google Play Console.
Le jeu a également nécessité la mise en place d’un test fermé avec testeurs inscrits, conformément aux règles de publication Google Play. Après validation, l’application a été approuvée pour la mise en production.