Développeur web full-stack - Freelance

BFW Systems (2013 - ...)

Il s'agit de plusieurs projets réunis ensemble. Un framework PHP (BFW) et différents modules.
Le framework est basé sur 3 principes :
  • Légèreté : Ne pas devenir comme l'était ZF1 avec plusieurs Mo de code
  • Flexibilité : Laisser le choix des libs utilisé pour le routage, la vue, etc
  • Performances : Ne pas nécessiter d'avoir un ou plusieurs systèmes de cache pour pouvoir générer une page basique
Les modules sont justement ce qui permet de répondre au principe de flexibilité et permettant que peu de libs soient intégrées de base, mais importées et connectées au framework via les modules.

Aujourd'hui la dernière version en date est la v3.0.0-rc11 et continue d'évoluer régulièrement via les retours que j'obtiens.
Il s'agit de mon plus gros projet personnel à ce jour.

Vous pouvez suivre les projets directement sur la page organisation github de BFW Systems.

Addons pour The Elder Scrolls Online (2019 - ...)

Étant joueur de The Elder Scrolls Online, et le jeu acceptant les addons, je n'ai pas pu m'empêcher d'en créer 😄.
Vous pouvez retrouver mes addons sur ma page esoui.
Les addons sont développés en lua.

LibWorldEvents
Depuis la sortie du DLC Elsweyr (printemps 2019) le jeu contient un nouveau système pour les évènements de zone dans l'api exploitable par les addons appelés WorldEvent.
Sur les maps d'Elsweyr nord et sud, ce système est utilisé pour les évènements de zone où des dragons apparaissent.
Sur les maps du Bordeciel Occidante, Griffenoir et La crevasse, ce système est utilisé pour les évènements de zone où des tempêtes apparaissent.
Cette librairie exploite l'api fourni afin de donner toutes les informations à propos des dragons et tempêtes présents sur la zone.

DragonTracker
Exemple n°1 en jeu des infos affiché par l'addon   Exemple n°2 en jeu des infos affiché par l'addon
Les statuts des 3 dragons d'Elsweyr Nord en temps réel à différents moments.

Cet addon utilise la librairie LibWorldEvents afin d'afficher en jeu le suivi du statut de chaque dragon de la zone où est le joueur. Si le joueur est sur une zone sans évènements de dragon (pas à Elsweyr), l'addon n'affiche rien.

DragonNextLocation
Exemple en jeu de l'emplacement où le dragon du sud-ouest va se poser   Exemple en jeu de l'emplacement où le dragon du nord va se poser   Exemple en jeu de l'emplacement où le dragon du sud-est va se poser
L'icône en tête de dragon est l'emplacement actuel dans le ciel du dragon (affiché par le jeu), et le même avec une flèche vers le bas est l'icône ajoutée par l'addon indiquant où il va se poser.

Cet addon utilise aussi la librairie LibWorldEvents afin de récupérer l'emplacement où le dragon (qui vol lors de son apparition sur la map) va se poser. Depuis la mise à jour DragonHold (ajoutant la map d'Elsweyr Sud), les dragons peuvent se réenvoler s'ils ne sont pas en combat; l'addon permet aussi dans ce cas d'afficher où le dragon va atterrir.
Autre dépendance, LibMapPins qui permet d'ajouter sur la carte un icône (celui de l'emplacement de l'atterrissage en l'occurrence).

Survey Zone List
Exemple en jeu, l'interface présente la liste des zones ayant des repérages, le nombre de node récolté sur le spot, et le status du spot
Exemple en jeu, l'interface présente la liste des zones ayant des repérages, le nombre de node récolté sur le spot, et le status du spot>
Cet addon permet de suivre en temps réel via une interface "tête-haute" la liste de toutes les zones où sont les repérages et les cartes aux trésors dans le sac du joueur.
Il permet aussi pendant un repérage de connaître l'état du spot, si les 6 nodes ont bien été récoltés, s'il on a fini à ce spot ou si on doit revenir parce qu'on avait plusieurs fois le même repérages, etc.

Writ Style Price
L'interface présentant la liste de toutes les commandes de maître pour lesquelles le style est inconnu, avec le prix du style
L'interface présentant la liste de toutes les commandes de maître pour lesquelles le style est inconnu, avec le prix du style>
Cet addon permet de lister toutes les commandes de maîtres présente dans le sac, la banque, et les coffres de maison pour lesquelles le style demandé n'est pas connu sur le compte. Avec pour chaque page de style, le prix moyen actuel.

Annotations Reader (2019 - ...)

Il s'agit d'un lecteur d'annotations pour les classes PHP.

Actuellement la plupart des projets utilisent Doctrine Annotations, cependant il a l'inconvénient de faire de la lecture disque à chaque accès à une classe. Lire un ou plusieurs fichiers du disque à chaque appel étant mauvais pour les performances, et ce fonctionnement étant trop ancré dans la lib, il n'était pas possible de simplement la forker.
J'ai vérifié les différentes autres libs existantes pour lire les annotations, mais aucune ne me convenait, j'ai donc créé la mienne.

Plus d'informations peuvent être trouvées sur sa page github.

Dependency Tree (2016 - ...)

Il s'agit d'une librairie permettant de générer un arbre de dépendances à partir d'informations données.
À l'origine j'ai créé ce projet pour le système de chargement des modules de BFW.
Le principe de fonctionnement peut-être retrouvé dans le README sur la page github du projet.

Neverwinter Enchantments Prices (2018)

image de l'interface de Neverwinter Enchantments Prices Il s'agissait d'un site permettant de suivre l'évolution des prix des différents types d'enchantements sur le jeu Neverwinter.

Les enchantements sont très importants puisqu'ils permettent d'avoir des effets supplémentaires non négligeables lors des combats.
Cependant, du fait de leurs aspects importants, les prix pouvaient parfois être exorbitants. C'est pourquoi un suivi des coûts était nécessaire afin d'éviter de se faire arnaquer, mais aussi pour pouvoir acheter au meilleur prix.

Un autre aspect important des enchantements, leurs niveaux. Plus il était élevé, et plus son effet augmente. Il est donc nécessaire pour avoir un bon perso d'avoir un niveau minimum pour ses enchantements. Mais le coût des composants nécessaire à l'évolution de l'enchantement est lui aussi exorbitant. Il est donc nécessaire de pouvoir faire un suivi de leurs coûts (à eux aussi), mais aussi de prévoir le nombre nécessaire.

Ainsi le site permet aussi un comparatif pour chaque niveau entre le prix en l'achetant directement au niveau, ou en le faisant évoluer depuis le niveau précédent. Il y a parfois de bonnes surprises...

Le code est disponible sur la page github du projet.

Twitzer Timeline (2017 - 2019)

Il s'agit d'une interface pour suivre ma timeline Twitter sans avoir tous les problèmes que peut avoir l'interface officielle.
Avec cette interface, je n'ai que les tweets de ma timeline, je n'ai pas les "au cas où vous auriez manqué", les "xxx à aimé", etc.
L'interface est protégée afin que seul son utilisateur ait accès à sa timeline.
L'API étant limité à 200 tweets par appel, et puisque je ne ne voulais pas une sorte de système de pagination, j'ai ajouté par la suite un système via une tâche cron permettant de récupérer régulièrement les tweets afin les lire plus tard.

Bookmarks (2017)

image de l'interface de Bookmarks Créé afin de remplacer le compte Delicious que j'utilisais lorsque le site devenait de plus en plus inutilisable.
Cette application permet de sauvegarder des bookmarks, et de les taguer.
J'avais aussi créé une extension pour google chrome afin de bookmarker le site visité sur le serveur.

NMEA Parser (2017)

Il s'agit d'une lib qui permets de lire des lignes au format NMEA et d'en extraire les données.
J'avais fait ce lecteur pour les besoins d'un projet qui a été abandonné depuis.

Plus d'informations peuvent être trouvées sur sa page github.

Runes Of Magic HV (2013 - 2014)

image de l'interface de Runes Of Magic HV Ce projet permet de simplifier la gestion de l'HV (hôtel des ventes) sur le jeu Runes of Magic pour des groupes de vendeurs ou pour un vendeur seul.
Chaque joueur peut gérer ses mises en vente pour tous ses personnages, voir un historique des ventes passées et de générer des graphiques de ventes.
Pour les groupes de joueurs, il leur est possible de voir les ventes de chaque personnage du groupe afin de plus simplement s'aligner entre eux.
Tous les items présents en jeu sont aussi présents dans l'application via un import. L'import fonctionne via un extract de fichier du jeu, gzipé et mis sur google drive, puis importé dans l'application afin d'insérer les nouveaux items.

Le code est disponible sur la page github du projet.