Que pilha geográfica para um jogo de guerra estratégico online?

8

Estou pesquisando no Google por algumas semanas, mas tenho algumas dificuldades para descobrir por onde começar meu projeto e que parte das pilhas geográficas disponíveis são obrigatórias para minhas necessidades.

Tenho uma sólida experiência em Java, algum interesse pelo Python e totalmente aberto para aprender algumas novas tecnologias.

Como hobby, e por estar intimamente relacionado ao meu trabalho, pretendo desenvolver um jogo de guerra estratégico para MMO na Web, fortemente baseado em mapas interativos (basicamente para exibir a situação tática e dar ordens às unidades).

Aqui está o que eu estava pensando:

  • Geoserver para servir mapas e camadas.
  • PostGIS para armazenar geodatas.
  • GeoExt para exibir em um navegador
  • Apache Clique como servidor de aplicativos Java (resolução de combate, gerenciamento de unidades)

Consegui implantar um GeoServer (guerra no tomcat, mais fácil é difícil) Consegui instalar o PostGreSQL Executo alguns tutoriais sobre o GeoExt. Preciso experimentar um pouco de Javascript. Eu brinquei com o Apache Click para servir páginas e formulários.

Aqui está o fluxo que eu estava pensando:

  • O GeoServer serve os planos de fundo e as camadas do mapa construídos a partir de dados PostGIS para objetos estáticos (cidades, pontos de vitória, territórios, ...)
  • O Apache Click gera páginas HTML + GeoExt no navegador do cliente.
  • O Apache Click envia comandos CRUD para o PostGIS em resposta à ação do usuário.
  • [algo] atualiza regularmente o PostGIS (movimentos, resolução de combate, gerenciamento de características da unidade ...)
  • O Apache Click gera dinamicamente arquivos KML para atualizar ao vivo o navegador (KML NetworkLink?) Para unidades exibidas com ícones, zonas (alcance, detecção ...) ...

E agora, o tijolo que faltava na minha pequena parede:

  • Como posso implementar uma camada "mar / terra". Por exemplo, para invalidar um movimento de navio que passa em terra? Camada GeoServer? Zonas definidas no PostGIS?
  • O fluxo a seguir é reativo o suficiente para atualizar o mapa após uma ação do usuário: Evento HTML / GeoExt -> Apache Clique em processo -> Atualização PostGIS -> Atualização da camada GeoServer -> exibição HTML / GeoExt

O ponto principal é: onde estão os dados se eu quiser usá-los para cálculo e atualização? Camada estática do GeoServer ou tabelas PostGIS?

Zofren
fonte
2
Bem-vindo ao GIS SE! Projeto interessante que você tem lá. Btw, limite seu tópico a uma pergunta. Você pode fazer a segunda pergunta em outro segmento. Dessa forma, seria mais fácil responder à sua pergunta e votar nas respostas. Caso contrário, você corre o risco de respostas certas e erradas ao mesmo tempo.
RK
1
OpenLayers pode ser outra biblioteca JavaScript a ser considerada como parte do fluxo de trabalho.
DJQ
Atualização: fui para o Ninja Framework (em vez do Apache Click), Leaflet (em vez do GeoExt), GeoJSON (em vez do KML. O único bloco ausente é o provedor de dados brutos. Posso obter rotas de API pública como Mapquest. Mas ainda assim falta um provedor de camada para lidar com tipos de terreno, cidades, ...
Zofren

Respostas:

1

Para responder à pergunta Como posso implementar uma camada "mar / terra".

Você pode obter a costa e a camada do mar a partir do recém-lançado Nature Earth v2.

Pode ser muito preciso para suas necessidades, mas com alguma generalização você poderá carregá-lo no postgis e defini-lo como mar ou terra. Em seguida, o movimento do seu navio pode conter (http://www.postgis.org/docs/ST_Contains.html) uma vice-versa com o movimento do tanque. O ar seria um caminho diferente e mais complexo, pois você precisaria conhecer a localização atual e elaborar um aeródromo ou porta-aviões terrestre mais próximo para reabastecimento (a menos que o reabastecimento ar-ar seja permitido ..)

Boa sorte com o desenvolvimento do jogo.

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

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

Mapperz
fonte
Obrigado. Vou dar uma olhada nisso. Então, você confirma que as camadas do mapa do GeoServer não são "computáveis" e preciso inserir dados no PostGIS?
Zofren
Postgis é o lado espacial para postgres (controlos geometria)
Mapperz
1

Você provavelmente atualizaria os post gis através de chamadas de procedimento do seu servidor. Por um lado, todo o material geográfico não é necessário e apresenta muita flexibilidade e seria muito lento e exigente para o processador, mesmo para um usuário. Você pode ter um polígono terrestre e marítimo em uma camada e adicionar uma coluna +1 na tabela para linhas do mar e uma coluna -1 para terra. se a lat lon retornada de um evento de localização fosse mais ou menos, isso acionaria uma regra que invalidaria a mudança para a unidade marítima ou terrestre. Você também pode usar um modelo de elevação digital com o nível z como mais ou menos. Os jogos geralmente têm terrenos, mas isso não significa que eles são construídos usando SIG! Eu estudaria como um mecanismo de jogo popular lida com terrenos e como os desenvolvedores criam esses terrenos, escolha seu jogo de código aberto favorito. No meu caso, é BZFlag; )

Lewis
fonte
Eu queria um pouco mais do que apenas a camada do mar / terra. Eu gostaria de usar alturas para visibilidade e alcance, rios e pontes, tipos de estradas etc. etc ... A camada Terra / Mar é (lindamente) usada no AtWar, por exemplo, mas apenas com movimentos em linha reta. Não é suficiente para os conceitos que tento implementar.
Zofren
O Bzflag implementa camadas de água que não podem ser passadas, pois usa o opengl no mecanismo que possui vr, alturas e modelagem 3D. Só não embora geográfica, embora eu tenha gis convertidos para o jogo terreno mapas
lewis
1
Aqui está um link que suporta minha opinião e pode ser útil. vterrain.org/Games
lewis