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.

panreyes

No me disgusta la idea de que key devuelva un valor numérico asociado al evento, pero sería problemático con los juegos que ya existan cuando se dejase de pulsar el botón, provocaría una latencia de un frame.

Hasta donde sé, tengo entendido que en Bennu 0 es false y el resto de números, negativos o positivos, es true. ¿Me equivoco?

SplinterGU

Quote from: panreyes on April 25, 2019, 02:19:13 PM
No me disgusta la idea de que key devuelva un valor numérico asociado al evento, pero sería problemático con los juegos que ya existan cuando se dejase de pulsar el botón, provocaría una latencia de un frame.

Hasta donde sé, tengo entendido que en Bennu 0 es false y el resto de números, negativos o positivos, es true. ¿Me equivoco?

cualquier numero diferente de 0 es true... en una condicion.... con respecto a 1 frame no me parece sea algo critico cuando un juego al menos tiene 24 frames y por lo general todos intentan programar los juegos a 60... podria afirmar con casi un 100% de certeza que 1 frame es despreciable...

tambien puede ser una funcionalidad/modo habilitable con algun comando o una variable o algo... key_on y key_off podria ir bien tambien... pero son variable de estados no son ni eventos ni funciones...

vamos que es todo una sugerencia...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

la idea del bit es a partir de como funcionaron los primeros controladores de teclado, los scancodes de los XT (IBM PC XT)... donde el bit 7 indica cuando la tecla es soltada... o sea, los controladores solo envian las teclas cuando se pulsan y cuando se suelta, la diferencia es que cuando se suelta el bit 7 esta prendido...
o tambien podria ser una nueva key_stats(tecla), key_status(tecla) o key_extended_info(tecla); y ahi retornar false/true o 0/1 (si se quieren luego poder agregar mas bits) que indique si se pulso o se libero...
ideas nomas...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

hokuto40

Hola amakast.

Hay alguna forma de ocultar la pantalla de la izquierda donde salen los procesos,porque el editor se ve muy pequeño y si pongo programar a tamaño completo se ve todavia mas pequeño.

AmakaSt

Hola hokuto40,

En principio ya lo tienes minificado, tendría que reducir el tamaño del listado de procesos para que se te muestre más pequeño. Yo suelo trabajar en resolución 1920x1080 y el listado de procesos se ve bien, incluso a 1280x720 que era en la resolución más pequeña en la que pensaba cuando diseñe el IDE para Desktop, más pequeño que eso son tablets y móviles.

Para la próxima versión mirare de corregirlo un poco para resoluciones más pequeñas. :P

Un saludo.

AmakaSt


hokuto40

Hola amakast.

Me gustaria usar distintos archivos prg para tener el codigo mas ordenado y he intentado hacerlo como con gemix con la palabra include "prg" pero no funciona,dime como puedo hacer esto.

AmakaSt

Quote from: hokuto40 on April 28, 2019, 07:43:01 PM
Hola amakast.

Me gustaria usar distintos archivos prg para tener el codigo mas ordenado y he intentado hacerlo como con gemix con la palabra include "prg" pero no funciona,dime como puedo hacer esto.
Hola hokuto40,

En principio poniendo include "ruta/archivo.prg"; tendría que funcionar, pero debes ponerlo entre program y begin y el prg que vayas a incluir no debería de tener program, solo procesos y funciones.

Hace tiempo que lo hice y que no lo pruebo, tampoco he hecho ningún cambio en esto.  :)

Un saludo.

hokuto40

No me funciona,los prg los tengo en la carpeta www para no tener que poner niguna ruta,tambien tengo una variable global para la carga de graficos que usa cada proceso y no se si puede estar dando problemas.

Creo que es mejor que me pongas un pequeño ejemplo para verlo con mas claridad.

Por cierto,ya tengo el tema de colores,me ha quedado por colorear la pantalla izquierda donde salen los procesos pero no encuentro donde cambiar los colores.

Pero tampoco me molesta por eso te paso el tema para que lo metas para la proxima version,ponle el nombre que quieras.

AmakaSt

Quote from: hokuto40 on April 29, 2019, 09:07:47 AM
No me funciona,los prg los tengo en la carpeta www para no tener que poner niguna ruta,tambien tengo una variable global para la carga de graficos que usa cada proceso y no se si puede estar dando problemas.

Creo que es mejor que me pongas un pequeño ejemplo para verlo con mas claridad.

Por cierto,ya tengo el tema de colores,me ha quedado por colorear la pantalla izquierda donde salen los procesos pero no encuentro donde cambiar los colores.

Pero tampoco me molesta por eso te paso el tema para que lo metas para la proxima version,ponle el nombre que quieras.
Me lo revisaré, puede que haya dejado de funcionar correctamente después de tantísimas versiones sin darle un repaso, se han hecho muchos cambios desde que lo implemente.

Para cambiar el color del listado de procesos y el buscar y remplazar, tienes que modificarlo en el archivo estilo.css, seria estas clases:.listadoProcesos {
    float:                left;
   
    border:             1px solid #025;
    border-right:         1px solid #037;
    background-color:    #258;
   
    width:                230px;
    height:                380px;
    min-height:         210px;
   
    font-family:        monospace;
    font-size:            1em;
    text-align:            left;

    overflow:             auto;
}

.buscarRemplazar {
    display:            none;
    clear:                 both;
    float:                 left;
   
    background-color:    rgb(0, 68, 119);
   
    width:                 277px;
    height:             47px;
    padding:            2px 2px 0 2px;
   
    border:             1px solid #025;
    border-top:         0;
    border-right:         0;
}


hokuto40

#655
Hola Amakast y gracias,pero hay solo esta el color de fondo.

Al final buscando encontre el resto y ya tengo el tema de colores,a costado trabajito y dudo que otra persona haga esto,hubiera estado bien alguna opcion en la interfaz grafica para cambiar los colores desde hay pero bueno listo esta.

Te pongo la descarga con el tema definitivo para que lo pongas en la proxima version.

Ahora otra cosa que te quiero comentar.

He probado el tema de colisiones y veo que divgo tambien arrastra el mismo problema de los demas divlike,me explico.

Si tengo un proceso enemigo y otro de disparo,cuando hago la colision desde el enemigo y le digo que se elimine al colisionar con el disparo todo bien.Pero si desde el disparo tambien hago la colision con el enemigo y le digo al disparo que se elimine hay empiezan los fallos.

El disparo se elimina cuando le da la gana y el enemigo hay veces que se elimina y otras no.Entonces no queda mas remedio que hacer la colision solo desde un proceso.Cuando se va a arreglar este tema,si es que se puede.

Aqui tienes la descarga del tema de colores definitivo.

AmakaSt

Quote from: hokuto40 on April 30, 2019, 09:30:29 AM
He probado el tema de colisiones y veo que divgo tambien arrastra el mismo problema de los demas divlike,me explico.

Si tengo un proceso enemigo y otro de disparo,cuando hago la colision desde el enemigo y le digo que se elimine al colisionar con el disparo todo bien.Pero si desde el disparo tambien hago la colision con el enemigo y le digo al disparo que se elimine hay empiezan los fallos.

El disparo se elimina cuando le da la gana y el enemigo hay veces que se elimina y otras no.Entonces no queda mas remedio que hacer la colision solo desde un proceso.Cuando se va a arreglar este tema,si es que se puede.

Hola hokuto40,

Puedes ponerme un código de ejemplo de este problema o de lo que quieres hacer. Porque por lo que entiendo de tu comentario, no es un problema de los divlikes, estas eliminando un proceso desde otro al colisionar y quieres que el que ha sido eliminado colisione a la vez y elimine también al que lo ha eliminado...   ???

collision() te devuelve el id del proceso con el que colisiona, si lo elimina, ya no colisiona. Y según la prioridad colisionara uno antes que el otro.

Un saludo.




hokuto40

#657
Si que es un problema de los divlike ya que esto lo puede hacer en gamemaker,contruct 2 y cualquier otro engine que he probado.

process enemigo()
begin
       loop
            if(collision(type disparo))
                break;
            end
            frame;
       end
end

process disparo()
begin
       loop
            if(collision(type enemigo))
                break;
            end
            frame;
       end
end


Como ves me gustaria matar al objeto desde su propio codigo pero no se puede si hay colision con los dos objetos.

No tengo ningun problema en hacerlo todo desde un proceso porque es como lo hago pero creo que esto seria mas comodo.

panreyes

Aquí tienes la solución:
Quote
process enemigo()
begin
       loop
            if(collision(type disparo))
                break;
            end
            frame;
       end
       frame;
end

process disparo()
begin
       loop
            if(collision(type enemigo))
                break;
            end
            frame;
       end
       frame;
end

Pero es una solución horrible, es una eliminación del proceso sin comunicación alguna. Yo te recomendaría algo como ésto:
Quote
Const
   accion_muere=-1;
End

Global
   struct jugadores[4];
      puntos;
   end
End

Local
   accion;
   jugador;
End

process enemigo()
private
   id_colision;
begin
       loop
            if(id_colision=collision(type disparo))
                jugadores[id_colision.jugador].puntos++;
                id_colision.accion=accion_muere;
                break;
            end
            frame;
       end
end

process disparo(jugador)
begin
       loop
            if(accion==accion_muere)
                break;
            end
            frame;
       end
end

hokuto40

Gracias panreyes. :)

Creo que lo mejor sera hacerlo desde el mismo proceso con signal() y me ahorro cosas mas complejas.

Hay algo que llevo tiempo queriendo hacer pero no tengo ni idea de como hacerlo,podrias explicarme tu mismo o amakast como hacer un editor de objetos.

Es decir,me gustaria crear un pequeño ejemplo de juego como el r-type y ir colocando las torretas y otros enemigos a lo largo del nivel y esto tendria que hacerlo desde un editor de objetos.

Alguno de ustedes podria decirme como se hace esto,pero tendria que ser como si se lo explicaras a un niño de 5 años y paso a paso y muuuuuy lentamente,porque soy un poco limitado con la programacion.  :'(