Dynamische Spielewelt

Previous topic - Next topic

WPShadow

Hi!

Hat jemand von euch eine Idee, wie ich eine dynamische Weltraumkarte programmieren könnte?

Ich möchte das Ding in 2D machen, was bedeutet:

- Portalpunkte (von denen aus man von A nach B reisen kann)
- Gebiete werden von einer bestimmten "Gruppe" dominiert
- Erweiterungsfähigkeit, damit ich später immer wieder neue Gebiete hinzufügen kann
- Gebiete farblich unterschieden

Das Ganze möchte ich so gestalten, daß man für eine Gruppe eine Mission erfüllt und sie dadurch stärker wird. Dabei können aber auch Konflikte zwischen Parteien entstehen, mit denen man gar nichts am "Laufen" hat. Im Endeffekt übernimmt das Gebiet, wenn sich die Dominanz einer Gruppe zu sehr erhöht, die Farbe des Gebietes.

Soweit die Theorie. Nur was ist der beste Weg es in die Praxis umzusetzen?

Gebiete als *.bmp vorzeichnen? --> Nur wie fülle ich die Gebiete farblich aus?

Oder eine Gesamtkarte als *.bmp zeichnen?

Zufällig von GLBasic selbst generieren lassen?

Der Weltraum selbst ist schon gelöst, aber die Karte eben nicht...

Vielleicht hat jemand eine Idee... Wäre sehr dankbar dafür!

GLG

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Baggi

Hi,

deine Vorstellung von der Weltraumkarte ist ja schon recht konkret. Da du die Karte in 2D haben willst, würde ich ein Schachbrett mit Kacheln machen. Also die klassische Variante für 2D Spiele.
Du machst dir ein 2D Array in beliebiger Größe
Code (glbasic) Select
dim Feld[10][10]Jetzt machst du dir Kacheln zB. 5 16x16 Bitmaps in blau (sprite 0), rot (sprite 1), grün (sprite 2), braun (sprite 3), gelb (sprite 4). Mit diesen Kacheln kannst du dann die Karte auslegen.
Blau soll der Hintergrund sein, die anderen Farben sind die Spieler.
Code (glbasic) Select
for y=0 to 9
for x=0 to 9
sprite Feld[y][x],x*16,y*16
next
next
Jetzt ist die Weltraumkarte 160x160 Pixel und komplett blau.
In das Feld werden jeweils die Farben eingetragen, also 0 für blau, 1 für rot usw.
Angenommen Spieler gelb hat sich die 4 Kacheln oben links ergattert, dann:
Code (glbasic) Select
Feld[0][0]=4
Feld[0][1]=4
Feld[1][0]=4
Feld[1][1]=4
Und im nächsten Durchgang sind die felder oben links gelb.

So kannst du jedem Spieler Gebiete auf der Karte zuweisen.

Hoffe das hilft.

Baggi

WPShadow

Schachbrettartig klingt gut, aber wie mache ich es, wenn ich ungleich große Kartenstücke haben möchte, die aussehen wie eine wirkliche Karte mit abgeschrägten oder gar runden Rändern???
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Baggi

Ich würde die Karte vorzeichnen und beim Schachbrett bleiben.
Die farbigen Sprites würde ich mit Alphablending über die Karte legen.
Sobald auch nur ein kleiner Teil eines Quadrates erobert wurde, würde ich
das Quadrat einfärben. Dadurch sind die Gebiete zwar immer noch eckig,
aber die Karte darunter kann ja beliebig gut aussehen, also mit
Bergen, Flüssen, Wäldern usw.

Was Anderes fällt mir nicht ein ohne länger darüber nachzudenken.
Ausserdem muss man beim Programmieren immer gut abschätzen, ob sich
der Aufwand lohnt ;) .

Vielleicht hat Gernot ja noch eine gute Idee?

Baggi

Kitty Hello

Man könnte die Karte aus Dreiecken zusammenbasteln. Dann müsste man eine Hierarchie speichern, welches Dreieck welche Nachbarn hat und eine IstPunktInDreieck Funktion basteln. Ist zum Modelieren etwas aufwändig, weil man ja die hierarchie auch mit eingeben müsste. Ich würd davon die Finger lassen... Rechtecke sind super! ;)

Wenn's sein muss, kann ich Dir aber schon auch bei den Dreiecken helfen.

WPShadow

Ich habe mir überlegt, daß man eine Gesamtkarte zeichnen könnte, und die in verschiedenen Ausführungen machen könnte: Oben links --> grün, blau, gelb, rot,...

Aber damit würde ich die ca. 500 *.bmp´s zeichnen müssen und das ist blöd.

Gegenfrage: Was ist, wenn man die Karte zeichnet und die einzelnen Sprites reinlädt?

Folgendermaßen:

Sagen wir mal 10 Gebiete und 10 Fraktionen --> bedeutet 100 Sprites! Pro Sprite sagen wir 100x100 Pixel! Die Kartenstücke werden einfach in verschiedenen Farben angemalen und mit 255, 128, 0 umrandet. Danach müssen nur die Koordinaten feststehen, auf die sie gesetzt werden und ein Gesamtbild geladen werden, das die ganze Karte anzeigt und die Gebiete schwarz umrandet, oder so! Wie lang wäre denn die Ladezeit für Sprites?

Einfach eine vordefinierte *.ini, in der alle Daten drinnen sind:

GEBIET1=Fraktion1
GEBIET2=Fraktion4
...

Oben ein Ladeblock und je nachdem, wie die *.ini angeschrieben ist, wird die Karte reingeladen.

Dadurch bekommt man jede Veränderung sofort mit und hat sie auch abgespeichert, falls der Rechner sich mal wieder verabschiedet!!!

Was haltet ihr von dieser Version?

GLG

W.
AMD X2 4600, 2 GB Ram, ATI X1950 XTX, XP PRO SP2: GLB Premium 10.beta_dingsi, <(´.´<) Kirby Dance (>`.`)>
http://lostrevenant.blogspot.com
alea iacta est

Kitty Hello

Ich hab noch nicht kapiert was eine Fraktion ist... Also, 10 Gebiete = Schnee, Wasser, Wüste, Sumpf usw, oder? Und jedes Gebiet hat 10 Status-Bilder, oder? Also: Reich an Erz, verseucht, geplündert usw.. Ja?
Dann würde ich für die Landschaft 10 Spites malen (Tilesets) die schon alle möglichen Teile enthalten und dann mit POLYVECTOR (such mal nach PSprite im Forum) die Hintergrundgrafik zusammenbauen.
Und für die Status-Bilder auch wieder ein Sprite, das alle enthält.
Kann sein, dass ich jetzt aber nicht kapiert hab' was Du willst.