große maps

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

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...
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

der radius dürfte sehr viel zum gelingen beitragen.... :)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

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. ;)
Benutzeravatar
unix
Beiträge: 361
Registriert: 15.02.2005 19:25
Wohnort: Zwischen Coburg und Bamberg :-)
Kontaktdaten:

Beitrag von unix »

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
Hier steht normalerweise die Putzfrau drin,
die hat aber Urlaub.
MfG : Unix
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

unix 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
ich verstehe nicht im geringsten, worauf du hinaus willst, sorry
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

@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.
Benutzeravatar
ZeHa
Beiträge: 4760
Registriert: 15.09.2004 23:57
Wohnort: Friedrichshafen
Kontaktdaten:

Beitrag von ZeHa »

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 ;)
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag von Zaphod »

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.
Antworten