Silenyte World Map
Resolvi me aventurar no mundo de GIS para o Mapping de Silenyte, e foi realmente, uma aventura.
Nunca havia passado tanta raiva e frustração desde que comecei a aprender Javascript lá em 2015, o que era pra ser só uma brincadeira acabou tomando uma proporção meio absurda, mas que valeu a pena.
Passei os últimos 5 dias trabalhando num projeto de mapa interativo para o cenário de Silenyte, e ele ainda tá bem longe de estar pronto.
Sexta feira, eu tive a ideia de criar um mapa simplão, só de SVG, das localidades de Nitera, a Lua onde se passa tudo. Só que no meio do processo eu fiquei imaginando "como será que a Engine do Google Maps funciona" e comecei a ir atrás, quando vi eu estava já com uma Key da API do Google Maps e ja tentando fazer alguma coisa.
Quebrando cabeça pra lá e pra cá, acabei descobrindo que existia uma API mais amigável, o Leaflet, usado pelo Open Street Map. Acabei indo nele achando que seria tranquilo só colocar imagens e vetores juntos, até eu descobrir que todos os formatos suportados eram restritamente formatos de dados geográficos, e eu não achava maneira nenhuma de converter ele pra usar nesses mapas. Foi então que fui atrás de informações sobre Geographic Information Systems (GIS) para ver se eu conseguia fazer a coisa sair do jeito que eu imaginei dentro dessa engine que parecia boa demais pra eu simplesmente abandonar a idéia.
(QGIS, Software opensource que usei pra editar informações geográficas no formato adequado)
Depois de uma mini-desistência devido ao fato de que projeções são mais complexas do que eu imaginava, e por isso os mapas nunca ficavam proporcionais ou alinhados, resolvi pegar leve comigo mesmo e abrir mão da acuidade física do mapa, em vez de fazer com que tudo encaixasse certinho pra mostrar tal qual a realidade, decidi fazer em cima de uma projeção da Terra mesmo e depois só manipulando alguns valores para dar a dimensão real das coisas. No fim das contas, hoje pela manhã acabei compreendendo melhor como converter e alinhar os CRS (Coordinate Reference System) de todos os layers para usar no mapa, mas vou deixar isso para o final pois agora não vale a pena insistir no que já me atrasou por 2 dias.
O processo todo foi bastante complicado justamente pelo fato de que essas ferramentas não são muito bem preparadas pra mundos artificiais com tanta acuidade, eles até oferecem mapas sem Geocoordenadas, mas isso faz com que o conceito de latitude e longitude seja perdido, mas para quem faz mapas mais isolados de areas menores ou sem preocupação com projeções, o processo é bem mais amigável, eu que sou um maluco lunático, não passe pelo que eu passei, a não ser que você goste de (quase) tudo ridiculamente nos eixos também (ou só gosta de passar trabalho).
Mas quebrando em miúdos, basicamente o que eu fiz foi desenhar o grande mapão (que é totalmente provisorio, ainda vai passar por umas várias revisões, principalmente de aspectos geológicos e geográficos), depois picotar ele em varios tiles em varios niveis de zoom. Precisei duma imagem bem grande, de uns 35 mil pixels de largura +/-, pra ter o máximo de resolução possivel.
Depois é juntar tudo e referenciar usando as ferramentas que o Leaflet proporciona, eles são bem crus então requer uma certa mão de obra, mas a documentação deles é excelente e indica o que cada recurso suporta. A parte mais complicada mesmo são os Plugins, que não possuem tanto suporte e muitas vezes é viver de gambiarra, tentativa e erro. Mas fora isso é um trabalho divertido de se ter.
E assim, depois de adicionar mais umas perfumarias, quebrar a cara e ter que reescrever o código do zero depois de uns acidentes, acabei que consegui chegar num ponto estável do projeto, o mapa está funcionando tal qual eu idealizei, e já atende a boa parta das demandas que eu possa ter dele.
Futuramente, quando eu finalmente começar a produzir a HQ do cenário, eu vou ver de manter este mapa como um tracker de eventos da história.
Uma coisa eu aprendi com isso tudo:
Que o trabalho de Geógrafos e Cartógrafos é algo ridículamente mais complexo e foda do que eu já imaginava que fosse, meu respeito a esses caras aumentou em 2000% depois desse mini-ordeal que passei.