He estado investigando cómo integrar la API de Kongregate con Godot,
ya que últimamente estoy interesado en participar en los concursos
mensuales de esta plataforma.
Estaba a punto de descargar Stencyl (un engine de videojuegos que ya tiene kongregate integrado) cuando me dispuse a revisar si existía algún script, plugin o lo que sea, que me permita trabajar con la API de Kongregate en Godot, según las reglas de Kongregate, es necesario incluir su API y darle uso para participar, así que encontré en la documentación de Godot la clase JavaScript, con el que puedes ejecutar la función eval.

Luego de hacer esto, ya podemos trabajar con la API, pero hay que entender cómo hacerlo.

Como ya tendremos el API de kongregate cargado en el Head del html, ahora necesitamos cargar estas funciones, es decir inicializar la API.
Para lograr eso podemos poner lo siguiente:
Cabe mencionar que si lo hacemos de esta manera, no podremos obtener
correctamente algunos parametros en el ready al instante, por lo que
debemos manejar esto con cuidado, opcionalmente podríamos incluir la
línea de javascript
Pero si no queremos complicarnos las cosas, podemos incluirlo en el
Con esto estamos ejecutando la API de Kongregate y al mismo tiempo
obtener el resultado. De esta manera podemos acceder al nombre del
usuario en cualquier parte de nuestro juego escribiendo
Podemos subir las estadisticas del juego con la siguiente función:
Nótese que al rededor de la palabra stat en la segunda línea, hay
comillas simples y dobles, esto es porque la función eval requiere que
la sentencia se escriba como String, y la función submit require que el
stat sea un string, la función debería escribirse:
Con esto, ya podemos trabajar en añadir las funciones que queramos de la API de Kongregate, ya mostré cómo incluir las 2 mas básicas, me quedaría pendiente crear un script que incluya al menos las funciones mas importantes, como guardar partida, cargar partida, entre otras…
El código que hemos escrito en su totalidad sería el siguiente:
Esto es mas que suficiente para cumplir con la regla de incluir la
API de kongregate y ya podremos participar en los concursos mensuales.
Mas adelante publicaré un repositorio con la API mas importante y que
podemos usar para sacarle mas provecho a esta plataforma.
A continuación el código que uso actualmente:
Estaba a punto de descargar Stencyl (un engine de videojuegos que ya tiene kongregate integrado) cuando me dispuse a revisar si existía algún script, plugin o lo que sea, que me permita trabajar con la API de Kongregate en Godot, según las reglas de Kongregate, es necesario incluir su API y darle uso para participar, así que encontré en la documentación de Godot la clase JavaScript, con el que puedes ejecutar la función eval.
Integrando la API
Primero, necesario incluir en la etiqueta <head> del html el kongregate-api.js, esto se puede hacer manualmente, luego de exportar el juego a html5, modificamos el archivo html e incluimos la api, aunque también lo podemos hacer directamente con Godot, en el momento de exportar, incluimos en el parametro HEAD INCLUIDE lo siguiente:<script type='text/javascript' src='https://cdn1.kongregate.com/javascripts/kongregate_api.js'></script>

Luego de hacer esto, ya podemos trabajar con la API, pero hay que entender cómo hacerlo.
Creando el plugin
En nuestro proyecto de Godot, vamos a crear un script y le nombraremosKongregate.gd
, luego lo añadimos como un autoload.
Cargando la API
Vamos a borrar todo el contenido del Kongregate.gd excepto la primer línea, que debería decirExtends Node
.Como ya tendremos el API de kongregate cargado en el Head del html, ahora necesitamos cargar estas funciones, es decir inicializar la API.
Para lograr eso podemos poner lo siguiente:
func _ready():
JavaScript.eval("kongregateAPI.loadAPI(function(){window.kongregate = kongregateAPI.getAPI();});")
kongregateAPI.loadAPI(function(){window.kongregate = kongregateAPI.getAPI();});
debajo de la etiqueta <body> de nuestro html, justo antes de
cualquier ejecución del juego, o bien, incluirlo en el Head Include al
momento de exportar, aunque esto último no es del todo recomendado.Pero si no queremos complicarnos las cosas, podemos incluirlo en el
_ready
.Utilizando la API
Como mencioné al inicio, podemos ejecutar la API de Kongregate con la función eval() de la clase Javascript que trae Godot, podemos escribir lo siguiente para obtener el nombre de usuario del jugador:func get_user_name():
return JavaScript.eval("kongregate.services.getUsername();")
Kongregate.get_user_name()
Podemos subir las estadisticas del juego con la siguiente función:
func submit_stats(stat, value):
JavaScript.eval("kongregate.stats.submit('"+ stat +"', " + str(value) + ");")
kongregate.stats.submit('stat', value);
donde stat es un string y value un número entero.Con esto, ya podemos trabajar en añadir las funciones que queramos de la API de Kongregate, ya mostré cómo incluir las 2 mas básicas, me quedaría pendiente crear un script que incluya al menos las funciones mas importantes, como guardar partida, cargar partida, entre otras…
El código que hemos escrito en su totalidad sería el siguiente:
extends Node
func _ready():
JavaScript.eval("kongregateAPI.loadAPI(function(){window.kongregate = kongregateAPI.getAPI();});")
func get_user_name():
return JavaScript.eval("kongregate.services.getUsername();")
func submit_stats(stat, value):
JavaScript.eval("kongregate.stats.submit('"+ stat +"', " + str(value) + ");")
A continuación el código que uso actualmente:
Comentarios
Publicar un comentario