Comme vous pouvez le lire dans une autre section de ce site, je joue pas mal à Guild Wars 2
Je suis très accès contenu HL et j'aime bien stuffer tout mes persos. J'ai démarré un petit projet pour visualiser l'équipement via l'API GW2 officielle qui finalement a grossi plus que prévu initialement.
La première version était codée en code maison, et en juin 2016, j'ai tout migré sur Symfony 3.1
Il existe pas mal de fan sites pour faire ce genre de choses, mais je trouvais pas chaussure à mon pied. D'autant plus que je désirais vraiment une orientation "équipement".
Périmètre
- Symfony 3.1
- Boostrap 3.3
- jQuery 2.1
- PHP 7
- Varnish
- MySql
- Mongo DB
Fonctionnalités
Ce projet est un pur navigateur d'API : il n'y a quasiment aucun stockage relationnel si ce ne sont les clés d'API (mysql).
Le développement est orienté serveur, il n'y a presque pas de développement front. Visuellement c'est du bootstrap avec du jQuery basique.
Le serveur s'occupe de faire les requêtes à l'API officielle en mettant en cache MongoDB les résultats des requêtes et certaines données partiellement structurées communes à tout le monde (items, specialisations, ...). Même les images sont mises en cache varnish + fichier sur mon serveur pour solliciter au moins possible les serveurs officiels, disons que c'est guidé par une attitude responsable.
A chaque clé d'API est associé un code généré aléatoirement. Exemple R2eZnmgC4B
qui diminue
considérablement le risque de tomber par hasard ou en devinant sur le profil public de quelqu'un. Si une
association clé/code n'a pas été accédée par son propriétaire durant 1 an, elle est automatiquement supprimée.
On peut décider de rendre plus ou moins publiques certaines informations. Par défaut, beaucoup d'informations sont privées, au contraire d'autres fan site, il n'est pas question pour moi de transformer l'outil en "réseau social" ou tout le monde interagit. GW2Tool a vocation à être un pur outil de browsing d'API.
Le site est relié à un autre fan site pour produire des liens directement vers le sien via un système d'api privée (filtrage IP) à lui.
Sous-projet indépendant
GW2Tool n'est que la partie émergée de l'iceberg, une partie non moins importante est un sous-projet GW2ApiClient qui consiste en un client de connexion à l'api que tout un chacun peut utiliser de manière indépendante à GW2Tool pour interroger l'API officielle. C'est dans ce projet que l'on a des mécanismes de cache MongoBD qui sont étoffés dans GW2Tool.
Imagerie
Pour faciliter l'intégration, j'ai reproduit beaucoup de pictos de jeu sous forme de webfont à partir de SVG que j'ai fait "from scratch".
Productions :
-
Icones diverses
professions, ui, armes, armures, ... -
Stats d'équipement
le graphisme initial est celui du fan site gw2skills.net, j'ai juste vectorisé ses pictos.
Exemples :
Captures d'écran
Profil d'un personnage
Stock de matériaux
PvP