Salut la compagnie,
Aujourd'hui, je vous présente un projet sur lequel j'ai travaillé ces derniers temps (merci le confinement) : L'Expe'Detector. Il s'agit d'un site web ayant pour vocation d'établir des statistiques liées à la V7 d'OGame, et plus particulièrement au sujet des expéditions militaires et du marché V7. Pour la ptite histoire, tout est partit d'un simple script pour calculer les rentas des expées des tops sur Izar. Puis, avec le confinement, le projet a prit de l'ampleur.
Spoiler alert : je ne suis pas du tout développer web, donc les technos utilisées sont relativement archaïques (attention les yeux pour les puristes ^^). On peut voir ça comme un POC (Proof Of Concept) avancé, disons.
TL;DR : Les liens utiles
- Site web : https://www.expedetector.eu
- Discord du projet : https://discord.gg/WsJGC9G
Le Concept
Les statistiques établies sont basées sur les données fournies par l'API de la GameForge (aucun interaction avec l'IG). Etant donné qu'il n'y a pas de statistiques uniquement liés aux expéditions, il faut interpréter les données afin de déterminer ce qui relève des combats entre joueurs / vente / ferraillage et ce qui relève des expéditions en elles-mêmes. Une fois cette interprétation faite, le site tente de déterminer diverses rentabilités (en fonction des compositions d'expéditions les plus classiques). Cette double interprétation fait que les rentabilités proposées sont à titre indicatives (l'API ne fournit pas ces données-là). Dans le cas pratique, il s'avère que ça fonctionne plutôt bien avec les compositions Full Traqueur / Clés+PT / Clés+GT (s'il n'y a pas trop de "bruit" au niveau des points économiques).
Comme l'API ne fournit des données que toutes les heures, il n'est pas possible de discriminer les expéditions unes à unes : tous les évènements proposés sont en fait des regroupements d'évènements du joueur sur une même heure. Et finalement ça tombe plutôt bien étant donné que les joueurs lancent leurs expéditions par vague (et qu'en générale, elles "impactent" toutes au même instant ou au moins dans la même heure, disons). Pour plus de détails, vous pouvez consulter la page d'aide du site.
Note : tout ceci fait que le modèle (et donc le site) ne sera pas pertinent pour des univers récents et/ou pour les expéditions civiles (trop de "bruits").
Les Evènements détectés
Les différents évènements détectés et proposés sont :
- combat(s) d'expédition militaire (sans TN)
- combat(s) d'expédition militaire + au moins un TN (dans la même vague)
- TN uniquement (sans combat)
- combats entre joueurs 1V1, 2V1, 3V1, 1V2, 1V3 (les autres types ne sont pas encore automatiquement détectés, une MAJ proposera que les joueurs puissent les déclarer, voir la ci-dessous)
- Vente / ferraillage (difficile de dissocier les deux tant qu'on a pas détecté un achat correspondant, voir la partie marché)
Exemple de Liste d'évènements
Expédition avec multiples propositions
Expédition Full Traqueurs
Le Market detector
Ce module propose d'effectuer des corrélations entre les ventes et les achats réalisés via le marché V7. Comme pour les expéditions, on ne dispose pas directement de ces informations via l'API, mais on peut effectuer des corrélations / propositions (qui se trouvent souvent être correctes en pratique).
Détection de transactions au marché
World Top
Le World Top propose un classement inter-univers et inter-pays. Enfin, disons une ébauche d'un tel classement car... Actuellement seuls 4 univers hors-France ont été ajoutés au site, donc ça n'a rien d'exhaustif (et il n'y a pas non plus tous les univers FR, Liste des univers de l'Expe'Detector). Cependant les 4 univers hors-France choisis sont ceux où on retrouve les expéditions les plus abusées. On peut notamment retrouver le joueur Russe NERF EXPO FIX BUGS (univers Merkur Russe).
Signalements
Étant donné que les évènements sont liés à diverses interprétations, il y a et il aura des erreurs. Par exemple, dans le cas d'une grosse AG (plus de 4 joueurs), les données fournies par le site seront incorrectes (il y a plusieurs corner cases de ce type, combat mal détecté, etc). C'est là qu’intervient la fonctionnalité de signalement. Chaque évènement peut être signalé afin de remonter un soucis. Voici quelques exemples de signalements :
- Ceci n'est pas une expédition.
- Il s'agit d'une attaque (groupée) non/mal détectée.
- L'explorateur a tapé un joueur au même moment que cette expédition.
- Il ne s'agit pas d'une vente au marché, mais d'un trou noir.
- Il ne s'agit pas d'une vente au marché, mais d'un ferraillage.
- Il n'y a pas eu de combat entre ces joueurs.
- Il y a bien eu un combat entre ces joueurs, mais c'était une AG/DG mal détectée.
Une fois qu'un évènement est signalé, le signalement apparait ouvertement sur le site (et est visible de tout le monde). De plus, il est désormais possible pour l'équipe du site de :
- désactiver l'évènement
- supprimer l'évènement
- supprimer les signalements
- transformer l'évènement (transformer un TN en vente/ferraillage et vis et versa, il sera alors labelé évènement "custom")
Annotations
De la même façon que pour signaler un évènement, on peut aussi annoter un évènement afin d'apporter une information complémentaire telle que :
- Il s'agit d'une composition Full TR.
- Il s'agit d'une composition clés / pt.
- Il s'agit d'une composition clés / GT.
- Il y a eu au moins 2 combats avec des compositions différentes.
- Il s'agit d'une composition exotique.
Objectifs et suite
Comme dit au dessus, le premier objectif était d’abord personnel (histoire de m'occuper pendant le chômage partiel du confinement ^^). Maintenant le but c'est de le présenter à la communauté histoire de partager les idées / retours (bon en vrai, le site a déjà bien bien leaké depuis début juillet ^^). Pour tout ce qui est debug au cas par cas, je vous invite à venir m'en parler sur le Discord Expe'Detector plutôt qu'ici ou ça ne sera pas pratique (de débuger).
Niveau TODO-List :
- Faire en sorte que les utilisateurs puissent ajouter eux-mêmes des évènements (combats massif en AG)
- Ajouter la composition clo/gt dans les suppositions de composition (1clo/1GT ou 1clo/2GT, le choix n'est pas encore bien clair)
- modifier la "renta par défaut" en fonction du choix / annotation
- Améliorer la dashboard de signalement
- Incorporer les alliances au site (peut-être)
- De multiples petites améliorations dont je vous épargne les détails
- Si le concept plait : ajouter d'autres univers, FR ou autre (la liste actuelle est ici : Liste des univers de l'Expe'Detector
Remerciements
Dernier point, je tiens à sincèrement remercier tous les joueurs qui m'ont aidé depuis le début du projet. Les potes d'unis, mais aussi ceux qui sont venus car le projet les intéressait. Une partie d'eux sont des joueurs avec qui je n'ai jamais eu de contact avant, et ils ont été d'une grande aide, tant au niveau technique (que faire et comment ?) qu'au niveau motivation. Merci pour les idées, la motivation et les 10aines de RC partagés !
Dans le désordre, merci à papi33 Izual petitphoque Lacey dadawar Vossing tutoromus Lautruche Flo.
Et merci à la seconde vague de renforts Life is Life DoXa Makarov Saignor Sanctu Carpect WaR_MaChInE