2. 1
FARMFIGHT GRONDIN FLORIAN, HILMI SAMY, LAM MAXIME,
MORETTI JEREMY, MASSA-ONFROY AURELIEN
Table des matières
Introduction .............................................................................................................................. 2
Côté serveur ............................................................................................................................. 3
Node.js................................................................................................................................... 3
Base de données ................................................................................................................. 3
DAO........................................................................................................................................ 3
Cryptage............................................................................................................................... 3
Timer....................................................................................................................................... 3
Côté client ................................................................................................................................ 4
Langage................................................................................................................................ 4
La carte ................................................................................................................................. 4
Le fermier............................................................................................................................... 4
Les évènements.................................................................................................................... 4
Interactions ............................................................................................................................... 5
Le style....................................................................................................................................... 5
3. 2
FARMFIGHT GRONDIN FLORIAN, HILMI SAMY, LAM MAXIME,
MORETTI JEREMY, MASSA-ONFROY AURELIEN
Introduction
Le projet FARMFIGHT est une application client/serveur en Javascript. Le serveur
reçoit les requêtes des utilisateurs et renvoie les informations demandées. Une base
de données a été mise en place afin de pouvoir gérer la partie multi-joueurs mais
aussi pour enregistrer les parties des utilisateurs.
Nous avons choisi une base de données MySQL contenant les utilisateurs ainsi que
leurs données ; les alliances, les serveurs, les armes, les cases,…
4. 3
FARMFIGHT GRONDIN FLORIAN, HILMI SAMY, LAM MAXIME,
MORETTI JEREMY, MASSA-ONFROY AURELIEN
Côté serveur
Node.js
Nous avons décidé d’utiliser le framework Node.js qui permet l’utilisation du
Javascript côté serveur. En effet, il est possible de créer un serveur Node.js sur un port
défini et accessible à l’adresse voulue.
Nous devons définir les routes afin de diriger les pages vers les vues associées. Pour
cela nous avons ajouté le module Express.js pour Node.js.
Base de données
Ensuite afin d’établir une connexion avec la base de données nous avons ajouté le
module mysql.Pour le faire fonctionner, il suffit d’établir une connexion que l’on
stocke dans une variable globale et que l’on utilise lors des requêtes.
Node.js fonctionne de manière asynchrone ce qui implique que l’application
n’attend pas la fin de toutes les commandes pour passer à la suite. Pour pallier ce
problème nous avons décidé d’implémenter toutes les requêtes SQL retournant des
données en utilisant des callback.
Le callback est appelé dans une fonction anonyme et est donc obligé d’attendre le
résultat de la requête pour passer à la suite.
DAO
L’application utilise les objets javascript, nous avons donc décidé d’utiliser les DAO,
c’est-à-dire une interface permettant de mapper les objets avec les entités de la
base de données. Nous avons défini des fonctions permettant de faire des requêtes
du CRUD ainsi que d’autres plus personnalisées.
Cryptage
Le cryptage des mots de passese fait en SHA1 grâce au module « crypto ». Cet outil
permet de crypter du texte de plusieurs manières (MD5, SHA1,…).
Timer
Un timer pour chaque évènement est mis en place. Le temps est calculé
aléatoirement avec une fréquence spécifique par évènement.
5. 4
FARMFIGHT GRONDIN FLORIAN, HILMI SAMY, LAM MAXIME,
MORETTI JEREMY, MASSA-ONFROY AURELIEN
Côté client
Langage
Nous avons utilisé la librairie JQuery pour la plupart des interactions côté client. Nous
avons cependant, dans quelques cas, utilisé du javascript afin d’optimiser les vitesses
d’exécution.
La carte
Nous avons décidé d’utiliser la librairie Three.js qui nous a permis de générer des
objets canvas.
La carte est calculée à la création de celle-ci. Chaque case est stockée dans la
base de données en fonction de son état, son propriétaire,…
On peut changer la vue de la carte (vue de haut). On peut également voir les cases
déjà possédées et les cases des autres joueurs.
Le fermier
Les fermiers peuvent attaquer des cases des autres joueurs.
Les informations du fermier sont également stockées dans la base de données.
Lorsqu’il quitte la page, l’enregistrement de sa position se fait automatiquement. Les
cases acquises sont également sauvegardées.
Les évènements
Les pluies, les tornades, les sauterelles et les météorites sont des évènements générés
de manière aléatoire. Les pluies et les sauterelles arrivent plus fréquemment alors que
les tornades et les météorites sont plus rares.
Les éléments visibles de ces évènements sont générés également par Three.js. Nous
avons aussi ajouté des animations afin de faire trembler la carte lors des pluies de
météorites grâce au plugin JQuery « Rumble » qui permet de faire trembler les
éléments HTML. Cet outil à également été utilisé pour les attaques de cases.
6. 5
FARMFIGHT GRONDIN FLORIAN, HILMI SAMY, LAM MAXIME,
MORETTI JEREMY, MASSA-ONFROY AURELIEN
Interactions
Les interactions entre le client et le serveur se font via le module « socket.io » pour
Node.js.
Ce module permet d’envoyer des sockets via le client et de les recevoir via le
serveur. L’inverse est également possible.
Nous l’avons utilisé par exemple dans le déclenchement des évènements. Lorsque le
timer déclenche l’évènement, un socket est envoyé à tous les clients de la carte. Le
client réceptionne ce socket (contenant l’information de l’évènement) et affiche
l’évènement (tornade, pluie…).
Tout ce qui doit être envoyé au serveur ou enregistré dans la base de données passe
par les sockets afin d’être réceptionné par le serveur.
Le style
Le style de l’application est fait en css. Nous avons choisi un style simple et épuré afin
de mettre en avant le jeu en lui-même.