AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Andorra 2D - Map Editor V 1.0
Thema durchsuchen
Ansicht
Themen-Optionen

Andorra 2D - Map Editor V 1.0

Ein Thema von Vasco da Gama · begonnen am 19. Sep 2009 · letzter Beitrag vom 22. Sep 2009
Antwort Antwort
Vasco da Gama
Registriert seit: 2. Aug 2009
Andorra 2D - Map Editor V 1.0
Übersicht:
1. Prolog
2. Anleitungen
2.1. Wie erstelle ich eine Map?
2.2. Wie binde ich eine Map in mein Andorra 2D Spiel ein?
3. Changelog

1. Prolog
Hallo!
Ich weiß, dass viele Spiele maps benötigen. Und ich weiß, dass User gerne einen Mapeditor haben. Also hab ich mir mal ein bisschen Mühe gemacht, einen geschrieben, und diesen Beitrag hier auch . Dieser MapEditor sollte mit allen Andorra 2D Spielen kompatibel sein, da man selbst den Editor bearbeiten kann, und natürlich kann man auch auf seine eigene Weise Maps einbinden. Weiters kann der User alle Sprites/Tilesets nutzen, solange sie in einer .ail(AdImageList) gespeichert sind.
Anregungen, Kritik und co. ausdrücklich erwünscht.

2. Anleitungen
Zum Benutzen des Editors...
Kopieren Sie die AdMapEditor.exe und den resources Ordner ins Verzeichnis des Spiels

2.1. Wie erstelle ich eine Map?
Man öffnet den Editor, soviel traue ich euch allen zu .

Hintergründe und Einfügen von vorhandenen Sprites
Einen Hintergrund fügt man am besten Weiterhin über das Spiel selbst als TBackgroundSprite ein. Die Eigenschaft z kann hier ruhig -10000 betragen. Alle anderen Sprites kann man im Editor setzen, oder erst zur Laufzeit wie gewohnt erzeugen.

Sprites setzt man folgendermaßen auf die Map:
- Man öffnet eine vorhandene map, oder klickt oben auf "Neue Map".
- Man klickt bei der 2. Listbox auf den Sprite dem man einfügen möchte.
- Um die Eigenschaft z zu ändern, Steuerung gedrückt halten und das Mausrad drehen.
- Um die Eigenschaft AnimPos zu ändern, keine Taste gedrückt halten und das Mausrad drehen.
- Um ein Sprite zu setzten, mit der linken Maustaste irgendwo hinklicken, wo man es hinhaben will.
- Um ein gesetztes Sprite zu versetzen, oder eine andere Eigenschaft zu verändern, wieder anklicken.
- Um ein Sprite zu verwerfen, anklicken(linke Maustaste) und dann rechte Maustaste drücken.

Eigene Sprites
Um Sprites aus anderen ImageLists zu verwenden drückt man oben auf "AdImageList laden" und wählt eine aus.
Der Rest funktioniert gleich wie oben.

2.2. Wie binde ich eine Map in mein Andorra 2D Spiel ein?
Dafür gibt es verschiedene Möglichkeiten, die jeder für sich selbst rausfinden kann. Ich benutze folgenden Code:
Delphi-Quellcode:
procedure LoadMap(MapPath: String);
var
  OpenFile: TStringList;
  I, AX: Integer;
begin
  OpenFile := TStringList.Create;
  OpenFile.LoadFromFile(MapPath);
  if OpenFile.Count > 0 then
  begin
    for I := 0 to ((OpenFile.Count ) div 6)- 1 do
    begin
      AX := StrToInt(OpenFile.Strings[i*6+3+2]);
      with TImageSprite.Create(Form1.AdSpriteEngine) do
      begin
        X := StrToFloat(OpenFile.Strings[i*6+1+2]);
        Y := StrToFloat(OpenFile.Strings[i*6+2+2]);
        case AX of
          1: begin
            Image:= Form1.TerrImgList.Find(OpenFile.Strings[i*6+2]);
          end;
          2: begin
            Image:= Form1.AdImageList.Find(OpenFile.Strings[i*6+2]);
          end;
        end;
        AnimActive := false;
        AnimPos := StrToInt(OpenFile.Strings[i*6+4+2]);
        z := StrToInt(OpenFile.Strings[i*6+5+2]);
      end;
    end;
  end;
  OpenFile.Free;
end;
Und dann zum Aufrufen der Map:
LoadMap(maps/test.admap); Dafür muss man die Terrain.ail (im resources Verzeichnis des Editors) in den Ordner kopiert haben, in dem auch die anderen ImageLists liegen.

3. Changelog
Code:
V 1.0
Der Editor geht online.
Angehängte Dateien
Dateityp: zip admapeditor_v_1.0_194.zip (1,13 MB, 43x aufgerufen)
Dateityp: zip admapeditor_v_1.0_scr_168.zip (1,15 MB, 28x aufgerufen)
Programmiere inzwischen hauptsächlich mit C++. Nicht böse werden
 
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#2
  Alt 19. Sep 2009, 15:02
Hallo,

soweit macht dein Programm einen ganz guten Eindruck. Es wäre jedoch sehr hilfreich, wenn die Objekte an einem einstellbaren Raster einrasten würden.

PS: Achso, außerdem sollten sowohl der Editor als auch ein Modul zum Laden der Karten auf einer gemeinsamen und einfach wiederverwendbaren Klassenstruktur basieren - das würde es einfacher machen Karten wieder zu verwenden.
Andreas
  Mit Zitat antworten Zitat
Namenloser

 
FreePascal / Lazarus
 
#3
  Alt 19. Sep 2009, 15:12
Vorschläge:
Code:
GUI
- Menü statt Button-Bar
- hübschere, übersichtlichere Liste
  - eventuell Treeview (Ordnerähnliche Struktur, so ähnlich wie die Symbolbibliothek bei Adobe Flash)
  - ein Bild sagt mehr als tausend Worte - Vorschaubildchen wären ganz nett

Editor
- wie Andreas schon sagt, ein einstellbares raster wäre nett.
- ich finde, die Objekte sollten mittig zum Cursor plaziert werden
- Klare Trennung zwischen "Erstellmodus" und "Verschiebemodus"
- Hervorhebung markierter Objekte
[edit]
- Die Z-Order sollte sich nachträglich verändern lassen.
[/edit]

Dateiformat
- ein standardisiertes Format wie XML würde sich anbieten.

Erweiterungsmöglichkeiten
- sehr schick wäre es, wenn der Editor sich erweitern ließe. So eine Art dynamischer Objektinspektor wäre was. So könnte man für Spiele, die Extrainformationen benötigen, diese direkt integrieren.
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#4
  Alt 19. Sep 2009, 15:29
Den Vorschlägen von Philip stimme ich voll und ganz zu. Eine Baumübersicht über alle verfügbaren Objekte und einen Objektinspektorähnlichen Eigenschafts-Bearbeitungsdialog fände ich sehr gut.

Ich habe dir als kleine Anregung mal einen uralt Mapeditor, den ich vor ca. 4 Jahren geschrieben habe angehängt.
Angehängte Dateien
Dateityp: 7z mapedit_473.7z (1,19 MB, 40x aufgerufen)
Andreas
  Mit Zitat antworten Zitat
Vasco da Gama

 
Delphi 2009 Professional
 
#5
  Alt 19. Sep 2009, 16:09
Erstmal danke für eure Beteiligung

Zitat von igel457:
PS: Achso, außerdem sollten sowohl der Editor als auch ein Modul zum Laden der Karten auf einer gemeinsamen und einfach wiederverwendbaren Klassenstruktur basieren - das würde es einfacher machen Karten wieder zu verwenden.
Sorry, aber das verstehe ich nicht ganz. Soll ich für Karten eine Eigene Klasse machen?(das verstehe ich noch)
Soll ich für den Editor eine eigene Klasse machen
Zitat von NamenLozer:
Vorschläge:
Code:
GUI
- Menü statt Button-Bar[color=#ff0000]Ist gemacht[/color]
- hübschere, übersichtlichere Liste
  - eventuell Treeview (Ordnerähnliche Struktur, so ähnlich wie die Symbolbibliothek bei Adobe Flash)[color=#ff0000]Meint ihr das etwa so:
- trees
--0001
--0002
etc. ?[/color]
  - ein Bild sagt mehr als tausend Worte - Vorschaubildchen wären ganz nett [color=#ff0000]Das werd ich machen, ist sinnvoll[/color]

Editor
- wie Andreas schon sagt, ein einstellbares raster wäre nett.[color=#ff0000]Das Raster werd ich auch versuchen[/color]
- ich finde, die Objekte sollten mittig zum Cursor plaziert werden[color=#ff0000]Wird ebenfalls versucht[/color]
- Klare Trennung zwischen "Erstellmodus" und "Verschiebemodus"[color=#ff0000]Puh, werd ich auch noch versuchen.(Menüeträge:
Modus
- Sprites platzieren
- Sprites bearbeiten
ok?)[/color]
- Hervorhebung markierter Objekte[color=#ff0000]Hm. gute idee, aber wie sollte ich das angehen? Canvas?[/color]
[edit]
- Die Z-Order sollte sich nachträglich verändern lassen.[color=#ff0000]ist möglich, sprite anklicken, dann vorgehen wie sonst, wird aber noch verändert.[/color]
[/edit]

Dateiformat
- ein standardisiertes Format wie XML würde sich anbieten.[color=#ff0000]Tja, XML beherrsche ich nicht, viele andere Formate auch nicht, mir gehts ja hauptsächlich drum, dass man mit dem Editor karten machen und verändern und verwenden kann, ohne noch was extriges zu können...[/color]

Erweiterungsmöglichkeiten
- sehr schick wäre es, wenn der Editor sich erweitern ließe. So eine Art dynamischer Objektinspektor wäre was. So könnte man für Spiele, die Extrainformationen benötigen, diese direkt integrieren.[color=#ff0000]Objektinspektor wie z.B. bei Siedler 5 ist schon geplant[/color]
Zitat von igel457:
Ich habe dir als kleine Anregung mal einen uralt Mapeditor, den ich vor ca. 4 Jahren geschrieben habe angehängt.
Danke, der sieht ja auch schonmal super aus
Da würde mich der Code der Minimap interessieren...

Allerdings kann ich mit deinem Editor nichts platzieren

Danke, mfG
Flo
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#6
  Alt 19. Sep 2009, 16:23
Zitat von Vasco da Gama:
Zitat von igel457:
PS: Achso, außerdem sollten sowohl der Editor als auch ein Modul zum Laden der Karten auf einer gemeinsamen und einfach wiederverwendbaren Klassenstruktur basieren - das würde es einfacher machen Karten wieder zu verwenden.
Sorry, aber das verstehe ich nicht ganz. Soll ich für Karten eine Eigene Klasse machen?(das verstehe ich noch)
Soll ich für den Editor eine eigene Klasse machen
Genau - zum Beispiel basiert der ImageListEditor von Andorra 2D direkt auf der Klasse "TAdImageList", welche schließlich schon Funktionen zum Laden und Speichern von Bilderlisten bereitstellt.
Auch der GUI-Editor basiert auf den gleichen Klassen wie denen, die in der Anwendung selbst verwendet werden.
Genauso darf auch dein Editor nur auf einer Klasse "TAdMap" basieren, die Karten laden, speichern, editieren (sprich einzelne Objekte hervorheben und angeklickte Objekte zurückgeben) und anzeigen kann. Dann muss man eben nur diese Klasse "TAdMap" in sein eigenes Programm einbinden, die Ladenfunktion aufrufen und schon hat man die Karte aus dem Editor.


Zitat von Vasco da Gama:
Danke, der sieht ja auch schonmal super aus
Da würde mich der Code der Minimap interessieren...

Allerdings kann ich mit deinem Editor nichts platzieren
Du solltest oben links auf "Umgebung" klicken, dann bekommst du einige zu platzierende Objekte angezeigt.

Der Code der Minimap ist leider nicht sonderlich gut geschrieben, deshalb möchte ich ihn dir jetzt auch nicht geben. Die Funktionsweise ist aber sehr einfach: Alle Objekte werden durchgegangen und abhängig von der Größe und Objekttyp ein farbiges Rechteck auf ein Bitmap gezeichnet.
Andreas
  Mit Zitat antworten Zitat
Vasco da Gama

 
Delphi 2009 Professional
 
#7
  Alt 19. Sep 2009, 17:14
Ok, dann probier ich mal das mit der Klasse

Edit, noch eine Frage:
Soll ich das in eine eigene Unit packen nehme ich an?!

edit2, von was soll ich denn TAdMap ableiten? TStringlist ok?
Flo
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

 
FreePascal / Lazarus
 
#8
  Alt 22. Sep 2009, 17:35
Ja, eine eigene Unit.

TAdMap sollte am besten von nichts abgeleitet sein - wie du auf TStringList kommst verstehe ich nicht ganz.
Andreas
  Mit Zitat antworten Zitat
Vasco da Gama

 
Delphi 2009 Professional
 
#9
  Alt 22. Sep 2009, 17:40
Gut, danke, dann probier ich das
Zitat von igel457:
wie du auf TStringList kommst verstehe ich nicht ganz.
Ja weiß auch nicht, war halt nicht ganz bei der Tastatur
Flo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz