ariogato / Koramu

A selfmade 2D RPG
5 stars 0 forks source link

Z-Order Rendering #34

Closed ariogato closed 7 years ago

ariogato commented 7 years ago

Abhängig von Ticket #33

Einführung: Durch unsere eindeutig hierarchische Render-Reihenfolge (Nach Layer siehe Map::render()) werden einige Tiles über den Player gerendert.

In diesem Fall ist das erwünscht:

behind_log

In diesem Fall ist das unerwünscht:

behind_log

Dieser Effekt zeigt uns auf, dass wir nicht einfach pauschal ein Layer nach dem anderen rendern können! Eine neue, eine intelligentere Renderreihenfolge muss her!

Zu diesem Zwecke bedienen wir uns eines Vorgangs, der sich Z-Ordering nennt.

In Map.cpp muss jedes Objekt, Tile, etc. in einer Liste, basierend auf einem errechneten Z-Wert, sortiert werden. Diese Liste wird anschließend von vorne bis hinten durchgerendert.

romman8 commented 7 years ago

Das mit dem Z-Ordering wäre schon schön. Die Frage ist nur, ob wir das wirklich brauchen. Wir können auch, wie anfangs vorgesehen, Elemente, wie den Baumstamm oder eine Laterne, in mehrereLayer aufteilen. Demnach müsste nur der untere Teil in das "CollisionLayer" und der obere Teil in das "ForegroundLayer".

ariogato commented 7 years ago

Könnten wir, aber das wäre:

  1. nicht schön
  2. nicht generisch