Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

El bug del Modo-8 #21

Open
vii1 opened this issue Jul 7, 2019 · 5 comments · May be fixed by #53
Open

El bug del Modo-8 #21

vii1 opened this issue Jul 7, 2019 · 5 comments · May be fixed by #53
Assignees
Labels
Milestone

Comments

@vii1
Copy link
Owner

vii1 commented Jul 7, 2019

El Modo-8 siempre tuvo un bug que permitía a la cámara salirse del mapa. VPE seguía creyendo que la cámara estaba en el último sector pisado, lo que hacía parecer que el sector se estirara hasta el infinito.

Creo recordar que una forma de evitarlo era teletransportar la cámara a otro sector y luego de vuelta a su lugar original, de forma que se obligaba a VPE a recalcular el sector actual. Lo que me hace pensar que el fallo está en la función que comprueba la colisión con las paredes y el paso de un sector a otro cuando se dan pasos pequeños.

@vii1 vii1 added the bug label Jul 7, 2019
@vii1 vii1 added this to the Versión 2.02 milestone Jul 7, 2019
@AzazelN28
Copy link
Collaborator

He estado investigando este bug y creo que puede tener que ver con que el radius del proceso de la cámara sea 0. Voy a intentar hacer un programa que lo reproduzca y si es así quizá se podría poner un radius por defecto de 1 (y que no se pueda poner un radius menor).

@vii1
Copy link
Owner Author

vii1 commented Mar 5, 2022

Creo recordar que era mucho más fácil provocar el bug con radius=0, pero no es requisito. Acabo de reproducirlo en WLD_VIEW con radius=64.

@AzazelN28
Copy link
Collaborator

AzazelN28 commented Mar 6, 2022

Voy a intentar solucionarlo.

¿Puedes poner por aquí el programa .PRG con el que reproducir el bug? ¿Se puede reproducir trasladando el proceso cámara a una coordenada x e y fuera de cualquier sector?

Creo que en VPE se guardan tanto la coordenada actual como la coordenada anterior, quizá podría hacer algo como:

if (fuera_de_sector(new_x, new_y)) {
  int dx = new_x - old_x;
  int dy = new_y - old_y;
  // ...obtener el inc_x y el inc_y.
  int test_x = old_x; 
  int test_y = old_y;
  while (!fuera_de_sector(test_x, test_y)) {
    test_x += inc_x;
    test_y += inc_y;
  }
  new_x = test_x;
  new_y = test_y;
}

@vii1
Copy link
Owner Author

vii1 commented Mar 6, 2022

¿Puedes poner por aquí el programa .PRG con el que reproducir el bug?

Viene con DIV2, si no lo tienes aquí te lo paso. wld_view.zip
Ve más o menos a las coordenadas (5736, 2264), en la cueva con las grietas de lava en el suelo. Moverse por encima de esas grietas suele provocar el bug.

¿Se puede reproducir trasladando el proceso cámara a una coordenada x e y fuera de cualquier sector?

No, porque entonces VPE hace una comprobación completa y detecta que la cámara no está en un sector válido. El bug sólo salta cuando mueves la cámara poco a poco. Por eso un workaround es teletransportar la cámara lejos y traerla de vuelta a su sitio.

@AzazelN28
Copy link
Collaborator

Vale, he estado probando y he conseguido sacar unas coordenadas exactas para reproducir el error:

x=5815;
y=2466;
angle=270000;

@AzazelN28 AzazelN28 self-assigned this Mar 9, 2022
@AzazelN28 AzazelN28 linked a pull request Mar 10, 2022 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants