[Tecnica] Un zoom en un scroll

Started by KeoH, July 11, 2011, 03:51:30 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

JaViS

Mil perdones por saltar con esto ahora, pero me estoy volviendo loco para encontrar el ejemplo que habias posteado. Estaba en el diario de avances?


Abrazo
Working on Anarkade. A couch multiplayer 2D shooter.

SplinterGU

no encuentro el ejemplo, pero estar esta, sino josebita no hubiese hecho un video en el portal.

busca start_scroll y scroll_start

vamos que es tan simple como 2 nuevos parametros al final de start_scroll/scroll_start que son: file, graph. y representan el destino al mapa a dibujar, luego tu haces lo que quieras con ese mapa, zoom, rotacion, etc.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JaViS

Quote from: SplinterGU on July 23, 2012, 02:58:28 PM
no encuentro el ejemplo, pero estar esta, sino josebita no hubiese hecho un video en el portal.

busca start_scroll y scroll_start

vamos que es tan simple como 2 nuevos parametros al final de start_scroll/scroll_start que son: file, graph. y representan el destino al mapa a dibujar, luego tu haces lo que quieras con ese mapa, zoom, rotacion, etc.


Maestro, gracias :)
Working on Anarkade. A couch multiplayer 2D shooter.

SplinterGU

avisa si lo has podido probar...

pero basicamente a lo que le haces zoom y rotacion no es al scroll en si, sino al mapa donde dibujas el scroll.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JaViS

Quote from: SplinterGU on July 23, 2012, 05:54:31 PM
avisa si lo has podido probar...

pero basicamente a lo que le haces zoom y rotacion no es al scroll en si, sino al mapa donde dibujas el scroll.


si, en realidad quería saber como se usaba para incluirlo en un motor de tiles con zoom. Pero todavia estoy en fase de planeamiento. :)
Working on Anarkade. A couch multiplayer 2D shooter.

fulgorelizz

Quote from: SplinterGU on July 21, 2011, 03:22:16 PM
Quote from: La momia que fuma on July 21, 2011, 01:50:15 PM
Una opción bruta/chapucera es usando get_screen para capturar la pantalla a cada frame, y ponerlo en un gráfico por encima de todo lo demas con size ajustado (Obviamente, esto solo vale para zoom-in y no para zoom-out)

Cosas a tener en cuenta: Consume bastantes recursos, hay que ocultar el gráfico del zoom antes de cada nuevo get_screen (Para que no este capturandose la misma imagen continuamente) y hay que descargar el grafico de memoria a cada frame, para no petar la ram a base de capturas de pantalla.

eso ya no sirve, get_screen da el ultimo frame dibujado... (antes que digan cualquier cosa, se que es una mierda)

venga venga maestro no seas duro contigo mismo!!!  :'(
Compiling code -- generating exe...

JaViS

A proposito, ya lo he implementado en mi juego Anarkade :)


El zoom funciona de maravillas pero es una tecnica un poco pesada en rendimiento
Working on Anarkade. A couch multiplayer 2D shooter.

SplinterGU

Quote from: fulgorelizz on June 30, 2016, 03:44:15 PM
Quote from: SplinterGU on July 21, 2011, 03:22:16 PM
Quote from: La momia que fuma on July 21, 2011, 01:50:15 PM
Una opción bruta/chapucera es usando get_screen para capturar la pantalla a cada frame, y ponerlo en un gráfico por encima de todo lo demas con size ajustado (Obviamente, esto solo vale para zoom-in y no para zoom-out)

Cosas a tener en cuenta: Consume bastantes recursos, hay que ocultar el gráfico del zoom antes de cada nuevo get_screen (Para que no este capturandose la misma imagen continuamente) y hay que descargar el grafico de memoria a cada frame, para no petar la ram a base de capturas de pantalla.

eso ya no sirve, get_screen da el ultimo frame dibujado... (antes que digan cualquier cosa, se que es una mierda)

venga venga maestro no seas duro contigo mismo!!!  :'(

gracias!
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Arcontus

Quote from: JaViS on June 30, 2016, 03:52:14 PM
A proposito, ya lo he implementado en mi juego Anarkade :)


El zoom funciona de maravillas pero es una tecnica un poco pesada en rendimiento
Rescato el tema, ya que me ha alucinado lo bien que queda en Anarkade el Zoom que ha implementado JaViS.
¿Como consigues escalar "poco a poco" el gráfico?Cuando intento escalar gráficos grandes, sumar un +1% en size es demasiado, y no se ve en los gráficos un escalado suave, sino a saltos, pero en tu zoom no observo estos saltos.
¿Puedes explicar como consigues esa suavidad al escalar? :D
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

JaViS

Para lograr esa suavidad ayuda tener una buena cantidad de FPS (el último vídeo que comparti de Anarkade es a 60), pero lo más importante es hacer bien los cálculos de transición entre un valor de zoom y otro.


Yo he descubierto que lo que más me ayuda es usar variables floata para los cálculos, aunque el resultado final sea en ints
Working on Anarkade. A couch multiplayer 2D shooter.

Arcontus

#40
Quote from: JaViS on November 22, 2018, 12:47:14 PM
Para lograr esa suavidad ayuda tener una buena cantidad de FPS (el último vídeo que comparti de Anarkade es a 60), pero lo más importante es hacer bien los cálculos de transición entre un valor de zoom y otro.


Yo he descubierto que lo que más me ayuda es usar variables floata para los cálculos, aunque el resultado final sea en ints
Pues nosotros tratamos de hacer un "efecto" de acercamiento/alejamiento en un paralax usando el parámetro size y usando floats pero desestimamos el resultado por que se veian los saltos del size para objetos mayores de 100x100 y quedaba más mal que bien. Por ejemplo, un objeto de 600x600, un 1% representa 6 pixeles y no queda suave la transición ya que son escenas lentas.

Sugerencia: Quizas no vendría mal un size con más precisión que 0-100. Por ejemplo,  con un precision_sice que venga por defecto a 100, pero que pueda modificarse para no romper los trabajos actuales creo que funcionaría.
5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

JaViS

No pasa tanto por si el valor de size es entero o float, si no en cómo   haces la transición entre un valor y otro.
Tiene que ser una animación natural al ojo, a eso me refiero con hacer buenos cálculos
Working on Anarkade. A couch multiplayer 2D shooter.