Interaktive Galaxiekarte basteln für Trekkies

violentviper

Lt. Commander
Registriert
Mai 2008
Beiträge
1.838
Hallo,

ich suche eine Möglichkeit eine interaktive Galaxiekarte für mein heiß geliebtes Browserspiel zu basteln.

Die Systemkarte sieht z.B so aus (falls sich einer fragt, die 1 ist lediglich mein Schiff welches hier über den Klasse P Mond steht):



Beim genaueren Hinschauen seht ihr, das alles aus Einzelfelder besteht. Wenn ich nun auf den Klasse P Mond klicke möchte ich die Kolonieinformationen in einem Popup anzeigen lassen (ein paar Strings halt).

Die Kolonieinfos sollen über ein ganz einfaches Webformular eingetragen werden können. Und zwar wäre es irrsinnig geil, wenn man lediglich die Koordinanten eintragen müsste und das System dann schon das richtige Kartenfeld interpretiert.

Sprich, ich trage im Webformular lediglich die Koordinaten 5|4 und die paar Strings mit den Infos die ich befüllen möchte ein, und das System erkennt dann gleich das richtige Kartenfeld.

Die Ausgangsbasis sind immer die Screenshots der Systeme und der Galaxie. Daher wird es sehr schwer, das irgendwie zu automatisieren...Man weiß ja nicht wo in dem Bild die Koordinate 5|4 ist. Ich habe echt keine Idee. Zudem sind die eingereichten Screenshots immer minimal anders.

Ich habe es seither alles einzeln mit JavaScript und mehrdimensionalen Arrays gebastelt. Aber da wird man zum Hirsch. Und es gibt btw. hunderte von Systemen, und eine Galaxiekarte die irgendwann (in meinem Traum) auch interaktivisiert werden soll :P.

Falls jemand eine clevere Idee hat, wie das halbwegs einfach machbar wäre, wäre ich ihm sehr dankbar. Gerne auch alternative Vorschläge.

Qapla'
 
Hallo,

Man weiß ja nicht wo in dem Bild die Koordinate 5|4 ist.

Ich würde sagen bei Spalte 5 und Zeile 4? Ich verstehe das ganze nicht wirklich, wie du das meinst.

ich suche eine Möglichkeit eine interaktive Galaxiekarte für mein heiß geliebtes Browserspiel zu basteln.

Hast du das programmiert, oder ist das von einer Firma / Person(en), welche aber eine API bereitgestellt haben?
Ergänzung ()

EDIT:

Die Ausgangsbasis sind immer die Screenshots der Systeme und der Galaxie

Zudem sind die eingereichten Screenshots immer minimal anders.

Sind die Screenshots also zuerst nicht unterteilt? Wie werden diese Screenshots erstellt? Sollen diese automatisch als Raster aufgeteilt werden? Gibt es denn bestimmte vorgaben?
Am Sinnvollsten wäre es, wenn pro Kartenausschnitt immer eine Feste Größe (z.B. 5x5 Felder) verwendet werden. Und dann ein dreidimensionales Array verwenden für die ganze Galaxie.
 
Minimax83 schrieb:
Hallo,

Ich würde sagen bei Spalte 5 und Zeile 4? Ich verstehe das ganze nicht wirklich, wie du das meinst.


Hast du das programmiert, oder ist das von einer Firma / Person(en), welche aber eine API bereitgestellt haben?
Ergänzung ()

EDIT:

Sind die Screenshots also zuerst nicht unterteilt? Wie werden diese Screenshots erstellt? Sollen diese automatisch als Raster aufgeteilt werden? Gibt es denn bestimmte vorgaben?
Am Sinnvollsten wäre es, wenn pro Kartenausschnitt immer eine Feste Größe (z.B. 5x5 Felder) verwendet werden. Und dann ein dreidimensionales Array verwenden für die ganze Galaxie.

Ich habe das Spiel nicht programmiert, eine API gibt es auch nicht. Es handelt sich um ein altes Browserspiel.

Die Screenshots mache ich ganz normal mit dem SnippingTool.

Das Raster was man sieht, ist allerdings schon. Das sind die Flugfelder. Wenn ich mit meinem Schiff fliege, würde mich es 1 Energie kosten.

Das Problem ist halt auch, das die Systeme unterschiedlich groß sind. Ich müsste somit jedes System in ein Array nachbauen, das kann ja auch nicht die Lösung sein.

Ich habe mir schon überlegt, die Screenshots immer auf ein festes Maß zu standardisieren. Und dann mit der Maus auf die Position im Bild zu klicken, wo man den Eintrag setzen möchte. Nur muss ich dazu wissen, wo der Mauszeiger ist, um dort den entsprechenden Eintrag zu machen.
Ein DAU könnte dann überall solche Felder setzen, auch dort wo es kein Sinn macht. Aber das wäre egal, da das tool eh nur von mir und ein paar wenigen benutzt werden soll.
 
Ich versuche mal zu raten was du machen möchtest:

- ein altes Browserspiel
- du machst Screenshots und fügst diese in deine neue (Web)anwendung ein?
- wenn man ein Feld anklickt, sollen manuell gepflegte Informationen angezeigt werden
- Ziel ist eine Gesamtkarte (oder ein Ausschnitt) der Galaxie, auf der man rumklicken kann

Wenn das soweit richtig ist ...
du musst die Screenshots ja in deine Anwendung einfügen. Dafür muss die Einfügeposition (ein Offset) bekannt sein (steht am Kartenrand). Also lassen sich relative Screenshot-Positionen in absolute Positionen auf der Gesamtkarte umrechnen. Und damit kann man die gepflegten Informationen adressieren, die ja die absoluten Positionen enthalten.

Du meintest, die Systeme sind unterschiedlich groß, heißt das ...
- die Screenshots werden größer? (kein Problem)
- oder die Felder werden kleiner? (Screenshot auf Einheitsfeldgröße skalieren)

Ich sehe in diesem Szenario kaum Probleme.
 
fhtagn schrieb:
Ich versuche mal zu raten was du machen möchtest:

- ein altes Browserspiel
- du machst Screenshots und fügst diese in deine neue (Web)anwendung ein?
- wenn man ein Feld anklickt, sollen manuell gepflegte Informationen angezeigt werden
- Ziel ist eine Gesamtkarte (oder ein Ausschnitt) der Galaxie, auf der man rumklicken kann

Wenn das soweit richtig ist ...
du musst die Screenshots ja in deine Anwendung einfügen. Dafür muss die Einfügeposition (ein Offset) bekannt sein (steht am Kartenrand). Also lassen sich relative Screenshot-Positionen in absolute Positionen auf der Gesamtkarte umrechnen. Und damit kann man die gepflegten Informationen adressieren, die ja die absoluten Positionen enthalten.

Du meintest, die Systeme sind unterschiedlich groß, heißt das ...
- die Screenshots werden größer? (kein Problem)
- oder die Felder werden kleiner? (Screenshot auf Einheitsfeldgröße skalieren)

Ich sehe in diesem Szenario kaum Probleme.


Ja fhtagn, du hast es richtig verstanden.

Ich mache Screenshots der Systeme und füge diese auf meinen Webserver ein. Stink normal als .jpg Screenshot gepfelgt.
Die Idee war nun, das ganze interaktiv zu gestalten, sodass man die Planeten und Monde auf den Screenshots anklicken kann, und dadurch weitere Informationen (welche manuell über ein Webformular auf diesem Webserver eingepflegt werden sollen) erhält.

Die Systeme sind unterschiedlich groß, aber die Kartenfelder bleiben immer so groß wie oben auf dem Bild. Die sind also fest. Es wird lediglich der Screenshot größer.

Wie rechnet man denn am geschicktesten in so einem Fall relative Screenshot-Positionen in absolute Positionen um?
 
Na wie gesagt, zu jedem Screenshot musst du auch dessen Offset speichern, der ja im Screenshot zu sehen ist.
Code:
absoluteX = screenshotOffsetX + relativeX
absoluteY = screenshotOffsetY + relativeY

Dein Kartenausschnitt oben reicht dann in absoluten Koordinaten von:
(3, 2) = (3, 2) + (0, 0)
bis:
(7, 6) = (3, 2) + (4, 4)

planikordsdgarm.png
 
Hm,

Noch eine Frage zum Beispiel-Screenshot:

Dies scheint ja ein Planeten-System zu sein. Ist jede X- und Y-Koordinate dieser kleinen Karte nur einmalig in der ganzen Galaxie vorhanden?

Bedeutet z.B. das nächstes 5x5 Feld kann unteranderen nur X=8-12 und Y= 7-11 haben? (bzw. verschoben, aber nur angrenzend an den geposteten Screenshot)?

Oder anderer Fall:
Sobald man per Schiff ein Planetensystem in der Galaxie anfliegt, öffnet sich eine neue Karte beliebiger Größe?

EDIT:
Eine Idee:
Schreibe ein Programm, dass den Screenshot in die einzelnen Quadrate zerschneidet und jedes einzelne als Bild-Datei unter dem namen X_Y.jpg abspeichert. Dann könnest du die interaktive Karte je nach Bedarf zusammenbauen (mit einer Datenbank im Hintergrund, welche Informationen es je Quadrat gibt.
 
Zuletzt bearbeitet:
Minimax83 schrieb:
Dies scheint ja ein Planeten-System zu sein. Ist jede X- und Y-Koordinate dieser kleinen Karte nur einmalig in der ganzen Galaxie vorhanden?

Nein. Jedes System beginnt bei 1,1 bis n,n. Die Systeme sind jedoch immer Quadratisch, nur halt eben unterschiedlich groß.
Ein vollständiges System sieht z.B so aus:



Minimax83 schrieb:
Oder anderer Fall:
Sobald man per Schiff ein Planetensystem in der Galaxie anfliegt, öffnet sich eine neue Karte beliebiger Größe?

Man kann in ein System einfliegen oder es eben verlassen. Wenn man das System verlässt landet man auf einer Riesenkarte (die Galaxie). Auf dieser sind die Systeme verstreut, in die man wiederrum einfliegen kann :). Dann öffnet sich ein System wie z.B dies oben.

Ich habe mir die Mühe gemacht, alle Quadranten zusammenzufassen, sodass man eine Riesengalaxiekarte erhält. Diese habe ich noch mit Koordinaten versehen. Aber das dient mehr zur Übersicht für Flugaktionen.

Galaxie


Minimax83 schrieb:
EDIT:
Eine Idee:
Schreibe ein Programm, dass den Screenshot in die einzelnen Quadrate zerschneidet und jedes einzelne als Bild-Datei unter dem namen X_Y.jpg abspeichert. Dann könnest du die interaktive Karte je nach Bedarf zusammenbauen (mit einer Datenbank im Hintergrund, welche Informationen es je Quadrat gibt.

Das klingt nicht schlecht, setzt halt vorraus, dass die Bilder immer gleich groß sind. Das sind sie aber aufgrund der unterscheidlichen Systemgrößen nicht( Screenshot ist ja dann größer bzw. kleiner). Ein System kann 20x20, 25x25 , 10x10 etc. sein. Es ist wirklich für Vielfalt gesorgt :D.


Meine Idee wäre es, alle Screenshots auf einen Webserver abzulegen. Und hier dann die Mausposition abzufragen, und genau an jener X Y Stelle des Cursors eine Infobox zu setzen. Aber ich weiß nicht ob das die Quadratur des Kreises ist. Zudem soll es ja auch auf anderen Bildschirmauflösungen funktionieren.
 
Zurück
Oben