# 2d Karte



## Zapp_Branigan (29. Jul 2007)

Ich würde gerne eine 2D Karte haben die so ähnlich ist wie diese von siedler 2:






Ich habe aber keine Ahnung wie man sowas nur anfängt. Bis jetzt habe ich nur Wissenschaftliche Projekte gemacht da hatte ich fast nichts mit Grafiken zu tun.


----------



## SlaterB (29. Jul 2007)

es gibt einen Freeware-Clon:
http://xoops.widelands.org/

Source-Code ist zugänglich, habe aber auf die Schnelle nicht die Sprache gesehen,
im Wiki steht was zur Grafik:
http://xoops.widelands.org/modules/mediawiki/index.php/About_Geometry

fragen kann man die vielleicht auch


----------



## dieta (29. Jul 2007)

Das größte Problem wird beim erstellen der Texturen liegen.
für die Karte kannst du im einfachsten Fall ein simples Array nehmen, dass du dann mit Objekten für Wiese, Wasser, Strand etc. befüllst.
Im Fall von etwas Siedler-Ähnlichen, musst du nur eben die anordnung von sechseckigen "Kacheln" irgendwie in ein z.B. zweidimensionales Array/Vektor/ArrayList etc. speichern.
Am Besten würdest du meherere Arrays/Vektoren/ArrayLists etc. nehmen, z.B. eine für den Untergrund, eine für Gebäude und Bäume etc. und eine für Einheiten wie Soldaten und schiffe.
Problematisch dabei word das Speichermanagement werden.
Das Zeichnen der Objekte gestaltet sich relativ einfach, da du nur den Bildschirm von oben nach unten mit den zum Inhalt des jeweiligen Elementes im Array gehörigen Bildern füllen Musst.
Das ganze machst du dann für jedes Array einmal (erst der Boden, dann die Bäume und Gebäude, dann...).
Evtl. könnte man den Biodern, der sich ja nicht verändert schon von vornherein z.B. in einem BufferedImage speichern, von dem man dann nur den entsprechenden Ausschnitt zeichnet. Das spart einem bei jeden Bildaufbau einige Rechnenzeit.
evtl. aknn man das mit den anderen auch so machen, wo man bei einer Änderung eben die betreffenden Bereiche neu zeichnet.


----------



## Zapp_Branigan (29. Jul 2007)

Danke erstmal für deine Antwort ich hab vorerst mal die Texturen von einem Open Source Nachbau von Siedler genommen (da das ganze erstmal nur für mich ist).
Wie geht das mit dem BufferdImage genau?
@SlaterB dein Link ist wirklich sehr gut. Den Source Code verstehe ich leider nicht das ist C# oder c++.


----------



## Zapp_Branigan (29. Jul 2007)

Jetzt stehe ich vor dem Problem wie ich Grafiken einlese und dann Dreiecke ausschneide? Quadrate kann ich mir noch vorstellen aber Dreiecke?!? und wie füge ich die dann zu einer Grafik zusammen? Und was macht man am besten mit den Rändern? Die sind doch dann so im Zick Zack?


----------



## Quaxli (30. Jul 2007)

Zum Thema Einlesen von Grafiken: such mal im Anfänger-Bereich, da solltest Du genug finden.

Zum Thema Gezackte Ränder: Du mußt ja nur sicher stellen, daß die Ränder nie angezeigt werden. Soll heißen: bau die Karte etwas größer und sorge im Code dafür, daß die letzten 50 Pixel oder so immer außerhalb des sichtbaren Bereichs bleiben.

Noch ein Tipp: Schau mal hier . Da gibt es als PDF Auszüge aus dem Buch "Killer Game Programming" (in Englisch). Dort wird beschrieben, wie man eine Karte aus Hexfelder zusammen bastelt. Evtl. findest Du ja einige Tipps dort. Die Seite braucht etwas Zeit, bis sie geladen ist.


----------

