Div Games en Html5 y Canvas

Started by AmakaSt, September 07, 2012, 03:28:01 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Erkosone

Ok tio, gracias por la info, la verdad es que 16bits lo quería añadir por que tengo muchos proyectos a 16bits y era solo por cargar esos archivos, pero pensandolo bien, realmente no tiene mucho sentido en estos dias que corren andar trasteando con 16 bits.
Vale, pues lo dejo tal cual por ahora, voy a añadir un popup que indique fpg no valido si la cabecera no es un f32 y listo por el momento.
Gracias!

AmakaSt

Hola Erkosone,

He conseguido pintar los maps de 16bits de Fenix de forma correcta, en vez de 3 bytes para el rgb usa solo 2, lo que he hecho es lo mismo que se hace para sacar el ancho y el alto:


color = (byte[i+1] > 0) ? byte[i] + 256 * byte[i+1] : byte[i];
r = ((color & 0xffff) >> 11) * 8;
g = ((color & 0x07ff) >> 6) * 8;
b = (color & 0x00001f) * 8;


Un saludo. :)

AmakaSt

Versión 0.88 ya disponible online. Aquí la lista con las novedades:

struct touch:
   - is_active, x, y, timer;

funciones:
   - path_find(), set_visible_mouse()

bugs y mejoras:
   - [ADD] compatibilidad con los formatos map, fnt y fpg de fenix (16 bits de color)
   - [ADD] limpieza y optimización de código
   - [ADD] write, write_int y write_in_map, ahora su ancho no está limitado al tamaño del canvas, es dinámico al tamaño del texto
   - [DEL] variable browser del struct mouse, ralentizaba al tener que comprobar constantemente el estado visible del ratón en el canvas
   - [ADD] soporte multitouch con la nueva struct touch
   - [CHANGE] la variable mouse ya no devuelve los valores táctiles, estaba limitada a un solo dedo y no podía combinarse a la vez táctil y ratón
   - [FIX] pequeña optimización en el dibujado y restauración de los efectos gráficos
   - [FIX] los efectos no se aplicaba a los gráficos que no estuvieran en el file 0 (carpeta 'graficos'), ahora se aplica a todos incluido a de archivos fpg
   - [FIX] solucionado problema cuando se forzaba la salida del programa al acabar con el último proceso activo
   - [FIX] corregida la construcción de código, cuando se combinaba varios bucles de distintos tipos y dentro de condiciones, bloqueaba el programa
   - [FIX] el compilador no comprobaba bien las variables de un struct definido por el usuario cuando habian varias en la misma línea

Un saludo. :)

Drumpi

 Pregunta tonta ¿Por qué para dividir las componentes de color usas desplazamientos de bits y no para las multiplicaciones? Es más ¿Por qué no hacer menos desplazamientos a la derecha y usar una máscara AND para poner los tres bits menos significativos directamente a cero? ¿O con ese lenguaje da igual?
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

AmakaSt

Quote from: Drumpi on February 10, 2016, 01:20:43 AM
Pregunta tonta ¿Por qué para dividir las componentes de color usas desplazamientos de bits y no para las multiplicaciones? Es más ¿Por qué no hacer menos desplazamientos a la derecha y usar una máscara AND para poner los tres bits menos significativos directamente a cero? ¿O con ese lenguaje da igual?

Lo del desplazamientos de bits al dividir y no al multiplicar, no es por nada especial, realmente no lo había pensado, me da igual usar una u otra opción si el rendimiento final no se ve afectado, por ejemplo:

color = (65536 * 256); //16777216
color = (65536 << 8 ); //16777216; en javascript el rendimiento y el resultado es igual en ambos casos

https://jsperf.com/multiplication-int-vs-bit-shifting-left

Lo de AND para poner el bit menos significativo a cero en javascript no creo cambiara mucho tampoco por lo que daría igual. Y esto solo afectaría en la carga de archivos, luego cuando se pinta, durante el juego, no se hacen estos cálculos, ni va a buscar en el fpg o en la carpeta las imágenes, estas quedan guardadas en memoria  para que sea accesible de forma rápida.

Un saludo.

AmakaSt

Y aquí un ejemplo de funcionamiento del multitouch (para probar desde dispositivos táctiles): http://www.divgo.net/c-1b8cabb2

Un saludo. :)

AmakaSt

Ya esta disponible para descargar Div GO versión 0.88.

oskarg

Hola,buenas,cuando compilo y doy a run se ejecuta correctamente,pero si doy  a run in proyector directamente me sale una ventana blanca y no se ejecuta nada.

AmakaSt

Quote from: oskarg on February 12, 2016, 08:04:40 AM
Hola,buenas,cuando compilo y doy a run se ejecuta correctamente,pero si doy  a run in proyector directamente me sale una ventana blanca y no se ejecuta nada.

Buenas,

He vuelto a subir los descargables de la versión 0.88, me había dejado sin enlazar el archivo DivGOv088-min.js en el proyector. :P

Gracias por el reporte oskarg.

AmakaSt

En breve habrá nueva versión, aquí dejo la lista de funciones que ya tengo preparada para esta próxima versión:

load_song(), song(), stop_song(), is_playing_song(), get_song_line(), get_song_pos(), set_song_pos(), unload_song()

Un saludo. :)


AmakaSt

Versión 0.90 ya disponible online, las novedades:

funciones:
   - load_song(), song(), stop_song(), is_playing_song(), get_song_line(), get_song_pos(), set_song_pos(), unload_song()

bugs y mejoras:
   - [ADD] nueva lib webaudio-modplayer para añadir compatibilidad con los tracker: mod, xm y s3m
   - [FIX] corregida la salida de un bucle dentro del bloque clone
   - [FIX] alineación de texto con write_in_map() desde la variable mouse.graph
   - [FIX] solucionado problema de alineación en los textos con estilo stroke (trazado)
   - [FIX] cuando un proceso en mode7 o en scene3d no tenia graph y luego se le añadía un valor a graph el programa se bloqueaba
   - [FIX] ahora vuelve a mostrarse los archivos de audio enlazados por código en el control de audio del ide


Y aquí dejo un ejemplo de uso de las nuevas funciones: http://www.divgo.net/c-7a9ec6da

Un saludo. :)

AmakaSt

#341
Div GO versión 0.90 ya esta disponible para descarga: http://www.amakasoft.com/herramientas/div-go.html

Un saludo.  :)

oskarg

Gracias por seguir avanzando en este proyecto.
Una curiosidad:
Cuando ejecutas el ejemplo de procesos,donde sale un scroll,si dejas un rato la pantalla inactiva,es decir que navegas por internet o estas con otra aplicacion  y regresas de nuevo a la ventana donde se ejecuta el ejemplo,el scroll sin mas desaparece,aunque puedas hacer disparos.
Y una duda,en phaser cuando haces un scroll,puedes distorsionarlo ,ampliarlo etc.Es complicado implementar tales efectos?¿?.lo pregunto por saciar la duda.

AmakaSt

Hola oskarg,

Cuanto tiempo y en que navegador te pasa esto? Yo he probado unos 15 o 20 minutos con Firefox, abriendo y navegando en otras pestañas y al volver se sigue viendo el scroll. También puede que si estas navegando mucho rato en otras pestañas, el navegador libera de la cache lo de las primeras pestañas abiertas. Esto seguiré probándolo a ver si consigo localizar la causa.

En DivGO añadí efectos de distorsión, color, mascara y zoom que se puede aplicar a una región y si tiene scroll, afecta también al scroll, aquí te dejo un ejemplo con distorsión: http://www.divgo.net/c-a90ae038

Un saludo. :)


oskarg

#344
hola ,buenas...
te explico,he dejado 10 minutos el programa en una ventana ,la he abierto y funcionaba ok ,me he esperado otros 10 minutos y el scroll principal el que  tiene alpha 50 no se muestra,supongo que sera por lo que expresas,mas es normal que actue asi?¿?lo he ejecutado en modo proyector.
Gracias por el ejemplo no lo habia visto.