Mysteriöse Blitz3d Bugs/Fehler

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

skatanist

Betreff: Mysteriöse Blitz3d Bugs/Fehler

BeitragDi, Jan 10, 2006 1:09
Antworten mit Zitat
Benutzer-Profile anzeigen
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? Shocked

Langsam macht B3d keinen Spaß mehr Rolling Eyes

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 Confused

Nachstellen kann ich den Fehler leider nicht...kommt nur in meinem großen Quellcode zustande!

Über Hilfe wär ich echt dankbar ...

SoNenTyp

BeitragDi, Jan 10, 2006 5:50
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 10, 2006 9:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 10, 2006 11:03
Antworten mit Zitat
Benutzer-Profile anzeigen
nutzt du Graphics zwischen erstellen und löschen?
between angels and insects

Markus2

BeitragDi, Jan 10, 2006 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 10, 2006 15:14
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Smile

Hm...ich glaub ich teste den Code auchmal an 'nem anderen PC (mit Geforce 2 Very Happy ), um diese Fehlerquelle auszuschalten.

edit: Der Test auf dem anderen PC ergab das gleiche...immernoch eine MAV.

skatanist

BeitragMi, Jan 11, 2006 0:28
Antworten mit Zitat
Benutzer-Profile anzeigen
sry, für Doppelpost, aber das wird vielleicht einige interessieren:
Shocked
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 Confused langsam wirds gruselig!

Markus2

BeitragMi, Jan 11, 2006 13:11
Antworten mit Zitat
Benutzer-Profile anzeigen
@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

BeitragMi, Jan 11, 2006 20:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinste du das?

Was sollte BB von selbst deklarieren, was ich selbst auch deklarieren muss? Confused

Markus2

BeitragMi, Jan 11, 2006 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Confused

skatanist

BeitragDo, Jan 12, 2006 1:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jan 12, 2006 1:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jan 12, 2006 13:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Haste nach ClearWorld
auch alle Variablen die was mit Entitys zu tun haben auf 0 gestellt ?

skatanist

BeitragDo, Jan 12, 2006 15:19
Antworten mit Zitat
Benutzer-Profile anzeigen
@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... Smile

Jan_

Ehemaliger Admin

BeitragDo, Jan 12, 2006 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde empfehlen im Konstructor, alles mit einem Null Objekt zu Füllen
between angels and insects

Markus2

BeitragDo, Jan 12, 2006 19:30
Antworten mit Zitat
Benutzer-Profile anzeigen
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... Smile


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

BeitragDo, Jan 12, 2006 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Wink

Mich wndert es ja auch das niemand sonst diesen Fehler hatte...

Markus2

BeitragDo, Jan 12, 2006 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Jan 12, 2006 22:23
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Jan 13, 2006 0:02
Antworten mit Zitat
Benutzer-Profile anzeigen
@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.

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group