¿Qué pila de Geo para un juego de guerra estratégico en línea?

8

Estoy buscando en Google durante algunas semanas, pero tengo algunas dificultades para determinar dónde comenzar mi proyecto y qué parte de las pilas Geo disponibles son obligatorias para mis necesidades.

Tengo una sólida experiencia en Java, algo de interés por Python y totalmente abierto para aprender algunas nuevas tecnologías.

Como pasatiempo y debido a que está estrechamente relacionado con mi trabajo, planeo desarrollar un juego de guerra estratégico web MMO basado en gran medida en mapas interactivos (básicamente para mostrar la situación táctica y dar órdenes a las unidades).

Esto es lo que estaba pensando:

  • Geoservidor para servir mapas y capas.
  • PostGIS para almacenar geodatas.
  • GeoExt para mostrar en un navegador
  • Apache Click como servidor de aplicaciones Java (resolución de combate, gestión de unidades)

Logré implementar un GeoServer (guerra en tomcat, más fácil es difícil) Logré instalar PostGreSQL Ejecuto algunos tutoriales sobre GeoExt. Necesito experimentar Javascript un poco. Jugué con Apache Click para servir páginas y formularios.

Aquí está el flujo en el que estaba pensando:

  • GeoServer sirve los fondos del mapa y las capas construidas a partir de datos PostGIS para objetos estáticos (ciudades, puntos de victoria, territorios, ...)
  • Apache Click genera páginas HTML + GeoExt en el navegador del cliente.
  • Apache Click envía comandos CRUD a PostGIS en respuesta a la acción del usuario.
  • [algo] se actualiza regularmente PostGIS (movimientos, resolución de combate, gestión de características de la unidad ...)
  • Apache Click genera dinámicamente archivos KML para actualizar en vivo el navegador (KML NetworkLink?) Para unidades que se muestran con iconos, zonas (rango, detección ...) ...

Y ahora, el ladrillo perdido en mi pequeña pared:

  • ¿Cómo puedo implementar una capa "mar / tierra"? Por ejemplo, para invalidar un movimiento de un barco que pasa por tierra? Capa GeoServer? ¿Zonas definidas en PostGIS?
  • ¿Es el siguiente flujo lo suficientemente reactivo para actualizar el mapa después de una acción del usuario: evento HTML / GeoExt -> proceso de Apache Click -> actualización PostGIS -> actualización de la capa GeoServer -> visualización HTML / GeoExt

El punto principal es: ¿dónde están los datos si quiero usarlos para el cálculo y la actualización? Capa estática GeoServer o tablas PostGIS?

Zofren
fuente
2
Bienvenido a GIS SE! Interesante proyecto que tienes allí. Por cierto, limite su hilo a una pregunta. Puedes hacer la segunda pregunta en otro hilo. De esa manera, sería más fácil responder a su pregunta y votar las respuestas. De lo contrario, corre el riesgo de respuestas correctas e incorrectas al mismo tiempo.
RK
1
OpenLayers podría ser otra biblioteca de JavaScript para considerar como parte del flujo de trabajo.
DJ
Actualización: Fui por Ninja Framework (en lugar de Apache Click), Leaflet (en lugar de GeoExt), GeoJSON (en lugar de KML. El único ladrillo que falta es el proveedor de datos sin procesar. Puedo obtener rutas de API públicas como Mapquest. Pero todavía perder un proveedor de capa para tratar con tipos de terreno, ciudades, ...
Zofren

Respuestas:

1

Para responder a la pregunta ¿Cómo puedo implementar una capa "mar / tierra"?

Puede obtener la costa y la capa marina del reciente Nature Earth v2.

Puede ser demasiado preciso para sus necesidades, pero con un poco de generalización podrá cargar esto en postgis y definirlo como mar o tierra. Entonces el movimiento de tu nave puede estar contenido (http://www.postgis.org/docs/ST_Contains.html) y viceversa con el movimiento del tanque. El aire sería un camino diferente y más complejo, ya que necesitaría conocer la ubicación actual y trabajar en un aeródromo terrestre o portaaviones más cercano para repostar (a menos que se permita el reabastecimiento de combustible aire-aire ...)

Buena suerte con el desarrollo del juego.

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

Área de descarga http://www.naturalearthdata.com/downloads/

Mapperz
fuente
Gracias. Echaré un vistazo por esto. ¿Confirma que las capas del mapa GeoServer no son "computables" y que necesito ingresar datos en PostGIS?
Zofren
Postgis es el lado espacial de postgres (controla la geometría)
Mapperz
1

Es probable que actualice el mensaje gis a través de las llamadas de su servidor. Por un lado, todo el material de geografía no es necesario e introduce mucha complejidad y sería muy lento e intensivo en el procesamiento incluso para un solo usuario. Podría tener un polígono terrestre y marino dentro de una capa y agregar, por ejemplo, una columna +1 en la tabla para filas marítimas y una columna -1 para tierra. Si el último regreso de un evento de ubicación fue un más o menos, se activaría una regla que invalidaría el movimiento para la unidad marítima o terrestre. También podría usar un modelo de elevación digital con nivel z como más o menos. ¡Los juegos comúnmente tienen terrenos, pero eso no significa que se construyan usando SIG! Estudiaría cómo un popular motor de juegos maneja terrenos y cómo los desarrolladores crean esos terrenos, elija su juego de código abierto favorito. En mi caso es BZFlag; )

Luis
fuente
Quería un poco más que la capa de mar / tierra. Me gustaría usar alturas para visibilidad y alcance, ríos y puentes, tipos de carreteras, etc. La capa Tierra / Mar se usa (hermosamente) en AtWar, por ejemplo, pero solo con movimientos en línea recta. No es suficiente para los conceptos que trato de implementar.
Zofren
Bzflag implica capas de agua que no se pueden pasar, ya que utiliza opengl en el motor, tiene vr, alturas, modelado 3D. Sin embargo, no es geográfico, aunque he convertido gis para mapas de terreno de juego
lewis
1
Aquí hay un enlace que apoya mi punto de vista y puede ser útil. vterrain.org/Games
lewis