Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Andorra 2D - Map Editor V 1.0 (https://www.delphipraxis.net/140509-andorra-2d-map-editor-v-1-0-a.html)

Vasco da Gama 19. Sep 2009 14:35


Andorra 2D - Map Editor V 1.0
 
Liste der Anhänge anzeigen (Anzahl: 2)
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 :mrgreen:. 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:
Delphi-Quellcode:
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.

igel457 19. Sep 2009 15:02

Re: Andorra 2D - Map Editor V 1.0
 
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.

Namenloser 19. Sep 2009 15:12

Re: Andorra 2D - Map Editor V 1.0
 
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.

igel457 19. Sep 2009 15:29

Re: Andorra 2D - Map Editor V 1.0
 
Liste der Anhänge anzeigen (Anzahl: 1)
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.

Vasco da Gama 19. Sep 2009 16:09

Re: Andorra 2D - Map Editor V 1.0
 
Erstmal danke für eure Beteiligung :)

Zitat:

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 :cyclops:
Zitat:

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:

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 :firejump:
Da würde mich der Code der Minimap interessieren...

Allerdings kann ich mit deinem Editor nichts platzieren :wiejetzt:

Danke, mfG

igel457 19. Sep 2009 16:23

Re: Andorra 2D - Map Editor V 1.0
 
Zitat:

Zitat von Vasco da Gama
Zitat:

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 :cyclops:

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:

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

Allerdings kann ich mit deinem Editor nichts platzieren :wiejetzt:

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.

Vasco da Gama 19. Sep 2009 17:14

Re: Andorra 2D - Map Editor V 1.0
 
Ok, dann probier ich mal das mit der Klasse :cat:

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?

igel457 22. Sep 2009 17:35

Re: Andorra 2D - Map Editor V 1.0
 
Ja, eine eigene Unit.

TAdMap sollte am besten von nichts abgeleitet sein - wie du auf TStringList kommst verstehe ich nicht ganz.

Vasco da Gama 22. Sep 2009 17:40

Re: Andorra 2D - Map Editor V 1.0
 
Gut, danke, dann probier ich das :thumb:
Zitat:

Zitat von igel457
wie du auf TStringList kommst verstehe ich nicht ganz.

Ja weiß auch nicht, war halt nicht ganz bei der Tastatur :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:38 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