große maps
nein, denn wenn du die untere mitte des sprites nimmst und mit einem radius verhinderst, dass ein sprite in wände eindringt, du dich streng an das 1 zu 1/2 verhältnis hältst und immer schön von links nach rechts und von oben und unten zeichnest passieren keine ungewollten überzeichnungen, zumindest passierte das nicht in meinem programm. muß mal gucken ob ich irgendwo noch die files habe...
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
klar, aber das ist kein fauler kompromis. wenn man nicht verhindert, dass figuren halb in einer wand stehen, dann stehen sie nunmal halb in einer wand...
ich erinnere mich noch an viele heitere momente in return to castle wolfenstein bei denen die überreste von gegnern halb in wänden lagen, oder nur auf dem kleinen zeh balancierend auf treppen in der luft schwebten.
ich erinnere mich noch an viele heitere momente in return to castle wolfenstein bei denen die überreste von gegnern halb in wänden lagen, oder nur auf dem kleinen zeh balancierend auf treppen in der luft schwebten.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
ich verstehe nicht im geringsten, worauf du hinaus willst, sorryunix hat geschrieben:mit z deshalb weil bei qutratischen tiles bei mir das objekt nicht immer unten war.
Das Bild war grösser als das Objekt.
Deshalb brauchte ich einen z wert
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
@zeha: in deinem beispiel ist die figur bereits im unteren feld, da der zu berechnende mittelpunkt der figur natürlich die mitte des unteren randes ist, würde also korrekt gezeichnet werden.
EDIT: ich habe hier mal ein screenshot meines alten programmes gemacht: http://home.snafu.de/alizta/scr.jpg
mir ist aber aufgefallen, dass wenn ich den radius verkleinere, den die figur von einer wand abstand halten muß ich tatsächlich einen effekt erzeugen kann wie du ihn beschreibst. der radius ist bei mir aber schon so klein gewählt, dass die figur sowieso in die wand eindringen würde, wenn sie dann noch in südliche richtung blicken würde.
das problem scheint also im prinzip abhängig von verhältnis der größe der wände und der figuren zu sein. ich glaube aber, dass selbst spiele wie diablo das nur über den bewegungsradius verhindern, denn auf langsameren rechnern habe ich in diablo manchmal überzeichnungen beobachtet.
was mir noch spontan einfallen würde währe eine art zbuffer, also eine bitmap mit richtigen tiefeninformation pro pixel (oder zumindest pro sprite-spalte) - ein simpler z wert würde wegen den wandschrägen nicht reichen. dann währe es aber sicher schneller und besser das ganze gleich "richtig" 3d umzusetzen.
EDIT: ich habe hier mal ein screenshot meines alten programmes gemacht: http://home.snafu.de/alizta/scr.jpg
mir ist aber aufgefallen, dass wenn ich den radius verkleinere, den die figur von einer wand abstand halten muß ich tatsächlich einen effekt erzeugen kann wie du ihn beschreibst. der radius ist bei mir aber schon so klein gewählt, dass die figur sowieso in die wand eindringen würde, wenn sie dann noch in südliche richtung blicken würde.
das problem scheint also im prinzip abhängig von verhältnis der größe der wände und der figuren zu sein. ich glaube aber, dass selbst spiele wie diablo das nur über den bewegungsradius verhindern, denn auf langsameren rechnern habe ich in diablo manchmal überzeichnungen beobachtet.
was mir noch spontan einfallen würde währe eine art zbuffer, also eine bitmap mit richtigen tiefeninformation pro pixel (oder zumindest pro sprite-spalte) - ein simpler z wert würde wegen den wandschrägen nicht reichen. dann währe es aber sicher schneller und besser das ganze gleich "richtig" 3d umzusetzen.
Ist denn der Radius, von dem Du sprichst, tatsächlich rund?
Bei mir ist es notwendig, daß die Figur auch durch die engsten Gänge durchkommt, daher wird bei mir zur Berechnung kein Kreis oder so verwendet, sondern ebenfalls ein Feld in der Größe des Tiles. Also wie ich es auch auf meinem Bild angedeutet habe mit der gelben Linie.
Das Problem habe ich gelöst, indem ich, wenn Wände gezeichnet werden, einfach nochmal überprüft wird, ob sich an bestimmten Positionen ein Objekt befindet, und teilweise auch umgekehrt. In dem Fall werden dann nochmal Korrekturen vorgenommen, indem eben wie gesagt die Wand bzw. das Objekt einfach nochmal komplett oder auch mal nur halb drübergezeichnet wird. Momentan sind dadurch alle Anzeigefehler behoben, nur einen hab ich noch entdeckt, der auftritt, wenn mehrere Objekte in einer Reihe stehen, sich daneben eine Wand befindet und dahinter die Spielfigur plaziert wird
da muß ich mir auch noch was einfallen lassen. Aber ansonsten gibt es nirgends Überschneidungen.
Wie gesagt, irgendwann wird's sowieso 'ne Demo geben, aber das kann noch ein Weilchen dauern
Bei mir ist es notwendig, daß die Figur auch durch die engsten Gänge durchkommt, daher wird bei mir zur Berechnung kein Kreis oder so verwendet, sondern ebenfalls ein Feld in der Größe des Tiles. Also wie ich es auch auf meinem Bild angedeutet habe mit der gelben Linie.
Das Problem habe ich gelöst, indem ich, wenn Wände gezeichnet werden, einfach nochmal überprüft wird, ob sich an bestimmten Positionen ein Objekt befindet, und teilweise auch umgekehrt. In dem Fall werden dann nochmal Korrekturen vorgenommen, indem eben wie gesagt die Wand bzw. das Objekt einfach nochmal komplett oder auch mal nur halb drübergezeichnet wird. Momentan sind dadurch alle Anzeigefehler behoben, nur einen hab ich noch entdeckt, der auftritt, wenn mehrere Objekte in einer Reihe stehen, sich daneben eine Wand befindet und dahinter die Spielfigur plaziert wird

Wie gesagt, irgendwann wird's sowieso 'ne Demo geben, aber das kann noch ein Weilchen dauern

ja mein abfrage radius ist rund, (hab ich aus meiner alten raycasting engine stibitzt
).
über weitere objektabfragen ist natürlich auch ein weg, hat aber den nachteil dass das ganze recht komplex werden kann wenn man dann noch feautres einbauen will, wie eventuelle transparenz um tiefere objekte sichtbar zumachen (sowas hatte ich zumindest ursprünglich mal vor). auf jeden fall wünsch ich dir viel erfolg dabei.

über weitere objektabfragen ist natürlich auch ein weg, hat aber den nachteil dass das ganze recht komplex werden kann wenn man dann noch feautres einbauen will, wie eventuelle transparenz um tiefere objekte sichtbar zumachen (sowas hatte ich zumindest ursprünglich mal vor). auf jeden fall wünsch ich dir viel erfolg dabei.