Main Menu

Recent posts

#1
Mesa de Ayuda / Re: Colisión de un sprite cont...
Last post by Drumpi - September 18, 2023, 01:44:19 PM
Ok, que tengas suerte.
De todas formas, considera el uso de mapas de durezas en lugar de colisiones, para marcar el camino por donde pueda ir el protagonista. En eso, Bomberlink te puede ayudar mejor que yo, ya que tiene experiencia en el SoRR.
#2
Mesa de Ayuda / Re: Colisión de un sprite cont...
Last post by Gabysantof - September 12, 2023, 01:34:26 AM
Muchas gracias Drumpi!!
Si. Voy por el sprite de 1 pixel y listo. Más Fácil. La idea era tener un límite en el dibujo para que el protagonista no pueda cruzar y armar un camino por el cual transitar. Estoy armando (muy de a poco) un beat em up. Gracias!!
#3
Mesa de Ayuda / Re: Colisión de un sprite cont...
Last post by Drumpi - September 07, 2023, 10:27:36 AM
No, lo que estás haciendo no es correcto.
Los procesos colisionan con otros procesos, eso sí está bien, pero cada proceso necesita tener asignado un gráfico. En tu caso, lineaAbajo no tiene asignado un graph, por lo que el gráfico del prota no puede colisionar con el gráfico de lineaAbajo.

En tu caso, puedes asignarle un gráfico creado en tiempo de ejecución con new_graph... pero ojo, estás empleando drawing_z, drawing_color y draw_line sin asignar sobre qué gráfico lo estás haciendo (o al menos, no se ve en ese código), por lo que lo que estás pintando se hace sobre el graph=0 del file=0, o sea, el fondo de la pantalla.

Ojo con los new_graph, recuerda descargarlos cuando dejes de usarlos o se quedarán en memoria.

Si te quieres poner creativo y no estar usando funciones draw*, puedes crear un gráfico de 1 pixel de color rojo, y usar size_x o size_y para crear una línea con la que colisionar... y si te pones exquisito, usar angle para rotarla, y cuando termines, poner el alpha a 0 para que no se vea y siga usando la colisión.
#4
Mesa de Ayuda / Colisión de un sprite contra u...
Last post by Gabysantof - September 06, 2023, 03:34:47 AM
Estoy intentando una pequeña prueba donde tengo un "heroe" que puede caminar sobre la pantalla libremente... pero cuando choca con una linea debería no poder avanzar más en esa direccion... por el momento solo quiero un cartel que diga "colision" pero no me está funcioando... nunca tuve problemas para colisionar un sprite con otro, pero nunca había intentando con un proceso que solo dibuja una linea... se puede hacer esto??

process lineaAbajo()
begin
z= -10;
x=100;
   while ((!key(_esc)) AND (!key(_s)))
   x+=1;
   if (collision_box (type heroeCamina))   
         write(0,SCREEN_WIDTH-250,SCREEN_HEIGHT-10,3,"colision");
   end
   
   drawing_z(-10);
   drawing_color(rgb(243,159,24));     
   draw_line( x , x ,  640 , 400 );
   frame;
   end
end
#5
Div GO / Re: Div Games en Html5 y Canva...
Last post by AmakaSt - August 27, 2023, 12:42:36 PM
Div GO versión 1.54.0 ya está disponible para descargar: https://www.amakasoft.com/herramientas/div-go.html
#6
Div GO / Re: Div Games en Html5 y Canva...
Last post by AmakaSt - August 25, 2023, 08:57:14 PM
Buenas,

Nueva versión 1.54.0 de Div GO ya disponible online para testear, las novedades:

bugs y mejoras:
  - [ADD] más juegos de ejemplo y tutoriales en el menú: Oh Mummy! de MikeDX, Galax y Puzzle
  - [FIX] generador de programa con bucle "repeat ... until" si existe otro "repeat ... until" dentro del bucle
  - [FIX] variables encapsuladas como stroke_size en write_in_map() o mouse en funciones de colisión
  - [FIX] reinicio de variables al reiniciar aplicación desde botón de servicio del ide
  - [FIX] algunos problemas de estilo en el ide
  - [CHANGE] funcionamiento interno de set_mode()



Un saludo. :)
#7
Proyectos / Re: Echo v1.4: road to season ...
Last post by Drumpi - August 01, 2023, 04:03:43 PM
Perdón por el silencio de... ¿radio? Bueno, el caso es que tampoco hay mucho que contar, porque estos días he estado muy liado por temas ajenos, ya no sólo del trabajo.

Pero vamos a lo que importa.
Sí, finalmente empecé a probar las colisiones, y por supuesto, no funcionaban, así que me tiré un buen rato intentando ver por qué fallaban. Cuando lo hicieron, pues me dio por ponerme con la rotura del bloque: hice una animación sencilla, básicamente creé cuatro procesos que eran lanzados en 4 direcciones, a los que les afectaba la gravedad, y al llegar a la parte de abajo de la pantalla, desaparecían. Hice algunas pruebas, con diferentes tamaños, diferentes velocidades y diferentes velocidades de rotación y quedó algo curioso, mucho más vistoso que el que desaparezcan los tiles sin más.

Hablando de lo cual, y después de ajustar mejor los tamaños de las explosiones, me puse a probar qué tal se manejaría el lanzamiento de bombas. Creo que ya lo expliqué antes, pero tengo problemas con la carga del disparo, porque el teclado no me permite usar Z, X y dos cursores al mismo tiempo, lo cual es extremadamente problemático. Tengo que darle una vuelta a eso y buscarle una solución cuanto antes, porque si no, voy a tener que prescindir de la fuerza de lanzamiento.
Pero a pesar de eso, estuve probando con una pared de ladrillos, y hay una jugabilidad interesante ahí, teniendo que saber cómo romper los ladrillos, y teniendo puntería, para poder hacer escaleras, pasadizos... me ha molado, y me ha traído recuerdos del Tails Adventures.
De hecho, si os acordáis, ya mencioné que había desarrollado otra bomba antes que la de ahora, que me había salido por accidente. Pues si hago que se pueda detonar con una segunda pulsación del botón de disparo, pues tenemos las bombas remotas, y eso da muchísimo juego. Me gustaría poder añadirlas más adelante como las "Fox bombs" o algo así.

Poco más he hecho dese entonces. He podido comprobar que los disparos normales también me habrían servido para romper las paredes (en un análisis previo, me decía que no, que estos colisionaban con la pared y perdían la energía antes de ser detectados por el tile). He hecho algún ajuste extra y ya está. También he estado investigando diversas animaciones de explosiones, para diseñar un par de ellas para los niveles 1 y 2 de la explosión, y dejar, de momento, la que ya tengo para el nivel 3.
Lo cierto es que ahora no sé por dónde seguir, porque tenía pensado que el arma para derrotar al boss 4 también se disparara cargando el disparo, pero visto lo visto voy a tener que rechazar la idea. En fin, ya veremos.

De momento tengo que terminar un par de cosas, puede que esté sin escribir unos cuantos días. Ya os contaré entonces cómo va la cosa.
#8
Proyectos / Re: Echo v1.4: road to season ...
Last post by Drumpi - July 21, 2023, 11:02:45 AM
No, no se ha parado el desarrollo (de momento). Es sólo que esta semana no he tenido tiempo de ponerme a escribir los avances del fin de semana pasado. Teníamos una entrega en el trabajo a un cliente y... bueno, que se ha liado la cosa.

Por desgracia, esta semana no tengo muchos avances que contaros. Si la semana pasada estuve probando el lanzamiento de granadas e implementando los 3 niveles diferentes de uso, en esta estuve haciendo ajustes a la explosión, pues como creo que ya comenté, me la esperaba mucho más grande.
Así que estuve experimentando con diferentes tamaños, lo cual me llevó un buen rato hasta que di con el que andaba buscando, y tras eso... me entró una depresión ¿tenía que rehacer el gráfico? Uff, qué pereza. Me llevó casi una hora, no pensaba repetirlo. Así que hice un reescalado guarro, y lo dejé a modo de guía, hasta que se me ocurra cómo mejorarla. Eso me llevó a otro problema: no tenía las animaciones de las explosiones medianas y pequeña, y como no andaba con ánimos (ni ideas) para gráficos, lo dejé aparcado.

Lo que sí tenía que ir haciendo era el proceso de colisión que afectaría a las paredes y enemigos, así que me puse a programarlo, a crear sus gráficos de colisión (unas circunferencias que tendrán alpha = 0), a sus invocaciones y a probar. Cuando ya tenía su tamaño definido, y el tiempo de duración, me puse a programar los tiles que se podrían romper con ellos y... Bueno, programados están, pero no los he añadido al mapa de testeo ni los he probado. Ese es el siguiente paso.

También tuve que reordenar algunos gráficos, de cara a añadir los gráficos de colisión, de explosión y una pequeña animación para indicar que la bomba está a punto de explotar por expirar el tiempo.

Desde entonces, ha sido una cosa detrás de otra y no he podido ver si la cosa funcionaba (al menos, de forma burda, sin animaciones ni efectos). Creo que tengo pensado cómo animar la rotura del tile, pero eso será a partir de mañana.
En fin, que eso es lo que hay. Poco a poco, pero avanzando. A ver si termino ya la granada y me pongo a... no sé si será hacer las modificaciones para usarla en los tres subniveles correspondientes, o a programar el arma para liquidar al boss. Ya veremos.
#9
Proyectos / Re: Echo v1.4: road to season ...
Last post by Drumpi - July 10, 2023, 12:56:22 PM
Bueno, otro fin de semana, y otro empujoncito al juego. No demasiado porque tampoco le he dedicado un montón de horas, pero han sido productivas.

Me he centrado de nuevo en una de las nuevas armas: la Solar Blast. Ya hablé de ella, y finalmente he conseguido que en el nivel 1 explot... desaparezcan al contactar con una pared, porque no me he puesto a crear la animación de la explosión, aún (ya sabéis que me cuesta mucho ponerme a dibujar, y más a animar). También que en el nivel 2 se pegue a las paredes y, al cabo de un momento, explot... desaparezca.
Las del nivel 3 también rebotan contra paredes, suelo y techo (más sobre esto después), y al cabo de un rato, explotan... sí, estas sí explotan. No me gusta el gráfico de la explosión ni el tamaño de la misma, pero sí he conseguido darle el efecto que quería.

Por desgracia he tenido que prescindir del lanzamiento en 8 direcciones. Hice pruebas y era anti-intuitivo, no conseguía lanzar las bombas a donde quería, y encima, al tener que cargar el disparo, tenía problemas para mantener todos los botones funcionando a la vez. Total, que hice otra prueba y, finalmente, el funcionamiento será similar a las armas: las bombas se lanzarán en arco tanto a izquierda como derecha, con las únicas excepciones verticalmente, tanto arriba como abajo. Esto será muy útil a la hora de disparar al suelo mientras se salta de una plataforma a otra. Aún tengo que ajustar el tiempo de carga y el arco, pero de momento funciona.

El caso es que me ha retrasado mucho más de lo esperado. Hace mucho que no leía el código y se me habían olvidado algunos detalles, y en programación los detalles son imprescindibles. Tras un rato de experimentación y de leer código, ya lo entendí y pude arreglarlo todo (la mitad del tiempo de ayer fue solucionando problemas).


Lo peor pasó el sábado: mientras programaba, en una de las pruebas, en concreto, en la parte donde se lanzaban las bombas, vi que era muy divertido intentar lanzarlas y acertar a una posición concreta, y se me empezaron a ocurrir un montón de situaciones en las que sería muy útil tirar una bomba por encima de una pared, hacer que esta rebote... era como un minijuego en sí mismo... pero no era lo que buscaba. De hecho, sería interesante que se puedan lanzar con un apuntado básico mientras se corre, o bien, cuando se está quieto, poder apuntar con precisión y con la fuerza necesaria. Y que además, se puedan detonar con una segunda pulsación.
Y entonces esto me planteaba un dilema: usar las bombas que ya tenía planificadas, que tenían su utilidad, o estas nuevas, que daban mucho juego... y como tengo el cerebro simétrico, pues no me decidía. Aún hoy tengo mis dudas y, cuanto más lo pienso, más me gusta la idea de las nuevas. De momento he seguido el plan trazado, y he dejado una copia de este tipo de granadas por si quiero usarlas.

Aún tengo que sopesarlo, pero no me gustaría escribir código que no voy a utilizar, dado el tiempo que tengo. También me gustaría oír opiniones, ya sea por este foro como por el otro. Ya digo que me tiré un buen rato lanzando granadas sólo por diversión :D

...aunque se me está ocurriendo que se pueden fusionar ambas ideas... que las bombas, aparte de explosionar por tiempo (o no), que se puedan detonar con una segunda pulsación... Mmmm
#10
Proyectos / Re: Echo v1.4: road to season ...
Last post by Drumpi - July 07, 2023, 09:15:54 AM
¿Nunca os ha pasado que no teníais ganas de sentaros delante del ordenador, que te obligas a escribir, al menos, 15 minutos de código, y cuando te das cuenta, llevas una hora? Pues eso mismo me pasó ayer. Tenía como 30 minutos antes de tener que ponerme a hacer la cena, y no me apetecía mucho ponerme a programar, pero tampoco quería desaprovechar el tiempo libre que tenía jugando a una consola.

Total, que encendí el ordenador, ya más o menos con las ideas de lo que quería desarrollar, y empecé a escribir algo de código. La guía que creé ayer fue de mucha ayuda, porque sabía dónde tenía que meter mano. Quería preparar, al menos, la flecha que indicaba la dirección y la fuerza hacia la que tirar la granada (más sobre esto, después), y pensaba que sería fácil, con unas 5 o 6 líneas y se acabó... pero como andar con trigonometría, ángulos, denos y cosenos era un engorro (y recordemos que la Wiz ya está lo suficientemente saturada como para meterle cuentas difíciles), preferí hacerlo "a la antigua", y eso implicaba escribir mucho más código.

Empecé colocando la flecha, luego haciendo que mirara en la dirección correcta, luego trasladé el código a los otros estados, añadí el indicador de fuerza y cuando me quise dar cuenta... estaba programando en la oscuridad ^^U
También había avanzado mucho más de lo que me había propuesto: puse la flecha señalando hacia dónde iba el lanzamiento, un medidor de fuerza que crece mientras mantienes el botón pulsado, e incluso que descontase la exp del arma al lanzar la granada. Sólo faltó precisamente eso, lanzar el nuevo objeto, que está sin programar, y el tema de la "recarga", o sea, poner un tiempo entre que se lanzó la granada y se pueda lanzar la siguiente. Para lo primero, tengo que repasar el código de los objetos que aumentan la experiencia del arma, ya que el comportamiento es similar (hasta la parte en que explota).

El caso es que, estaba haciendo las pruebas, y algo que me empezó a preocupar ayer se hizo visible en ese momento. Estoy dudando si el tema de tener que "cargar" el lanzamiento es buena idea o no. Eso obliga al jugador a ser previsible, y estar pulsando el disparo antes del momento de lanzar la granada, y además, a coordinarlo con la fuerza justa para que alcance su objetivo. Y lo peor de todo, moviéndose todo el rato, porque mientras cargas el arma, echo se sigue moviendo, y tienes que mantener los cursores pulsados para definir la dirección de lanzamiento.
Aún no he hecho las pruebas pertinentes, quizás le estoy dando demasiadas vueltas y es el comportamiento normal de este tipo de disparos, pero no dejo de preguntarme si hay forma de simplificar esto. No sé, por ejemplo, que no haya indicador de fuerza, y todos los lanzamientos son iguales de fuertes. O que mientras cargas, que no te puedas mover (sería complicado de programar, tal como está la cosa, pero tendría que mirarlo). No lo sé, hasta que no pueda lanzar cosas en un entorno controlado, no tendré la certeza de estar haciendo lo más cómodo para el jugador.

También hay que tener en cuenta que las granadas son un arma que sólo usarán bien los expertos, porque tenerlas en su máxima potencia es muy complicado: no solo pierdes EXP al ser golpeado, sino que también, cualquier uso de ella reduce dicho indicador. A eso le sumamos que la barra de EXP sólo tiene 10 unidades (¿eran 10 o lo bajé a 9?), y sólo las 3 más altas te permiten lanzar el verdadero "Solar Blast". A cambio, estamos hablando de una explosión de 6 tiles de diámetro (96 pixels), que causa 12 puntos de daño (frente a los 10 que hace la Leaf Blade a máxima potencia) a todos los enemigos a los que alcanza, y que puede permanecer suficiente tiempo como para volver a dañar a los enemigos a los que ya ha hecho daño.
...Aunque esto último debo revisarlo, creo que los enemigos, al colisionar con un "impacto de arma" (un proceso secundario que llevan todas las armas para hacer colisión... o así lo recuerdo), reducen la energía del impacto para que así muera, y si eso pasa, la onda expansiva sólo podría afectar a 1 enemigo por frame. Crear un nuevo tipo de colisión significa añadir el mismo código a más de 25 tipos de enemigos.

Y eso es otra cosa que me preocupa: tengo que hacer que la granada, en sus dos niveles inferiores, explote al impactar con un enemigo, y no puedo ir haciendo collision con todos los tipos de enemigo que existen (por un lado, porque como digo, son muchos tipos, y segundo, porque sería usar demasiadas veces "collision" y eso va a penalizar el rendimiento).
Aunque acabo de recordar que tuve hace tiempo una idea, y la voy a escribir para que no se me olvide: que la granada tenga un "impacto de arma" activo, con 1pto de daño. Así, al acercarse a un enemigo, este recibirá un daño inicial que los de alrededor no, "matará" al impacto, y eso activará la explosión. De nuevo, tengo que revisar el tema de la invulnerabilidad de los enemigos tras recibir un impacto... y creo que la Leaf Blade tiene mucho que decir al respecto.


Por último, quería anotar algunas ideas para usar a Doggy en el juego, tal como mencioné en el foro de GP32Spain, pero este mensaje se ha alargado mucho más de lo esperado, así que lo dejaré para otra ocasión.