Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: iNSaNiX en Enero 29, 2016, 07:25:03 PM

Título: ¿Como abrir una web desde el propio juego?
Publicado por: iNSaNiX en Enero 29, 2016, 07:25:03 PM
Estoy intentando con GM:S abrir una web desde el propio juego como se podia hacer en GM8, y no soy capaz de hacerlo, ¿que forma hay ahora de hacerlo?
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: Undefined en Enero 29, 2016, 07:29:17 PM
En Game Maker: Studio es imposible abrir webs internas en el juego. La única forma de hacerlo es usando una extensión que emula un visor HTML. Pero esta extensión sólo funciona si usas el módulo de exportación HTML5, y según tengo entendido, no funciona más en las últimas versiones.
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: iNSaNiX en Enero 29, 2016, 07:33:02 PM
Cita de: Undefined en Enero 29, 2016, 07:29:17 PM
En Game Maker: Studio es imposible abrir webs internas en el juego. La única forma de hacerlo es usando una extensión que emula un visor HTML. Pero esta extensión sólo funciona si usas el módulo de exportación HTML5, y según tengo entendido, no funciona más en las últimas versiones.

¿Y como podria mostrar el ranking online que tengo hosteado en mi web en mi juego? osea, yo lo que tenia en el proyecto del GM8 era para que los datos del score se subieran mediante php a un archivo que tengo en mi web, que este muestra una lista de ranking con los que mas score tienen
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: bygdle en Enero 29, 2016, 07:42:34 PM
Aquí llegó el spammer xD ;D
Puedes seguir usando PHP como lo hacías en GM8, pero la forma de recibir los datos es muy diferente ahora.
La única manera de recibir información de la web es con eventos asíncronos, y funciones que envíen peticiones de datos a las web.

Es en serio, no es que me guste hacer spam, pero es el mejor texto que conozco para enseñar a hacerlo.
He hecho un tutorial hace un tiempo, y lo que te interesa se encuentra en la segunda parte de el mismo. "Recibiendo datos de PHP" es el nombre de la segunda parte, y si eres algo bueno con el GML, ya te las sabrás areglar para hacer muchas peticiones simultáneamente para recibir todos los puntajes.

http://www.comunidadgm.org/articulos/crea-tu-juego-online-tutorial-php-mysql-gml-(programacion)/

Pero ojo. Ya tendrás que idear una forma de que el PHP envíe todos los rankings en una sola petición, porque si haces una petición par cada dato, te vas a comer el ancho de banda de tu web en 20 minutos xD
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: kostra en Enero 29, 2016, 07:51:55 PM
resumiendo lo que dice Niu, en vez de plasmar la tabla plasmando la web en un "navegador interno", mejor haz que gm descargue los datos de la tabla y en el juego con esos datos formas tú mismo una tabla, sin necesidad de plasmar una web, ni extensiones ni nada... eso sí, BÁJATE EL GAME MAKER STUDIO!!! :B
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: bygdle en Enero 29, 2016, 07:59:31 PM
Cita de: kostra en Enero 29, 2016, 07:51:55 PM
resumiendo lo que dice Niu, en vez de plasmar la tabla plasmando la web en un "navegador interno", mejor haz que gm descargue los datos de la tabla y en el juego con esos datos formas tú mismo una tabla, sin necesidad de plasmar una web, ni extensiones ni nada... eso sí, BÁJATE EL GAME MAKER STUDIO!!! :B

Lee bien la pregunta, él YA tiene el GMS xD
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: iNSaNiX en Enero 29, 2016, 08:05:03 PM
Cita de: NiuWeb en Enero 29, 2016, 07:42:34 PM
Aquí llegó el spammer xD ;D
Puedes seguir usando PHP como lo hacías en GM8, pero la forma de recibir los datos es muy diferente ahora.
La única manera de recibir información de la web es con eventos asíncronos, y funciones que envíen peticiones de datos a las web.

Es en serio, no es que me guste hacer spam, pero es el mejor texto que conozco para enseñar a hacerlo.
He hecho un tutorial hace un tiempo, y lo que te interesa se encuentra en la segunda parte de el mismo. "Recibiendo datos de PHP" es el nombre de la segunda parte, y si eres algo bueno con el GML, ya te las sabrás areglar para hacer muchas peticiones simultáneamente para recibir todos los puntajes.

http://www.comunidadgm.org/articulos/crea-tu-juego-online-tutorial-php-mysql-gml-(programacion)/

Pero ojo. Ya tendrás que idear una forma de que el PHP envíe todos los rankings en una sola petición, porque si haces una petición par cada dato, te vas a comer el ancho de banda de tu web en 20 minutos xD

Wow... impresionante post que hiciste, me viene bien ya que el php se lo básico muy basico, así que podre mejorar un poco en PHP xD. Por otro lado, pienso que por lógica tendría que crear un archivo un tanto diferente al que tengo ahora para que envié los datos, ya que la forma ahora sera diferente, entonces, debo leer la primera parte también, ¿no?

Y sobre lo ultimo mencionado.. el host que uso actualmente es gratuito pero según lei antes de crear la cuenta pone que el ancho de banda era sin limites, pero aun asi no quiero que consuma un gran ancho de banda y mas si hubiera bastante gente enviando los datos, y dado que no se apenas de PHP, ¿que forma habría para hacerlo?

Gracias!
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: bygdle en Enero 29, 2016, 08:16:39 PM
Si lo deseas, sí. La primera parte del post habla de publicar registros a una base de datos, pero también hay conceptos que necesitas saber para entender la segunda parte, como el método POST, el GET, y la única sentencia SQL que se usa en el tutorial. En resumen, te recomiendo que lo leas :B

Sobre el ancho de banda, absolutamente todos los proveedores de hosting pago dicen que el ancho de banda es ilimitado, pero eso en realidad es mentira. Tienes mucho, sí, pero no infinito. La razón es que los hostings pagos convencionales son "compartidos", es decir que varias cuentas de hosting (de varios usuarios también) están almacenadas en una misma máquina física (servidor). Si tu "vecino" de servidor se come mucho ancho de banda, tú también te verás afectado, y viceversa.

Y si piensas que tu juego tendrá muchos (pero muchos en verdad xD) usuarios, deberías pensar en contratar un VPS, servidor dedicado, y en el peor de los casos comprarte un servidor físico (bastante costosos por si lo estabas pensando xD).

Sobre cómo podrías mandar todos los datos en una (o al menos pocas) petición, no sé, pero se me ocurre una forma sencilla:

Por el PHP envías una cadena que contenga el texto, y tenga el signo "#" (equivalente a un salto de línea en GM) al final de cada "registro". Algo así:


$sql = mysql_query("SELECT * FROM puntajes ORDER BY puntos DESC");
$resultado = "";

while($datos = mysql_fetch_array($sql))
{
$resultado .= $datos['usuario'] . ":" . $datos['puntos'] . "#";
}
echo $resultado;


Suponiendo que tienes una tabla con dos filas, y la primera es el nombre del jugador, y la segunda es su puntaje.
El PHP enviaría algo así:

Citar
jugador1:puntos#jugador2:puntos#jugador3:puntos#

Y el GM lo mostraría así:

Citar
jugador1:puntos
jugador2:puntos
jugador3:puntos
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: jmbs19 en Enero 30, 2016, 01:21:59 AM
no quiero desvirtuar el tema, pero continuando con la idea de niu, que yo la uso bastante desde hace tiempo, solo tendrias que formatear el texto de una forma x, y si quieres , por ejemplo, sacar varios datos de la string que te retorna el hosting, como para eliminar el texto basura que te añaden siertos host al php(es contigo 000webhost XD ) puedes explotar (http://www.comunidadgm.org/desarrollo-de-scripts/string_explode%28string-delimiter%29/) el string para sacar los diferentes datos. te dejo un script que hace presisamente eso y que explica como usarlo.
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: Undefined en Enero 30, 2016, 03:27:20 AM
Otra manera, algo más organizada, sería enviar una cadena con estructura de archivos .INI, para que el Game Maker: Studio pudiera leer con mayor facilidad el contenido. La forma de hacerlo sería similar a la que ha ejemplificado NiuWeb, mezclada con el método que mencionó jmbs19, el explode:

$coneccion = mysqli_connect("host","usuario","pass","basededatos");
$sql = mysqli_query($coneccion,"SELECT * FROM puntajes ORDER BY puntos DESC");
$resultado = "";
if (mysqli_num_rows($sql))
{
echo '[highscores]';
$n = 0;
while($datos = mysqli_fetch_array($sql))
{
$n++;
$resultado .= "Highscore".$n."=".$datos['usuario'] . "|" . $datos['puntos'] . "
";
}
}
echo $resultado;


La que devolvería algo así:
Citar[highscores]
highscore1=Jugador1|puntos
highscore2=jugador2|puntos


Luego sólo leerías la cadena recibida como un archivo .INI con la función ini_open_from_string, y después haces un explode para dividir el nombre del jugador y su puntaje en un array (usando como delimitador el signo "|")
No sé, nunca he probado este método, pero puede funcionar

Otra cosa que me gusta aclarar es que para los desarrolladores nuevos de PHP es recomendable comenzar aprendiendo a usar la extensión MySQLI en vez de MySQL, porque la extensión MySQL está obsoleta (La extensión de PHP, no el MySQL en sí :-[ )
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: emanuelsko en Enero 30, 2016, 02:09:26 PM
No aclaraste para que plataforma lo quieres hacer. Si en tu caso es Android, la respuesta es que es totalmente posible utilizando la extensión nativa de Android WebView. El problema es que hasta ahora nadie ha creado dicha extensión. Y se necesita mucho conocimiento de java para hacerlo. Ojalá que alguien cree dicha extensión porque a muchos nos serviría.
Título: Re:¿Como abrir una web desde el propio juego?
Publicado por: Undefined en Enero 30, 2016, 04:07:46 PM
Con los métodos nombrados anteriormente ni siquiera necesita aclarar para qué plataforma necesita eso. Sólo como apunte dejo que para lo que iNSaNiX en verdad necesita es mucho más cómodo y flexible usar eventos asíncronos y leer la información, en vez de tener pegada una web encima del juego.
Por cierto, dos factores en contra de implantar una webView en GM:
Si no hay conexión a internet, la webView mostrará la típica página de android de "No hay conexión a internet", pero al recibir información por los eventos asíncronos es posible configurar  respuestas a los errores del servidor. Por ejemplo, si no hay conexión a internet puedes mostrar un lindo y amigable mensaje configurado por tí.

Es mucho más pesado para el servidor responder con HTML, tablas y demás cosas para mostrar el contenido que simplemente enviar texto plano "invisible" al usuario, y que este texto plano sea interpretado por el GM para generar cualquier cosa

Habiendo dejado estos apuntes, es mejor que dejemos a iNSaNiX elegir el método que más le convenga.