Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: Soviet on February 09, 2014, 03:02:53 AM

Title: dudas con scroll
Post by: Soviet on February 09, 2014, 03:02:53 AM
Hola a todos!!
tengo un par de dudas respecto al scroll que se suele usar en los juegos de rol, estaría muy agradecido que me iluminaran en ese aspecto.
1.- es posible hacer "zoom" en un scroll? por ejemplo como cuando en comandos le hacías zoom al mapa?
2.- si hago que un scroll se repita en mosaico vertical y horizontal, es posible hacer que solamente el scroll original se vea y los demás no?, porque por ejemplo me gustaría hacer que en este scroll el protagonista siempre se vea en el centro de la pantalla.
Espero puedan ayudarme... Gracias!!

Saludos!!
Title: Re:dudas con scroll
Post by: laghengar on February 09, 2014, 01:07:18 PM
En el 1, para hacerlo tendrás que crearte un proceso cuyo sprite se modifique dinámicamente copiando los píxeles a los que se les hace zoom.

            Otra opción es poner el mismo scroll con el zoom y colocarle una region() para que solo se vea esa parte que le haces zoom, maneja los parámetros [ <INT destination fileID >, <INT destination graphID > ]       
                      para ayudarte con ello. Puede que la primera sea la mejor opción, pero es más complicada de hacer.

Para el 2 ya me he perdido, no se que quieres decir.
          NT Start_scroll ( <INT scrollnumber> ,  <INT fileID> , <INT graphID> , <INT backgroundgraphID> , <INT regionnumber> , <INT lockindicator> , [ <INT destination fileID >, <INT destination graphID > ] )
          Esta función supongo que ya la conoces. El parámetro lockindicator no solo maneja el ciclo vertical y horizontal del scroll principal, también maneja el ciclo del fondo.
          Por otro lado, si quieres que tu protagonista esté siempre en el centro de la pantalla, estando este situado en un scroll, tienes que colocar la id del proceso del protagonista como valor de la variable camera
                      dentro de la estructura del scroll en el que se encuentra.

                      Sí el proceso protagonista está en el scroll 1.
                                 scroll[1].camera=_idProcesoProtagonista;
Title: Re:dudas con scroll
Post by: Soviet on February 10, 2014, 12:42:24 AM
Quote from: laghengar on February 09, 2014, 01:07:18 PM
En el 1, para hacerlo tendrás que crearte un proceso cuyo sprite se modifique dinámicamente copiando los píxeles a los que se les hace zoom.

            Otra opción es poner el mismo scroll con el zoom y colocarle una region() para que solo se vea esa parte que le haces zoom, maneja los parámetros [ <INT destination fileID >, <INT destination graphID > ]       
                      para ayudarte con ello. Puede que la primera sea la mejor opción, pero es más complicada de hacer.

Para el 2 ya me he perdido, no se que quieres decir.
          NT Start_scroll ( <INT scrollnumber> ,  <INT fileID> , <INT graphID> , <INT backgroundgraphID> , <INT regionnumber> , <INT lockindicator> , [ <INT destination fileID >, <INT destination graphID > ] )
          Esta función supongo que ya la conoces. El parámetro lockindicator no solo maneja el ciclo vertical y horizontal del scroll principal, también maneja el ciclo del fondo.
          Por otro lado, si quieres que tu protagonista esté siempre en el centro de la pantalla, estando este situado en un scroll, tienes que colocar la id del proceso del protagonista como valor de la variable camera
                      dentro de la estructura del scroll en el que se encuentra.

                      Sí el proceso protagonista está en el scroll 1.
                                 scroll[1].camera=_idProcesoProtagonista;
En efecto, respecto al primer punto, la segunda opcion me parece mas asequible...

respecto al segundo punto ya hice eso de poner al protagonista que sea el proceso que estara al centro en el scroll, sin embargo al llegar al limite del scroll el protagonista deja de estar en el centro de la pantalla para llegar al limite del scroll en si, y no quiero que eso suceda, de ahi mi idea de hacer que el scroll se repita tanto horizontal como verticalmente y del mismo modo no quiero que se vean los scroll repetidos, que se vean negros o algo asi....

veré si me resulta lo del primer punto, gracias por la ayuda laghengar!!
Title: Re:dudas con scroll
Post by: laghengar on February 10, 2014, 10:37:21 AM
Ah ok, ahora si te entendí. Pues supongo que llegarás a la misma conclusión que yo, añadirle al scroll un borde lo suficientemente grande que te permita seguir manteniendo al personaje en el centro. Me parece feo, pero no se me ocurre otra cosa.
Title: Re:dudas con scroll
Post by: Soviet on February 10, 2014, 09:00:57 PM
Quote from: laghengar on February 10, 2014, 10:37:21 AM
Ah ok, ahora si te entendí. Pues supongo que llegarás a la misma conclusión que yo, añadirle al scroll un borde lo suficientemente grande que te permita seguir manteniendo al personaje en el centro. Me parece feo, pero no se me ocurre otra cosa.
lo estuve probando y la verdad es que no me parece que quede tan feo, es cosa de saber darle estética a los limites del scroll pienso yo, de todas formas gracias por la ayuda!!
Title: Re:dudas con scroll
Post by: Erkosone on February 11, 2014, 05:43:16 PM
1 - con el sistema destination, mirate por el foro, yo no lo he usado en bennu pero recuerdo que funcionaba bien.
2 - en vez de mover al personaje mueve al scroll, simplemente es eso, el personaje en pantalla sin movimiento y el "supuesto movimiento del personaje" lo aplicas al scroll y listos ;)
Title: Re:dudas con scroll
Post by: Soviet on February 12, 2014, 01:27:41 AM
Quote from: Erkosone on February 11, 2014, 05:43:16 PM
1 - con el sistema destination, mirate por el foro, yo no lo he usado en bennu pero recuerdo que funcionaba bien.
2 - en vez de mover al personaje mueve al scroll, simplemente es eso, el personaje en pantalla sin movimiento y el "supuesto movimiento del personaje" lo aplicas al scroll y listos ;)
echare un vistazo a lo de destination a ver que tal
respecto a lo segundo, es una buena idea lo q acabas de comentar, a ver si en estos dias lo pruebo, Gracias Erkosone!!
Title: Re:dudas con scroll
Post by: Drumpi on February 16, 2014, 03:07:23 AM
Pues yo me he perdido ¿qué es eso del destination? ¿Es lo de pintar el scroll sobre un mapa?
Y lo segundo, si el scroll es cíclico (flags 1+2+4+8, si la memoria no me falla), el proceso "target" jamás se irá a los bordes del scroll porque símplemente no existen bordes.
Title: Re:dudas con scroll
Post by: Soviet on February 16, 2014, 03:48:22 AM
Quote from: Drumpi on February 16, 2014, 03:07:23 AM
Pues yo me he perdido ¿qué es eso del destination? ¿Es lo de pintar el scroll sobre un mapa?
Y lo segundo, si el scroll es cíclico (flags 1+2+4+8, si la memoria no me falla), el proceso "target" jamás se irá a los bordes del scroll porque símplemente no existen bordes.
al final no encontre neda de destination y quede en las mismas que tu o no supe buscar bien...
respecto a lo del scroll ciclico, lo considere, pero tambien puedo colocarle unos bordes negros mas o menos difumado, de modo que no se vea tan mal y que quepan dentro de las colisiones, lo he probado asi y me va de fabula.
Title: Re:dudas con scroll
Post by: Drumpi on February 16, 2014, 04:12:16 AM
Hombre, sé que existe una versión de START_SCROLL que le das dos parámetros extra (file y graph) y te pinta sobre un gráfico, que si se lo asignas a un proceso, te permite reescalarlo (variable local size, sizex o sizey), girarlo (angle), transparentarlo (flags=4 o variable local alpha), espejarlo (flags).
Es la forma más sencilla de tener zoom, pero usa muchos recursos (o sea, que no se puede usar en consolas portátiles, en PC no hay problema).
Title: Re:dudas con scroll
Post by: laghengar on February 17, 2014, 02:16:46 AM
Quote from: Drumpi on February 16, 2014, 04:12:16 AM
Hombre, sé que existe una versión de START_SCROLL que le das dos parámetros extra (file y graph) y te pinta sobre un gráfico, que si se lo asignas a un proceso, te permite reescalarlo (variable local size, sizex o sizey), girarlo (angle), transparentarlo (flags=4 o variable local alpha), espejarlo (flags).
Es la forma más sencilla de tener zoom, pero usa muchos recursos (o sea, que no se puede usar en consolas portátiles, en PC no hay problema).

Yo pienso que lo de destination es eso mismo, ya que en la definición de la wiki viene tal que así:

INT Start_scroll ( <INT scrollnumber> ,  <INT fileID> , <INT graphID> , <INT backgroundgraphID> , <INT regionnumber> , <INT lockindicator> , [ <INT destination fileID >, <INT destination graphID > ] )