Problema en Scrolls

Started by TYCO, November 14, 2008, 12:38:46 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

TYCO

Bueno, el tema es un poco extraño... y una vez analizado... ojala sea fallo mio y no un bug de Bennu.

El error solo se produce cuando hay DOS jugadores, con UN jugador va bien. Este es el código para DOS jugadores:

En Proceso Simulador():
.....
set_mode(800,600,16);
define_region(1,0,0,800,300);
define_region(2,0,300,800,600);
.....

En Proceso Jugador(int jugador);
.....
    If (jugadores == 1)
        start_scroll(0, mapa_pista, 102, 0, 0, 0);
        scroll[0].camera=id;
    Else
        start_scroll(jugador, mapa_pista, 102, 0, jugador, 0);
        scroll[jugador].camera=id;
    End
.....

Como se ve en las Capturas... El scroll[1] que es del Jugador 1, nunca produce ese error visual (cuando juegas con un sólo jugador en scroll[0] tampoco se produce el error), únicamente el error se produce en el scroll[2]. Al principio creía que era por un xadvance(); que contienen las luces anti-niebla (que las coloca delante del coche, porque coge las coordenadas x e y del jugador), probé con advance(); pero seguía saliendo el error; entonces quite los xadvance para que salgan las luces anti-niebla directamente en las coordenadas x e y del jugador (encima de él), pero mi sorpresa es que también se produce el error, sin usar advance() ni xadvance() y viendo que scroll[0] y scroll[1] salen bien... algo está pasando.

El inconveniente del scroll[2] es que como la esquina superior izquierda es la de region 2 igual tiene algo que ver, porque yo uso este código:
En proceso luces_anti_niebla(int jugador):
.....
region=jugador;
angle=father.angle;
If (jugadores == 1)
   x=father.x-scroll[0].x0;
   y=father.y-scroll[0].y0;
Else
   x=father.x-scroll[jugador].x0;
   y=father.y-scroll[jugador].y0;
   If (jugador == 2)
      y+=300;
   End
End
.....

No estoy seguro si ese "y+=300;" esta influyendo en el error al sroll[2], pero esa línea tengo que ponerla porque sino pone las luces del Jugador 2 donde está la region 1.



Aunque los segundos pone una 16" y otra 25" es lo que he tardado en capturar cuando se veía mal y cuando se veía bien.
SON CAPTURAS CASI SEGUIDAS Y EL ERROR NO SALE SIEMPRE:

CAPTURA CON ESE ERROR:



CAPTURA SIN ESE ERROR:
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)

SplinterGU

#1
con el error te referis al recuadro ese transparente que se ven los bordes?
bueno, eso es evidente no es error del scroll, pero puede ser otra cosa... podrias señalar con un circulo de color o un cuadrado los defectos de la imagen que decis, si es que no es el recuadro.

preguntas:

- Eso es un grafico cargado desde disco? o es un mapa creado manualmente?
- Que tipo de grafico es? que dimensiones tiene? que profundidad de color?
- Que profundidad de color es tu juego?
- Que version de bennu estas usando?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

TYCO

El error, me refiero a que no encajan las luces donde deberían... entonces un lado se sobrepone (produciendo más blanco)... y el otro no sale nada (dejando ver la pista sin niebla).

Intentare está tarde hacer un paquete externo del juego para que todas esas preguntas y muchas más se puedan probar en tiempo real.

Mientras tanto puedo decir:
Preguntas:
1. Ambas cosas (la niebla es un new_map de 16Bits y las luces son un graph de un fpg)
2. Es lo que se ve en pantalla (la niebla las dimensiones de region1 o region 2, son equivalentes) a 16Bits
3. 16Bits.
4. Bennu WIP 15 update2 (la más reciente creo)
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)

SplinterGU

sinceramente no me doy cuenta donde deberian estar las luces...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

animanegra

Creo que el error que dice es el que se ve en la pantalla que el cuadro no encaja exactamente y queda algo desplazado. :S Osea que pinta todo de negro con un rectangulo para poder variar el dibujo interior. En el interior tiene una parte con blanco para iluminar. Pero al no casar bien el rectanbulo se le añade el reborde ese que se ve feo.

Eso es lo que he entendido yo :S
"PoCoYo es dios!!"

SplinterGU

eso mismo dije yo, si era el recuadro y segun dice TYCO no es eso... no entiendo el problema...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

TYCO

#6
XD es lo que dice animanegra, lo que debería hacer es lo que hace el otro jugador, poner las luces sin esa especie de borde (que parece un botón).

No se ve el error en el otro jugador, creo que es evidente en las capturas, cual esta bien y cual mal. Un jugador lo hace bien y el otro lo hace mal.

Pero lo dicho, voy intentar hacer un paquete para descargar y ver el error en ejecución (tiempo real).
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)

SplinterGU

#7
y estas operaciones las haces con procesos diferentes? o sea, 1 proceso pone 1 grafico con un flag luego otro encima con otro flag?
de ser asi, tienen seteado priority con valores unos por encima de otros? o todos usan la misma prioridad (campo "priority"), lo mismo para la z...

no olvidar tambien al padre con respecto a estos procesos, todo esto si se hace con procesos...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

TYCO

He probado este código una y otra vez, cambiado parámetros como: priority, z, etc...
Haber si es que hago yo algo mal, ya no lo sé, me vuelvo loco buscando el fallo, cualquier ayuda será bien recibida.

Por cierto en Bennu WIP-2 he tenido que poner: "bgdc -Ca _Pruebas_.prg" en cambio en Bennu WIP-15c2 con "bgdc _Pruebas_.prg" me compila perfectamente... y si hago un "bgdc" para ver la ayuda dice bien claro:

-C options      Specify compiler options
                    Where options are:
                    a    Enable automatic declare functions
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)

SplinterGU

#9
1) esta mal pasar el father a un proceso por parametro, el father no debe ser cambiado por otro proceso, es un error...
2) los procesos deben ser del tipo c_scroll, y no hay que hacer eso de "if (jugador ... ) y+=..." todo eso puede hacer que las x e y no sean exactamente igual, y mas si usamos algun advance...

en un rato te paso un algoritmo de como deberia ser...

EDIT: Quiero aclarar que las rotaciones no son 100% precisas, segun el angulo el grafico parece como temblar, esto es porque hay diferencias de 1 pixel en el centro o en el tamaño, segun sea el angulo, esto es debido a si bien ahora no hay corrupcion de graficos, ahora al usarse mayor precision en los calculos, el centro de los graficos rotados no es exacto por ser los pixels valores enteros y no decimales. No se si se entiende.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

TYCO

1) No se debería cambiar lo sé, pero hice pruebas a ver si realmente funcionaba, y parece que sí, aunque como dices no se debería hacer supongo, es un cambio fácil.
2) Mira eso de ctype=c_scroll en el proceso luces no me he dado cuenta te puedes creer??? Creo se debe a que antes usaba otro método para crear la niebla y lo cambie para que consumiera menos recursos (hacia map_clone en cada frame y subía mucho el consumo), ya que no usaba un proceso luces, lo hacia todo desde el proceso niebla();

A pesar de todo esto... no es extraño que sólo suceda en el scroll[2] y no en el scroll[1]??? y en la WIP-2 tampoco suceda??? a mi me ha parecido extraño.

Mañana haré más pruebas y estudiaré ese código, ahora es tarde, me retiro por hoy.
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)

SplinterGU

es por las correcciones de las rotaciones para que no queden graficos de un triangulo o una linea larga de 1 pixel...

igual el ejemplo, hay que depurarlo, porque si pones un objeto sobre otro, se ve la parte de la niebla del recuadro del ultimo coche... no se si se entiende, pero cuando pongas uno sobre otro lo vas a ver...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

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

SplinterGU

pudiste probar esto? dame por lo menos una alegria el dia de hoy....
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

TYCO

jeje ayer casi no tuve tiempo de probar/hacer nada, lo he mirado y a ver si después de comer puedo probarlo y adaptar lo que necesite en el Rally, pero a simple vista... el proceso iniciar_niebla(); no debería estar con ctype=c_scroll; por si el JUGADOR llega al borde del scroll... la imagen de la niebla no estará en el centro... y no cubrirá la pantalla correctamente.

Pero ya te digo que es a simple vista, sin leer el código en serio, lo dicho, después de comer espero comunicaros algo (en 3/4 horas).
Programador, Escritor/Guionista y Deportista.

Todo Modo Gráfico tiene por detrás una Línea de Comandos.

SnowCraft Remake (100%)
Rally Mortal (87%)