Usando la API de Kongregate en tus juegos flash

Kongregate es uno de los portales de juegos Flash más grandes de la red, y tiene su propia API que se puede integrar en tus juegos (por lo cual Kongregate incluso te recompensa financieramente). En este tutorial, te mostraré cómo implementar la API de Kongregate en tus juegos y también te explicaré de qué es capaz la API y por qué debes usarla..

(Tenga en cuenta que este tutorial asume que ya tiene una cuenta de Kongregate; si no lo tiene, cree una ahora).


Vista previa del resultado final

Echemos un vistazo a lo que la API nos permite hacer:

Insignias

Mensajes masivos

Puntuaciones altas

Hay otra gran razón para implementar la API ...


Paso 1: Motivémonos

Antes de profundizar en los aspectos técnicos de la implementación de la API de Kongregate, avancemos un poco y asegurémonos de que realmente queremos implementarla.

Hay muchas razones para implementar la API, pero para la mayoría de los desarrolladores, nada habla más fuerte que el dinero, y hay mucho de eso involucrado. Cuando subes tu juego a Kongregate, automáticamente ganas el 25% de todos los ingresos por publicidad generados por la página de tu juego.

Se pone mejor Si implementas su "API de estadísticas y desafíos", ¡recibirás un 10% adicional! Finalmente, si su juego es exclusivo de Kongregate, o patrocinado por ellos, recibirá un 15% adicional. Esto le da la oportunidad de ganar hasta el 50% de los ingresos por publicidad para su juego en Kongregate. Si te estás preguntando cuánto es eso, echa un vistazo a algunas de mis estadísticas personales:


Paso 2: Configuración de nuestro entorno de trabajo

Para este tutorial, usaremos FlashDevelop, un editor de código abierto gratuito (y sorprendente) para desarrolladores. Haremos todo en archivos .as simples, por lo que si desea seguir utilizando el IDE de Flash, no debería tener ningún problema. Si desea utilizar FlashDevelop y no está familiarizado con él, consulte esta excelente guía para principiantes de FlashDevelop para comenzar con lo que consideraría el mejor editor de AS3 del mercado..

Para comenzar, abra FlashDevelop, vaya a la pestaña Proyecto y seleccione "Nuevo proyecto". Desde aquí, seleccione "Proyecto AS3 con Pre-Loader". Alternativamente, puedes agarrar el Preloader.as y Main.as archivos de la fuente de descarga, y simplemente seguir a lo largo.

Tu archivo debe ser un barebones Main.as archivo, como este:

 paquete import flash.display.Sprite; import flash.events.Event; / ** *… * @author Your Name * / [Frame (factoryClass = "Preloader")] public class Main extiende Sprite función pública Main (): void if (stage) init (); else addEventListener (Event.ADDED_TO_STAGE, init);  función privada init (e: Event = null): void removeEventListener (Event.ADDED_TO_STAGE, init); // punto de entrada   

Nada arriba debería ser nuevo para ti; si es así, todo lo que necesita saber es que este archivo es el punto de entrada para nuestro programa, aquí es donde comienza todo. Si compila esto con FlashDevelop, debería obtener una pantalla en blanco en blanco, sin errores de compilación.


Paso 3: Vamos a estar conectados

Antes de sumergirnos en todas las características geniales de la API, debemos asegurarnos de que la API esté en funcionamiento..

A diferencia de muchas API patrocinadoras, la API de Kongregate no es un conjunto de archivos independiente que necesitamos compilar con nuestro proyecto. La API se almacena realmente en el servidor Kongregate, y la cargamos en tiempo de ejecución. Hay varias maneras de hacer esto en sus proyectos, pero por el bien de este tutorial, simplemente nos conectaremos dentro de nuestros Main.as, y guardar una referencia allí.

Para empezar, copie el siguiente código en nuestro Main.as archivo justo debajo de las importaciones existentes:

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

Lo anterior son solo unas pocas importaciones simples que nos permitirán usar las clases necesarias para cargar en la API de Kongregate.

A continuación, agregaremos una variable para almacenar nuestra referencia a la API de Kongregate. Continúe y agregue lo siguiente justo encima del constructor de nuestro archivo Main.as.

 var kongregate privado: *;

Observe que el tipo de datos de nuestra variable kongregate es *. Si no está familiarizado con esto, simplemente le estamos diciendo al compilador que kongregate La variable aceptará cualquier tipo de datos, como un comodín.

(Además, tenga en cuenta que en un juego real desearía almacenar su referencia a la API en algún lugar al que tenga acceso todo su proyecto, como un const estática pública. Esta referencia es necesaria para que pueda usar la API desde cualquier lugar de su proyecto, para cualquier propósito, en lugar de solo en el Main.as archivo cuando iniciamos por primera vez.)

Esta siguiente pieza de código estará contenida en una función personalizada con el nombre de initKongregateAPI (). Esto no es realmente necesario, pero prefiero encapsular ideas al escribir código, ya que ayuda a mantener el código legible y fácil de trabajar..

Continúa y agrega esta función debajo de la en eso funcionar en Main.as.

 función privada initKongregateAPI (): void // Extraiga la ruta de la API de la FlashVars var paramObj: Object = LoaderInfo (root.loaderInfo) .parameters; // La ruta de la API. La API "sombra" se cargará si se prueba localmente. var apiPath: String = paramObj.kongregate_api_path || "http://www.kongregate.com/flash/API_AS3_Local.swf"; // Permitir el acceso de la API a este SWF Security.allowDomain (apiPath); // Cargar la API var request: URLRequest = new URLRequest (apiPath); var loader: Loader = new Loader (); loader.contentLoaderInfo.addEventListener (Event.COMPLETE, loadComplete); loader.load (solicitud); this.addChild (cargador); 

Si bien puede parecer mucho código, en realidad no es mucho, y con los comentarios, es bastante fácil de seguir..

Como verás, en la primera parte estamos creando una variable para almacenar la ruta de la API desde FlashVars (si no sabes qué son, búscalos muy rápido, es una gran cosa que entender).

En la segunda parte, determinamos si el SWF está en el sitio web de Kongregate o se está ejecutando localmente, y asignamos la información adecuada a la apiPath variable.

A continuación, le damos acceso a la API al SWF, con un simple security.allowDomain llamada, donde pasamos en el apiPath como el parámetro.

Entonces creamos un nuevo Solicitud de URL objeto, que obtiene el apiPath Pasado al constructor, un nuevo Cargador objeto, y agregue un detector de eventos para el cargador que llamará carga completa cuando termine.

Por último, llamamos loader.load y pasar en nuestra solicitud (el recién creado Solicitud de URL objeto, que contiene el apiPath de la API de Kongregate). Si entiendes lo que acaba de pasar, genial; Si no, no te preocupes, ya que no tendrás que volver a tocar esto.

No te olvides de llamarlo!

Ahora que se creó la función initKongregateAPI, y contiene todo el código de conexión, ¡probablemente deberíamos asegurarnos de que esta función realmente sea llamada! Simplemente vuelve a la en eso función que nuestra Main.as archivo ya contenido, y agregar una función llamada a initKongregateAPI después de la línea que marca el "punto de entrada", así,

 función privada init (e: Event = null): void removeEventListener (Event.ADDED_TO_STAGE, init); // punto de entrada initKongregateAPI (); 

Finalmente, necesitamos añadir que carga completa función, para ser llamado cuando el COMPLETAR evento se dispara desde nuestro código anterior. Agregue esta función debajo de initKongregateAPI funcionar en Main.as.

 // Se llama a esta función cuando la carga está completa. Función privada loadComplete (event: Event): void // Save Kongregate API reference kongregate = event.target.content; // Conectar con el back-end kongregate.services.connect (); // Ahora puede acceder a la API a través de: // kongregate.services // kongregate.user // kongregate.scores // kongregate.stats // etc ...

El código anterior es super simple; vamos a repasarlo Comenzamos guardando una referencia a la API de Kongregate. Como puede ver, estamos haciendo referencia a la API de Kongregate a través del parámetro de evento pasado, a través de event.target.content - Suficientemente simple.

Ahora todo lo que tenemos que hacer es conectarnos, y nuestro SWF está listo. Como puedes ver, nos conectamos llamando al kongregate.services.connect método. No se requieren argumentos.

Si bien eso puede parecer mucho trabajo, realmente no lo fue. Simplemente repasé el proceso de conexión con mucho detalle, para que pueda comprender cómo realmente estamos obteniendo acceso a la API, en lugar de tener ese acceso y usarlo. Ahora que lo entiendes, puedes usar todo lo anterior como código repetitivo.


Paso 4: La API de estadísticas y desafíos

Ahora que estamos conectados, podemos echar un vistazo a la característica más importante de toda la API: la parte de Estadísticas y Desafíos. Esta API envía las estadísticas relacionadas con el jugador al servidor Kongregate, que permite varias cosas.

En primer lugar, esta es la forma más básica de permitir que los usuarios compitan por puntajes altos en Kongregate. Con la API integrada, la barra lateral de Kongregate incluirá una nueva pestaña denominada "LOGROS", que se puede encontrar junto a la pestaña "CHAT". Los jugadores pueden ver las tablas de clasificación para cualquier estadística que envíes a los servidores, que puede ser desde una puntuación alta básica hasta el número total de enemigos derrotados..

El segundo y mucho más importante uso es permitir que Kongregate use las estadísticas que envíes para crear "insignias" para tus juegos. Las insignias son una parte central de la experiencia del usuario de Kongregate, y se parecen mucho a los sistemas de logros en plataformas como Xbox LIVE.

La mejor parte de tener insignias agregadas a su juego es que su juego se presentará durante un breve período de tiempo, lo que aumentará considerablemente la cantidad de visitas que obtendrá y, por lo tanto, aumentará considerablemente los ingresos de sus anuncios. Incluso después de que su juego esté fuera del centro de atención, todos los juegos con placa en Kongregate continúan recibiendo más visitas que los juegos normales, lo que le brinda una excelente fuente de ingresos de larga cola.

Tenga en cuenta que las insignias no son agregadas por los desarrolladores, sino que son creadas por el personal de Kongregate. Necesitará un juego con una calificación alta para ser seleccionado, pero también necesitará la API para configurarlo, así que dejemos a la mitad de la batalla fuera del camino!


Paso 5: Preparación del Back-End

Para utilizar realmente las estadísticas que enviaremos, Kongregate primero nos obliga a informar a su servidor qué información debe estar preparada para recibir de nosotros..

Para hacer esto, simplemente vamos a la página de Estadísticas de nuestro juego en el sitio web de Kongregate. Esto se puede encontrar en la página "Editar juego", o agregando /estadística hasta el final de la URL de su juego (por ejemplo, http://www.kongregate.com/games/EpicShadow/pixel-purge/statistics). Para este tutorial, simplemente subiremos nuestro SWF de prueba como el "juego".

Antes de agregar estadísticas a la API de estadísticas y desafíos, primero debemos comprender los cuatro tipos de estadísticas que se pueden usar y las reglas a las que están vinculados. Los valores deben ser positivo, y debe ser enteros enteros. Los cuatro tipos son los siguientes:

  • Max: El valor en el servidor será reemplazado si el nuevo valor es más alto que el valor almacenado. Por ejemplo, un puntaje alto de 152,000 reemplazaría un puntaje antiguo de 120,000.
  • Min: El valor en el servidor será reemplazado si el nuevo valor es inferior al valor almacenado. Por ejemplo, en un juego de carreras, un tiempo de vuelta de 31 segundos reemplazaría un valor anterior de 35.
  • Añadir: El nuevo valor se agregará al valor almacenado. Un uso común de esto sería enemigos derrotados, muertes de jugadores, etc. Demasiadas solicitudes al servidor pueden resultar en datos inexactos, por lo que se recomienda que los datos solo se envíen de forma masiva, como cuando se completa un nivel o cuando el jugador muere.
  • Reemplazar: El nuevo valor reemplazará el valor almacenado sin importar qué. Esto se puede usar para varias cosas, como el tiempo de supervivencia promedio o la clasificación de los jugadores.

Saber cuál de los tipos anteriores necesita usar para cada una de sus estadísticas de juego es extremadamente importante, así que asegúrese de familiarizarse con la lista anterior. Obviamente, desearás una lista de estadísticas que quieras que tu juego envíe a Kongregate, así que asegúrate de tenerlas preparadas antes de sumergirte en el siguiente paso cuando envíes un juego..

Por el bien de este tutorial, simplemente usaremos las siguientes estadísticas:

  • Total de clics (añadir)
  • Max Clicks (Max)
  • Último X (Reemplazar)

Una vez que haya preparado su lista, diríjase a la página de Estadísticas de su juego e ingrese los datos requeridos. Una vez que el trabajo de back-end se realiza en la página de Estadísticas, el juego estará listo para enviar datos al servidor Kongregate.


Paso 6: Cómo enviar estadísticas

Para enviar datos al servidor, simplemente llamamos a la función "enviar", que se ve así:

 enviar (statName: String, valor: Number): void

Como puedes ver, la función toma dos parámetros:

  • statName es el nombre de tu estadística Es muy importante que la cadena pasada sea idéntica (distingue entre mayúsculas y minúsculas) al nombre de la estadística que enumeró en el paso anterior cuando preparó el servidor para manejar sus estadísticas.
  • valor es el valor numérico real que se va a pasar. Aunque el tipo de datos es Número, recuerde que su valor debe ser un positivo, entero entero.

Para llamar a esta función en tu juego, simplemente haz lo siguiente:

 kongregate.stats.submit ("Your Stat String", statValue); // el valor estadístico podría ser 1, 500, 5342324, etc..

Aunque teníamos cuatro tipos diferentes de estadísticas que podríamos enviar, esta función solo envía el valor; el propio servidor examinará la información que proporcionamos en el paso anterior para determinar cómo tratar los datos entrantes. Es tan simple como eso; Ahora sabemos cómo enviar datos al servidor..


Paso 7: Preparando nuestro proyecto para enviar estadísticas

Ahora que hemos preparado el back-end en el sitio web de Kongregate, y ahora sabemos cómo enviar datos, demos una vuelta a este proyecto.

Lo primero que debemos hacer es agregar algo de código a nuestro proyecto para enviar nuestras estadísticas. Dado que lo más fácil de rastrear es la entrada del mouse, elegí las estadísticas relacionadas con el mouse. Como vimos en nuestro paso anterior, elegí Max Clicks, Total Clicks y Last X.

Max Clicks será el puntaje más alto en la cantidad de veces que hagamos clic en un solo juego, para demostrar el tipo Max; Los clics totales serán el total general de todos los clics que hemos realizado, para demostrar el tipo de Agregar; y la última X será la posición x de nuestro clic más reciente, para demostrar el tipo Reemplazar.

Para rastrear nuestros clics del mouse, necesitaremos importar el MouseEvent clase. Vuelva a Main.as y agregue lo siguiente a sus importaciones:

 import flash.events.MouseEvent;

Ahora vamos a necesitar agregar una variable para nuestra estadística de Max Clicks, para realizar un seguimiento del número total de clics por sesión de juego. Justo debajo de donde agregamos el kongregate variable de referencia (de tipo de datos *), agregue lo siguiente:

 privado var maxClicks: int;

Vamos a necesitar un detector de eventos para escuchar nuestros clics, así que lo agregaremos ahora. En el en eso función, justo debajo de la llamada a initKongregateAPI, agregue lo siguiente:

 // Detector de eventos para clics del mouse stage.addEventListener (MouseEvent.CLICK, clicked);

Como puede ver en el código anterior, la función llamada siempre que se llama al evento que disparó hecho clic. Sigamos adelante y creemos esa función. Agregue lo siguiente debajo de su carga completa función:

 función privada pulsada (evento: Evento): void maxClicks ++; kongregate.stats.submit ("Total Clicks", 1); kongregate.stats.submit ("Max Clicks", maxClicks); kongregate.stats.submit ("Última X", mouseX); 

Todo lo que estamos haciendo aquí es incrementar la maxClicks variable por 1, y luego enviar toda la información requerida al servidor Kongregate. Esto agregará 1 a la estadística de clics totales, envíe el actual maxClicks variable al servidor, que luego determinará si es más alto que el valor anterior y lo reemplazará si es así, y enviará la posición x de nuestro clic anterior, que reemplazará automáticamente el valor anterior.

Nuestro SWF puede ser simplemente una pantalla en blanco, pero están pasando muchas cosas y estamos a punto de verlo en acción. Asegúrate de compilar el proyecto antes de continuar.


Paso 8: Probando Nuestro Proyecto

Ahora es el momento de subir nuestro proyecto y verlo en acción..

Regresa al sitio web de Kongregate, dirígete a la página de tu juego y sube la versión final de nuestro proyecto. Una vez que haya cargado el proyecto, pasará a una pantalla de vista previa, donde podemos probar nuestro proyecto antes de publicarlo. Para ahorrarle tiempo y energía al personal de Kongregate, hágales un favor a todos y no presione publicar en su prueba SWF. (Si estás trabajando en un juego real, adelante, pero por este tutorial no publicaremos este proyecto).

Una vez que estés en la página de prueba, dale al juego unos pocos clics. Actualice la página y ahora debería ver que hay una pestaña de "PUNTOS ALTOS" junto a la pestaña "CHAT" y "JUEGO". Si ha hecho todo correctamente hasta este punto, debería tener un cuadro desplegable que actualmente lea "Última X" que también contiene "Máx. De clics" y "Total de clics". Tenga en cuenta que hacer clic rápidamente dará como resultado estadísticas inexactas, ya que el servidor no puede mantenerse al día con todas las solicitudes, así que haga clic lentamente para obtener los mejores resultados. Esta es la razón por la que le informé antes de enviar grandes lotes de datos al momento de la muerte o la finalización del nivel, cuando sea posible.

Bueno, ya está: ahora tiene la parte más importante de la API de Kongregate en funcionamiento. Si su proyecto no está funcionando en este momento, asegúrese de que los nombres de estadísticas de back-end de Kongregate estén escritos exactamente como están en su función de envío (distingue entre mayúsculas y minúsculas), ya que ese es el problema.

También puede encontrar el código completado en el archivos finales carpeta en la descarga de origen, así que compare su código con eso si todavía tiene problemas.


Paso 9: Comunicaciones masivas de mensajes

¿Alguna vez lanzaste un juego, y luego, realmente querías llegar a todos tus fans? Bueno, con la API de Kongregate, puedes hacer eso, al menos para todos tus fanáticos de Kongregate..

Existen algunas restricciones sobre quién puede hacer esto, pero estas restricciones son muy beneficiosas para los desarrolladores y los jugadores. Para calificar, tu juego debe recibir una calificación de 3.75 o superior y tener al menos 10k partidas de juego..

Puede enviar un mensaje de "jugadores activos" como máximo una vez cada siete días. Estos mensajes se enviarán a los jugadores que hayan jugado el juego al menos tres veces, y al menos una vez en los últimos diez días..

Puede enviar un mensaje de "jugadores inactivos" como máximo una vez cada 30 días. Estos mensajes serán recibidos por cualquier jugador que haya jugado al menos cinco veces en total, pero no en los últimos diez días..

Hay muchas razones para enviar estos mensajes a sus jugadores, como alertarlos sobre correcciones de errores o quizás informarles de una próxima secuela. Independientemente de para qué lo uses, es un sistema increíblemente útil que puede ayudarte realmente a aprovechar tus seguidores..

Para más información, consulte esta guía..


Mucho más…

Si bien hemos cubierto mucho en este tutorial, la API de Kongregate es capaz de hacer mucho más. Desafortunadamente, tendría que escribir un pequeño libro para repasar todas las características, especialmente aquellas que son útiles para los MMO basados ​​en la web. Si está interesado en ver qué otras funciones ofrece la API, le recomiendo que visite el Centro de Desarrolladores de Kongregate para obtener más información..

Ahora que ya sabe cómo hacer funcionar el API de Kongregate, le recomiendo que lo agregue a todos sus juegos futuros; Si tienes suerte, incluso puedes conseguir algunas insignias, y ahí es cuando comienza la verdadera diversión..