große maps
Also z.B. so wie bei Pokemon? Mir fällt grad kein anderes Beispiel ein
aber da sieht man ja alles so halb von oben...
Screenshot: http://img.photobucket.com/albums/v233/ ... lmorn1.png
Soweit ich weiß nennt sich das Top-Down-Perspektive, aber Vogelperspektive müßte auch richtig sein.
In diesem Fall brauchst Du echt nur nach dem y-Wert zu gehen. Du fängst oben mit zeichnen an und arbeitest Dich runter, dadurch werden automatisch die Figuren verdeckt, die hinter einem Objekt oder anderen Figuren stehen. Ist also ganz einfach.

Screenshot: http://img.photobucket.com/albums/v233/ ... lmorn1.png
Soweit ich weiß nennt sich das Top-Down-Perspektive, aber Vogelperspektive müßte auch richtig sein.
In diesem Fall brauchst Du echt nur nach dem y-Wert zu gehen. Du fängst oben mit zeichnen an und arbeitest Dich runter, dadurch werden automatisch die Figuren verdeckt, die hinter einem Objekt oder anderen Figuren stehen. Ist also ganz einfach.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
selbst bei iso reicht im prinzip noch die y sortierung, nur muß man da den zeichenvorgang in zwei durchläufe aufteilen. zuerst zeichnet man alle böden, dann schaut man von hinten nach vorne beim levelzeichnen ob auf einem feld eine wand steht. wenn da eine wand steht zeichnet man diese, wenn nicht schaut man ob auf dem feld objekte liegen. liegen da objekte sortiert man sie nach der y position und zeichnet sie entsprechend der reihe nach.
wichtig ist, dass man das zeichen in die richtige richtung durchführt. wenn die obere bildschirmmitte die kartenkoordinaten (0,0) darstellt, dann zeichnet man erst eine komplette x reihe ab (also zum eckpunkt rechts unten auf dem bildschirm). dann zeichnet man die nächste zeile.
das funktioniert tatsächlich, auch wenn man es sich schwer vorstellen kann.
wichtig ist, dass man das zeichen in die richtige richtung durchführt. wenn die obere bildschirmmitte die kartenkoordinaten (0,0) darstellt, dann zeichnet man erst eine komplette x reihe ab (also zum eckpunkt rechts unten auf dem bildschirm). dann zeichnet man die nächste zeile.
das funktioniert tatsächlich, auch wenn man es sich schwer vorstellen kann.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Das funktioniert aber NICHT, wenn die Figur an jeder beliebigen Position stehen kann. Denn wenn z.B. die Figur mehr oder weniger auf zwei Feldern gleichzeitig steht (also Position geteilt durch Tilebreite keine Null ergibt), dann gibt es Grafikfehler.
Ich arbeite grad selbst an einer Iso-Engine und hab auch schon einiges rumprobiert, da muß man dann schon noch ein wenig tricksen und schummeln, bis endlich mal alles korrekt funktioniert, bspw. muß man in bestimmten Fällen ein halbes Tile nochmals drüberzeichnen etc.
Ich arbeite grad selbst an einer Iso-Engine und hab auch schon einiges rumprobiert, da muß man dann schon noch ein wenig tricksen und schummeln, bis endlich mal alles korrekt funktioniert, bspw. muß man in bestimmten Fällen ein halbes Tile nochmals drüberzeichnen etc.
Okay also:
Die letzte Perspektive nennt man auch Kabinett-Perspektive. Bei der und auch bei der Top-Down reicht ganz einfach y-Sortierung, bei Iso NICHT.
Code: Alles auswählen
Iso-Tiles sehen so aus:
/ \
/ \
\ /
\ /
Top-Down-Tiles:
___
| |
| |
|___|
Die Parallelogramm-Tiles dann in dem Fall so:
___
/ /
/___ /
Hier noch ein paar Screenshots 
Kabinettperspektive: http://62.168.142.47/~lemon/games/scree ... ath_03.gif
Iso-Perspektive: http://62.168.142.47/~lemon/games/scree ... dry_01.gif
Top-Down-Perspektive: http://62.168.142.47/~lemon/games/scree ... ash_02.gif

Kabinettperspektive: http://62.168.142.47/~lemon/games/scree ... ath_03.gif
Iso-Perspektive: http://62.168.142.47/~lemon/games/scree ... dry_01.gif
Top-Down-Perspektive: http://62.168.142.47/~lemon/games/scree ... ash_02.gif
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
ach so.. also meintest du doch iso
dann lies dir den post von zaphod nochmal durch: es geht wirklich
[edit]
man braucht noch nicht einmal in 2 vorgänge aufzuteilen.
[/edit]
iso ist nur ein um 45° gedrehtes top-down
wenn man in der oberen ecke anfängt, funktionierts...
[edit2]
nimm mal die mitte der unteren kante als referenzpunk.
zeiche die figur in dem schleifendurchlauf, wie das Tile,
auf dem sich dieser referenzpunkt befindet.
das ist ausreichend, den kleine abweichungseffekt der bleibt sieht man auch bei professionellen games.
[edit3]
wenn du zusätzlich in 2 durchgänge aufteilst, wie von Zaphod angeregt, verschwindet auch dieser effekt.
dann lies dir den post von zaphod nochmal durch: es geht wirklich
[edit]
man braucht noch nicht einmal in 2 vorgänge aufzuteilen.
[/edit]
iso ist nur ein um 45° gedrehtes top-down
wenn man in der oberen ecke anfängt, funktionierts...
[edit2]
die figur kann im grunde nicht wirklich auf 2 feldern stehen.ZeHa hat geschrieben:Das funktioniert aber NICHT, wenn die Figur an jeder beliebigen Position stehen kann. Denn wenn z.B. die Figur mehr oder weniger auf zwei Feldern gleichzeitig steht (also Position geteilt durch Tilebreite keine Null ergibt), dann gibt es Grafikfehler.
nimm mal die mitte der unteren kante als referenzpunk.
zeiche die figur in dem schleifendurchlauf, wie das Tile,
auf dem sich dieser referenzpunkt befindet.
das ist ausreichend, den kleine abweichungseffekt der bleibt sieht man auch bei professionellen games.
[edit3]
wenn du zusätzlich in 2 durchgänge aufteilst, wie von Zaphod angeregt, verschwindet auch dieser effekt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Ich habs schon probiert, und zwar auch schon in unterschiedlichen Zeichnungs-Richtungen. Es geht NICHT. Und zwar genau dann nicht, wenn die Figur eben nicht pro Walk-Zyklus ein komplettes Feld läuft, sondern wenn man sich ganz frei pixelweise bewegen kann. Dann kommt es zwangsweise zu Fehlern. Einfaches Beispiel:
Das ist die Map... X = Wand, . = freier Raum.
Nehmen wir nun an, die Figur steht in Feld (3,2) (und wir beginnen jetzt mal bei 1 mit Zählen). Noch paßt alles. Läuft die Figur jetzt aber nach unten, also auf das Feld (3,3) zu, und sie steht so halb auf Feld (3,2) und halb auf Feld (3,3), dann wird die Figur gezeichnet, wenn Zeile 2 dran ist. Nun kommt Zeile 3 und zeichnet die Wand in (2,3) und übermalt somit die Figur, die eigentlich sichtbar sein sollte.
Code: Alles auswählen
XXX
X..
XX.
Nehmen wir nun an, die Figur steht in Feld (3,2) (und wir beginnen jetzt mal bei 1 mit Zählen). Noch paßt alles. Läuft die Figur jetzt aber nach unten, also auf das Feld (3,3) zu, und sie steht so halb auf Feld (3,2) und halb auf Feld (3,3), dann wird die Figur gezeichnet, wenn Zeile 2 dran ist. Nun kommt Zeile 3 und zeichnet die Wand in (2,3) und übermalt somit die Figur, die eigentlich sichtbar sein sollte.