Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

XoR

Frischling

  • »XoR« ist der Autor dieses Themas
  • Private Nachricht senden

1

23.07.2012, 20:36

Hilfe für Umsetzung von Wegfindung

Hallo liebe Community!


Wie die Überschrift schon verrät, benötige ich Hilfe um Wegfindung in meiner App zu implementieren.

Die Arbeitsweise von A* habe ich im Prinzip begriffen, doch die
Umsetzung in einer App erschließt sich mir noch nicht so ganz. In
mehreren Threads unterschiedlicher Plattformen ist immer von
"Rechtecken" oder "Bereichen", welche auf begehbarkeit geprüft werden,
die Rede. Doch was ich nun hoffe hier zu erfahren ist, was diese
"Rechtecke" repräsentieren? Sind damit wirklich Rechtecke gemeint, welche wie
ein Raster über die Map gezogen werden, oder stellt ein "Rechteck" schlicht
und einfach nur EIN Pixel dar?

Sobald diese Frage geklärt wäre, stellt sich mir eine Andere: Wie bzw.
nach welchem Schema wähle ich die "begehbaren" und "nicht begehbaren"
Rechtecke aus, sodass die Wegfindung ihren Job erledigen kann?

Da der Weg in meiner App eine bestimmte Farbe hat, habe ich mir
überlegt, von jedem Rechteck die Farbe auslesen zu lassen und danach zu
entscheiden, ob er begehbar ist(Farbe gleich wie der Weg), oder nicht
begehbar ist. Dennoch erscheint mir die Vorgehensweise viel zu
umständlich und benötigt, so denke ich, unmengen an Rechenzeit. Zudem,
was wenn der Weg nicht einfarbig ist? Somit wäre diese Vorgehensweise
nicht brauchbar, weshalb ich sie als uneffizient erachte. Deshalb frage ich
mich, wie ich die Rechtecke sonst noch unterscheiden könnte?

Ich wäre sehr dankbar, wenn mir einer Aufschluss darüber geben könnte,
was nun diese Rechtecke darstellen und nach welchem Schema ich diese
anschließend als begehbar oder nicht begehbar selektiere.


Ich bedanke mich schon mal bei allen!

MFG XoR!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

23.07.2012, 21:33

Ich denke du hast die Situation schon richtig erkannt. Eine Map baut sich normalerweise aus logischen Quadraten zusammen (z.B. aus Tiles - egal ob nun 2D oder 3D). Deine scheint wohl eher nur aus Pixeln zu bestehen, was die Situation sehr komplex gestaltet, weil die Anzahl logischer Unterteilungen somit extrem groß ausfällt.
Vielleicht solltest Du uns aber einfach mal zeigen, wie eine Map bei Dir überhaupt aufgebaut ist, momentan können wir nur raten, dass es sich um ein Bild handelt, aber wir können weder Größe, noch genaue Struktur oder Deine Koordinaten-Verwaltung (wie Du Positionen von Objekten behandelst) erahnen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

XoR

Frischling

  • »XoR« ist der Autor dieses Themas
  • Private Nachricht senden

3

23.07.2012, 22:11

Ich hänge hier eine .png datei an die aufzeigen soll, wie solch ein Level aussehen könnte(nur ne Skizze :D). Die Orginalgröße des Bildes ist 856x640pixel, warum man ausgerechnet diese Maße für Android-Apps nehmen sollte weiß ich nicht genau, hab diese Maße aus einem Buch für Android-Apps. Das weitere Problem ist, dass Android beim Starten der App die Bilder automatisch passend zur Bildschirmgröße des Smartphones skaliert.
Die Position von Objekten auf dem Bildschirm werden mit zwei int-Werten angegeben(anzahl der Pixel in X- und Y-Richtung, ausgehend von der linken oberen Ecke).
Ich hoffe ich konnte euch einen groben Überblick über die Situation schaffen.

MFG XoR.


link für Bild: http://www.fotos-hochladen.net/view/skizze9pkfvbrq23.png

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

24.07.2012, 06:42

Das sieht aus als wolltest Du ein TowerDefense machen, wofür es sicherlich ohnehin schlau wäre das Spielfeld in weitere Felder einzuteilen und dann wäre A* auch wieder gar kein Problem mehr.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

24.07.2012, 09:47

Hiho! Wenn du tiles hast, dann haste deine quadrate schon ;) mit kreisen ist es mmn einfacher zu rechnen :) die formen funktionieren als wegpunkte. Welche form diese haben ist relativ egal.

Wenn du zu viele objekte hast, die wegfindung ausführen müssen, dann empfielt es sich die map in sektoren zu rastern um dann erst im groben zu rechnen....

Peace

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

6

24.07.2012, 10:11

Die Position von Objekten auf dem Bildschirm werden mit zwei int-Werten angegeben(anzahl der Pixel in X- und Y-Richtung, ausgehend von der linken oberen Ecke).

wenn du für Android entwickelst, solltest du nicht mit Pixeln rechnen, sondern mit dem Wert, den Android anhand der Auflösung und Bildschirmgröße liefert
andernfalls könnte es sein, dass deine Anwendung auf Displays mit geringen PPI-Zahlen anders aussieht, als auf Displays mit höheren


Nachtrag:
wofür benötigst du in dem Fall Wegfindung?
du wirst vermutlich nie den Fall haben, dass der eigentliche Weg verbaut wird
somit wirst du nie die Notwendigkeit haben, dynamisch einen anderen Weg zu ermitteln
somit kannst du zusätzlioch zum Bild eine Datei vorhalten, welche speichert, wo lang der Weg führt
selbst oder gerade wenn du mehrere Wege hast, würde eine dynamische Wegfindung keinen Sinn machen
(einerseits kann man mehrere Wege fest speichern, andererseits liefert eine gute Wegfindung unter gleichen Bedingungen immer das gleiche Ergebnis)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Sacaldur« (24.07.2012, 11:40)


7

24.07.2012, 14:34

Es kommt drauf an, was für eine Art von Tower Defence er baut. Es gibt auch Arten, da kann man die Türme in den Weg bauen und damit Labyrinthe formen.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

8

24.07.2012, 14:41

Es kommt drauf an, was für eine Art von Tower Defence er baut. Es gibt auch Arten, da kann man die Türme in den Weg bauen und damit Labyrinthe formen.

ja, das ist mir bewusst, aber da er auf seiner Karte einen Weg hat und einer seiner Gedanken war, dass die Einheiten aufgrund der Untergrundfarbe den Weg finden, ist es eher unwahrscheinlich, dass er ein solches erstellen möchte
(zwar nicht unmöglich, aber ich gehe nicht davon aus)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

24.07.2012, 16:30

Selbst dann könnte er für die Wegfindung mehrere Pixel zu einem größeren Feld clustern.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

XoR

Frischling

  • »XoR« ist der Autor dieses Themas
  • Private Nachricht senden

10

24.07.2012, 16:30

Sacaldur hat schon recht, es wird ein TD in dessen Level die Wege schon vorgegeben sind. Doch evtl. baue ich einen Mapeditor dafür und um dort festzulegen wie die "Monster" laufen, muss ich zunächst den Weg
berechnen. Was die schon vorgefertigten Maps angeht, wiso würdest du es in einer extra Datei machen? Wäre es nicht sinnvoller die Koordinaten der Wegpunkte in einer Liste oder Array zu speichern?

Zum Schluss noch eine für euch vermutlich einfache Frage:
Müsste ich die Koordinaten für absolut jeden Punkt speichern, bei dem dann die "Monster" angezeigt werden, oder reicht es die Koordinaten von bestimmten Knoten zu speichern?
Z.B.: Einen Knoten unten rechts am Start, dann einen bei der ersten sowie bei der zweiten Kurve und einen am Ziel.


Gruß.

Werbeanzeige