Mysteriöse Blitz3d Bugs/Fehler
Übersicht

![]() |
skatanistBetreff: Mysteriöse Blitz3d Bugs/Fehler |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
Ich habe zurzeit mit einigen SEHR merkwürdigen Fehlern zu kämpfen, die sich eigentlich nur auf einen Fehler in Blitz3d zurückführen lassen. Und zwar gibt B3d mir eine MAV aus, das ein Objekt, das ich löschen will, nicht exestiert. Dieses habe ich aber erst kurz vorher erstellt, und es exestiert 100%. Das merkwürdige an der Sache ist, das wenn ich im Hauptmenü, bevor man ins eigentliche Spiel kommt (wo dann die MAV kommt), beim verlassen einen Type für mein 3dFontSystem NICHT lösche, der Fehler nicht auftaucht! Komentiere ich diese Zeile aus, gibt es das Objekt, was er vorher vermisst, aufeinmal doch... Dabei ist zu beachten, das die MAV bei einem Object des Partikelsystems kommt, was ja überhaupt nix mit den 3dFonts zu tun hat! Übereinstimmende Variablen oder so gibts nich... Sowas ähnliches hatte ich schonmal, da hab ich in einer Funktion einen Cube erstellt, und das Handle in einer neu erstellten Variable gespeichert. Wenn ich nun diesen Cube bewegt habe, hat sich aufeinmal einfach so ein Partikel Emitter mitbewegt! Diese Objekte haben aber keinerlei Verbindung zueinander... Vodoo? Ausserirdische Kräfte? ![]() Langsam macht B3d keinen Spaß mehr ![]() BTW. Computer Neustart hat auch nix verändert. Wie kommt soetwas zustande, und wie kann man es umgehen? Hab immer gedacht B3d wäre Bugfrei ![]() Nachstellen kann ich den Fehler leider nicht...kommt nur in meinem großen Quellcode zustande! Über Hilfe wär ich echt dankbar ... |
||
![]() |
SoNenTyp |
![]() Antworten mit Zitat ![]() |
---|---|---|
B3D ist ziemlich Bugfrei. Gllaube eher das wie schon bei vielen vor dir der Fehler in deinem Code liegt. Aber wenn du nichts zeigst können wir auch nichts dazu sagen. | ||
Gruss Der Typ.
User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn du eine ATI Karte hast und zufälligerweise den Catalyst 5.11: Dringend mit 5.13 ersetzen. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
nutzt du Graphics zwischen erstellen und löschen? | ||
between angels and insects |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du Objekte löscht immer dran denken auch die Variablen
die es dazu gibt auf 0 zu stellen . Bei Entitys die Childs haben werden die Childs auch gelöscht wenn man das Parent löscht . Mysteriöse Blitz3d Bugs/Fehler = Mysteriöser Fehler |
||
![]() |
skatanist |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke erstmal für die Antworten.
Code kann ich wie gesagt keinen zeigen, da ich um den Fehler zu reproduzieren meinen Gesamten Code mit über 100kb reinstellen müsste, womit dann niemand mehr was anfangen kann. @Jan_: Graphics3d setzte ich nur einmal, ganz am Anfang. Zwischendurch lösche ich nur alles mit ClearWorld (und natürlich alle Types usw.). @Dreamora: Ich habe tatsächlich eine ATI Karte (X800 XT), aber mit Catalyst 5.10. Werde den Treiber mal updaten, vielleicht bringt es ja was. ![]() Hm...ich glaub ich teste den Code auchmal an 'nem anderen PC (mit Geforce 2 ![]() edit: Der Test auf dem anderen PC ergab das gleiche...immernoch eine MAV. |
||
![]() |
skatanist |
![]() Antworten mit Zitat ![]() |
---|---|---|
sry, für Doppelpost, aber das wird vielleicht einige interessieren:
![]() In meinen ganzen 3dText Funktionen gibt es ein Type Feld "hPivot". Ich bin auf die glorreiche Idee gekommen, das Feld einfach mal in hudPivot umzubennen. Siehe da, das Prob ist weg! Die Partikelengine meckert aufeinmal nicht mehr das ein Objekt fehlen würde! Interessant ist aber, das der Name "hPivot" in der Partikelengine kein einziges Mal vorkommt. Also keine doppelt belegte Variable. Die Variable, in der das Handle für den Pivot für das Patrikelsystem liegt, heisst "gLotusParticlePivot" (habe die Lotus PartikelEngine integriert). Wie erklärt sich also der Zusammenhang? Für mich ergibt das keinen Sinn...zwar ist das jetzt fürs erste gelöst, jedoch kann so ein Fehler ja jederzeit wieder auftauchen... edit: Siehe da, da ist er wieder! Genau das selbe wie vorher...hab eigentlich gar nix mehr verändert ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
@skatanist
Ich glaube dein Problem ist das BB da selber was deklariert hat was du vergessen hast zu deklarieren , an falscher Stelle steht oder irgendwo nen Tipfehler . |
||
![]() |
skatanist |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie meinste du das?
Was sollte BB von selbst deklarieren, was ich selbst auch deklarieren muss? ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst in BB Variablen benutzen ohne sie zu deklarieren
und BB macht das dann automatisch für dich . Hat mehr Nachteile als Vorteile . In VB6 heißt es Option Explicit und in BlitzMax Strict und in Blitz3D gibt es das nicht ![]() |
||
![]() |
skatanist |
![]() Antworten mit Zitat ![]() |
---|---|---|
ah...okay...das ist auch so 'ne Sache die mir bei BB nicht gefällt.
Versuche IMMER die Variable richtig zu deklarieren. Aber wie kann das mit meinem Problem zusammenhängen? Die MAV kommt ja nur, wenn ich einen zusätzlichen Befehl setzte, um in einem anderen Programmteil ein Type-Feld und ein Paar Objecte zu löschen (zwischen dem Befehl und der MAV ist ja auch nochmal ClearWorld etc.). Alle Variablen sind schon richtig deklariert...und Doppelte gibts auch nich. Interessant ist auch, das wenn ich das Handle des Objetcs das plötzlich nichtmehr exestiert kurz vor dem Fehler mit Debuglog ausgeben lasse, es nicht 0 ist! edit: ich konnte das Prob noch weiter konkretisieren: Wenn ich das Object wo ein Text aus dem Spielmenü drin ist, manuell lösche (->FreeEntitiy), kommt später im Spiel der Fehler (auch wenn ich das Handle danach auf 0 setzte). Kommentiere ich diesen einzelnen Befehl weg, und lasse das ClearWorld erledigen, was ja eh alles löscht, tritt der Fehler nicht auf! Also definitv ein Speicherfehler in BB...oder? |
||
![]() |
SoNenTyp |
![]() Antworten mit Zitat ![]() |
---|---|---|
skatanist hat Folgendes geschrieben: edit: ich konnte das Prob noch weiter konkretisieren:
Wenn ich das Object wo ein Text aus dem Spielmenü drin ist, manuell lösche (->FreeEntitiy), kommt später im Spiel der Fehler (auch wenn ich das Handle danach auf 0 setzte). Ok das ist klar. Wenn etwas nicht mehr da ist kann es nicht mehr gelöscht werden. skatanist hat Folgendes geschrieben: Kommentiere ich diesen einzelnen Befehl weg, und lasse das ClearWorld erledigen, was ja eh alles löscht, tritt der Fehler nicht auf! Wie jetzt? Du kannst ein Objekt löschen obwohl es schon gelöscht wurde? |
||
Gruss Der Typ.
User posted image |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Haste nach ClearWorld
auch alle Variablen die was mit Entitys zu tun haben auf 0 gestellt ? |
||
![]() |
skatanist |
![]() Antworten mit Zitat ![]() |
---|---|---|
@SoNenTyp:
Ich glaube du hast mein Problem nicht verstanden. Ich rede von 2 verschiedenen Objekten, an 2 verschiedenen Programmpositionen (einmal im Menü und einmal im eigentlich Spiel, mit ClearWorld etc dazwischen). Steht schon im ersten Post. Es ist ja gerade das Paradoxe, das die beiden Objekte überhaupt keinen Zusammenhang haben, der Fehler aber trotzdem nur auftritt, wenn ich das eine Objekt im Spielmenü lösche! @Markus2: Hm...Variablen in denen ein Handle steht, hab ich normalerweise nicht "geleert" (Types werden aber gelöscht). Wüsste nicht was für einen Sinn es hätte. Werde das jetzt mal so umschreiben...Vielleicht hängt das ja damit zusammen... ![]() |
||
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich würde empfehlen im Konstructor, alles mit einem Null Objekt zu Füllen | ||
between angels and insects |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
skatanist hat Folgendes geschrieben: @Markus2: Hm...Variablen in denen ein Handle steht, hab ich normalerweise nicht "geleert" (Types werden aber gelöscht). Wüsste nicht was für einen Sinn es hätte. Werde das jetzt mal so umschreiben...Vielleicht hängt das ja damit zusammen... ![]() Hi, das macht dann Sinn wenn man mit If Then diese Handles prüft ob die noch gesetzt sind um dann z.B. ein Objekt zu löschen . Wenn man dann dieses Handle an BB übergibt kann es damit nix anfangen weil es ja intern in BB nicht mehr existiert . |
||
![]() |
skatanist |
![]() Antworten mit Zitat ![]() |
---|---|---|
hm...okay...hat auch nichts geholfen.
Ich schliesse damit auf einen Bug im Befehl FreeEntity. Werde ihn wenn Möglich vermeiden, wenn es geht, und direkt ClearWorld benutzten. Fals jemand irgendetwas weiteres dazu weiss, bitte meldet euch. ![]() Mich wndert es ja auch das niemand sonst diesen Fehler hatte... |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit FreeEntity hatte ich noch nie ein Problem und
außerdem wird der ständig benutzt und da hätten sich schon ein paar mehr Leute beschwert . Lade doch mal dein Programm hoch (als zip) mit allem was dazu gehört dann würde ich da mal rein sehen . |
||
Gerhard |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du schreibst
a) ...Cube erstellt. "Einfach so" bewegt sich ein Partikel-Emitter mit. b) ...ein Objekt erstellt, existiert 100%ig. Existiert aber nicht beim Löschen. c) ...hPivot umbenannt in hudPivot. Partikelengine meckert nicht. Dann aber doch. Meiner Meinung nach suchst du deinen Fehler an der falschen Stelle. Verstehst du wirklich, was in der von dir integrierten Partikelengine geschieht? Erfahrungsgemäß passiert beim Programmieren nichts "einfach so", sondern hat einen Grund. Fehler bei B3D gab es zuletzt in Version 1.88 und 1.89 (glaub ich). Die betrafen Sprites, da wurde ich auch fast verrückt. Die sind aber weg in 1.91. Hast du 1.91? Ein Fehler bei Freeentity wäre nicht jahrelang geheim geblieben. |
||
![]() |
skatanist |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Markus2:
In dieser Form könntest du wahrscheinlich wenig mit anfangen. Ist immerhin mein erstes ernsthaftes (großes) B3d Projekt, und somit sind die einzelnen Programmstrukturen im gesamten vielleicht nicht besonders übersichtlich/verständlich/gut. Zudem muss der Code sowieso mal entrümpelt werden. Glaub mir, so wie er jetzt ist, kann man nur wenig verstehen...aber wenn ich das mal aufgeräumt/verkürzt habe, lad ichs vielleicht mal hoch. @Gerhard: Natürlich habe ich nicht versucht den kompletten Source von der Partikelengine zu verstehen (hät ichs mir gleich selbst schreiben können). Aber ich denke das ich alle grundlegenden/für das Prob relevanten Programmteile verstehe. Eigentlich denke ich beim Programmieren absolut rational, und suche den Fehler erst bei mir. Vor allem weil so ein Bug schon längst aufgefallen wäre...aber es kann doch sein, das dieser Bug nur in einer bestimmten Situation vorkommt, die bis jetzt genau so vielleicht noch niemand hatte. Ich weiss, ist sehr wage, aber anders kann ich mir langsam nicht mehr vorstellen (Verzweiflung pur). Und ja, hab mir vor kurzem extra noch mal das Update auf 1.91 geladen (hatte vorher 1.90). Das ist auch übrigens nicht das einzige, der Bug scheint sich durch mein ganzes Programm zu ziehen. Deshalb versuche ich jetzt, FreeEntity wenn möglich zu vermeiden. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group