Added: 2 months ago
From: AIIefant
Views: 93
Sort by time | Sort by thread (beta)

Link to this comment:

Share to:

All Comments (6)

Sign In or Sign Up now to post a comment!
  • <3 <3 Allefant games are teh best~!

  • Codest du deine Physic und deine Kollisionsabfragen eigentlich immer selbst? Falls ja wäre das mal ein Thema, das eines Tutorials würdig wäre. Dein VSync-Tutorial fand ich schon sehr interessant und gut gemacht, wobei ich mich da schon vorher recht gut auskannte. Was ich aber bis heute nicht so richtig peile ist Kollision zwischen Sprite und Tilemap (angenomen du hättest eine Tilemap aus 16x16 Tiles oder so). Irgendwie mag ich es auch nicht, das Problem einfach mit einer Library zu umgehen.

  • @RPGHacker86 Also normalerweise verwende ich chipmunk für Kollision/Physik. Aber nicht in diesem Video, da wollte ich mich mal an pixel-perfekter Kollision versuchen. Also im Endeffekt hat jeder Sprite eine bounding box (und jedes Tile ist auch ein Sprite da underscheide ich nicht) und wenn zwei bounding boxes überlappen vergleiche ich alle Pixel. Als Optimierung verwende ich noch spatial hashing (ein Gitternetz) und Bitmasken (kann so immer gleich 32 Pixel auf einmal vergleichen).

  • @AIIefant Wird das ganze denn nicht ziemlich rechenaufwändig, wenn jedes Tile als Sprite angesehen wird? Weil so wie ich das sehe kommst du ja dann kaum drumrum von jedem Tile jede Frame die Kollision mit allen anderen Tiles zu berechnen (vorausgesetzt bei dir können Sprites überhaupt auch untereinander kollidieren). Also in meinem Spiel, einem Mario-Klon, sollen sowohl alle Sprites mit der Tilemap als auch alle Sprites untereinander kollidieren.

  • @RPGHacker86 Ja, das ist ja was ich jetzt als "spatial hashing" bezeichnet habe. Ich lege ein Gitternetz über das ganze Level und in jeder Zelle habe ich eine Liste mit den Sprites/Tiles die diese Zelle überlappen. Wenn ich jetzt eine Kollision überprüfe nehme ich immer nur die Liste aus der überlappenden Gitternetz-Zelle (und die Listen der Nachbar-Zellen). Im Endeffekt ergibt das für den Tilemap-Layer natürlich wieder eine Tilemap weil in jeder Zelle genau ein Tile ist.

  • @AIIefant Ja, ich verstehe. Klingt ziemlich clever. Trotzdem könnte ich mir vorstellen, dass da bei großen Levels noch ziemlich viel Rechenleistung benötigt wird. Andererseits könnte ich das wieder dadurch lösen, dass ich nur den Teil berechne, der gerade auf dem Bildschirm sichtbar ist (und unmittelbar darum). Dem Spieler kann es ja ohnehin egal sein, was mit zwei Sprites passiert, die irgendwo ganz anders im Level sind. Ja, so könnte ich mein Problem sicher lösen. Danke für die Tipps!

Loading...
Alert icon
0 / 00Unsaved Playlist Return to active list
    1. Your queue is empty. Add videos to your queue using this button:
      or sign in to load a different list.
    Loading...Loading...Saving...
    • Clear all videos from this list
    • Learn more