Bennu Game Development

Foros en Español => Otros DIV-likes => Div GO => Mensaje iniciado por: hokuto40 en Abril 10, 2019, 09:36:30 pm

Título: sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 10, 2019, 09:36:30 pm
Llevo tiempo con ganas de usar divgo y ver las diferencias que tiene con los otros diviike,incluso me baje unos videotutoriales que me encontre en youtube para empezar con lo basico.

El problema que tengo es que mi ordenador se come un buen trozo de la interfaz de divgo, y no veo parte de la izquierda y derecha de la interfaz,ademas de que no se puede aumentar a un buen tamaño las letras del editor de codigo.

Ya me comentastes algunas cosas para cambiar la resolucion pero no cambio nada y siguio igual,entonces se me ha ocurrido algo.

Podrias simplificar la interfaz para que solo aparezcan los botones que te llevaran a cada editor,por ejemplo...

Tendriamos el boton del editor de fpg que al pulsarlo te llevaria a otra  ventana  con el editor.De esta forma lo podria maximizar y poner toda la pantalla con este editor y tendrias mas espacio para añadirle mas opciones si tu lo ves adecuado.esto seria igual para el resto de editores,editor de codigo,fnt etc..

O si no quieres crear otra ventana,podrias hacerlo en la misma,por ejemplo...Si pulsas el boton para el editor de codigo se borraria toda la interfaz y apareceria el edito de codigo que tambien ocuparia toda la ventana y habria otro boton para ir para atras.

Seria algo parecido a lo que trae gamemaker,tiene botones para que se habra cada editor por separado y es muy comodo,miralo por ti mismo.

No se si a ti se te ocurre otra cosa o a oscarG.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: AmakaSt en Abril 11, 2019, 07:19:41 am
Hola hokuto40,

¿Qué resolución de pantalla tienes? En principio la interfaz de Div GO es responsive y se adapta a la resolución de dispositivos móviles. También está la opción de crear un tema nuevo para bajas resoluciones, esto se hace por css, agregándolo en la carpeta temas. Cualquiera podría crear su propio tema y compartirlo.

El tema de abrir ventanas del navegador cada vez que clicas una opción no es muy sutil, seria abrir modales dentro de la misma ventana y apartarlas como en Div2.

Hace tiempo que quiero cambiar la interfaz, sobre todo para la futura versión 2.0.

Un saludo.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 11, 2019, 09:30:28 am
Resolucion 800x600 y con las letras aumentadas,lo necesito por problemas de vision en un ojo.

He mirado a una resolucion a 1024x768 y se ve todo pero muy pequeño y ademas mi monitor a esa resolucion no se ve bien.A la izquierda aparecen los procesos que vas programando en el editor,seria adecuado que ese trozo se pudiera ocultar para tener mas espacio para el editor de codigo.

No tengo ni idea de css,te pongo una imagen para que lo veas mas claro.
(http://forum.bennugd.org/index.php?action=dlattach;topic=4779.0;attach=4197)
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: AmakaSt en Abril 11, 2019, 01:46:37 pm
Estas con la versión ejecutable, aquí te adjunto el archivo settings.json con una configuración que creo te puede ir bien.
Sustituyelo por el que tienes en la carpeta donde se encuentra el ejecutable y a ver que tal te va ahora.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 11, 2019, 03:53:16 pm
He probado el archivo y sigue igual,faltan muchas cosas que no salen en la interfaz,he probado la version web y reduciendo el zoom al 70 % se ve todo pero muy pequeño,pero a mi no me interesa la version web,yo uso la version ejecutable.

Es muy raro esto porque no me ha pasado con ningun programa,creo que lo mejor sera que cada editor este en pestañas separadas.

Una pregunta,¿puedo usar el fpg y el fnt editor de gemix con divgo? , de esta forma puedo estar trasteando un poco con divgo hasta que me des una solucion.

Te vuelvo a poner la imagen actualizada para que veas que sigue igual.
(http://forum.bennugd.org/index.php?action=dlattach;topic=4779.0;attach=4200)
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: AmakaSt en Abril 12, 2019, 07:42:33 am
Citar
Una pregunta,¿puedo usar el fpg y el fnt editor de gemix con divgo? , de esta forma puedo estar trasteando un poco con divgo hasta que me des una solucion.
Div GO es compatible con los formatos fpg, fnt y map de Div2 (8bits), Fenix (16bits) y BennuGD (32bits). Mi propósito era que fuera compatible con todos los formatos Divlikes, pero no pudo ser. Por lo que usando los editores de Gemix no te funcionaria la carga de esos ficheros en Div GO.

Aunque yo te recomendaría mejor que uses formatos estándares para gráficos (png, bmp o gif), fuentes (ttf o otf) y música (mp3 o ogg).
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 12, 2019, 08:59:12 am
Ok,entonces puedo usar los editores de bennugd porque usar el formato png me daria bastantes problemas para realizar animaciones,pero ya te dire mas adelante alguna sugerencia para funciones que se encarguen de manejar la animacion.

Pero me he encontrado con otro problema,no se ve los botones de abrir y guardar el prg y eso me impide hacer cualquier cosa,en fin....de momento no puedo hacer nada.

Voy a seguir dandote sugerencias.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 12, 2019, 09:04:37 am
He visto que solo tienes la funcion key() si no me equivoco,aqui es fundamental que introduzcas otras dos.
Código: [Seleccionar]
keyPressed() //cuando pulsas la tecla solo una vez

keyReleassed() //cuando sueltas la tecla
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: AmakaSt en Abril 12, 2019, 10:38:07 am
Lo apunto, pero será más estilo Div, por ejemplo: key_on() key_out()
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 12, 2019, 03:43:44 pm
Los nombres que te doy es solo por poner algo,tu puedes poner el nombre que te de la gana que para eso es tu engine,yo encantado de que introduzcas las sugerencias. ;)

Pues vamos a por mas,estas sugerencias que doy son tambien validas para bennugd y pixtudio.

He mirado las funciones de aleatoriedad y por lo que veo solo tienes rand(),estaria muy bien que añadieras esta.
Código: [Seleccionar]
rand_chooise(1,2,3,4,5,6,7,8,9)

Esta funcion es para colocar muchos valores y que elija aleatoriamente uno de ellos cada vez,seguramente me diras que se puede hacer con un array pero esto es mas comodo y sencillo y creo que estaria bien.

Por cierto,he mirado para cambiar el color del grafico y se usa esta funcion.
Código: [Seleccionar]
color_in_map(fichero, grafico,color)

No seria mejor crear una variable interna para los procesos,seria mas corto y mejor.
Código: [Seleccionar]
tint = red

Tendriamos esta varible y las constantes para los colores,la funcion esta bien pero creo que esto es mejor.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 13, 2019, 09:42:00 am
Seguimos con mas sugerencias. ;D

He mirado las funciones para manejar el tiempo y tienes timer[] que no se si se pondra añadir mas de 9 y tienes time() que no se muy bien que uso tiene.Yo añado otra sacada de contruct 2.
Código: [Seleccionar]
wait(tiempo) //tiempo en segundos o lo que tu quieras

Esta funcion sirve para esperar un tiempo antes de que pase algo y se pueden colocar todas las que quieras sin limite,pero te pongo un ejemplo para que sea mas claro.
Código: [Seleccionar]
if(colisiona con bomba)
   activar bomba
   wait(3)
   explota bomba
   wait(3)
   mostrar texto de juego finalizado
end

Aqui hay una colision y se activa la bomba y luego se usa wait() para esperar
los segundos colocados antes de que pase lo siguiente,esto no para el juego ,es como si fuera un contador interno.

Te comento otra sugerencia.
Código: [Seleccionar]
friction = 5

Esta variable seria una variable interna del proceso y serviria para ir frenando poco a poco el movimiento de cualquier objeto,si el numero de la variable es mas alto mas rapido se parara.Podria servir para ir frenando una nave poco a poco o para disminuir la velocidad de un personaje en un juego de plataformas .
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 14, 2019, 09:17:09 am
Hola amakast,no se si estas viendo las sugerencias pero yo voy a seguir por que si no se me olvidan.

He mirado alguna funcion que me sirva para crear barras de vida y aunque he encontrado algo,le faltan parametros y hay que usarlas con define region y ya son muchas cosas.

Lo mejor es crear una funcion como la que trae gamelibzero de erkozone ,que es la que yo utilizo para la barra de vida.Esta funcion es screenDrawGraphic(),pero te pongo una version un poco mas completa.
Código: [Seleccionar]
        drawGraphic(grafico,x,y,,angle,punto de centrado,sizeX,sizeY,alpha)
        punto de centrado = left,right,center//constantes para usar

La mayoria de parametros estan claros,pero el punto de centrado es para colocar su punto y que la barra vaya desapareciendo como en cualquier juego.Yo utiliza el parametro sizeX para ir reduciendo la barra.

Esta funcion se puede utilizar para crear un grafico y lo bueno es que se utiliza en dentro de un proceso,por lo que se puede tener el grafico del proceso y el grafico de esta funcion que hace de vida o de lo que quiera.Yo lo he utilizado en mi juego de naves y hace de barra de vida de los jefes.

Ahora te comento otra sugerencia,el fade() esta muy chulo y no es dificil de usar pero hay que crearlo y luego comprobarlo y luego volver a hacerlo para que aparezca la pantalla,muchas cosas para algo tan simple.

Por eso se me ha ocurrido que podrias hacerlo todo de golpe con una sola funcion.
Código: [Seleccionar]
fade_especial(tiempo,tipo,color)
tipo = para distintos tipos de fundido

Solo habria que poner esta funcion y se encargaria de hacerlo todo automaticamente,haria el fundido y luego automaticamente volveria a mostrar la pantalla.Tenemos el tiempo,el color y el tipo de fundido,por si te apetece en un futuro meter otros tipos de fundido.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: AmakaSt en Abril 15, 2019, 07:22:47 am

He mirado las funciones de aleatoriedad y por lo que veo solo tienes rand(),estaria muy bien que añadieras esta.
Código: [Seleccionar]
rand_chooise(1,2,3,4,5,6,7,8,9)

Esta funcion es para colocar muchos valores y que elija aleatoriamente uno de ellos cada vez,seguramente me diras que se puede hacer con un array pero esto es mas comodo y sencillo y creo que estaria bien.

Por cierto,he mirado para cambiar el color del grafico y se usa esta funcion.
Código: [Seleccionar]
color_in_map(fichero, grafico,color)

No seria mejor crear una variable interna para los procesos,seria mas corto y mejor.
Código: [Seleccionar]
tint = red

Tendriamos esta varible y las constantes para los colores,la funcion esta bien pero creo que esto es mejor.
Hola hokuto40,

Existe qsort(), que puedes ordenar aleatoriamente un struct y añadirle los valores que tu quieras. Por cierto, qsort() fallo en alguna versión remota y estará corregida en la 1.20.

Sobre la variable tint... existen las variables tone, blur, grayscale, sepia, saturate, invert, brightness... lo he intentado y créeme, si pudiera cambiar el color del gráfico con un color indicado desde una variable, ya existiría. :P

Seguimos con mas sugerencias. ;D

He mirado las funciones para manejar el tiempo y tienes timer[] que no se si se pondra añadir mas de 9 y tienes time() que no se muy bien que uso tiene.Yo añado otra sacada de contruct 2.
Código: [Seleccionar]
wait(tiempo) //tiempo en segundos o lo que tu quieras

Esta funcion sirve para esperar un tiempo antes de que pase algo y se pueden colocar todas las que quieras sin limite,pero te pongo un ejemplo para que sea mas claro.
Código: [Seleccionar]
if(colisiona con bomba)
   activar bomba
   wait(3)
   explota bomba
   wait(3)
   mostrar texto de juego finalizado
end

Aqui hay una colision y se activa la bomba y luego se usa wait() para esperar
los segundos colocados antes de que pase lo siguiente,esto no para el juego ,es como si fuera un contador interno.

Te comento otra sugerencia.
Código: [Seleccionar]
friction = 5

Esta variable seria una variable interna del proceso y serviria para ir frenando poco a poco el movimiento de cualquier objeto,si el numero de la variable es mas alto mas rapido se parara.Podria servir para ir frenando una nave poco a poco o para disminuir la velocidad de un personaje en un juego de plataformas.

wait() sería lo mismo que usar frame():

Código: [Seleccionar]
if(colisiona con bomba)
   activar bomba
   frame(300);
   explota bomba
   frame(300);
   mostrar texto de juego finalizado
end
Lo de la variable friction no me ha quedado muy claro.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: AmakaSt en Abril 15, 2019, 07:59:01 am
Hola amakast,no se si estas viendo las sugerencias pero yo voy a seguir por que si no se me olvidan.

He mirado alguna funcion que me sirva para crear barras de vida y aunque he encontrado algo,le faltan parametros y hay que usarlas con define region y ya son muchas cosas.

Lo mejor es crear una funcion como la que trae gamelibzero de erkozone ,que es la que yo utilizo para la barra de vida.Esta funcion es screenDrawGraphic(),pero te pongo una version un poco mas completa.
Código: [Seleccionar]
        drawGraphic(grafico,x,y,,angle,punto de centrado,sizeX,sizeY,alpha)
        punto de centrado = left,right,center//constantes para usar

La mayoria de parametros estan claros,pero el punto de centrado es para colocar su punto y que la barra vaya desapareciendo como en cualquier juego.Yo utiliza el parametro sizeX para ir reduciendo la barra.

Esta funcion se puede utilizar para crear un grafico y lo bueno es que se utiliza en dentro de un proceso,por lo que se puede tener el grafico del proceso y el grafico de esta funcion que hace de vida o de lo que quiera.Yo lo he utilizado en mi juego de naves y hace de barra de vida de los jefes.

Ahora te comento otra sugerencia,el fade() esta muy chulo y no es dificil de usar pero hay que crearlo y luego comprobarlo y luego volver a hacerlo para que aparezca la pantalla,muchas cosas para algo tan simple.

Por eso se me ha ocurrido que podrias hacerlo todo de golpe con una sola funcion.
Código: [Seleccionar]
fade_especial(tiempo,tipo,color)
tipo = para distintos tipos de fundido

Solo habria que poner esta funcion y se encargaria de hacerlo todo automaticamente,haria el fundido y luego automaticamente volveria a mostrar la pantalla.Tenemos el tiempo,el color y el tipo de fundido,por si te apetece en un futuro meter otros tipos de fundido.
Existe en Div GO la función texture_in_map(), aquí un ejemplo para una barra de vida: https://www.divgo.net/c-8285dfe9

Sobre las fade, Div GO soporta también fade con un gráfico de entrada y salida: fade_in() y fade_out(); en el listado de funciones esta con ejemplos. :)

Lo del tipo o estilo de fundido me lo apunto, como una futura variable global que afecte a las fade_on() y fade_off().

Un saludo.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 15, 2019, 09:20:19 am
Hola amakast.

Lo de friction es como la friccion,es una fuerza invisible que se le aplica al objeto para que se vaya frenando poco a poco y no de golpe.Ejemplo lo tienes en el mario,que no se para de golpe.

Lo de la barra de vida pues esta muy bien texture_in_map() pero he visto mucho calculo hay y ademas hay que crear un proceso aparte.

Yo me refiero a esto.
Código: [Seleccionar]
process nave()
private vida = 100;
begin
   graph = 1;
   x = 100;
   y = 100;
   drawGraphic(grafico=2,x,y,,angle,punto de centrado,sizeX=vida,sizeY,alpha)
    drawGraphic(grafico=2,x,y,,angle,punto de centrado,sizeX=vida,sizeY,alpha)
   loop
      vida--;
      frame;
   end
end
Con esto podemos tener muchos graficos en un solo proceso y es mucho mas sencillo de usar que el tuyo.

Lo del wait() pues poner frame(300) no ralentiza el juego o lo para hasta que termina.No es mejor tener una funcion propia para esto como si fuera un contador interno que tu activas cuando quieres.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 15, 2019, 09:30:45 am
Seguimos con mas sugerencias.

Cuando un enemigo te ataca se suele usar la tecnica del parpadeo y mientras estas parpadeando tu personaje es invensible por un corto periodo de tiempo y no se le puede quitar toda la vida de golpe.

Pero esto es un poco complicado de hacer en el lenguaje div,por eso propongo una serie de funciones que te ayuden en esto.
Código: [Seleccionar]
parpadeo(tiempo)
al_finalizar_parpadeo()
esta_parpadeando()

El parpadeo durara el tiempo establecido en la funcion y luego dejara de parpadear,la funcion esta_parpadeando() es para comprobar si esta parpadeando y decirle que no te pueden quitar vida en ese estado.

La funcion al_finalizar_parpadeo() es para decirle que pueden quitarte vida otra vez,esto es solo un ejemplo,se puede usar para muchas cosas.
Código: [Seleccionar]
if(colisiona con enemigo)
te quita vida
parpadear(3 segundos)
end
if(esta_parpadeando())
invensible
end
if(al_finalizar_parpadeo())
deja de ser invensible
end 
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 15, 2019, 09:36:42 am
Otra sugerencia.

Me gustaria el poder aumentar o disminuir la mascara de colision y tambien el poder visualizar la mascara,para verla cuando ejecuto el juego.
Código: [Seleccionar]
tamaño_mascara = 100 normal,menos de 100 disminuir y mas de 100 aumentar
visualizar_mascara = true o false //con esto pueder ver el tamaño puesto

Que yo sepa la mascara en el lenguaje div ocupa todo el sprite,y pienso que seria util hacer esto.En un juego de naves es crucial,si no tendria que crear otro objeto que hiciera de mascara.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: AmakaSt en Abril 15, 2019, 01:39:18 pm
Hola amakast.

Lo de friction es como la friccion,es una fuerza invisible que se le aplica al objeto para que se vaya frenando poco a poco y no de golpe.Ejemplo lo tienes en el mario,que no se para de golpe.

Lo de la barra de vida pues esta muy bien texture_in_map() pero he visto mucho calculo hay y ademas hay que crear un proceso aparte.

Yo me refiero a esto.
Código: [Seleccionar]
process nave()
private vida = 100;
begin
   graph = 1;
   x = 100;
   y = 100;
   drawGraphic(grafico=2,x,y,,angle,punto de centrado,sizeX=vida,sizeY,alpha)
    drawGraphic(grafico=2,x,y,,angle,punto de centrado,sizeX=vida,sizeY,alpha)
   loop
      vida--;
      frame;
   end
end
Con esto podemos tener muchos graficos en un solo proceso y es mucho mas sencillo de usar que el tuyo.

Lo del wait() pues poner frame(300) no ralentiza el juego o lo para hasta que termina.No es mejor tener una funcion propia para esto como si fuera un contador interno que tu activas cuando quieres.

Lo de drawGraphic() se parece bastante al xdraw() de DivGO: xdraw(fichero, gráfico, x, y, size, angle, alpha, región)

Frame() no ralentiza el juego, es necesario que todos los procesos lo tengan para que estos dibujen en pantalla y no se mueran. Hay varios ejemplos que usa frame() para generar un parpadeo de imágenes, por ejemplo.

Otra sugerencia.

Me gustaria el poder aumentar o disminuir la mascara de colision y tambien el poder visualizar la mascara,para verla cuando ejecuto el juego.
Código: [Seleccionar]
tamaño_mascara = 100 normal,menos de 100 disminuir y mas de 100 aumentar
visualizar_mascara = true o false //con esto pueder ver el tamaño puesto

Que yo sepa la mascara en el lenguaje div ocupa todo el sprite,y pienso que seria util hacer esto.En un juego de naves es crucial,si no tendria que crear otro objeto que hiciera de mascara.

Existen 3 funciones para colisionar procesos:
collision() > pixel perfect (no necesitas mascaras con esta función)
collision_box() > no es pixel perfect, colisiona con todo el tamaño del gráfico y es más optimo que collision()
collision_circle() > tamaño del gráfico en circulo, sin esquinas y es más optimo que collision()

Un saludo.  :)
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 15, 2019, 03:26:28 pm
Puede que xdraw() me sirva para lo que quiero,pero de momento no puedo hacer pruebas por el problema que ya sabes.

En cuanta a las colisiones pues no me sirve,porque si yo quiero reducir el campo de colision de mi nave,para que sea un circulo pequeño en el centro donde sea la colision,habria que crear algo para poder reducir ese campo o mascara.

Pero si no se puede pues habra que conformarse con crear otro proceso con un grafico pequeño.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 15, 2019, 03:33:02 pm
Mas sugerencias.

Si se quiere conseguir una buena animacion no queda mas remedio que trabajar con arrays,pero esto hace que se llene de muchos numeros y si hay muchas animaciones puede ser una locura.

Se me ha ocurrido el crear una funcion para esto.
Código: [Seleccionar]
animacion(fichero,grafico inicial,grafico final,velocidad)

Aqui tenemos la funcion con el fichero,el grafico donde quieres que comience,el grafico donde finaliza y la velocidad de animacion.

Claro esta que para hacer bien esto habria que meter cada animacion en su fpg correspondiente,es decir...Si tienes el personaje parado con sus animacion ira en un fpg y si tienes el personaje con movimiento en otro fpg.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 15, 2019, 03:53:34 pm
Otra sugerencia,pero esta es una flipada mia que puede no ser muy sensata pero te la digo igualmente.

Esta claro que no vas a crear un editor de escenarios para colocar mis objetos y crear un buen escenario,entonces lo tengo que crear yo y no tengo ni idea de como se hace.

Se me ha ocurrido unas funcionalidades que faciliten esta tarea.
Código: [Seleccionar]
crear_editor(proceso,guardar,camara)
activar_editor = true o false
rejilla(tamaño de cuadricula,tamaño de cuadricula)

La variable "activar_editor" es para decirle al programa que funcione como editor,la funcion rejilla(32,32) es para decirle el tamaño de cada cuadricula de la pantalla donde colocaremos los objetos,ya sea el suelo o la pared o un enemigo.

Esta rejilla sirve para que no se pongan encima un objeto de otro,y la funcion crea_editor(proceso,guardar,camara) tiene el proceso que vamos a utilizar para ir colocandolo en el nivel,luego pondremos en guardar a true para que guarde el contenido creado cuando cierres la aplicacion y el parametro camara = true es para activar la camara.

La camara estara configurada para mover con los cursores de teclado y el objeto lo moveremos con el raton y si dejamos pulsado el boton izquierdo se ira colocando continuamente mientras nos desplazamos con el raton.

Si queremos crear mas objetos y seleccionarlos utilizaremos otra variable para que se activa el boton de seleccion que sera la rueda del raton.
Código: [Seleccionar]
seleccion_objeto = true


Por lo que si tenemos muchos objetos se podran seleccionar con la rueda del raton y quedaria de esta forma.
Código: [Seleccionar]
crear_editor(proceso=type objeto,guardar=true,camara=true)
crear_editor(proceso=type objeto2,guardar=true,camara=true)
crear_editor(proceso=type objeto3,guardar=true,camara=true)
activar_editor = true
rejilla(32,32)
seleccion_objeto = true

Cuando queramos volver al modo normal para jugar a nuestro nivel creado pues desactivamos el modo editor.
Código: [Seleccionar]
activar_editor = false

Se que esto es una flipada mia pero hay esta por si sirve para dar alguna idea y facilitar el diseño del editor casero.

Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 16, 2019, 10:01:51 am
Sigamos con esto.

Ahora una coleccion de funciones y variables para el movimiento.
Código: [Seleccionar]
Hspeed;
Vspeed;
advancePoint(x,y,velocidad,tipo,rotacion);
advanceSinCos(tipo,velocidad,angulo);

Hspeed y Vspeed es para darle al objeto un movimiento en vertical y horizontal,esto es util para cosas simples pero se puede utilizar para juegos de plataformas y cuando te hable de las sugerencias sobre plataformas estas seran muy utiles para esto.


advancePoint(x,y,velocidad,tipo,rotacion) esta te la explique pero te la explico otra vez,el objeto se desplaza a la posicion x e y, y con su velocidad,el tipo seria si quieres que sea un desplazamiento en linea recto o circular y la rotacion es para decirle si quieres que el sprite rote segun la direccion que tenga o no.

advanceSinCos(tipo,velocidad,angulo),esta funcion es como si utilizas las funciones sin() y cos() juntas,con esta dos funciones se consiguen unos movimientos interesantes pero hay que meter mucho codigo y calculos y es un rollo.El tipo es para decirle si quieres que el movimiento sea en vertical,horizontal o en circulo,luego la velocidad y el angulo es para decirle el tamaño del recorrido,como recorrer un circulo pequeño o grande. 
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 16, 2019, 10:09:14 am
Otra de movimiento sacada de la gamelibzero de javascripts de erkozone.
Código: [Seleccionar]
var p = new path();
    p.add(100,100);
    p.add(200, 100);
    p.add(300, 100);
    p.add(400, 100);
    p.add(924, 100);
    p.add(924, 500);
    p.add(100, 500);
    p.setPoint(0);
    p.setVelocity(5);
    p.rotation = true;
    p.smooth = 0.1;

p.move(tipo de movimento)

Este es un comportamiento de movimiento automatico donde primiero le pones las distintas coordenadas que tiene que recorrer y luego tienes para decirle en que punto empieza,su velocidad,si el sprite rota o no segun su direccion,la suavidad del movimeiento.

Y por ultimo temos la funcion move para decirle que empiece a moverse con una constante predefinida.
Código: [Seleccionar]
FORWARD
REVERSE
FORWARD_LOOP
REVERSE_LOOP

Ejemplo,p.move(FORWARD),si quieres saber mas preguntale a erkozone.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 16, 2019, 07:18:17 pm
Vamos con mi sugerencia favorita.

Los divlike no tienen ningun sistema para el manejo de los niveles y por lo que veo todo el mundo suele usar el switch() para manejar todos los objetos y crear multiples niveles,pero cuando se trata de un juego muy grande se complica bastante el tema.

Ademas de que se te puede quedar por hay algun procesos vivo y ya ves los problemas que te puede causar.

Yo propongo crear un proceso especial para esto,con algunas funciones que te ayuden en el manejo de los niveles.
Código: [Seleccionar]
process_scene nivel1()
begin
      graph = 1;//grafico del fondo
      x = 300; y = 200;
      jugador();
      enemigo();
      enemigo2();
      balablabla();
      loop
         if(ya no hay enemigos en pantalla)
         pasar_nivel(type nivel2);//funcion para pasar de nivel
         end
   
         if(el jugador muere)
         reiniciar_nivel();//funcion para reiniciar nivel
         end
         frame;
      end
end

process_scene nivel2()
begin
      graph = 1;//grafico del fondo
      x = 300; y = 200;
      jugador();
      enemigo();
      enemigo2();
      balablabla();
      loop
         if(ya no hay enemigos en pantalla)
         pasar_nivel(type nivel3);//funcion para pasar de nivel
         end
   
         if(el jugador muere)
         reiniciar_nivel();//funcion para reiniciar nivel
         end
         frame;
      end
end

Tenemos el proceso especial process_scene() que es para el manejo de niveles,este tiene todas la propiedades del proceso normal y ademas sirve para el manejo del nivel.

Es decir,esto es un contenedor donde meter todos los objetos del nivel y cuando pasamos de nivel con la funcion pasar_nivel(id) se elimina automaticamente todos los objetos que hay en el para que al pasar al siguiente nivel este todo limpio y solo con los objetos del nivel 2.

Ademas tambien eliminara automaticamente los textos y los recursos que haya en la memoria.La funcion reiniciar_nivel() hace lo mismo que pasar_nivel(id) pero en vez de pasar al nivel siguiente volvera a mostrar el nivel donde esta con todo limpito para mostrar lo del nivel actual.

Pongo un videotutorial de gamemaker donde se explica como se manejan los niveles en este engine y con esto podras entender mejor mi sugerencia.
https://www.youtube.com/watch?v=BaTGBtdKLBU

Hay que ver entero el video sino no sirve. :)
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 17, 2019, 12:44:17 pm
Seguimos con mas sugerencias y tranquilo que mañana ya te digo las ultimas. ;D

Ahora vamos con una coleccion de variables y funciones para el plataformeo,en los divlike no hay nada para ayudarte ha realizar un juego de plataformas,por eso propongo introducir alguna ayudita.
Código: [Seleccionar]
gravity = 0 a 100 o mas
gravity_direction = 270//en angulos
solid = true o false
place_free(x,y)
move_contact_solid(direccion,velocidad)

Gravity es para poner una gravedad al juego y gravity_direction es para decirle el angulo que afecta la fuerza de la gravedad,solid es para decirle que un objeto sea solido,esto seria sobre todo para el suelo,paredes,techo y con esto no se podra atravesar ni por arriba,abajo y los lados.

Place_free(x,y) es para comprobar cada pixel si no hay ningun objeto solido y move_contact_solid(direccion,velocidad) es para solucionar los errores que tiene el sprite al colisionar con el suelo y que quede pegado a el y no se quede por encima o enterrado un poco,la direccion seria la de gravity_direction y la velocidad la de la gravedad.

Tal vez no me he explicado bien o sea complicado de entender,por eso dejo un tutorial de gamemaker donde se explica detalladamente como hacer un pequeño juego de plataformas usando todo esto que he dicho y mas cosas.
https://www.youtube.com/watch?v=iTH3Z9ta69g

Hay que verlo entero,es muy interesante y da muchas ideas. 8)
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 18, 2019, 09:19:42 am
Vamos con las dos ultimas sugerencias,por ahora.

Código: [Seleccionar]
rebote(fuerza=0 a 10,direccion=angulos,velocidad);

Esta funsion sirve para hacer que un objeto rebote al colisionar con otro ya sea solido o no.

La direccion seria en angulo,la velocidad no hace falta explicarlo y la fuerza seria el impulso que tendria la pelota,ejemplo.

Si pongo 10 en fuerza que es el maximo,la pelota rebotaria por toda la pantalla(izquierda,derecha,arriba,abajo),esto seria ideal para un juego de arkanoid.

Si pongo la fuerza a 5,la pelota rebotaria por los lados y abajo pero no llegaria arriba,solo llegaria a la mitad porque no tiene suficiente impulso,esto seria ideal para un juego como el pang.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 18, 2019, 09:27:55 am
Y ahora el ultimo.

Código: [Seleccionar]
mover_hacia_objeto(objeto,velocidad,distancia,solido);

Esta es una funcion de inteligencia articial o algo parecido,sirve para que un objeto te persiga y pueda esquivar.

El parametro objeto es para colocar el objeto que quieres que persiga(type jugador),la velocida no hace falta explicarla,la distancia seria la que hay que tener para que empiece a persiguirte,ejemplo.

Si pones 100 en distancia el objeto empezara a perseguirte cuando su distancia sea igual o menor que 100,si es mayor no te persigue.

El ultimo parametro solid es para decirle si quieres que se pare al colisionar con un objeto solido o si quieres que lo rodee o busque una salida o lo esquive para seguir persiguiendote,True se para,false esquiva.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Abril 23, 2019, 09:46:57 am
Voy a poner otro sugerencia,esta la iba a dejar solo en el foro de gemix pero creo que es mejor compartirlo en todos los sitios por igual.

El mapa de durezas ya dio todo lo que tenia que dar por eso hay que buscar una alternativa y la mejor para mi es el editor mapeditor,hay que hacer compatible divgo con este editor para crear tus niveles y aplicar una forma de usarlo como pilasengine.

Dejo aqui el enlace al editor de niveles.
https://www.mapeditor.org/

Aqui dejo un enlace a la parte del manual de pilasengine donde explica como hace uso de este editor de una forma muy original.Hay que leerlo entero,no vale saltarse nada. :P
http://manual.pilas-engine.com.ar/mapas_y_plataformas/

Ahora si que es la ultima,creo. ;D
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: AmakaSt en Mayo 09, 2019, 10:46:58 am
Vamos con mi sugerencia favorita.

Los divlike no tienen ningun sistema para el manejo de los niveles y por lo que veo todo el mundo suele usar el switch() para manejar todos los objetos y crear multiples niveles,pero cuando se trata de un juego muy grande se complica bastante el tema.

Ademas de que se te puede quedar por hay algun procesos vivo y ya ves los problemas que te puede causar.

Yo propongo crear un proceso especial para esto,con algunas funciones que te ayuden en el manejo de los niveles.
Código: [Seleccionar]
process_scene nivel1()
begin
      graph = 1;//grafico del fondo
      x = 300; y = 200;
      jugador();
      enemigo();
      enemigo2();
      balablabla();
      loop
         if(ya no hay enemigos en pantalla)
         pasar_nivel(type nivel2);//funcion para pasar de nivel
         end
   
         if(el jugador muere)
         reiniciar_nivel();//funcion para reiniciar nivel
         end
         frame;
      end
end

process_scene nivel2()
begin
      graph = 1;//grafico del fondo
      x = 300; y = 200;
      jugador();
      enemigo();
      enemigo2();
      balablabla();
      loop
         if(ya no hay enemigos en pantalla)
         pasar_nivel(type nivel3);//funcion para pasar de nivel
         end
   
         if(el jugador muere)
         reiniciar_nivel();//funcion para reiniciar nivel
         end
         frame;
      end
end

Tenemos el proceso especial process_scene() que es para el manejo de niveles,este tiene todas la propiedades del proceso normal y ademas sirve para el manejo del nivel.

Es decir,esto es un contenedor donde meter todos los objetos del nivel y cuando pasamos de nivel con la funcion pasar_nivel(id) se elimina automaticamente todos los objetos que hay en el para que al pasar al siguiente nivel este todo limpio y solo con los objetos del nivel 2.

Ademas tambien eliminara automaticamente los textos y los recursos que haya en la memoria.La funcion reiniciar_nivel() hace lo mismo que pasar_nivel(id) pero en vez de pasar al nivel siguiente volvera a mostrar el nivel donde esta con todo limpito para mostrar lo del nivel actual.

Pongo un videotutorial de gamemaker donde se explica como se manejan los niveles en este engine y con esto podras entender mejor mi sugerencia.
https://www.youtube.com/watch?v=BaTGBtdKLBU (https://www.youtube.com/watch?v=BaTGBtdKLBU)

Hay que ver entero el video sino no sirve. :)
Hola hokuto40,

Revisándome tus sugerencias, está es la que puedes hacer como indicas con los procesos normales, lo del switch() lo usa quien quiere, cada cual desarrolla su juego de la forma que le parezca más útil. Pero lo que veo en tu ejemplo se puede hacer sin problemas con los procesos o funciones actuales.

Cuando pueda, en un rato, te subo un ejemplo a ver como lo ves. :)

Un saludo.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: AmakaSt en Mayo 09, 2019, 01:05:04 pm
Aquí tienes un ejemplo simulando lo que habías puesto para saltar de nivel: https://www.divgo.net/c-584df9b2
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Mayo 11, 2019, 09:15:34 am
Hola amakast y gracias por este ejemplo. :D

Esta sugerencia es sobre todo para gente nueva que quiera utilizar divgo y se encuentre este problema,ya que los engines que hay hoy en dia te hacen esto automaticamente y te olvidas de limpiar recursos y ademas creo que para proyectos grandes este metodo es fundamental,porque hacerlo manualmente se te puede complicar bastante a la larga.

Comentando el ejemplo ,hay un par de cosas que no me quedan claras,la primera es que veo procesos sin un bucle y sin el frame,esto es posible,yo pensaba que esto no se podia hacer.

Otra cosa que veo es en el proceso pasar de nivel,estas llamando en dentro  un proceso que se llama nivel() y no lo veo por ninguna parte,ademas que le pasas como parametro el nombre del proceso nivel() y yo no sabia que fuera posible llamar a otro proceso como parametro de otro proceso,me acabo de perder un poco. :-\
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: AmakaSt en Mayo 13, 2019, 07:48:04 am
Hola amakast y gracias por este ejemplo. :D

Esta sugerencia es sobre todo para gente nueva que quiera utilizar divgo y se encuentre este problema,ya que los engines que hay hoy en dia te hacen esto automaticamente y te olvidas de limpiar recursos y ademas creo que para proyectos grandes este metodo es fundamental,porque hacerlo manualmente se te puede complicar bastante a la larga.

Comentando el ejemplo ,hay un par de cosas que no me quedan claras,la primera es que veo procesos sin un bucle y sin el frame,esto es posible,yo pensaba que esto no se podia hacer.

Otra cosa que veo es en el proceso pasar de nivel,estas llamando en dentro  un proceso que se llama nivel() y no lo veo por ninguna parte,ademas que le pasas como parametro el nombre del proceso nivel() y yo no sabia que fuera posible llamar a otro proceso como parametro de otro proceso,me acabo de perder un poco. :-\
De nada hokuto40.

Sobre los dos puntos:

1. Esto se debería de poder en cualquier Divlike, sin bucle solo pasa una vez (cuando el proceso es llamado) y sin frame no espera a que se dibuje nada en pantalla. El proceso hará las llamadas y gestiones que deba hacer y morirá.
2. nivel() es una variable privada del proceso pasar_nivel que recibe el nombre del proceso por parámetro, por lo que luego puedes hacer la llamada desde la variable, esto no se si lo soporta otros divlikes, aquí una explicación de lo que es, lo soporta muchos lenguajes por lo que no es tan raro: https://es.wikipedia.org/wiki/Expresi%C3%B3n_lambda

Un saludo.
Título: Re:sugerencias para divgo del pesado de hokuto
Publicado por: hokuto40 en Mayo 14, 2019, 09:28:01 am
Gracias por la explicacion. ;)

Dime!,hay alguna sugerencia que puedas introducir en divgo.