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

1

17.09.2015, 13:54

Effizientere Tile-Map-Collision Abfrage

Hallo,
ich habe bereits eine Möglichkeit gefunden, eine Collisionabfrage, die funktioniert, zu schreiben.
Nur leider denke ich, dass der Weg sehr ineffizient ist, denn ich gehe mit for-Schleifen durch die ganze Map und frage dann nach einer Collision der bestimmten Tiles mit einer Box.
Bei kleineren Map werden dort keine Performance-Probleme auftauchen. Doch wenn die Map später einmal größer wird, z. B. 1000x1000 Tiles, dann kann es anfangen, zu laggen.

Was kann ich eurer Meinung nach machen, um eine bessere Performance beim Map auswerten zu erlangen?

MfG :)

2

17.09.2015, 13:59

Einfach die Position des Spielers in ein Tile-Position mappen und dann nur im Umkreis auf Kollision prüfen.

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

3

17.09.2015, 14:02

Oder einfach die Groesse der Box im Koordinatensystem der Tiles messen, dann ist die Loesung trivial.

radon

Frischling

Beiträge: 8

Wohnort: Frankfurt > Dreieich

Beruf: Student

  • Private Nachricht senden

4

17.09.2015, 19:15

Du könntest den kompletten Grid in bereiche aufteilen, in denen du die dynamischen und statischen Tileobjekte jeweils registrierst und de-registrierst. So hättest du bei ordentlicher führung immer eine regionale Map von was alles in der Umgebung ist. So könntest du für die Kollisionsabfrage eines beweglichen Objektes einfach die aktuelle und die umliegenden Regionen hinzuziehen und hast so eine reduzierte Menge von möglichen Kollisionen.

Das wäre ein Trade von mehr Speicher für weniger Rechenschritte. Ist aber nur situationsbedingt sinnvoll wenn ich mir das so überlege.

5

17.09.2015, 20:38

Oder einfach die Groesse der Box im Koordinatensystem der Tiles messen, dann ist die Loesung trivial.
Das ist wohl die einfachste und beste Lösung. Damit du dir das vielleicht besser vorstellen kannst: http://www.ultranet.sk/killer/temp/sample.png

Werbeanzeige