Site communautaire

  • Bonjour à toutes et à tous,


    Développant, sur mon temps perdu, des petits outils utiles ou pas selon les points de vue, concernant Travian Kingdoms, je me permets de faire un topo ici concernant les sites extérieurs.


    1. Les conditions


    Pour ça, référez-vous au post concernant les fan-sites (lien ici)


    2. Récupérer les données d'un serveur de jeu.


    Auparavant, il s'agissait d'un fichier map.sql qu'il était aisé de télécharger :

    HTML
    1. http://[gameworld]/map.sql


    [gameworld] : l'adresse du serveur de jeu, par exemple : http://ks1-fr.travian.com/ .


    Cependant, TravianGames a évolué plus rapidement que les sites communautaires ou d'outils extérieurs (gettertools, kirilloid, etc... ), et maintenant les données sont transmises au format JSON.


    Avant d'aller un peu plus loin, je passe par des conventions que j'expliquerai au fur et à mesure qu'elles apparaîtront.


    Maintenant, pour récupérer les données, il faut passer par quelques étapes supplémentaires.
    2.a Obtention d'une clef d'API


    Pour chaque gameworld (ou serveur de jeu), il faut une clef d'API. Sans cette clef, pas de données.


    Pour l'obtenir, rien de plus simple :
    Dans votre navigateur internet favori, écrivez l'adresse suivante :

    HTML
    1. http://[gameworld]/api/external.php?action=requestApiKey&email=[email]&siteName=[siteName]&siteUrl=[webSiteUrl]&public=[siteDisplay]


    Les conventions :
    [email] : une adresse e-mail valide via laquelle TravianGames pourra vous contacter.
    [siteName] : un nom de site internet (le texte que vous avez dans vos onglets, comme par exemple : "Travian: Kingdoms fr1")
    [webSiteUrl] : l'adresse de votre site internet, que TravianGames pourra consulter si l'envie leur prend, par exemple : http://www.cecinestpasunvraisiteinternet.stupide .
    [siteDisplay] : Là, c'est soit "false" si vous voulez rester caché, ou "true" si vous voulez que TravianGames donne un lien vers votre site internet dans un futur assez lointain (je n'ai pas encore une seule fois vu une url dévoilée ...)


    Quand vous aurez validé l'adresse web, du texte s'affichera comme suit :

    JavaScript
    1. {
    2. requestId : string,
    3. error: string,
    4. response:
    5. {
    6. privateApiKey : string,
    7. publicSiteKey : string
    8. }
    9. }


    Attention
    Ce n'est pas comme cela que cela s'affichera vraiment. Vous aurez en réalité un fratras de caractères affichés à l'écran, dans ce qui vous semblera être le bordel le plus complet.
    L'important, c'est de voir si vous avez "error" d'affiché :
    - si oui : vous êtes dans le pétrin, vérifiez que vous avez tout bien fait comme il faut.
    - si non : ok, on continue.


    Dans le cas présent, j'ai écrit "string" plusieurs fois. En programmation, cela signifie chaîne de caractères. Et vous devriez en avoir 3, puisque la ligne "error" n'est pas apparue.
    Il est important de sauvegarder les deux clefs privateApiKey et publicSiteKey, car elles sont les uniques moyens pour vous de récupérer les données de jeu!


    2.b Modification des paramètres d'une clef d'API


    Vous avez eu les clefs, mais vous devez penser à mettre à jour les informations que vous avez envoyé à TravianGames.
    Votre email a peut-être changé, ou bien le nom de votre site, ou bien son adresse ... ou bien vous voulez dévoiler aux joueurs que votre site est fonctionnel?


    Pour cela, rien de plus simple :

    HTML
    1. http://[gameworld]/api/external.php?action=updateSiteData&privateApiKey=[privateApiKey]&&email=[email]&siteName=[siteName]&siteUrl=[webSiteUrl]&public=[siteDisplay]


    Voilà la première utilisation possible de la clef privée.


    En réponse à votre requête, vous devriez avoir la valeur "response" à "true" si vous l'avez bien écrite.
    2.c Récupérer les données


    Vos données sont à jour, et maintenant, vous voulez récupérer les données du serveur de jeu sur lequel vous vous êtes inscrit.


    Voici le lien à suivre :

    HTML
    1. http://[gameworld]/api/external.php?action=getMapData&privateApiKey=[privateApiKey]


    Avec ce lien, vous récupérerez un instantanné des données du serveur de jeu du moment auquel vous aurez envoyé votre requête.


    Il y a un argument que vous pouvez ajouter au lien précédent :

    HTML
    1. http://[gameworld]/api/external.php?action=getMapData&privateApiKey=[privateApiKey]&date=[date]


    Cependant, la date doit être formatée comme dans cet exemple : 27.04.2014 sinon, ça marchera pas.


    Date ou pas, voici comment sera structuré la réponse de l'API :


    (Je sais, cet extrait de code est long, mais il permet de voir comment les informations sont structurées)


    2.d Comprendre la structure des données


    Les données reçues par la dernière requête sont structurées comme suit (je ne prends en compte que la partie "response"):
    - gameworld,
    - players,
    - alliances,
    - map,
    - landscape.


    (Je n'ai pas inclus landscape dans mon extrait ... je vous laisser récupérer des données pour comprendre pourquoi :p)


    2.d.i Les données GAMEWORLD


    Elles sont constituées des informations suivantes :

    Valeur Type Description
    name string Le nom du serveur, "fr1" par exemple
    startTime int heure de démarrage du jeu sur le serveur, en millisecondes (Timestamp UNIX)
    speed int vitesse du serveur, en particulier pour la production de ressources
    speedTroops int vitesse des troupes sur le serveur
    lastUpdateTime int heure à laquelle a eu lieu la dernière modification du serveur
    date int information date/heure de génération du résultat de la requête
    version string version du jeu ... je n'ai jamais vu que 1.0


    2.d.ii Les données PLAYERS
    2.d.iii Les données ALLIANCES
    2.d.iv Les données MAP


    --- le reste sera écrit prochainement ---

    Alpha : Knud, in "M&Ms" - Closed Beta : Knud, in "xTools" - Fast Iteration Server : Knud, in "TOP" - COM2 (Open Beta) : Knud, in "xTools" *
    FR5 : Ragnar, in "CMDB" *

    The post was edited 2 times, last by Knud: Modification du lien vers le post de "fan-site policy" ().

  • Je fais une transposition d'un sujet qui existe depuis l'alpha de T:K.


    Juste un "up" d'un sujet que certains ont dû chercher ... ;)

    Alpha : Knud, in "M&Ms" - Closed Beta : Knud, in "xTools" - Fast Iteration Server : Knud, in "TOP" - COM2 (Open Beta) : Knud, in "xTools" *
    FR5 : Ragnar, in "CMDB" *

  • Bonjour,


    Après discussion avec Milvort, je vais ouvrir un autre sujet, qui sera mieux organisé, à propos du même sujet.


    Si un modérateur pouvait clore ce sujet, je l'en remercie d'avance.


    Cordialement,


    Knud

    Alpha : Knud, in "M&Ms" - Closed Beta : Knud, in "xTools" - Fast Iteration Server : Knud, in "TOP" - COM2 (Open Beta) : Knud, in "xTools" *
    FR5 : Ragnar, in "CMDB" *


  • 1. Les conditions


    Pour ça, référez-vous au post concernant les fan-sites (lien ici : http://forum.kingdoms.travian.com/fr/showthread.php?t=6 )

    Le lien ne mène nul part ? Pourquoi ? Il n'existe plus de fan sites ?

    "La meilleure vengeance est de mépriser l'injurieux, et d'oublier l'offense."Citation de Madeleine de Puisieux (1798)


    "L'avantage d'être intelligent, c'est qu'on peut toujours faire l'imbécile, alors que l'inverse est totalement impossible."
    Citation de Albert Einstein (1934)

  • J'ai édité, et mis à jour le lien, vers le post : Fan Site Policy

    Alpha : Knud, in "M&Ms" - Closed Beta : Knud, in "xTools" - Fast Iteration Server : Knud, in "TOP" - COM2 (Open Beta) : Knud, in "xTools" *
    FR5 : Ragnar, in "CMDB" *