CAW1 2013 Projet de Marien Fressinaud

De Ensiwiki
Aller à : navigation, rechercher
Project schedule.png
Titre du projet RunPG
Cadre Appli web

Équipe Marien Fressinaud
Encadrants Sebastien Viardot


Presentation du projet

Description générale

RunPG est un jeu type RPG utilisant la géolocalisation pour faire évoluer votre personnage. Les quêtes consistent à parcourir un certain nombre de kilomètres en un minimum de temps. L'enregistrement se fait grâce à la version mobile de RunPG et utilise les possibilités de géolocalisation du téléphone et du HTML5.

Disclaimer : le jeu est très basique, il faut vraiment le prendre comme un PoC !

Cahier des charges

Il s'agit d'un projet web pour l'Ensimag, un certain nombre de contraintes sont imposées :

  • Utilisation du framework Java Play (obligatoire) : OK
  • Gestion de droits avec différents niveaux d'utilisateurs (obligatoire) : OK (visiteur, joueur, admin)
  • Gestion d'un flux RSS (optionnel) : OK (classement et joueur)
  • Utilisation d'un webservice (souhaitable) : OK (maps et données de OpenStreetMaps)
  • Une partie du site en GWT (souhaitable) : ~NOK (choix assumé, remplacement par affichage JQuery + Ajax du profil utilisateur dans l'administration (?))
  • Version mobile de l'application (optionnel) : OK (tout le site est full responsive design)

Réalisation

100 %
  • Page d'accueil / classement joueurs : OK
  • Inscription utilisateurs : OK
  • Connexion / déconnexion : OK
  • Affichage profil : OK
  • Affichage des quêtes : OK
  • Enchaînement des quêtes : OK
  • Responsive design : OK
  • Page enregistrement parcours : OK
  • Enregistrement parcours (client -> serveur) : OK % pas possible d'envoyer trop de points GPS
  • Gain XP + évolution score : OK
  • Gestion droits utilisateurs : OK
  • Page administrateur : OK
  • Affichage Ajax + JQuery du profil joueur dans l'admin : OK
  • Flux RSS évolution joueurs : OK
  • FlUX RSS classement joueurs : OK
  • Tests : OK
  • Création de quêtes : OK

Le jeu

Fonctionnement du jeu

Le but du jeu est de terminer toutes les quêtes consistant à aller courir un certain nombre de kilomètres durant une certaine durée. L'enregistrement d'une quête se fait via l'application mobile utilisant les possibilités de géolocalisation d'un téléphone couplées au standard HTML5 mettant à disposition l'API adéquate.

Si la quête en cours est réalisée (les objectifs minimums sont atteints), la quête suivante est débloquée et le joueur gagne des points d'expérience (proportionnellement aux nombres réels de kilomètres parcourus et du temps passé à courir) et augmente son score (proportionnellement aux objectifs). Une fois une quête terminée, il n'est plus possible de la refaire.

Il existe deux types d'expérience : l'expérience en vitesse et celle en endurance. Plus on gagne de points d'expérience, plus on réduit les objectifs des quêtes. L'expérience en vitesse fait décroître les objectifs de distance (on court plus vite, on a l'impression de parcourir moins de kilomètres). L'expérience en endurance fait décroître les objectifs de durée (on tient mieux la distance, on ne voit plus le temps passer)

En plus des quêtes, un joueur peut aussi suivre un entraînement. Un entraînement permet de gagner deux fois plus d'expérience qu'une quête, mais ne permet pas d'augmenter son score.

Rouages internes au jeu

Une quête en fonction d'un joueur possède 4 états différents :

  • NOUVELLE : le joueur n'a pas encore pris connaissance des objectifs
  • EN_COURS : le joueur a accepté la mission, il doit la réaliser pour passer à la suite
  • TERMINEE : le joueur a validé les objectifs mais la mission suivante n'est pas débloquée
  • VALIDEE : le joueur a pris connaissance que la mission est terminée. La mission suivante est débloquée

Règles de calcul des points d'expérience (entraînements) :

  • XP vitesse = max(distance (km) * vitesse moyenne (km/h), 5)
  • XP endurance = max(durée (h) * 10 * vitesse moyenne (km/h), 5)

Règles de calcul des points d'expérience (quêtes) :

  • Suivent les mêmes règles qu'en entraînement, divisées par 2

Règles de décroissement des objectifs de quêtes :

  • distance (km) = distance normale - (XP vitesse / 100)
  • durée (mn) = durée normale - (XP endurance / 200)

Règle de gain de points (score) :

  • score = (objectif distance * 30 + objectif durée) / 10

Améliorations possibles

  1. Après des tests, il n'est pas possible d'envoyer un parcours faisant environ 30 mn et plus (correspondant à environ 30 * 60 = 1800 points GPS). La supposition est que HTTP ne permet pas d'envoyer une en-tête assez grande pour tous ces points GPS. On pourrait corriger ce problème en envoyant régulièrement (tous les 200 points GPS par exemple) les données au serveur. Néanmoins, Internet n'étant pas forcément disponible tout le long du parcours, on ne peut pas se contenter de ça. On peut ainsi mettre les points GPS sur le stockage du téléphone à l'aide de la technologie Local Storage (HTML5) et les synchroniser quand Internet est accessible.
  2. Les différents états d'une quête doivent permettre plus de souplesse entre le passage d'une quête à une autre. Les possibilités ne sont pas réellement utilisées ici. On pourrait par exemple, au moment de passer une quête en EN_COURS, verrouiller les objectifs sans que l'expérience ne puisse plus influencer dessus. Avant de valider une quête, on pourrait aussi la refaire autant de fois que l'on veut mais en ne prenant en compte dans l'expérience que la meilleure course.
  3. Au début et à la fin d'une quête, j'avais prévu que le message expliquant l'enchaînement des quêtes se fassent dans un écran "spécial" avec séquence de textes sur background illustrant l'histoire. Ce système s'appuyait d'ailleurs sur les différents états des quêtes pour lancer automatiquement la séquence.
  4. Les joueurs devraient être capable de pouvoir rentrer en contact entre eux (système de messages privés, amis, etc.) afin de rendre le site plus "sociale". Mais je n'ai pas jugé que c'était une fonctionnalité suffisamment importante pour que je me penche dessus.
  5. La gestion du profil n'a pas fait l'objet d'une grande attention. Il devrait être possible au moins de modifier son avatar et son mot de passe.
  6. L'inventaire n'a pas été implémenté

Le site

Installation du site

  1. Installer Play Framework
  2. Télécharger et décompresser les sources du projet Média:Mfressinaud_RunPG_v1.tar.gz
  3. Lancer une console dans le répertoire décompressé et taper `play run`
  4. Se rendre à l'adresse http://localhost:9000
  5. Des utilisateurs sont déjà créés par défaut à des fins d'illustration. On retrouve :
    • Pat / patou
    • Bob / bobsecret
    • Marien / marien (Administrateur)
    • Julien / jujudu38

Crédits

Infos supplémentaires

  • Code disponible sur GitHub
  • Licence Copyheart (note : les librairies utilisées dans le projet gardent leur propre licence !)
  • Il est conseillé d'utiliser le navigateur Libre et respectueux Firefox pour naviguer sur le site. Aucun test n'a été effectué avec d'autres navigateurs. Le conseil est particulièrement vrai pour la partie enregistrant votre parcours via GPS.