Utiliser l'API Kongregate dans vos jeux flash

Kongregate est l'un des plus grands portails de jeux Flash sur le net et dispose de sa propre API qui peut être intégrée à vos jeux (pour laquelle Kongregate vous récompense même financièrement). Dans ce didacticiel, je vais vous montrer comment implémenter l'API Kongregate dans vos jeux et commenter en détail ce dont cette API est capable et pourquoi vous devez l'utiliser..

(Notez que ce tutoriel suppose que vous avez déjà un compte Kongregate; si vous n'en avez pas, créez-en un maintenant.)


Aperçu du résultat final

Jetons un coup d'œil à ce que l'API nous permet de faire:

Insignes

Messages de masse

Scores élevés

Il y a une autre grande raison d'implémenter l'API…


Étape 1: Motivons-nous

Avant de plonger dans les aspects techniques de la mise en œuvre de l'API Kongregate, commençons par nous mettre un peu en colère et assurons-nous que nous voulons réellement l'implémenter..

Il y a de nombreuses raisons d'implémenter l'API, mais pour la plupart des développeurs, rien ne parle plus fort que l'argent, et tout cela est impliqué. Lorsque vous téléchargez votre jeu sur Kongregate, vous gagnez automatiquement 25% des revenus publicitaires générés par la page de votre jeu..

Ça s'ameliore; si vous implémentez leur «API Statistiques et défis», vous recevrez 10% supplémentaires! Enfin, si votre jeu est exclusif à Kongregate, ou sponsorisé par ceux-ci, vous recevez 15% supplémentaires. Cela vous donne la possibilité de gagner jusqu'à 50% des revenus publicitaires de votre jeu sur Kongregate. Si vous vous demandez combien cela coûte, consultez certaines de mes statistiques personnelles:


Étape 2: Configuration de notre environnement de travail

Pour ce tutoriel, nous utiliserons FlashDevelop, un éditeur open source gratuit (et étonnant) pour les développeurs. Nous ferons tout dans des fichiers .as simples, donc si vous souhaitez suivre en utilisant Flash IDE, vous ne devriez pas avoir de problèmes. Si vous souhaitez utiliser FlashDevelop et que vous n’êtes pas familier avec ce dernier, consultez cet excellent guide du débutant pour FlashDevelop afin de vous aider à choisir ce que je considère comme le meilleur éditeur AS3 du marché..

Pour commencer, ouvrez FlashDevelop, allez dans l'onglet Projet et sélectionnez “Nouveau projet”. À partir de là, sélectionnez «Projet AS3 avec pré-chargeur». Alternativement, vous pouvez saisir le Preloader.as et Main.as fichiers du téléchargement source, et tout simplement suivre.

Votre fichier devrait être un barebone Main.as fichier, comme ceci:

 package import flash.display.Sprite; import flash.events.Event; / ** *… * @author Votre nom * / [Frame (factoryClass = "Preloader")] public class Main étend Sprite fonction publique Main (): void if (stage) init (); sinon addEventListener (Event.ADDED_TO_STAGE, init);  fonction privée init (e: Event = null): void removeEventListener (Event.ADDED_TO_STAGE, init); // point d'accès   

Rien de ce qui précède ne devrait être nouveau pour vous; Si c'est le cas, tout ce que vous devez savoir, c'est que ce fichier est le point d'entrée de notre programme, c'est ici que tout commence. Si vous compilez ceci avec FlashDevelop, vous devriez obtenir un écran blanc, sans erreur de compilation..


Étape 3: connectons-nous

Avant de plonger dans toutes les fonctionnalités intéressantes de l'API, nous devons nous assurer que l'API est opérationnelle..

Contrairement à de nombreuses API de sponsor, l'API Kongregate n'est pas un ensemble de fichiers autonome que nous devons compiler avec notre projet. L'API est en fait stockée sur le serveur Kongregate et est chargée au moment de l'exécution. Il existe plusieurs façons de procéder dans vos projets, mais dans l’intérêt de ce didacticiel, nous allons simplement nous connecter au sein de notre Main.as, et enregistrer une référence à ce sujet.

Pour commencer, copiez le code suivant dans notre Main.as fichier juste en dessous des importations existantes:

 import flash.display.LoaderInfo; import flash.display.Loader; import flash.net.URLRequest; import flash.events.Event; import flash.system.Security;

Ce qui précède ne représente que quelques importations simples qui nous permettront d’utiliser les classes nécessaires au chargement dans l’API Kongregate..

Ensuite, nous allons ajouter une variable pour stocker notre référence à l'API Kongregate. Allez-y et ajoutez ce qui suit juste au-dessus du constructeur de notre fichier Main.as.

 var kongregate privé: *;

Notez que le type de données de notre variable kongregate est *. Si cela ne vous est pas familier, nous disons simplement au compilateur que le Kongregate variable acceptera n'importe quel type de données, un peu comme un joker.

(Notez également que dans un jeu réel, vous souhaitez stocker votre référence à l’API à un emplacement auquel votre projet entier a accès, tel qu’un const statique public. Cette référence est nécessaire pour que vous puissiez utiliser l’API de n’importe où dans votre projet, pour quelque fin que ce soit, plutôt que simplement Main.as déposer lors du premier démarrage.)

Ce prochain morceau de code sera contenu dans une fonction personnalisée sous le nom de initKongregateAPI (). Ce n'est pas vraiment nécessaire, mais je préfère encapsuler des idées lors de l'écriture de code, car cela permet de garder le code lisible et de le rendre facile à utiliser..

Allez-y et ajoutez cette fonction sous le init fonctionner dans Main.as.

 fonction privée initKongregateAPI (): void // Extrait le chemin d'accès de l'API à partir de FlashVars var paramObj: Object = LoaderInfo (root.loaderInfo) .parameters; // Le chemin de l'API. L'API "shadow" se chargera si vous testez localement. var apiPath: String = paramObj.kongregate_api_path || "http://www.kongregate.com/flash/API_AS3_Local.swf"; // Autorise l'accès de l'API à ce fichier SWF Security.allowDomain (apiPath); // Charge la requête var de l'API: URLRequest = new URLRequest (apiPath); var loader: Loader = new Loader (); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); loader.load (demande); this.addChild (chargeur); 

Bien que cela puisse ressembler à beaucoup de code, ce n'est vraiment pas beaucoup, et avec les commentaires, c'est assez facile à suivre.

Comme vous le verrez, dans la première partie, nous créons une variable pour stocker le chemin d'accès de l'API à partir des FlashVars (si vous ne savez pas ce que c'est, cherchez-les très rapidement, c'est une excellente chose à comprendre).

Dans le deuxième bloc, nous déterminons si le fichier SWF se trouve sur le site Web de Kongregate ou s’exécutent localement, et nous attribuons les informations appropriées à l’utilisateur. apiPath variable.

Ensuite, nous donnons à l’API un accès au fichier SWF, avec un simple security.allowDomain appel, où nous passons dans le apiPath comme paramètre.

Nous créons ensuite un nouveau URLRequest objet, qui obtient le apiPath passé au constructeur, un nouveau Chargeur objet, et ajoutez un écouteur d'événements pour le chargeur qui appellera loadComplete lorsque vous avez terminé.

Enfin, nous appelons loader.load et transmettez notre demande (le nouveau URLRequest objet, qui contient le apiPath de l'API Kongregate). Si vous comprenez ce qui vient de se passer, c'est parfait. si ce n'est pas le cas, ne vous en faites pas car vous n'aurez plus à le toucher.

N'oubliez pas de l'appeler!

Maintenant que la fonction initKongregateAPI est créée et contient tout le code de connexion, nous devrions probablement nous assurer que cette fonction est appelée! Il suffit de retourner à la init fonctionner que notre Main.as fichier déjà contenu et ajoutez un appel de fonction à initKongregateAPI après la ligne qui "point d'entrée" ligne, comme si,

 fonction privée init (e: Event = null): void removeEventListener (Event.ADDED_TO_STAGE, init); // point d'entrée initKongregateAPI (); 

Enfin, nous devons ajouter que loadComplete fonction, à appeler lorsque le ACHEVÉE L'événement est tiré de notre code précédent. Ajouter cette fonction sous le initKongregateAPI fonctionner dans Main.as.

 // Cette fonction est appelée lorsque le chargement est terminé. Fonction privée loadComplete (event: Event): void // Sauvegarde la référence de l'API Kongregate kongregate = event.target.content; // Connectez-vous au back-end kongregate.services.connect (); // Vous pouvez maintenant accéder à l'API via: // kongregate.services // kongregate.user // kongregate.scores // kongregate.stats // etc…

Le code ci-dessus est super simple; allons au-dessus. Nous commençons par enregistrer une référence à l'API Kongregate. Comme vous pouvez le constater, nous référençons l’API Kongregate à travers le paramètre d’événement passé en, via event.target.content - assez simple.

Il ne nous reste plus qu'à nous connecter et notre fichier SWF est prêt à fonctionner. Comme vous pouvez le constater, nous nous connectons en appelant le kongregate.services.connect méthode. Aucun argument requis.

Bien que cela puisse sembler beaucoup de travail, ce n'était vraiment pas le cas. J'ai simplement passé en revue le processus de connexion de manière très détaillée, afin que vous puissiez comprendre comment nous obtenons réellement l'accès à l'API, plutôt que de simplement avoir cet accès et de l'utiliser. Maintenant que vous le comprenez, vous pouvez utiliser tout ce qui précède comme code standard.


Étape 4: L'API Statistics & Challenges

Maintenant que nous sommes connectés, nous pouvons jeter un coup d'œil à la fonctionnalité la plus importante de l'ensemble de l'API: la partie Statistiques et défis. Cette API envoie les statistiques relatives aux joueurs au serveur Kongregate, ce qui permet un certain nombre de choses..

Tout d’abord, c’est le moyen le plus simple de permettre aux utilisateurs de se disputer des scores élevés sur Kongregate. Une fois l’API intégrée, la barre latérale de Kongregate comprendra un nouvel onglet intitulé «RÉALISATIONS», qui se trouve à côté de l’onglet «CHAT». Les joueurs peuvent consulter les classements de toutes les statistiques que vous envoyez aux serveurs, ce qui peut aller du score le plus bas au nombre total d'ennemis vaincus..

La deuxième utilisation, bien plus importante, est de permettre à Kongregate d’utiliser les statistiques que vous soumettez pour créer des «badges» pour vos jeux. Les badges sont au cœur de l'expérience utilisateur de Kongregate et ressemblent beaucoup aux systèmes de réalisation sur des plateformes telles que Xbox LIVE..

La meilleure partie de l'ajout de badges à votre jeu est que celui-ci sera présenté pour une courte durée, ce qui augmente considérablement le nombre de vues que vous obtenez et, par conséquent, vos revenus publicitaires. Même après que votre jeu soit sous les feux de la rampe, tous les jeux portant un badge sur Kongregate continuent de recevoir un nombre accru de points de vue sur les jeux normaux, ce qui vous procure un excellent flux de revenus à long terme..

Notez que les badges ne sont pas ajoutés par les développeurs, mais sont créés par le personnel de Kongregate. Vous aurez besoin d'un jeu de haute qualité pour être sélectionné, mais vous aurez également besoin de l'API pour la configuration. Allons-y, mettons la moitié de la bataille à l'écart.!


Étape 5: Préparation du back-end

Pour utiliser réellement les statistiques que nous enverrons, Kongregate exige d’abord que nous informions leur serveur des informations qu’il devrait être prêt à recevoir de notre part..

Pour ce faire, nous allons simplement à la page Statistiques pour notre jeu sur le site Web Kongregate. Cela peut être trouvé dans la page "Edit Game", ou en ajoutant /statistiques à la fin de l'URL de votre jeu (par exemple, http://www.kongregate.com/games/EpicShadow/pixel-purge/statistics). Pour ce tutoriel, nous allons simplement télécharger notre SWF de test en tant que «jeu»..

Avant d'ajouter des statistiques à l'API Statistics & Challenges, nous devons d'abord comprendre les quatre types de statistiques pouvant être utilisées et les règles auxquelles ils sont liés. Les valeurs doivent être positif, et doit être entiers entiers. Les quatre types sont les suivants:

  • Max: La valeur sur le serveur sera remplacée si la nouvelle valeur est supérieure à la valeur stockée. Par exemple, un score élevé de 152 000 remplacerait un ancien score élevé de 120 000.
  • Min: La valeur sur le serveur sera remplacée si la nouvelle valeur est inférieure à la valeur stockée. Par exemple, dans un jeu de course, un temps au tour de 31 secondes remplacerait une valeur plus ancienne de 35..
  • Ajouter: La nouvelle valeur sera ajoutée à la valeur stockée. Une utilisation courante de cette méthode est le nombre total d’ennemis vaincus, la mort de joueurs, etc. Un trop grand nombre de demandes adressées au serveur peut générer des données inexactes. Il est donc conseillé de ne pas envoyer les données en vrac, par exemple lorsqu'un niveau est terminé ou que le joueur a meurt.
  • Remplacer: La nouvelle valeur remplacera la valeur stockée quoi qu'il arrive. Cela peut être utilisé pour un certain nombre de choses, telles que le temps de survie moyen ou le classement des joueurs.

Il est extrêmement important de savoir lequel des types ci-dessus vous devez utiliser pour chacune de vos statistiques de jeu. Assurez-vous donc de vous familiariser avec la liste ci-dessus. Vous voudrez évidemment une liste de statistiques que votre jeu doit envoyer à Kongregate, alors assurez-vous de les avoir préparées avant de plonger dans l'étape suivante lorsque vous soumettez un jeu..

Pour les besoins de ce tutoriel, nous utiliserons simplement les statistiques suivantes:

  • Total de clics (Ajouter)
  • Clics Max (Max)
  • Dernier X (Remplacer)

Une fois votre liste préparée, allez à la page Statistiques de votre jeu et entrez les données requises. Une fois le travail final effectué sur la page Statistiques, le jeu sera prêt à soumettre des données au serveur Kongregate..


Étape 6: Comment envoyer des statistiques

Pour envoyer des données au serveur, nous appelons simplement la fonction "submit", qui ressemble à ceci:

 submit (statName: String, value: Number): void

Comme vous pouvez le constater, la fonction prend deux paramètres:

  • statName est le nom de votre stat. Il est très important que la chaîne transmise soit identique (en respectant la casse) au nom de la statistique que vous avez indiquée à l'étape précédente lors de la préparation du serveur pour la gestion de vos statistiques..
  • valeur est la valeur numérique réelle à transmettre. Même si le type de données est Number, rappelez-vous que votre valeur doit être un positif, entier entier.

Pour appeler cette fonction dans votre jeu, procédez comme suit:

 kongregate.stats.submit (“Votre chaîne de caractères”, statValue); // la valeur de statistique peut être 1, 500, 5342324, etc..

Même si nous pouvions envoyer quatre types de statistiques différents, cette fonction n’envoie que la valeur; le serveur lui-même examinera les informations fournies à l'étape précédente pour déterminer comment traiter les données entrantes. C'est aussi simple que ça; maintenant nous savons comment envoyer des données au serveur.


Étape 7: Préparer notre projet pour l'envoi de statistiques

Maintenant que nous avons préparé le back-end sur le site Web de Kongregate et que nous savons maintenant comment envoyer des données, essayons ce projet.

La première chose à faire est d’ajouter du code à notre projet afin d’envoyer nos statistiques. La saisie de la souris étant la méthode la plus simple à suivre, j'ai choisi les statistiques relatives à la souris. Comme vous l'avez vu à l'étape précédente, j'ai choisi le nombre maximal de clics, le nombre total de clics et le dernier X.

Le nombre maximal de clics sera le meilleur score pour combien de fois nous cliquons dans une même partie afin de démontrer le type Max; Le nombre total de clics correspond au total général de tous les clics que nous avons effectués, pour illustrer le type Ajouter; et Last X sera la position x de notre dernier clic, pour illustrer le type de remplacement.

Pour suivre nos clics de souris, nous devons importer le MouseEvent classe. Retournez à Main.as et ajoutez ce qui suit à vos importations:

 import flash.events.MouseEvent;

Nous allons maintenant avoir besoin d'ajouter une variable pour notre statistique de clics max., Afin de garder une trace du nombre total de clics par session de jeu. Juste en dessous de l'endroit où nous avons ajouté le Kongregate variable de référence (de type de données *), ajoutez ce qui suit:

 var privé maxClicks: int;

Nous aurons besoin d'un écouteur d'événements pour écouter nos clics, nous allons donc l'ajouter maintenant. dans le init fonction, juste en dessous de l'appel à initKongregateAPI, ajoutez ce qui suit:

 // Écouteur d'événements pour les clics de souris stage.addEventListener (MouseEvent.CLICK, clicked);

Comme vous pouvez le constater dans le code ci-dessus, la fonction appelée à chaque fois que l'événement qu'il a déclenché s'appelle cliqué. Allons-y et créons cette fonction. Ajouter ce qui suit ci-dessous votre loadComplete une fonction:

 fonction privée sur laquelle vous avez cliqué (événement: événement): void maxClicks ++; kongregate.stats.submit ("Nombre total de clics", 1); kongregate.stats.submit ("Nombre maximal de clics", maxClicks); kongregate.stats.submit ("Last X", mouseX); 

Tout ce que nous faisons ici augmente la maxClicks variable par 1, puis en soumettant toutes les informations requises au serveur Kongregate. Ceci ajoutera 1 à la statistique Total de clics, enverra le maxClicks variable au serveur, qui déterminera ensuite si elle est supérieure à la valeur précédente et la remplacera si oui, et enverra la position x de notre clic précédent, qui remplacera automatiquement la valeur précédente.

Notre fichier SWF n'est peut-être qu'un écran vide, mais il se passe beaucoup de choses et nous allons le voir en action. Assurez-vous de bien compiler le projet avant de poursuivre..


Étape 8: Test de notre projet

Il est maintenant temps de télécharger notre projet et de le voir en action.

Retournez sur le site Web de Kongregate, rendez-vous sur votre page de jeu et téléchargez la version finale de notre projet. Une fois que vous avez téléchargé le projet, vous êtes amené à un écran de prévisualisation, où nous pouvons tester notre projet avant de le publier. Pour faire gagner beaucoup de temps et d’énergie au personnel de Kongregate, accordez une faveur à tout le monde. ne pas appuyer sur publier sur votre test SWF. (Si vous travaillez sur un vrai jeu, continuez, mais dans l'intérêt de ce tutoriel, nous ne publierons pas ce projet.)

Une fois que vous êtes sur la page de test, donnez quelques clics au jeu. Actualisez la page et vous devriez maintenant voir qu'il y a un onglet “HIGH SCORES” à côté des onglets “CHAT” et “GAME”. Si vous avez tout fait correctement jusqu'à ce point, vous devriez avoir une liste déroulante qui lit actuellement «Dernier X», qui contient également «Nombre maximal de clics» et «Total de clics». Notez qu'en cliquant rapidement, vous obtiendrez des statistiques inexactes, le serveur ne pouvant pas suivre toutes les demandes, cliquez donc lentement pour obtenir les meilleurs résultats. C’est la raison pour laquelle j’ai conseillé tout à l’heure que vous envoyez d’importants lots de données lors du décès ou de l’achèvement du niveau, si possible.

Eh bien, voilà: vous avez maintenant la partie la plus importante de l'API Kongregate opérationnelle. Si votre projet ne fonctionne pas à ce stade, assurez-vous que vos noms de statistiques dorsaux Kongregate sont dactylographiés exactement comme ils le sont dans votre fonction de soumission - respectent la casse - car c'est généralement le problème..

Vous pouvez également trouver le code complété dans le fichiers finaux dossier dans le téléchargement source, alors comparez votre code à celui si vous rencontrez toujours des problèmes.


Étape 9: Communications par messages de masse

Vous avez déjà sorti un jeu, puis plus tard, vous avez vraiment voulu toucher tous vos fans? Eh bien, avec l'API Kongregate, vous pouvez le faire, du moins pour tous vos fans de Kongregate..

Il y a quelques restrictions sur qui peut le faire, mais ces restrictions sont dans le meilleur intérêt des développeurs et des joueurs. Pour pouvoir vous qualifier, votre jeu doit recevoir une note supérieure ou égale à 3,75, et avoir au moins 10 000 jeux..

Vous pouvez envoyer un message «joueurs actifs» au plus une fois tous les sept jours. Ces messages seront envoyés aux joueurs ayant joué au moins trois fois et au moins une fois au cours des dix derniers jours..

Vous pouvez envoyer un message «joueurs inactifs» au plus une fois tous les 30 jours. Ces messages seront reçus par tous les joueurs ayant joué au moins cinq fois, mais pas au cours des dix derniers jours..

Il existe de nombreuses raisons pour envoyer ces messages à vos lecteurs, par exemple pour les avertir des corrections de bugs ou pour les informer de la suite. Indépendamment de l'utilisation que vous en faites, c'est un système extrêmement utile qui peut vraiment vous aider à tirer parti de vos fans..

Pour plus d'informations, consultez ce guide..


Tellement plus…

Bien que nous ayons beaucoup couvert dans ce tutoriel, l'API Kongregate est capable de faire beaucoup plus. Malheureusement, je devrais écrire un petit livre pour passer en revue toutes les fonctionnalités, en particulier celles qui sont utiles pour les MMO basés sur le Web. Si vous souhaitez connaître les autres fonctionnalités de l'API, je vous recommande de consulter le Kongregate Developers Center pour plus d'informations..

Maintenant que vous savez comment utiliser l'API Kongregate, je vous encourage fortement à l'ajouter à tous vos futurs jeux. si vous avez de la chance, vous pourriez même obtenir des badges, et c'est alors que le vrai plaisir commence.