Komischer Bug
Übersicht

![]() |
luciferBetreff: Komischer Bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich hab nen Pathfinding-Algorithmus geschrieben, klappt auch alles ganz gut solange ich ne Text ausgabe in einer For-Schleife mache. Damit ich halt überprüfen kann ob alles klappt. Da das ja an der Performance zieht nehme ich die natürlich weg, dann klappt das ganz nicht mehr. Wenn ich das aber wieder hinmache klappt alles wieder. Aber warum? | ||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code? | ||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
lucifer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, dann poste ich denn mal. Ich weiß der ist nicht sonderlich gut. Aber ich arbeite noch dran:
Code: [AUSKLAPPEN] Global waypoint.waypoint Type waypoint Field entity Field name$ Field sphere End Type Function findpath(npc.test,endwaypoint$) numberofarray = 0 npc\currentnode = 0 npcnode = 0 nexit = 0 npc\targetnode$ = endwaypoint$ For waypoint.waypoint = Each waypoint If waypoint\name$ = endwaypoint$ Then endwaypoinentity = waypoint\entity Next nextnode = CreatePivot() PositionEntity nextnode,EntityX(npc\mesh),EntityY(npc\mesh),EntityZ(npc\mesh) .try numberofarray = 0 sortclose(nextnode,npc.test) For i = 0 To numberofarray For waypoint.waypoint = Each waypoint If waypoint\name$ = close(i) waypointentity = waypoint\entity waypointname$ = waypoint\name If numberofarray > 1 For inp = 0 To numberofarray - 1 If EntityDistance(closeentity(inp),endwaypoinentity) <= EntityDistance(waypointentity,endwaypoinentity) Then waypointentity = closeentity(inp):npc\way[npc\currentnode] = close(inp):npc\currentnode = npc\currentnode + 1:nextnodename = close(inp):nextnode = closeentity(inp) Next Else If numberofarray = 1 If EntityDistance(closeentity(0),endwaypoinentity) <= EntityDistance(waypointentity,endwaypoinentity) Then npc\way[npc\currentnode] = close(0):npc\currentnode = npc\currentnode + 1:nextnodename = close(0):nextnode = closeentity(0) End If End If Next Next If nextnodename <> endwaypoint Then Goto try Else npc\currentnode = 0:Return End Function Function sortclose(entity,npc.test) For waypoint.waypoint = Each waypoint haveanode = 0 For ion = 0 To 200 If waypoint\name$ = npc\way[ion] Then haveanode = 1 Next If EntityDistance(entity,waypoint\entity) <= 16 And waypoint\name <> nextnodename If haveanode = 0 Then close(numberofarray) = waypoint\name:closeentity(numberofarray) = waypoint\entity:numberofarray = numberofarray + 1 Cls End If Next End Function Und so ist das mit der Textausgabe: Code: [AUSKLAPPEN] Else If numberofarray = 1 If EntityDistance(closeentity(0),endwaypoinentity) <= EntityDistance(waypointentity,endwaypoinentity) Then npc\way[npc\currentnode] = close(0):npc\currentnode = npc\currentnode + 1:nextnodename = close(0):nextnode = closeentity(0) End If End If Next Next Text 0,500,nextnodename For ko = 0 To 150 Text ko*10,ko*10,npc\way[ko]:Flip Next If nextnodename <> endwaypoint Then Goto try Else npc\currentnode = 0:Return |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Frage: was für ein Game soll es werden? Wo hast du die Textausgabe gemacht. was funktioniert nicht? (Gibt er Fehlermeldungen aus ?)
EDIT: TEXTAUSGABE hab ich übersehen, sorry |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
lucifer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das soll nen RPG werden, in 3D. Das Pathfinding brauche ich halt für die Tagesverläufe. Und das Problem ist das er sich sozusagen "verläuft". Der chckt halt die Waypoint die in eine Sackkasse gehen und deshalb kann er nicht zurüch und man kommt in eine Endlos-Schleife. Das komische ist nur das es klappt wenn ich die Textausgabe einfüge. | ||
![]() |
Travis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte auch mal so einen komischen Fehler. Da habe ich mir bei einer Menüsteuerung zu Debugzwecken den aktuell gewählten Menüpunkt anzeigen lassen. Als dann alles funktionierte habe ich's wieder entfernt und danach funktionierte die Steuerung nicht mehr korrekt (ein Menüpunkt wurde immer übersprungen.
Ich konnte das nie lösen, da habe ich diese Ausgabe einfach in der Hintergrundfarbe (also Schwarz auf Schwarz) dargestellt und alles läuft bestens. Dabei handelt es sich nur um den Befehl "Locate 0,0: Print m" und nichts weiter. Was dein Problem angeht - ich bekomme es überhaupt nicht zum laufen, aber vielleicht habe ich den zweiten Code auch nur an der falschen Stelle eingefügt. Hab es 5 Minuten lang versucht. Nicht böse sein, aber der Code ist echt unübersichtlich. Er sagt immer Type 'test' not found. Tut mir leid, ich weiss dieser Beitrag ist sinnlos, aber ich wollte das nur loswerden. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
![]() |
lucifer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja der Test Typ ist der Typ für die Npc und befindet sich in einer anderen Datei. Und wegen der Hintergrund Farbe, ich will ja das das gar nicht mehr ausgegeben wird, weil das das Ganze un so zirak das 10 fache verlangsamt und ich will das ja Real-Time nutzen. | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
es kann auch sein dass der Algo ein bug hat der nicht auftritt wenn es ausgegeben wird, weil er dann einfach "zu langsam" ist, um den bug zu generieren
Mir kommt ehrlich gesagt dein wegfinde algo eh leicht komisch und konfus vor. Wenn ich zeit hab werd ich ihn mir mal genauer ansehen. bis dahin kannst du ja theoretisch einen kleinen pfad machen den du manuell traversieren kannst und dann deinen algo drauf ansetzen und gucken ob er ihn gleich traversieren würde alternativ dazu wären a* ( astar ) und dijkstra - pathfinding vielleicht ne interessante lektüre bis dorthin oder allgemein graphentraversierungsalgorithmen |
||
![]() |
lucifer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja ich hab halt noch nie vorher Pathfinding gemacht, und das ist mein erster Versuch. Das mit dem Zu lansam könnte natürlich seien, nur warum sollte der andere Entfernung ausrechenen, wenn das langsamer geht?
Ok hat sich erledigt, aber kennt vieleicht jemand nen gutes Tutorial für Pathfinding im 3d-Raum? |
||
![]() |
Shodan |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ob an der "zu langsam für einen Bug" Theorie was dran ist, kannst du doch testen, indem du statt der Textausgabe ein delay einfügst, welches dein Prog um den selben Wert ausbremst. Code: [AUSKLAPPEN] Text 0,500,nextnodename
For ko = 0 To 150 Text ko*10,ko*10,npc\way[ko]:Flip Next Mich irritiert auch das Flip in der For-Next-Schleife. wieso nicht nach der Schleife? |
||
www.selfmadegames.de |
![]() |
lucifer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja gut, mit dem Flip das wird schon nichts ändern, oder? | ||
![]() |
Vulture |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich weiss ja nicht nimmst du ohne den Textausgaben auch die "for" schleife und den Flip weg ? | ||
User posted image
Projekte : TerraSE Terranigma - Break Up - Final Round - Survivor Elite - Sequence Basic |
![]() |
lucifer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja nehme ich. | ||
![]() |
Vulture |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If nextnodename <> endwaypoint Then Goto try Else npc\currentnode = 0:Return
Ich würde da Mal eine DebugAusgabe anlegen ob er zurück geht oder nicht ? ist nur mal so als test ![]() |
||
User posted image
Projekte : TerraSE Terranigma - Break Up - Final Round - Survivor Elite - Sequence Basic |
![]() |
lucifer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja ok gute idee.
Also der geht wieder nachoben. |
||
![]() |
Vulture |
![]() Antworten mit Zitat ![]() |
---|---|---|
also geht er wieder auf Try zurück und das immer ? | ||
User posted image
Projekte : TerraSE Terranigma - Break Up - Final Round - Survivor Elite - Sequence Basic |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group