Direkte Wegsuche

Spiele, Demos, Grafikzeug und anderes unterhaltendes.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

Dickes Danke fürs Testen

Habe nun die Fehlerquellen einkreisen können.

Es ist jetzt nicht böse gemeint, aber ich brauche keine weiteren Screens :lol:

mal sehen was sich in der Nacht entwickelt ...
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

Will nur mal sagen : Hammer ! :D

Ziemlich flott das ganze ! :allright:
Also wenn da jetzt noch 3 Achsen berücksichtigt werden ... könnt man damit grad was in 3D machen :)

Weiter so!

Cheers,
Thalius
"...smoking hash-tables until until you run out of memory." :P
Benutzeravatar
Max_der_Held
Beiträge: 595
Registriert: 18.04.2006 17:01
Wohnort: Bavaria
Kontaktdaten:

Beitrag von Max_der_Held »

sauber. :D :shock:

Des is echt genial. :D

wäre es möglich, dass er evtl ab z.b. 100 knoten rechnen aufhört, und erst, wenn "der spieler da ist" das eigendliche Ziel wieder weiterberechnet wird? zur leistungseinsparung (kann zwar dann sein, dass er unmögliche Ziele ausgibt, aber bevor die Figur einfach stehnbleibt, wie in spellforce, wäre eine Aufteilung der Strecke doch evtl besser praktischer (k.a.)

viel erfolg :D

-Max
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

@Thalius

Das ganze im "echten" 3D zu machen ist mit meiner Methode nicht möglich, da ich an den Mauern im 3D (welche Flächen darstellen) keine festen "weg optimierenden" Knoten anlegen kann, da ich ja nicht einfach die Ecken nehmen kann sondern es auch an jedem belibigen Punkt an der Kante sein könnte.
Wenn dann müsste man dort wieder in 2D (Karte) umwandeln.

@Max_der_Held
Klar wäre das möglich, nur dieses "schon mal loslaufen" führ in 90% der fälle zu einem riesen Umweg.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Im 3D wird auch alles einfach nur in skalare Felder unterteilt. Meistens sind Octrees sowieso schon vorhanden.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Thalius
Beiträge: 476
Registriert: 17.02.2005 16:17
Wohnort: Basel / Schweiz

Beitrag von Thalius »

Wenn 2 Achsen liesse sich trotzdem was machen.

Wenn du die Möglichkeit lässt Maps mit "Mappunkten" zu verbinden - ob diese nun übereinander oder nebeneinander dargestellt werden ist ja im prinzip egal. Sprich die Wegsuche zum Ziel eine Art Zeiger oder "Portal" zu einer anderen Map anlegen kann und dort wiederum von start -> end durchworked.

Somit wärs möglich auch so eine wegsuche auf eine region zu begreenzen ( speedfactor bei grösseren maps ) - dadurch könnte man eine verteilung auf mehrere 2D Ebenen vornehmen - womit sich in 3D mit wegsuche und vorausgesetzt "Interconnected Nodes" schon sowas wie Dune 2000 / 3D umsetzen liesse ;)

Oder die Wegsuche auf verschiedene labyrinthe die man runtime-nachlädt erweitern.

Cheers, Thalius
"...smoking hash-tables until until you run out of memory." :P
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

irgendwie macht das alles kein spaß mehr :cry:

da denkt man, man halt die Bugs entfernt, und alles mögliche unternommen, und testen dann auch erfolgreich Mauernstellungen aus, die vorher nicht funzen, und in der neuen version dann gehen. UND trotzdem kommt irgendwann wieder n dumme Mauer die aus der reihe fällt ...

Trotzdem hier noch mal n Update

PathFind - Demo
(Link aktuallisiert 9.7.2010)

Hinweiß:

Mir ist klar das diese Wegfindung mit allen dingen klar kommen muss.
Aber es ist nicht der Sinn das Programm mit NanoMauern zu nerven oder Mauernhaufen.

Die Sache das der Thread abschmiert, verstehe ich nicht. denn normalerweise starte ich immer n neuen Thread pro Wegsuche und kille den Alten und lösche den Speicher ...

Ich werde Am Wochenende oder so den Code freigeben, dann könnte ihr ja mal reinschauen.
Zuletzt geändert von STARGÅTE am 10.07.2010 23:20, insgesamt 1-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
dige
Beiträge: 1235
Registriert: 08.09.2004 08:53

Beitrag von dige »

Das Problem liegt wahrscheinlich am 'killen' selbst. Du solltest NIE einen
Thread mit KillThread beenden. Am besten Du baust Dir ein Signalhandling auf, damit sich der Thread selbst beendet. Nur in diesem Fall wird alles sauber beendet und der Speicher freigegeben..
"Papa, ich laufe schneller - dann ist es nicht so weit."
Benutzeravatar
HeX0R
Beiträge: 3040
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Ausserdem dürfte es zum testen helfen, den Thread nicht als Thread auszuführen, sondern direkt.
Auch wenn dann erst mal das ganze Eventhandling einfriert, du bekommst einfach die besseren Debugmöglichkeiten.

Zumindest mache ich das immer so, wenn ich Probleme mit einem unregelmässig abschmierenden Thread habe, oder er einfach nicht das tut, was ich von ihm erwarte.

Ansonsten:
Fettes Teil, was du da bastelst, lass bloss den Kopf nicht hängen :allright:
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag von CNESM »

Wirklich schönes Beispiel. Bei mir kommt es zwar auch in unregelmäßigen Abständen zu Abstürzen des gesamten Spiels, aber im wenn das Spiel arbeitet, arbeit es korrekt. Macht Spaß, sich mit der Sache zu beschäftigen. Bleib dran!
Antworten