amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

[Login] [Registrieren] [Passwort vergessen?]

< Nächste MeldungVorige Meldung >
27.Apr.2023
TheoTheoderich


Entwicklertagebuch: "Settle the World" 04/23
Christian 'TheoTheoderich' Wiegel arbeitet weiter an seinem rundenbasierten Aufbau- und Handelsspiel "Settle the World" (amiga-news.de berichtete). In seinem neuesten Entwicklertagebucheintrag geht es um die Umsetzung des von Spielern geäußerten Wunsches, Einheiten direkt zu einer bestimmten Stadt schicken zu können:

Der Einbau dieser Funktion gestaltete sich allerdings deutlich schwieriger, als gedacht!

Wenn eine Einheit zu einer bestimmten Stadt geschickt werden soll, bedeutet das, dass es eine Liste der erreichbaren Städte geben muss. Aber wie wird diese erstellt? Pathfinding zu allen eigenen Städten ist unmöglich, da es auf dem Amiga viel zu lange dauern würde.

Ich habe mich dann gefragt, wie diese Funktion wohl im Spiel "Colonization" bzw. "Civilization" funktioniert?

Dabei bin ich darauf gestoßen, dass dort die verschiedenen Landflächen auf der Karte als Kontinente gekennzeichnet sind (Screenshot 1). Alle zusammenhängenden Landflächen sind jeweils ein Kontinent. Da Landeinheiten sich nicht ohne weiteres über Wasser bewegen können, kommen nur Städte als Ziele infrage, die sich auf demselben Kontinent wie die ausgewählte Einheit befinden.

Leider konnte ich nicht herausfinden, wie die Kontinente in den alten Spielen ermittelt wurden. Daher habe ich meine eigene Lösung gefunden. In AmiBlitz 3 gibt es die Funktion "Flood-Fill". Diese Funktion färbt alle zusammenhängenden Flächen einer Farbe ein.

Bei der Erstellung der Karte in "Settle the World" bekommt nun jedes Land-Feld einen Kontinent-Startwert. Dann werden alle Felder auf der Karte überprüft. Wenn das Feld noch den Kontinent-Startwert hat, so wird die Funktion "Flood-Fill" auf dieses Feld angewandt und färbt alle Felder auf diesem Kontinent in einer zufälligen Farbe ein. Die Farbnummer ist dabei dann der neue Kontinent-Wert.

Das wird so lange gemacht, bis kein Feld mehr den Kontinent-Startwert hat, jedes Landfeld einem Kontinent zugewiesen ist (Screenshot 2). Dieser Vorgang wird genauso nochmal für Ozeanfelder wiederholt (Screenshot 3).


Um nun im Spiel eine Liste der erreichbaren Städte zu erhalten, müssen nur noch alle Städte des Spielers in einer Schleife durchlaufen werden und es muss geprüft werden, ob sich diese Städte auf demselben Kontinent befinden wie die ausgewählte Einheit. Zusätzlich wird noch die Entfernung zu den Städten mittels einer einfachen Distanzprüfung ermittelt (Luftlinie). Städte, die sich außerhalb der Reichweite des Pathfinding befinden, werden nicht aufgelistet (Screenshot 4).

Wählt der Spieler nun eine der aufgelisteten Städte als Ziel aus, so startet das Pathfinding der Einheit, um einen Weg hin zu dieser Stadt zu ermitteln. Befindet sich die ausgewählte Einheit innerhalb einer Stadt, so wird diese automatisch aus der Stadt herausbewegt. Die gesamte Funktion ist im späteren Spielverlauf sehr nützlich, um das Micomanagement etwas zu reduzieren.


(dr)

[Meldung: 27. Apr. 2023, 05:53] [Kommentare: 2 - 27. Apr. 2023, 22:08]
[Per E-Mail versenden]  [Druck-Version]  [ASCII-Version]
< Nächste MeldungVorige Meldung >

.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.