Ergebnis 1 bis 19 von 19

Thema: Projektvorstellung: 2D-Map Editor für ein geplantes Spiel

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #14
    @MuadDib:

    Der Editor WAR mal Tileorientiert und da war es so, dass man eine Textur, das Tileset, hatte, und dann kleine 32 x 32 Pixel große QUADS gesetzt hat, welche die Textur dieses Tilesets hatten. Das hatte sogar eine recht beachtliche Leistung, man könnte mehrere tausend QUADS setzen und alle Texturiert und mit Alpha-Blending. Damit hätte man so etwa 15 Layer mit jeweils 32 x 24 Tiles füllen können. (ca. 11000 QUADS) Und das sollte selbst für komplexe Karten ausreichen, da ja nicht mehr las 32 x 24 Tiles pro Bildschirm angezeigt werden.

    Das wurde mir später aber zu langweilig, weil alles so gleich aussieht und eben durch Raster begrenzet ist. Ich wollte alles etwas freier gestalten, freie Größen, Farben und Position auf der Karte. Daher hab ich das komplette System verworfen und nun Unterteilt in "Polygon" und "Objekt". So nenne ich meine 2 Bestandteile. Dabei arbeiten "Polygone" wie in 3D-Programmen, man setzt Primitive (QUADS) und spannt eine Textur darauf. Man kann die Vertices verformen und die Textur skalieren, versetzen usw. Diese "Polygone" werden eingesetzt um den Boden zu erstellen, das Wasser, Wände. Eben Dinge die eine gekachelte Textur haben. Daher ist die Textur ein einzelnes TGA-File, damit es kachelbar ist.
    Der zweite Typ heißt schlicht "Objekt" und man setzt wieder ein QUAD, diesmal passt sich die Textur aber dem Objekt an. Man wählt sich also ein Teil der Textur aus, welches dargestellt wird, und beim verformen und Vergrößern des Objekts wird die Textur mit skaliert. Dies bietet die Möglichkeit, Bäume, Sträucher, Büsche, Blumen und allerlei Gegenstände in verschiedenen Größe, Formen und Farben darzustellen. Daher verwende ich dort eine Art "Tileset" wo die Objekte drauf sind, also eine TGA-Datei. Man wählt dann beim Platzieren des Objekts genau den Bereich aus, der auf die Ränder des Objekts gespannt wird. Die Ränder kann man aber auch nachher noch on-the-fly immer ändern. Das bietet auch die Möglichkeit, Objekte abzuschneiden und nur teils darzustellen.

    (oben im Bild: Ein Polygon ist also etwa der Sandboden und die Hauswand, ein Objekt ist das Boot, das Netz, der Hammer, die Palme usw.)

    Warum ich diese Arten trenne? Stimmt schon, im Endeffekt könnte jedes "Objekt" ein "Polygon" ersetzen und ein "Polygon" auch ein "Objekt", aber es würde mehr Arbeit machen. Auch mit einem "Objekt" kann man mittels den Einstellungen für Texturskalierung und Versatz einen gekachelten Boden erstellen. Wenn man sich dann aber überlegt, den Boden ein paar Pixel größer zu ziehen, zieht man die Textur mit, denn bei "Objekten" passt sich diese ja der Form an. Also nimmt man lieber "Polygone" und kann bequem die Größe und Position ändern, die Textur bleibt unbeeinflusst. (Man könnte aber auch bei Polygonen genau ein bestimmten Teil der Textur darstellen, mittesl Skalierung, Winkel und Versatz ließe sich der Teil genau rausschneiden. Aber ist eben viel umständlicher als mit einem "Objekt"). Von daher gibt es 2 Arten von Typen die man setzen kann und mit denen man die Karte gestaltet.
    Später noch geplant ist auch, dass man "Objekten" Ereignisse zuweisen kann oder Routen und Animationen geben kann. Wie komplex das im Endeffekt noch wird weiß ich aber jetzt noch nicht genau.

    Die Texturen und Tilesets werden übrigens alle zentral über die Texturbox rechts eingeladen und ausgewählt. Das, was da im Moment ein schwarzes Quadrat ist, ist in Wirklichkeit das Vorschaubild für das Tileset mit dem Boot, den Palmen, dem Hammer usw. Nur, der Ausschnitt der für das Vorschaufenster verwendet wird, ist zufälliger Weise leer. Das muss ich noch überarbeiten.

    Zitat Zitat
    Button-Kit = Widget Toolkit, mit dem du deine GUI malst? Hab das nicht ganz verstanden, schätze aber, dass du irgendeine Ebene höher arbeiten wirst, als auf reiner WinAPI Ebene... ausser du bist Masochist.
    Öhm, so ganz versteh ich das nicht, aber ich beschreibe mal wie ich meine GUI bastle. Also ich male nicht selbst mit Linien und Primitiven die Schaltflächen, was für ein Aufwand.^^
    Also ich habe eine Klasse Fenster von der ich andere Klassen erben lasse. Diese Klasse Fenster ist für Hauptfenster. Die erbenden Klassen sind für Textboxen, Radiobuttons, Checkboxen, Trackbars, Listviews usw. Ich hab dann also Klassen von denen ich Objekte erstelle und mit dieser Erstellung wird eine solche Schaltfläche erzeugt. Und dies eben über die bekannte CreateWindowEx() Funktion der WinAPI. Die Messages der Buttons werden dann in einer zentralen Windows-Prozedur ausgewertet, insofern ich dem Fensterobjekt keine andere Callback-Prozedur zugeordnet habe.

    Geändert von Ynnus (20.10.2005 um 18:13 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •