Kollisionsproblem / Erledigt
Übersicht

Omenaton_2Betreff: Kollisionsproblem / Erledigt |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi !
Mir ist kürzlich ein schwerwiegendes Problem aufgefallen. Das Raumschiff des menschlichen Spielers kollidiert nicht mehr mit den anderen Objekten ! Obwohl die Kollision schon seit mehreren Jahren gut funktioniert hat. Ich untersuche schon seit 2 Tagen (mit Unterbrechung) diesen "Bug" (falls das einer ist) und gerade habe ich eine interessante und wie ich denke wichtige Feststellung gemacht : Die Kollision wird nur dann erkannt, wenn das Schiff des Spielers mit einem sich bewegenden KI-Schiff kollidiert, sonst nicht. Ich frage mich wie das sein kann. Ich habe natürlich schon eine menge mögliche Fehlerquellen untersucht und soweit wie möglich ausgeschlossen : Überprüft, ob nicht irgendwo (vielleicht aus Test oder Debugging Zwecken eingebaut und wegen Vergessen nicht wieder entfernt) diese Befehle falsch eingesetzt werden : Collisions, EntityType, EntityRadius, HideEntity, ResetEntity. Es scheint so zu sein, daß die KI-Objekte miteinandern kollidieren können, weil ein fliegender Asteroid bleibt schön vor der Wand einer Station stehen (wie schon immer.) Ich habe vor ca 2 Wochen angefangen das Herumlaufen im Schiffsinneren einzubauen. Das habe nun auch drin. (es fehlen noch 2 kleine zusätzliche Features.) Ich habe die Programmversion eingeladen, die ich BEVOR mit diesem Herumalufen Feature angefangen habe abgespeichert habe und da ist der Fehler auch schon drin. Ich habe eine komplett Backup Version von April dieses Jahres, da ist der Fehler noch nicht drin. Ich habe die meiner Meinung nach relevanten Stellen in den 2 Codes verglichen, konnte aber keine bedeutende Unterschiede feststellen. Hat jemand eine Idee, woran ich vielelicht noch nicht gedacht habe ? Und was kann uns dieser Hinweis, daß die Kollision doch erkannt wird, sofern sich beide Objekte bewegen sagen ? Bringt das jemanden zu einer hilfreichen Erkenntnis ? |
||
- Zuletzt bearbeitet von Omenaton_2 am Mi, Mai 26, 2010 15:15, insgesamt einmal bearbeitet
![]() |
ozzi789 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du vlt UpdateWorld![]() mfg ozzi |
||
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5 |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke für die Idee.
Nein, UpdateWorld kommt nur 1 Mal in der Hauptschleife vor, so wie schon immer. |
||
![]() |
das wurgel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Da bist du warscheinlich schon selbst drauf gekommen aber ich würde an deiner Stelle noch Mal folgendes überprüfen:
- Werden die zu kollidierenden Kollisionstypen mit Collisions richtig definiert? - Kriegen die Objekte auch den richtigen Kollisionstypen zugewiesen? (an dieser Stelle vielleicht ein DebugLog machen um zu prüfen ob es auch wirklich passiert) - Werden die Kollisionen nach einen eventuell vorkommenden ClearCollisions() wieder angeschaltet? Wenns das alles nicht ist, kannst du ja eine Kopie von der noch funktionierenden Version machen und nach und nach Codeteile von der aktuellen Version rüberkopieren und testen. Dann gibt es nur zwei Möglichkeiten: Entweder am Schluss funktioniert alles oder du weist eben Bescheid welcher Codeteil das Problem auslöst. |
||
1 ist ungefähr 3 |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Es hat sich "erledigt".
Nach langer und schwieriger Suche, habe ich den Fehler (der eigentlich gar keine sein dürfte) gefunden und durch eine Umgehung gelöst. Ich verstehe nicht wie das sein kann, aber den Bug, daß das Raumschiff des Spielers nicht mehr kollidiert, hat ein "ShowEntity" Befehl für das Schiff (Teil des allgemeinen Line of Sight Check Rutine für NPCs) verursacht. Wenn es HideEntity oder ResetEntity gewesen wäre, hätte ich das verstanden und schon längst gefunden, aber SHOW ! Das ist schon sehr komisch. An der Stelle ist es einfach nicht möglich (ohne den Fehler zu verursachen) das Schiff zu hiden und dann nach Line of Sight Check gleich wieder zu zeigen zu machen. Deshalb habe ich da den einfachen Trick angewendet, das Schiff kurz nach oben zu heben und dann wieder zurück, hauptsache das Schiff ist während des Checks nicht im Weg. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group