Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Mär 29, 2024 10:45

Foren-Übersicht » Sonstiges » Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: Ein 2D-Karteneditor :: Map Edit!
BeitragVerfasst: Sa Okt 22, 2005 16:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Feb 24, 2005 22:44
Beiträge: 29
Hallöchen,

ich nutze diesen Platz jetzt mal um mein Projekt vorzustellen.


Einleitung

Es handelt sich dabei um einen 2D-Karteneditor auf OpenGL-Basis, ich nenne ihn "Map Edit!". Ich programmiere ich ihn in C und C++ sowie WinAPI und eben mittels OpenGL. Vor zwei Jahren hatte ich schonmal so ein Projekt angefangen, damals in PureBasic geschrieben. Durch eine unfreiwillige Festplattenformatierung ist das Projekt damals gestorben. Jetzt wieder neu aufgesetzt (also komplett neu) und in C mit der Power von OpenGL mache ich mich erneut ran. :)
Zuerst sollte es ein Mapeditor werden, der auf Tiles basiert. Also in Raster unterteilt, bei Standardeinstellungen sind diese 32 x 32 Pixel groß, die dann per Tileset gefüllt werden.

Ein Screenshot dieses Mapeditors als er noch auf Tiles basierte: http://derfeind2k.de/daten/mapedit%206.0.png

Das hat mir letztlich nicht sonderlich zugesagt, die erstellten Karten waren aufgrund der Einteilung in Raster einfach zu unflexibel. Ich wollte frei setzbare Objekte die man in Größe und Farbe variieren kann. Also hab ich das komplette Projekt über den Haufen geworfen und nur ca. 20 % des Codes übernommen. Der Rest wurde neu geschrieben. Das Ziel -> ein 2D-Karteneditor der mit texturierten QUADS arbeitet. Vertices sollen frei positionierbar sein. Sortiert wird mittels der Z-Ebene. Ansonsten wird in der Orthogonalen Ansicht gearbeitet, nur Y und Y Ebene also.

Ein Screenshot dieses Mapeditors, nun mit frei setzbaren Objekten: http://derfeind2k.de/daten/mapedit%209.0.png



Was steckt dahinter?
Wie schon erwähnt habe ich mein System mit den Tiles komplett verworfen und nun Unterteile ich die dargestellten Objekte 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.
(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.


Kurze Beschreibung der GUI:

Oben links findet man eine Liste, welche die Objekte anzeigt. Dies dient als Indizieren aller Objekte um nicht durcheinander zu geraten. Dadrunter befindet sich das Objektfenster. Hier werden alle Eigenschaften der selektierten Objekte angezeigt. Sachen wie die Position der Vertices, die Textur, Animation, Skalierung der Textur, Ursprungsversatz der Textur, Drehung in Grad der Textur und Name usw. sind hier zu finden.
Den Hauptteil des Bildschirms übernimmt die Kartenansicht. Hier werden direkt dei Objekte platziert, verschoben und zu einer Karte angeordnet.
Rechts davon ist der Texturmanager, alle eingeladenen Texturen werden in Miniaturansicht mit Namen (im Bild noch ohne) aufgelistet.
Die Toolbar oben bietet die Einstellungen zur Darstellung der verschiedenen Layer, Objektarten, Umrandung und Gitter usw.

Mittlerweile wurde die GUI teils überarbeitet, die (fast) aktuelle Version des Editors sieht so aus: http://derfeind2k.de/daten/mapedit_16_soll.png
Die Karte wurde teils mit dem Editor erstellt, teils mit einem Grafikprogramm noch ergänzt (es ist also kein richtiger Screenshot sondern zeigt, wie es mal aussehen soll)

Hier also nun ein Screenshot der nahezu dem aktuellen Stand enspricht: http://derfeind2k.de/daten/mapedit_19.png



Wozu ist das Ding gut?
Diese Frage lässt sich leicht beantworten. Ich suchte eine Möglichkeit, schöne 2D-Karten für 2D-Spiele zu entwickeln. Und da fehlte mir ein Karteneditor. Der Urgedanke war also ein Spiel zu erstellen für das ich einen Karteneditor brauchte. Mittlerweile hat sich dieses Projekt so entwickelt, dass der Karteneditor selbst schon ein riesen Projekt ist.


Wie ist der Status momentan?
Der Status sieht zur Zeit so aus, dass man die Karten noch nicht 100%ig speichern und laden kann. Objekte werden zwar wieder eingeladen aber das Objektfenster links bleibt noch leer, lässt sich aber flott einrichten. Die Prioritäten liegen aber derzeit woanders. Nämlich das Mapping-Verhalten oder auch, das Handling wie man Karten erstellen kann. Etwa, dass man unter der Registerkarte "Prefabs" fertige Objekte abspeichern kann und diese dann aus der Liste heraus schnell erneut setzen kann. Somit kann man dann Bäume oder andere Objekte schnell duplizieren ohne das Objekt von Grund auf neu zu erstellen und mit Textur zu versehen. Diese Prefab-Listen sollen sich dann auch speichern und exportieren lassen um die Objekte auf anderen Karten erneut einsetzen zu können. Man kann sich also eine Art Datenbank von Objekten erstellen auf die man zurückgreifen kann. Dies erleichtert die Platzierung dieser und die gestaltung komplexerer Karten.
Bisher funktioniert das Anlegen und Speichern von Listen sowie die Aufnahme von Prefabs und das neuplatzieren dieser. Es fehlt noch Exportieren, Importieren und etwas feinhandling.
Ansonsten ist das Laden von Texturen und das Platzieren und Erstellen von Karten schon möglich. Es lässt sich aber sicherlich noch optimieren und komfortabler gestalten und das werde ich auch versuchen.


Was kommt noch dazu?
Derzeit noch nicht eingefügt aber fest geplant sind Sachen wie Kollisionsmasken, die man auf die einzelnen Objekte zuschneiden kann. Dazu noch Animationen, also Auswahl von Frames für Objekte, die dann in Zyklen durchlaufen werden.
Natürlich darf auch ein Optionsfenster nicht fehlen wo alle Einstellungen für Farben und Formen der Darstellung geändert werden kann.
Eine Übersetzung in mehrere Sprachen (auf jeden Fall aber in Deutsch und Englisch) ist auch fest eingeplant. Wer sich wunder, dass das Menü noch deutsch ist, das ist nur ein Dummy. ;) Bisher hat es keinerlei Funktion und wird dann natürlich in englisch gehalten, wenn soweit bin.
Außerdem sollen am Ende noch mehr Textur-Formate unterstützt werden. Bisher sind nur unkomprimierte TGAs möglich. BMPs sind auch schnell eingefügt aber wer benutzt die heutzutage noch als Textur? PNGs sind noch geplant und komprimierte TGAs.


Soweit mein Projekt. Ich werde diesen Beitrag bei Gelegenheit auf dem Laufenden halten. Danke für das Interesse bisher. Bei Fragen, Kritiken oder Meinungen zum Projekt könnt ihr das gern in einen Beitrag im entsprechenden Forum posten. :)


Grüße,

Sunny


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 39 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.264s | 17 Queries | GZIP : On ]