Hola, pues se me ha ocurrido pasar mi juego a HTML5 por probar como queda y ademas intentar sacarlo para web.
Pero la cosa es que los sprites, fonts etc los dibuja muy mal como si estuviesen distorsionados en algunas partes ademas se nota que va con lag.
He mirado el tutorial que viene de escalar pero no me ha servido de mucho.
Alguno que haya desarrollado algun juego para HTML5 me podria decir que tamaño de sprites, tamaño de las fuentes etc es mejor utilizar y como puedo hacer para optimizar el juego
PD: Utilizo la ultima version estable de Chrome
Aquí te dejo lo básico sobre la exportación a HTML5, traducido de https://help.yoyogames.com/hc/en-us/articles/216754018-HTML5-Issues-And-Differences
En comparación con el resto de los módulos de destino de GameMaker: Studio, existen ciertas diferencias entre cómo funcionan las cosas en HTML5 (y los módulos de JS en general) y lo que puede esperar. Estas diferencias también variarán dependiendo de si tiene habilitado WebGL para el destino o no. En general, con WebGL habilitado, tu juego debería ejecutarse casi exactamente igual que para los otros módulos de destino como Windows o Android y se recomienda que dejes esta opción en Activado o Automático en la Configuración global del juego.
Ejecutar el index.html Localmente
No se recomienda que ejecute el archivo index.html localmente (es decir: desde su propia computadora), ya que encontrará que las cosas no funcionan como se esperaba. De hecho, intentar ejecutar el juego localmente mostrará un diálogo de advertencia que le aconsejará que utilice una configuración de servidor web en su lugar.
Esto se debe a que los navegadores no podrán cargar los recursos o ejecutar su juego debido a secuencias de comandos entre sitios, a menudo abreviado a XSS, que es un sistema de protección dentro del navegador diseñado para bloquear el código de un sitio web que afecta negativamente a una máquina local. Si el archivo html es local, será muy estricto con la protección. Normalmente, esto resultará en que los activos de juego no se carguen y, posiblemente, su código de juego se ignora también, lo que lleva a accidentes, sin embargo, los principales navegadores difieren en la forma estricta de hacer cumplir esto y su juego puede correr. Si desea leer los detalles de XSS.
Para evitar problemas, puedes subir tu juego a algún host del servidor y probarlo "en vivo" de esa manera.
Texto / Sprites / Fondos no colorean correctamente
Si logra que su juego se ejecute localmente, puede experimentar problemas con sus imágenes (texto, fondos y sprites) que no están dibujadas o coloreadas correctamente. La mezcla de imágenes no está disponible en HTML5, por lo que GameMaker: Studio "engaña" un poco y copia la imagen, bloquea sus píxeles y vuelve a colorearlos utilizando código JavaScript para mezclar cada píxel individualmente. Hay algunos trucos involucrados en el motor para acelerar las cosas, pero ser capaz de obtener en los bits de una imagen es vital para que esto funcione.
Sin embargo ... ciertos navegadores (como Firefox y Chrome) tienen configuraciones de seguridad que no nos permiten modificar las imágenes cuando se han cargado desde una fuente local. Ellos lo consideran como una amenaza a la seguridad y simplemente no lo permiten. Esto significa que usted está atascado usando la imagen original y, en cosas como las fuentes, que significa una fuente blanca. No hay nada que podamos hacer al respecto, y recomendamos que el contenido HTML5 se cargue a través de un servidor web, que es GameMaker: Studio viene con un servidor web incorporado para que puedas ver tus juegos. Así que en lugar de hacer clic en el archivo, realmente debería verlo a través del servidor web incorporado, o probablemente no se vea correcto (es decir: utilice el botón "reproducir" de la interfaz GMS).
Mezcla de imágenes
Si no tiene habilitado WebGl, la mezcla de imágenes en HTML5 puede ser un proceso costoso. Como se mencionó anteriormente, GameMaker: Studio tiene que crear copias del sprite - una para cada color. Ahora, si usted tiene, por ejemplo, un sprite de color aleatorio usando
Image_blend = make_colour_hsv (aleatorio (255), 255, 255);
Entonces usted encontrará rápidamente que su juego se ralentiza y tiene problemas.
La solución es utilizar sólo un número fijo de colores y también establecer el caché de sprite para el número correcto. Puede obtener más información del manual aquí: sprite_set_cache_size (). Tenga en cuenta sin embargo, cada sprite que el color utilizará la memoria, por lo que probablemente no sólo debe establecer todos ellos a grandes números, ya que volverá a tener cosas malas suceden. Esto también causa problemas para la mezcla de fuentes, por lo que debe tenerse cuidado con ellos también.
Gradientes de color
Si no está utilizando WebGL, puede notar que los formularios dibujados con GameMaker: las funciones de Studio (como draw_rectangle_colour (), por ejemplo) se están dibujando con un solo color de relleno. Esto se debe a que los degradados no se pueden realizar correctamente en el objetivo HTML5 estándar por razones técnicas. Por lo tanto, si tu juego depende de estos efectos, deberías pensar en hacer de WebGL una opción requerida (de la Configuración global del juego) o usar sprites pre-renderizados.
Tenga en cuenta que esto también afectará a cómo se dibujan las fuentes, así que sin WebGL habilitado no obtendrá ningún tipo de efecto de degradado para ellos tampoco.
Cuadros de mensajes
A diferencia de las ventanas, los cuadros de mensajes HTML5 no son capaces de skin y se fijan en 2 botones que dicen "Aceptar" y "CANCELAR". No puede establecer la fuente, el fondo, el color o el número de botones, lo que los hace muy limitados. Normalmente, tomaríamos el control del bucle del juego y escribiríamos el cuadro de mensaje con las funciones de GameMaker: Studio, pero los navegadores no te permitirían hacerlo. Esto significa que para mantener el mismo mecánico, estamos atrapados utilizando los sencillos y básicos cuadros de mensaje que vienen con cada navegador.
Esto dijo .... cuadros de mensaje estándar realmente no son una experiencia de juego bueno, y si usted necesita un cuadro de mensaje, usted realmente debe escribir uno usted mismo para que aparezca con una mucho mejor apariencia.
<,> Y = no dar los mismos resultados
Al hacer comparaciones en GameMaker: Studio, debe tener en cuenta que todos los números se tratan realmente como valores de coma flotante. Así que comprobar lo que parece ser un valor entero puede dar diferentes resultados en diferentes plataformas, y esto es especialmente cierto de la meta HTML5 que tiene menos precisión que, por ejemplo, el objetivo de Windows. Por ejemplo, tal vez quiera comprobar el índice de imagen de un sprite con una velocidad de imagen de 0,5. Usted esperaría que agregando o.5 cada paso, cada segundo paso el image_index tendría un valor entero ... pero no puede.
0.5 + 0.5 no es igual a 1 con matemáticas en coma flotante, y puede ser que 1 sea en realidad 1.000000000001 o algo así que la expresión nunca devolverá true. Si quieres saber más sobre por qué sucede esto, consulta el artículo aquí: http://floating-point-gui.de/
Hay un número de maneras de conseguir alrededor de esto. Puede comprobar si un valor es mayor o igual que otro, o puede utilizar las funciones floor () o round () para generar un valor entero fijo.
Cita de: Seirlord_Games en Agosto 26, 2017, 08:01:49 PM
Aquí te dejo lo básico sobre la exportación a HTML5, traducido de https://help.yoyogames.com/hc/en-us/articles/216754018-HTML5-Issues-And-Differences
En comparación con el resto de los módulos de destino de GameMaker: Studio, existen ciertas diferencias entre cómo funcionan las cosas en HTML5 (y los módulos de JS en general) y lo que puede esperar. Estas diferencias también variarán dependiendo de si tiene habilitado WebGL para el destino o no. En general, con WebGL habilitado, tu juego debería ejecutarse casi exactamente igual que para los otros módulos de destino como Windows o Android y se recomienda que dejes esta opción en Activado o Automático en la Configuración global del juego.
Ejecutar el index.html Localmente
No se recomienda que ejecute el archivo index.html localmente (es decir: desde su propia computadora), ya que encontrará que las cosas no funcionan como se esperaba. De hecho, intentar ejecutar el juego localmente mostrará un diálogo de advertencia que le aconsejará que utilice una configuración de servidor web en su lugar.
Esto se debe a que los navegadores no podrán cargar los recursos o ejecutar su juego debido a secuencias de comandos entre sitios, a menudo abreviado a XSS, que es un sistema de protección dentro del navegador diseñado para bloquear el código de un sitio web que afecta negativamente a una máquina local. Si el archivo html es local, será muy estricto con la protección. Normalmente, esto resultará en que los activos de juego no se carguen y, posiblemente, su código de juego se ignora también, lo que lleva a accidentes, sin embargo, los principales navegadores difieren en la forma estricta de hacer cumplir esto y su juego puede correr. Si desea leer los detalles de XSS.
Para evitar problemas, puedes subir tu juego a algún host del servidor y probarlo "en vivo" de esa manera.
Texto / Sprites / Fondos no colorean correctamente
Si logra que su juego se ejecute localmente, puede experimentar problemas con sus imágenes (texto, fondos y sprites) que no están dibujadas o coloreadas correctamente. La mezcla de imágenes no está disponible en HTML5, por lo que GameMaker: Studio "engaña" un poco y copia la imagen, bloquea sus píxeles y vuelve a colorearlos utilizando código JavaScript para mezclar cada píxel individualmente. Hay algunos trucos involucrados en el motor para acelerar las cosas, pero ser capaz de obtener en los bits de una imagen es vital para que esto funcione.
Sin embargo ... ciertos navegadores (como Firefox y Chrome) tienen configuraciones de seguridad que no nos permiten modificar las imágenes cuando se han cargado desde una fuente local. Ellos lo consideran como una amenaza a la seguridad y simplemente no lo permiten. Esto significa que usted está atascado usando la imagen original y, en cosas como las fuentes, que significa una fuente blanca. No hay nada que podamos hacer al respecto, y recomendamos que el contenido HTML5 se cargue a través de un servidor web, que es GameMaker: Studio viene con un servidor web incorporado para que puedas ver tus juegos. Así que en lugar de hacer clic en el archivo, realmente debería verlo a través del servidor web incorporado, o probablemente no se vea correcto (es decir: utilice el botón "reproducir" de la interfaz GMS).
Mezcla de imágenes
Si no tiene habilitado WebGl, la mezcla de imágenes en HTML5 puede ser un proceso costoso. Como se mencionó anteriormente, GameMaker: Studio tiene que crear copias del sprite - una para cada color. Ahora, si usted tiene, por ejemplo, un sprite de color aleatorio usando
Image_blend = make_colour_hsv (aleatorio (255), 255, 255);
Entonces usted encontrará rápidamente que su juego se ralentiza y tiene problemas.
La solución es utilizar sólo un número fijo de colores y también establecer el caché de sprite para el número correcto. Puede obtener más información del manual aquí: sprite_set_cache_size (). Tenga en cuenta sin embargo, cada sprite que el color utilizará la memoria, por lo que probablemente no sólo debe establecer todos ellos a grandes números, ya que volverá a tener cosas malas suceden. Esto también causa problemas para la mezcla de fuentes, por lo que debe tenerse cuidado con ellos también.
Gradientes de color
Si no está utilizando WebGL, puede notar que los formularios dibujados con GameMaker: las funciones de Studio (como draw_rectangle_colour (), por ejemplo) se están dibujando con un solo color de relleno. Esto se debe a que los degradados no se pueden realizar correctamente en el objetivo HTML5 estándar por razones técnicas. Por lo tanto, si tu juego depende de estos efectos, deberías pensar en hacer de WebGL una opción requerida (de la Configuración global del juego) o usar sprites pre-renderizados.
Tenga en cuenta que esto también afectará a cómo se dibujan las fuentes, así que sin WebGL habilitado no obtendrá ningún tipo de efecto de degradado para ellos tampoco.
Cuadros de mensajes
A diferencia de las ventanas, los cuadros de mensajes HTML5 no son capaces de skin y se fijan en 2 botones que dicen "Aceptar" y "CANCELAR". No puede establecer la fuente, el fondo, el color o el número de botones, lo que los hace muy limitados. Normalmente, tomaríamos el control del bucle del juego y escribiríamos el cuadro de mensaje con las funciones de GameMaker: Studio, pero los navegadores no te permitirían hacerlo. Esto significa que para mantener el mismo mecánico, estamos atrapados utilizando los sencillos y básicos cuadros de mensaje que vienen con cada navegador.
Esto dijo .... cuadros de mensaje estándar realmente no son una experiencia de juego bueno, y si usted necesita un cuadro de mensaje, usted realmente debe escribir uno usted mismo para que aparezca con una mucho mejor apariencia.
<,> Y = no dar los mismos resultados
Al hacer comparaciones en GameMaker: Studio, debe tener en cuenta que todos los números se tratan realmente como valores de coma flotante. Así que comprobar lo que parece ser un valor entero puede dar diferentes resultados en diferentes plataformas, y esto es especialmente cierto de la meta HTML5 que tiene menos precisión que, por ejemplo, el objetivo de Windows. Por ejemplo, tal vez quiera comprobar el índice de imagen de un sprite con una velocidad de imagen de 0,5. Usted esperaría que agregando o.5 cada paso, cada segundo paso el image_index tendría un valor entero ... pero no puede.
0.5 + 0.5 no es igual a 1 con matemáticas en coma flotante, y puede ser que 1 sea en realidad 1.000000000001 o algo así que la expresión nunca devolverá true. Si quieres saber más sobre por qué sucede esto, consulta el artículo aquí: http://floating-point-gui.de/
Hay un número de maneras de conseguir alrededor de esto. Puede comprobar si un valor es mayor o igual que otro, o puede utilizar las funciones floor () o round () para generar un valor entero fijo.
muchas gracias, me quedo un poco mas tranquilo.
cuando tenga wifi propare a subirlo a algun sitio y ver como queda
¿Y si usas un servidor local para probarlo?
Cita de: NiuWeb en Agosto 27, 2017, 06:39:02 PM
¿Y si usas un servidor local para probarlo?
eso no es lo que hace ya GMS? es decir al pulsar el boton verde de play para probarlo
al final lo he logrado solucionar mas o menos
Pero aun me falla el escalado, si alguno me pudiese ayudar estaría muy agradecido