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.

oskarg

Hola amaka
Lo tengo como expresas y veo como se visualiza en tu editor  fpg cargado...curiosidades...si pongo un mapa de fondo en el primer proceso ,una vez cargado las imágenes lo realiza,pero si en los demás procesos aunque ponga file=file1 lo ignora .otra es que si creo un listado de PNG datos sin tener  el primer gráfico 001.png no carga las imágenes ..tengo una carpeta con sus 001.png y dat como trae los ejemplos.....
Podría añadir imágenes al fpg0 pero esa no es la solución adecuada
Sobre el rendimiento he encontrado algo curioso.si ejecuto el ejemplo plataformas en Desktop va mega lento,pero cuando lo empaquetas y lo ejecutas me va como una bala , también en xamp directamente va rápido incluso demasiado XD.

oskarg

#481
Cuando venga del trabajo trasteo con el a ver si encuentro una solución o me dices algo,te puedo hacer capturas de pantalla etc..
Otra cuestión tengo un par de Juegos cuando estuviera solventado el problema te los paso y me gustaría que los incluyeras como tutoriales de ejemplos, pues son faciles  pero ilustrativos.
Vi el efecto 3d de las letras está curioso aunque el suelo tiembla ...otra cuestión es que programar en JavaScript es un infierno personalmente,pero con divgo la cosa cambia

oskarg

Hola Amaka ya he solventado el problema de los graficos....xd
POR QUE NO FUNCIONA ESTE SIMPLE programa,pretendo simplemente crear un nuevo mapa y pegarlo...si los graficos estan en disco funcionan ,si creo el mapa nuevo ,crea el mapa pero la funcion map_put no va... ejemplo

PROGRAM example_map_xput;//version con new_map....
PRIVATE
    x_destination;
    y_destination;
    file1;
    angle1;
    size1;
    flags1;
    mapa1;

BEGIN
set_mode(m320x200);
    file1=load_fpg("graficos/help");
    graph=1;
    x=160;
    y=100;
    mapa1=new_map(40,40,20,20,rgb(255,255,255));//creo un mapa de 40x40 de color blanco....
    file=file1;
    LOOP
        x_destination=rand(0, 319);
        y_destination=rand(0, 199);
        angle1=rand(-pi, pi);
        size1=rand(10, 200);
        flags1=rand(0, 7);

        map_xput(file1, 1, mapa1, x_destination, y_destination, angle1, size1, flags1);//NO LO PEGA SI CREO UN MAPA con new ....POR QUÉ?¿??¿?....

        angle+=2000;
        FRAME;
    END
END


AmakaSt

Quote from: oskarg on October 09, 2018, 05:16:25 PM
Hola Amaka ya he solventado el problema de los graficos....xd
POR QUE NO FUNCIONA ESTE SIMPLE programa,pretendo simplemente crear un nuevo mapa y pegarlo...si los graficos estan en disco funcionan ,si creo el mapa nuevo ,crea el mapa pero la funcion map_put no va... ejemplo

PROGRAM example_map_xput;//version con new_map....
PRIVATE
    x_destination;
    y_destination;
    file1;
    angle1;
    size1;
    flags1;
    mapa1;

BEGIN
   set_mode(m320x200);
    file1=load_fpg("graficos/help");
    graph=1;
    x=160;
    y=100;
    mapa1=new_map(40,40,20,20,rgb(255,255,255));//creo un mapa de 40x40 de color blanco....
    file=file1;
    LOOP
        x_destination=rand(0, 319);
        y_destination=rand(0, 199);
        angle1=rand(-pi, pi);
        size1=rand(10, 200);
        flags1=rand(0, 7);

        map_xput(file1, 1, mapa1, x_destination, y_destination, angle1, size1, flags1);//NO LO PEGA SI CREO UN MAPA con new ....POR QUÉ?¿??¿?....

        angle+=2000;
        FRAME;
    END
END


Hola oskarg,

El problema está en el new_map(), fue de las primeras funciones que hice en Div GO para los procesos y con el tiempo no la he vuelto a revisar, actualmente new_map() va asociada con la variable local graph. Por lo que no funciona con map_xput(), me lo apunto para futuras revisiones. :)

QuoteVi el efecto 3d de las letras está curioso aunque el suelo tiembla ...otra cuestión es que programar en JavaScript es un infierno personalmente,pero con divgo la cosa cambia
Sí, dependiendo del navegador y la tarjeta gráfica puede variar la forma de visualizarse. Las 3d van con la librería ThreeJS (WebGL), mirare de volver a actualizar la lib en la próxima versión.

Un saludo.

AmakaSt

QuoteSobre el rendimiento he encontrado algo curioso.si ejecuto el ejemplo plataformas en Desktop va mega lento,pero cuando lo empaquetas y lo ejecutas me va como una bala , también en xamp directamente va rápido incluso demasiado XD.
La versión desktop es también un navegador, creo que la versión 57 de Chrome, por lo que la velocidad puede variar dependiendo del navegador con el que lo compares. Supongo que con versiones más modernas de Chrome y Firefox tendrás mejor rendimiento de javascript. También en ordenadores más modernos apenas se nota la diferencia.

Un saludo.

oskarg

Hola Amaka ...podrías incluir esta mejora...
1.Es para hacer manipulaciones rápidas ,como hace bennugd java etc...poder guardar en un array el contenido de  un mapa y de esa manera modificiarlo sin tener que hacer un get o put_ pixel ,pues son funciones lentas..No sé si se puede o mejoraría algo ....
2.Sobre el editor:
El editor gráfico ha quedado muy básico,se tendría que  poder ampliar más alla de los 900.
-.Me gusta que el lenguaje sea estricto,por ejemplo si no pongo ; compila sin error.
-si pongo put_screen(parametro1,parametro2) aunque sean falsos compila sin error.
-Si no hay graficos en el fpg pero los asignas al graph compila sin error.
Lo que me resulta bastante incomodo es que si cargo un prg y luego cargo otro,el primero desaparece ....No debería,pues me sirve tener dos abiertos para copiar y pegar de un lado a otro haciendo pruebas...
-El en futuro estaría genial que se pudiera desglosar el prg en diferentes prgs o paquetes como hace Java.


Ahh!! me he dado cuenta que has arreglado el bug que también tenia div3 de los ids,se agradece....

-Una sugerencia aunque esta es muy ,muy personal,si no la incluyes no pasa nada ,con los trackers ya me apaño para hacer música,pero  soy de aquellos que utilizaban basic con amstrad xd..y Me encantaba la funcion sound canal,nota,duracion,volumen ....sencillota pero resultona y de esa manera no tendría que utilizar los famosos wav.
Un saludo.




oskarg

Hola Amaka hoy es mi dia libre  ;D sobre la velocidad de divgo tenías razón ,con una versión más actual o bien utilizando google chrome se palia este problema.

AmakaSt

Quote from: oskarg on October 14, 2018, 06:55:52 AM
Hola Amaka hoy es mi dia libre sobre la velocidad de divgo tenías razón ,con una versión más actual o bien utilizando google chrome se palia este problema.

Hola oskarg,

Perdona por no haberte respondido antes para poderte ayudar. Cada navegador tiene su propio motor Javascript, aquí una breve explicación:
https://moodle2016-17.ua.es/moodle/pluginfile.php/62199/mod_resource/content/6/navegadores/page_08.htm

Sobre los puntos:

1. Ya existen en Div GO unas funciones para poder manipular un graph, busca en la lista de funciones la graphic_explorer() y graphic_builder(), incluye ejemplo.
2. Lo del ';' me lo mirare, debería ser estricto con eso, lo de comprobar si lo que tiene los parámetros es válido para una función como lo del put_screen() haría bastante más lento el funcionamiento del compilador y eso me pareció innecesario, mejor que cada uno controle las obviedades y que el compilador sea más optimo en velocidad. Por ejemplo, si le pasas un string por parámetro a una función que necesita un entero... obviamente fallará. Lo mismo que para graph, no te dará error, si no existe no lo dibujara y el programa continuara sin que el javascript detenga la ejecución de la página. Lo de las pestañas en un futuro quiero mejorarlo y que no tenga un límite tan pequeño como pasa actualmente.

Lo del bug de ids de div3 no tengo ni idea, de hecho Div GO no utiliza código de Div original, por lo que ha habido suerte que no haya topado con el mismo problema. :)

3. Crear una función sound() como el comando sound de Locomotive BASIC lo he contemplado en más de una ocasión, actualmente tengo algo a medias utilizando la API de Web Audio, pero era incompatible en algunos navegadores y lo dejé para más adelante. Yo también empecé a programar con el Basic de un Amstrad CPC464. :)

Un saludo.

oskarg

Hola amaka....
No encuentro ninguna funcion donde pueda cargar un grafico y modificar su tamaño x o y  para luego distorsionarlo y alargarlo y luego pegarlo en otro mapa..
map_xput(file1, 1, 101, x_destination, y_destination, angle1, size1, flags1); este solo cambia de tamaño total deberia haber la posibilidad de cambiar el tamaño x o el tamaño y.

oskarg

Hola amaka
1.hay alguna manera una vez que hago un exit("adios",2) de elegir color de fondo?¿?
2.Existe alguna funcion similar al cls,borrado de pantalla por completo ?¿?
3.Estaria bien que la funcion write admitiera  grosor de letra tipo como esta bla

AmakaSt

Quote from: oskarg on October 15, 2018, 04:46:07 PM
Hola amaka....
No encuentro ninguna funcion donde pueda cargar un grafico y modificar su tamaño x o y  para luego distorsionarlo y alargarlo y luego pegarlo en otro mapa..
map_xput(file1, 1, 101, x_destination, y_destination, angle1, size1, flags1); este solo cambia de tamaño total deberia haber la posibilidad de cambiar el tamaño x o el tamaño y.

Hola oskarg,
No he pensado en ello, existe alguna función similar en BennuGD o Gemix? Para ponerlo en común con otro Div-like y hacerlo un poco más compatible.

Quote from: oskarg on October 15, 2018, 06:48:07 PM
Hola amaka
1.hay alguna manera una vez que hago un exit("adios",2) de elegir color de fondo?¿?
2.Existe alguna funcion similar al cls,borrado de pantalla por completo ?¿?
3.Estaria bien que la funcion write admitiera  grosor de letra tipo como esta bla

1. No actualmente.
2. No pero se puede crear un proceso o función cls() que incluya: delete_text(all_text); delete_draw(all_drawing); clear_screen(); y limpie la pantalla.
3. La función write() y write_int(), admite cambio de estilo, color y tamaño: https://www.divgo.net/c-bbad5274

Un saludo.

oskarg

Hola amaka ya he probado lo que me expresas,gracias por la informacion del grosor de las letras va de fábula.(Se puede elegir suavizado de letras AA de la fuente 0 ?¿? )

El domingo te paso el ejemplo que ya lo tengo prácticamente acabado para que lo incluyas como tutorial para que la gente se anime a programar en este gran engine.
Otra cuestion:
1.Amulet lua incluye una funcion de crear sonidos y una forma curiosa de crear sprites desde cero...
2.A poco a poco ire aportando cosas ,tengo bastantes hobbies,pero también me resulta muy divertido programar juegos...
3.Estaría bien que echaras un vistazo phaser3 como inspiración y aportar nuevas caracteristicas,pero manteniendo la filosofia de divgo,sencillez a la hora de programar que es su punto fuerte.
Ahh y gracias por hacer divgo,lo he pasado pipa recreando un juego de basic cuando jugaba siendo un crio con la pantalla de fosforo verde  ;D

hokuto40

#492
Me interesa ese tutorial oskarg,subelo aqui para poder descargarlo. ;)

Mas que mirar otros framework para introducir cosas nuevas es mejor mirar engines como gamemaker y contruct 2 que son mas sencillos y estan teniendo  mucho exito.

Lo que si le vendria bien a divgo es poder usar el editor de codigo en otra ventana,ahora es muy incomodo programar todo en la misma ventana.Si te fijas en gamemaker,este a la hora de programar en el editor aparece en una ventana aparte y puedes maximizar la ventana y aumentar las letras y asi es muy comodo.

Lo otro que se puede mejorar es lo de siempre,intentar que sea mas rapido la ejecucion de los juegos.

Ahora te voy hacer dos preguntas amakast,tiene divgo una funcion como SIGNAL_SET_BEHAVIOUR(INT process_id, INT signal, INT behaviour),esta funcion la utilizo en gemix para que al proceso principal no le afecta signal(all_process,s_kill) y asi poder crear el sistema de niveles a mi manera.

La otra pregunta es sobre la documentacion,yo copie la pagina de la documentacion como me dijistes,pero los ejemplos que trae cada funcion no se copian,entonces creo que debes de poner en descarga la documentacion como lo tiene love2d,en este hay una version descargable de la documentcion en html.Saludos

oskarg

Hola Amaka..los fading funcionan correctamente ?¿?
1.pensaba que si ponia fade(200,0,0,5) la pantalla se teñía completamente roja......Como funcionan en divgo  para lograrlo¿?


PROGRAM example_fade;
PRIVATE
file1;
   
BEGIN
set_mode(m320x200);
    file1=load_fpg("graficos/help");
   
    put_screen(file1, 1);
    text_size=50;
    write (0, 0, 0, 0, "Press [SPACE] to see the fade() effects.");
    LOOP
        IF (NOT fading AND key(_space))

            fade( 200 , 0, 0, 5);///NO SE PONE LA PANTALLA COMPLETAMENTE EN ROJO POR QUé?¿?¿?

        END
        FRAME;
    END
END




AmakaSt

QuoteHola Amaka..los fading funcionan correctamente ?¿?
1.pensaba que si ponia fade(200,0,0,5) la pantalla se teñía completamente roja......Como funcionan en divgo  para lograrlo¿?

Hola oskarg,

Tenía un error en el funcionamiento, ahora ya lo tengo revisado y corregido para la próxima versión. ;)
Quote
Ahora te voy hacer dos preguntas amakast,tiene divgo una funcion como SIGNAL_SET_BEHAVIOUR(INT process_id, INT signal, INT behaviour),esta funcion la utilizo en gemix para que al proceso principal no le afecta signal(all_process,s_kill) y asi poder crear el sistema de niveles a mi manera.

La otra pregunta es sobre la documentacion,yo copie la pagina de la documentacion como me dijistes,pero los ejemplos que trae cada funcion no se copian,entonces creo que debes de poner en descarga la documentacion como lo tiene love2d,en este hay una version descargable de la documentcion en html.Saludos
Hola hokuto40,

Actualmente no dispone de una función SIGNAL_SET_BEHAVIOUR()... en DivGO con signal(all_process, s_kill), el funcionamiento es muy similar al let_me_alone(), se eliminan todos los procesos excepto el que ejecuta la función, por lo que puedes congelar todos los procesos, dormirlos y eliminarlos sin que afecte al proceso principal.

Los ejemplos del listado de funciones están en BBDD es como cuando pulsas guardar y obtener id, guardas el código en la "nube" para después recuperarlo o compartirlo a partir de la id devuelta, pulsa a cada ejemplo y guarda el prg devuelto.

QuoteHola amaka ya he probado lo que me expresas,gracias por la informacion del grosor de las letras va de fábula.(Se puede elegir suavizado de letras AA de la fuente 0 ?¿? )

El domingo te paso el ejemplo que ya lo tengo prácticamente acabado para que lo incluyas como tutorial para que la gente se anime a programar en este gran engine.
Otra cuestion:
1.Amulet lua incluye una funcion de crear sonidos y una forma curiosa de crear sprites desde cero...
2.A poco a poco ire aportando cosas ,tengo bastantes hobbies,pero también me resulta muy divertido programar juegos...
3.Estaría bien que echaras un vistazo phaser3 como inspiración y aportar nuevas caracteristicas,pero manteniendo la filosofia de divgo,sencillez a la hora de programar que es su punto fuerte.

Puedes pasarme los ejemplos y juegos que hagas y yo los iré subiendo en la página o en el paquete oficial de descarga, como tú prefieras.
Sobre phaser lo estuve mirando hace un tiempo y sé que utiliza, o utilizaba, pixijs como motor 2d webgl, el que he estado probando para pasar el código de DivGO de canvas2d a webgl, pero hay muchísimo trabajo para hacer la modificación, y cambiar casi todo lo que hay actualmente... Por lo que lo he apartado a un lado.
Quote
Ahh y gracias por hacer divgo,lo he pasado pipa recreando un juego de basic cuando jugaba siendo un crio con la pantalla de fosforo verde  ;D

De nada. :)