Welcher Geo-Stack für ein strategisches Online-Wargame?


8

Ich google einige Wochen herum, aber ich habe einige Schwierigkeiten herauszufinden, wo ich mit meinem Projekt beginnen soll und welcher Teil der verfügbaren Geo-Stapel für meine Bedürfnisse obligatorisch ist.

Ich habe einen starken Java-Hintergrund, ein gewisses Interesse für Python und bin völlig offen für das Erlernen neuer Technologien.

Als Hobby und weil es eng mit meinem Job verbunden ist, plane ich, ein strategisches Web-MMO-Kriegsspiel zu entwickeln, das stark auf interaktiven Karten basiert (im Grunde genommen, um die taktische Situation anzuzeigen und Einheiten Befehle zu erteilen).

Folgendes habe ich mir überlegt:

  • Geoserver zur Bereitstellung von Karten und Layern.
  • PostGIS zum Speichern von Geodaten.
  • GeoExt zur Anzeige in einem Browser
  • Apache Click als Java-Anwendungsserver (Kampfauflösung, Einheitenverwaltung)

Ich habe es geschafft, einen GeoServer bereitzustellen (Krieg in Tomcat, einfacher ist schwierig). Ich habe es geschafft, PostGreSQL zu installieren. Ich habe einige Tutorials über GeoExt ausgeführt. Ich muss Javascript ein wenig erleben. Ich habe mit Apache Click gespielt, um Seiten und Formulare bereitzustellen.

Hier ist der Fluss, an den ich gedacht habe:

  • GeoServer liefert die Kartenhintergründe und Layer, die aus PostGIS-Daten für statische Objekte (Städte, Siegpunkte, Gebiete, ...) erstellt wurden.
  • Apache Click generiert HTML + GeoExt-Seiten im Client-Browser.
  • Apache Click sendet CRUD-Befehle als Antwort auf die Aktion des Benutzers an PostGIS.
  • [etwas] aktualisiert regelmäßig PostGIS (Bewegungen, Kampfauflösung, Verwaltung der Einheitenmerkmale ...)
  • Apache Click generiert dynamisch KML-Dateien, um den Browser (KML NetworkLink?) Für Einheiten, die mit Symbolen, Zonen (Reichweite, Erkennung ...) angezeigt werden, live zu aktualisieren ...

Und jetzt der fehlende Ziegelstein in meiner kleinen Wand:

  • Wie kann ich eine "See / Land" -Schicht implementieren? Zum Beispiel, um eine an Land vorbeifahrende Schiffsbewegung ungültig zu machen? GeoServer-Schicht? In PostGIS definierte Zonen?
  • Ist der folgende Ablauf reaktiv genug, um die Karte nach einer Benutzeraktion zu aktualisieren: HTML / GeoExt-Ereignis -> Apache Click-Prozess -> PostGIS-Update -> GeoServer-Layer-Update -> HTML / GeoExt-Anzeige

Der Hauptpunkt ist: Wo sind die Daten, wenn ich sie zur Berechnung und Aktualisierung verwenden möchte? GeoServer statische Schicht oder PostGIS-Tabellen?


2
Willkommen bei der GIS SE! Interessantes Projekt haben Sie dort. Übrigens, bitte beschränken Sie Ihren Thread auf eine Frage. Sie können die zweite Frage in einem anderen Thread stellen. Auf diese Weise ist es einfacher, Ihre Frage zu beantworten und über die Antworten abzustimmen. Andernfalls riskieren Sie Antworten, die gleichzeitig richtig und falsch sind.
RK


1
OpenLayers ist möglicherweise eine weitere JavaScript-Bibliothek, die als Teil des Workflows berücksichtigt werden muss.
DJQ

Update: Ich habe mich für Ninja Framework (anstelle von Apache Click), Leaflet (anstelle von GeoExt), GeoJSON (anstelle von KML) entschieden. Der einzige fehlende Baustein ist der Rohdatenanbieter. Ich kann Routen von öffentlichen APIs wie Mapquest abrufen Verpassen Sie einen Layer-Anbieter, um mit Geländetypen, Städten, ...
umzugehen

Antworten:


1

Um die Frage zu beantworten, wie ich eine Schicht "Meer / Land" implementieren kann.

Sie können Küstenlinie und Meeresschicht von der kürzlich veröffentlichten Nature Earth v2 erhalten.

Es mag für Ihre Bedürfnisse zu genau sein, aber mit einigen Verallgemeinerungen können Sie dies in Postgis laden und als Meer oder Land definieren. Dann kann Ihre Schiffsbewegung enthalten sein (http://www.postgis.org/docs/ST_Contains.html) und umgekehrt mit Panzerbewegung. Luft wäre ein anderer Weg und komplexer, da Sie den aktuellen Standort kennen und einen nächstgelegenen Landflugplatz oder Flugzeugträger zum Auftanken ermitteln müssten (es sei denn, das Auftanken von Luft zu Luft ist zulässig.)

Viel Glück bei der Entwicklung des Spiels.

http://www.naturalearthdata.com/blog/miscellaneous/natural-earth-v2-0-0-release-notes/

Download-Bereich http://www.naturalearthdata.com/downloads/


Vielen Dank. Ich werde einen Blick darauf werfen. Sie bestätigen also, dass die GeoServer-Kartenebenen nicht "berechenbar" sind und ich Daten in PostGIS eingeben muss?
Zofren

Postgis ist die räumliche Seite von Postgres (steuert die Geometrie)
Mapperz

1

Sie würden das Post-GIS wahrscheinlich durch Fortschrittsaufrufe von Ihrem Server aktualisieren. Zum einen ist das gesamte geografische Material nicht erforderlich und führt zu einer großen Kompliziertheit, und es wäre selbst für einen Benutzer sehr verzögert und prozessorintensiv. Sie können ein Land- und Meerepolygon innerhalb einer Ebene haben und beispielsweise eine + 1-Spalte in der Tabelle für Seereihen und eine -1-Spalte für Land hinzufügen. Wenn der von einem Standortereignis zurückgegebene Lat Lon ein Plus oder Minus wäre, würde dies eine Regel auslösen, die den Umzug für See- oder Landeinheiten ungültig macht. Sie können auch ein digitales Höhenmodell mit z-Ebene als Plus oder Minus verwenden. Spiele haben normalerweise Terrains, aber das bedeutet nicht, dass sie mit GIS erstellt wurden! Ich würde untersuchen, wie eine beliebte Spiel-Engine mit Terrains umgeht und wie Entwickler diese Terrains erstellen. Wählen Sie Ihr Lieblings-Open-Source-Spiel. In meinem Fall ist es BZFlag; )


Ich wollte etwas mehr als nur eine See- / Landschicht. Ich möchte Höhen für Sichtbarkeit und Reichweite, Flüsse und Brücken, Straßentypen usw. usw. verwenden. Die Land / Meer-Schicht wird beispielsweise in AtWar (wunderschön) verwendet, jedoch nur mit geraden Bewegungen. Nicht genug für die Konzepte, die ich umzusetzen versuche.
Zofren

Bzflag implementiert Wasserschichten, die nicht passiert werden können, da es OpenGL in der Engine verwendet, die über VR, Höhen und 3D-Modellierung verfügt. Nur nicht geografisch, obwohl ich
Lewis

1
Hier ist ein Link, der meine Ansicht unterstützt und hilfreich sein kann. vterrain.org/Games
Lewis
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.