Weg Berechnung / Karte / Meer / Browsergame

Hallo erstmal,

mit Mazes zu arbeiten klingt hier zwar sehr gut, die Maze Karte in einem gröberen Raster zu halten auch.

Ein Problem sehe ich hier allerdings noch: Eine Karte hat immer einen Anfang und ein Ende. Die Welt ist allerdings rund.

Wie verhindere ich das AStar den Weg über die ganze Karte berechnet, wenn es doch einfach über den linken Rand hinausfahren kann und beim rechten wieder rausfahren könnte. Ich hab in der Dokumentation von Astar hierzu nichts gefunden. Kann mir da jemand weiterhelfen?

Gruß Pinky
 
Die einfachste Variante wäre es, sich die Karte mehrmals zusammenzulegen (9xWorldmap, um genau zu sein), so hat man in jede Richtung den optimalen Weg. Die Karte würde von den Ausmaßen doppelt so groß werden (habe den Teil ausgegraut, der mM keine Verbesserung bringt). Man muss dann eben nur bei der Anzeigeumsetzung darauf achten, dass die Koordinaten passen, quasi ein Modulo am Map-Rand (blau umrahmt, alte Map).

Astar_World.gif

mfg chmee
 
Hallo,

danke für die schnelle Antwort. Ja daran habe ich auch schon gedacht. Mein Problem war die transferleistung der Koordinaten.

Angezeigt bekomme ich ja immer nur die aktuelle Karte. Wenn ich mich am linken Rand der Karte befinde und zum rechten Rand möchte übergebe ich als Zielort die Koordinaten des rechten Randes. Dorthin werde ich dann auch einmal quer über die ganze Welt navigiert.

Klar kann ich mithilfe der 9xWorldscales die "Wegberechnung" korrekt machen, lande auch an einem Punkt der exakt dem Punkt am Rechten Kartenrand entspricht, der aber de facto nicht den Koordinaten des Rechten Randes entspricht. Der Weg der gefahren wird wäre also Praktikabel. Der Ankunftsort aber nicht der gewünschte sondern ein zweiter, wenn auch Physisch gleicher.

Das Problem ist hier nicht die koordinaten im nachhinein umzurechnen. In der Theorie wäre es ohne Probleme möglich den Ankunftsort nach dem ankommen auf die korrekten Koordinaten zu setzen.


Das Problem ist die Zielführung. Da der User bei der Zieleingabe auf die Koordinaten am RECHTEN Bildschirmrand klickt und nicht auf die (physisch gleichen) Koordinaten neben dem linken Rand wird der User immer den langen Weg fahren. :/


Ich hoffe ich konnte das Problem verständlich erläutern ^^

Die einzige möglichkeit das Problem zu beheben sehe ich im moment darin die "künstliche" maze umgebung außerhalb der eigentlichen Karte mit "doppelten" Koordinaten auszustatten. Den "eigentlichen" und denen die sie in der eigentlichen Map entsprechen würden. Das halte ich jedoch für sehr umständlich und einen heiden Arbeitsaufwand sodass ich denke es muss einen einfacheren Weg geben.


Gruß Eclypse
 
Das Problem ist die Zielführung. Da der User bei der Zieleingabe auf die Koordinaten am RECHTEN Bildschirmrand klickt und nicht auf die (physisch gleichen) Koordinaten neben dem linken Rand wird der User immer den langen Weg fahren. :/
Ja, das Problem ist verständlich. Man könnte erstmal eine Pixelentfernung auf Mapbasis in Betracht ziehen (zB Ist Punkt Aa mindestens doppelt/dreimal so weit wie Punkt Ab,Ac etc..), so hätte man die erste Fallunterscheidung, ansonsten müsste man mehrere Wege per AStar durchgehen. Ich habe keine Ahnung wie ressourcenhungrig AStar ist, aber ich habe fast das Gefühl, auch das ließe sich machen.

Das Problem als Solches beschreibt Eines ganz gut, AStar ist scheinbar optimiert auf in sich geschlossene Mazes. Sobald man eine sich wiederholende Map hat, muss man tüfteln.

mfg chmee
 
Resourcenabhängigkeit...


Also ich hab grade eine karte(obiges Beispiel - 700x400px) in eine Maze umgewandelt. (Monochrom gemacht, pixel gecheckt ob 0 oder 255 und in eine txt datei "w" oder " " geschrieben. Diese Maze habe ich dann über die Astar funktion auf der webseite erstmal probegecheckt.

Die Operation wird bei 30sec exceed abgebrochen ^^


Jetzt habe ich 25% der Grafik genommen und bekomme zumindest eine Maze dargestellt. Für den moment noch fehlerhaft aber da wurstel ich noch ein bisschen.

Problem: wenn 700x400px schon zuviel ist fällt die Maze geschichte aus. So wie wir das spiel planen müssen wir mindestens 1000x800 "gridpunkte" haben. Maze technisch kann ich das natürlich auf ein viertel runterbrechen. (ich muss ja nicht JEDEN gridpunkt in einer maze berechnen lassen - wie oben bereits erwähnt)

Allerdings bin ich mit der 9xWorldscale sehr schnell dann doch wieder auf einer Pixelzahl die deutlich zu hoch für die doch recht Resourcenfressende Maze berechnung ist :/



*neverendingstory*
 
Achte darauf, dass ich den erheblichen Teil ja auf nur doppelt so groß eingeschrumpft habe, sprich, an jeder Seite nur die halbe Welt dazupacken (uU 2/3) sollte ausreichen, dennoch sagst Du ja, das ist so zimelich Ende der Fahnenstange.. hmpf..

p.s.: Effizient wird AStar erst, wenn das Grid klein wird. Vielleicht siehst Du eine Chance, die Worldmap noch kleiner zu kriegen, ohne Dein Spiel in Mitleidenschaft zu ziehen. Das AStar-Grid muss ja nicht dem Spielgrid entsprechen. Ich könnte mir vorstellen, dass man die Welt in 50x25px beschreiben könnte (also 100x50 nach Verdoppelung).

mfg chmee
 
Was mir dazu noch einfällt, ist, dass man mit der Zeit doch auch Strecken hat, die doppelt verwendet werden. Dementsprechend könnte man doch bereits berechnete Strecken in einer Datenbank speichern mit Anfangs- und Endpunkt (und die Karte dazu) speichern. Aber das würde erst nach einiger Zeit einen Gewinn bringen.
 
Was mir dazu noch einfällt, ist, dass man mit der Zeit doch auch Strecken hat, die doppelt verwendet werden. Dementsprechend könnte man doch bereits berechnete Strecken in einer Datenbank speichern mit Anfangs- und Endpunkt (und die Karte dazu) speichern. Aber das würde erst nach einiger Zeit einen Gewinn bringen.

Das haben wir uns auch schon überlegt, doch hier ist wieder das Problem, das es zu viele Ressourcen frisst.
Den wir haben ja nich tnur diese Abfrage sondern auch noch die anderen Informationen (Battlescript, Bauscript, UserInfos usw.).
Da kommt eine ganz schöne Rechenleistung auf dem Server dazu.

Jem. hatte vorgeschlagen es mit JS zu versuchen.
Wie kann man den sowas in Js umsetzen?
 
Also die Maze scheint tatsächlich grundsätzlich zu groß zu sein.

Eine Datei von 350x200px größe ist schon zu groß.

Gibt es irgendwo eine angabe wie groß die datei maximal sein darf?

Grundsätzlich kann ich ja auch eine kleine Maze erstellen und die auf eine große Karte anwenden. Ich weiss nur nicht wie genau die kleine Karte dann noch ist. Wahrscheinlich ergeben sich daraus in der folge dann jede menge fehler :/
 
Zurück