Autor Tema: Div Games en Html5 y Canvas  (Leído 269547 veces)

AmakaSt

  • Hero Member
  • *****
  • Mensajes: 590
  • Karma: 18
    • Amaka Soft
Re:Div Games en Html5 y Canvas
« Respuesta #1005 en: Junio 02, 2022, 04:49:24 pm »
Hola oskarg,

Son muchísimos ciclos cambiando la imagen antes de frame, habían versiones previas (no se cual es la 1.65, con DivGO todavía no lo he alcanzado) que no cambiaba el dato de imagen y al hacer map_get_pixel() no detectaba el cambio de color en el pixel, al aplicar esto se perdió optimización. He probado en hacer cambios al map_put_pixel() y parece que he ganado algunos fps, he pasado de 10 a 15 fps, sigue siendo lento pero es una mejora.

Cree graphic_builder() y graphic_explorer() como una alternativa a cómo trabaja map_put_pixel(), creo que ya lo explique en otro comentario. La función map_put_pixel() hace lo que las otras dos dentro del bucle, por eso tiene peor rendimiento.

Y aún se puede mejorar más el rendimiento de la función graphic_builder() que has compartido sacando esta función del bucle for():

Código: [Seleccionar]
// Ejemplo de compilador online Div GO
// Php + Html5 + Canvas + Javascript
// by J. Manuel Habas

program ejemplo_graphic_explorer;

global

    txt, i, count, grafico1, grafico2;
    velocidad = 1, random;
    fichero;

begin
    set_mode(320, 200);
    set_fps(60, 0);
    screen_color(#059);
    fichero=load_fpg("graficos/help");

    write_int(0,100,100,0,offset fps);


    grafico1 = graphic_explorer(fichero, 2);
   
    x = 320/2;
    y = 200/2;
   
    loop
        grafico2  = graphic_explorer(fichero, 1);

        velocidad = grafico2.width - 1;
        random = rand(0, 255);
       
        for (i = 0; i < sizeof(grafico2.data); i+=4)
            grafico1.data[i]   =  random;
            grafico1.data[i+1] =  random;
            grafico1.data[i+2] =  random;
            grafico1.data[i+3] =  255;
        end
       
        graph = graphic_builder(grafico1); //fuera del bucle mejor
       
       frame;   
    end
end

Así ya me va a 60 fps. :)

Un saludo.
« última modificación: Junio 02, 2022, 04:53:07 pm por AmakaSt »

oskarg

  • Sr. Member
  • ****
  • Mensajes: 326
  • Karma: 2
Re:Div Games en Html5 y Canvas
« Respuesta #1006 en: Junio 03, 2022, 12:08:01 pm »
perfecto !!
Ya he implementado un map_put con este sistema y paso de 25 frames a 60 ...un cambio muy drastico.Tengo que mirar como crear unas rutinas...gracias




oskarg

  • Sr. Member
  • ****
  • Mensajes: 326
  • Karma: 2
Re:Div Games en Html5 y Canvas
« Respuesta #1007 en: Junio 13, 2022, 02:32:49 pm »
Hola AmaKaSt,
Un bug del ide,En esta versión de divgo el deslizador para aumentar el tamaño de texto ha desaparecido sin más,estaba dibujado previamente en una posicion erronea,simplemente he compilado y ha desaparecido .
Un saludo.

oskarg

  • Sr. Member
  • ****
  • Mensajes: 326
  • Karma: 2
Re:Div Games en Html5 y Canvas
« Respuesta #1008 en: Junio 13, 2022, 02:33:41 pm »
size code..
« última modificación: Junio 13, 2022, 02:37:51 pm por oskarg »

oskarg

  • Sr. Member
  • ****
  • Mensajes: 326
  • Karma: 2
Re:Div Games en Html5 y Canvas
« Respuesta #1009 en: Junio 17, 2022, 04:20:52 pm »
Hola,
¿ como se inicia una tabla en divgo..estoy espeso ,no lo veo...?
Simplemente quiero hacer una struct de arrays.. muestro ejemplo que se entiende lo que pretendo pero falla.

Código: [Seleccionar]

/*
Program's Name: <My Program Name>
Author's Name: <My Name>
Company's Name: <My Company or Group>
*/

program Tablass;
global

struct tabla[6]
       i[2];
end       
                 

     


begin



set_title("tablas");
    //set_icon("graficos/009.png");

// screen canvas options
set_mode(128,128,3);
screen_color(cc_silver);

set_fps(60, 0);
    Inicia_tabla();



loop
if (key(_esc)) exit("Text Exit", 1); end

frame;
end
end



PROCESS Inicia_tabla()
BEGIN
tabla[1].i[] = 1,2,3;   


//write_int(0,100,100,0, tabla[1].i[0]);--daria 1
//write_int(0,100,100,0, tabla[1].i[1]);--daria 2
//write_int(0,100,100,0, tabla[1].i[2]);--daria 3

LOOP
FRAME;
END


END



AmakaSt

  • Hero Member
  • *****
  • Mensajes: 590
  • Karma: 18
    • Amaka Soft
Re:Div Games en Html5 y Canvas
« Respuesta #1010 en: Junio 18, 2022, 09:55:35 am »
Hola oskarg,

Aquí te dejo de la manera que funciona:
Código: [Seleccionar]
/*
    Program's Name:    <My Program Name>
    Author's Name:    <My Name>
    Company's Name:    <My Company or Group>
*/

program Tablass;
global

struct tabla[6]
    i[2];
    //i[] = 1,2,3;
end       


begin



set_title("tablas");
    //set_icon("graficos/009.png");

    // screen canvas options
    set_mode(128,128,3);
    screen_color(cc_silver);

    set_fps(60, 0);
    Inicia_tabla();



    loop       
        if (key(_esc)) exit("Text Exit", 1); end

        frame;
    end
end



PROCESS Inicia_tabla()
BEGIN
//tabla[1].i[] = 1,2,3; //esta forma de declarar es valido dentro de global
tabla[1].i[0] = 1;   
tabla[1].i[1] = 2; 
tabla[1].i[2] = 3; 

//write_int() con offset
write_int(0,20,0,0, offset tabla[1].i[0]);
write_int(0,20,20,0, offset tabla[1].i[1]);
write_int(0,20,40,0, offset tabla[1].i[2]);

//write sin offset
write(0,100,0,0, tabla[1].i[0]);
write(0,100,20,0, tabla[1].i[1]);
write(0,100,40,0, tabla[1].i[2]);

LOOP
    tabla[1].i[0] ++;
    tabla[1].i[1] += 2;
    tabla[1].i[2] += 4;

    FRAME;
END


END

Un saludo. :)

oskarg

  • Sr. Member
  • ****
  • Mensajes: 326
  • Karma: 2
Re:Div Games en Html5 y Canvas
« Respuesta #1011 en: Junio 18, 2022, 12:26:45 pm »
Gracias Amakast,
Estoy haciendo un juego y requiero manipular tablas, cuando lo acabe te lo paso .
Un saludo.

oskarg

  • Sr. Member
  • ****
  • Mensajes: 326
  • Karma: 2
Re:Div Games en Html5 y Canvas
« Respuesta #1012 en: Junio 20, 2022, 01:46:36 pm »
Hola AmakaSt,
Como estás haciendo un editor de fuentes te hago esta sugerencia.

1.En ocasiones se requiere no aplicar suavidado en las letras,"es decir que se imprima tal cual como lo has concebido" como el caso de sokoban.Lo intenté  hacer cargando un fuente supuestamente dentada ,pero siempre  quedaba  borroso e ilegible   y de ahi que empleara graficos como si fueran letras .
Se puede en divgo programar un proceso que  escriba  letras ,no es complicado ,una vez hecho ya  puedo utilizarlo como plantilla , pero es algo a priori engorroso.

Un saludo.

panreyes

  • Administrator
  • *****
  • Mensajes: 2282
  • Karma: 82
    • panreyes.com
Re:Div Games en Html5 y Canvas
« Respuesta #1013 en: Junio 20, 2022, 04:27:39 pm »
Buenas :) Sólo vengo a decir que me alegro mucho de que DivGO siga en marcha :) 💪🏼

AmakaSt

  • Hero Member
  • *****
  • Mensajes: 590
  • Karma: 18
    • Amaka Soft
Re:Div Games en Html5 y Canvas
« Respuesta #1014 en: Junio 20, 2022, 06:52:20 pm »
Hola AmakaSt,
Como estás haciendo un editor de fuentes te hago esta sugerencia.

1.En ocasiones se requiere no aplicar suavidado en las letras,"es decir que se imprima tal cual como lo has concebido" como el caso de sokoban.Lo intenté  hacer cargando un fuente supuestamente dentada ,pero siempre  quedaba  borroso e ilegible   y de ahi que empleara graficos como si fueran letras .
Se puede en divgo programar un proceso que  escriba  letras ,no es complicado ,una vez hecho ya  puedo utilizarlo como plantilla , pero es algo a priori engorroso.

Un saludo.
Hola oskarg,

En principio le tengo quitado el suavizado al editor, como en el editor de gráficos, pero las fuentes formato ttf son vectoriales y siempre se acaba suavizando algo.

Buenas :) Sólo vengo a decir que me alegro mucho de que DivGO siga en marcha :)
Gracias panreyes, en ello ando liado. :)

Un saludo.

oskarg

  • Sr. Member
  • ****
  • Mensajes: 326
  • Karma: 2
Re:Div Games en Html5 y Canvas
« Respuesta #1015 en: Junio 21, 2022, 10:42:11 am »
bug encontrado en tablas.
Cuando tenga terminado el juego te monto un ejemplo..
Te explico tengo esto:
Código: [Seleccionar]

struct posicion
x[3]
end

T_base[10,10];

...
....
hace cosas raras si lo pongo de esta manera tengo que crear una variable auxiliar e entonces va .

private
e;

valor = T_BASE[posicion.x[0],0] ; DA MAL EL RESULTADO...

if  (valor == 1 ) ......end
//me da siempre 1...

//EN CAMBIO SI HAGO ESTO:


e=posicion.x[0];

//  y le asigando e el contenido de posicion.x[0] y lo meto dentro de la tabla da bien el resultado.

valor = T_BASE[e,0] ; DA BIEN EL RESULTADO.
if  (valor == 1) ...end


oskarg

  • Sr. Member
  • ****
  • Mensajes: 326
  • Karma: 2
Re:Div Games en Html5 y Canvas
« Respuesta #1016 en: Junio 21, 2022, 02:49:55 pm »
Buenos días AmaKaSt,
Pregunta tonta ...
Supongo que no se puede hacer esto..pero pregunto...


Tengo un proceso llamado A que gestiona el fondo con un graph=1.
Tengo otro proceso Llamado B.
Mi pregunta es ,puedo desde B hacer un map_put del graph=1 del proceso A   ?

Lo digo para no hacerlo todo dentro del proceso A.

oskarg

  • Sr. Member
  • ****
  • Mensajes: 326
  • Karma: 2
Re:Div Games en Html5 y Canvas
« Respuesta #1017 en: Junio 21, 2022, 02:55:13 pm »
Seria como una especie de father,pero en vez de valores ,de graficos...

AmakaSt

  • Hero Member
  • *****
  • Mensajes: 590
  • Karma: 18
    • Amaka Soft
Re:Div Games en Html5 y Canvas
« Respuesta #1018 en: Junio 21, 2022, 09:57:43 pm »
Hola oskarg,

¿Y no te valdría pasando el valor del graph y el file de dicho proceso al otro por parámetro? O crear una función que pueda recibir esos valores por parámetro, siempre se puede usar las variables father.graph o son.graph.

Un saludo.

oskarg

  • Sr. Member
  • ****
  • Mensajes: 326
  • Karma: 2
Re:Div Games en Html5 y Canvas
« Respuesta #1019 en: Junio 22, 2022, 02:26:19 pm »
Qué tonto!! No me acordaba 😄  Dentro de 5 días lo pruebo,es cuando tengo día libre y  te comento . gracias.ahh y te monto un ejemplo de poniendo el v struct tabla dentro de otra tabla no va, debo guardarlo en una variable..como puse arriba en el ejemplo
« última modificación: Junio 22, 2022, 02:28:54 pm por oskarg »