Alguns meses atrás sentei com minhas filhas na sala, e falei vamos fazer um jogo ? elas é claro toparam, como topas as idéias malucas do pai … eheheh dai conversamos que precisavamos de um continente para a facção A e outro para a B e uma área neutra, depois de conversar conversar, resolvemos desenhar, e esta é uma cópia do mapa original que desenhamos.

Mas depois desta primeira fase eu precisava transformar este desenho em algo que pudesse ser entendido pelo computador, até porque os relevos e rios, e etc precisam ter comportamento diferente no jogo, dai minha idéia, redesenhei o mapa original com uma ferramenta de desenho vetorial, exportei uma imagem e depois li a imagem pixel a pixel transformando em um arquivo texto ,,, simples neh ?

nem tanto …

esta foi a imagem vetorial criada

A classe MapCreator foi criada para processar esta imagem ae de cima no formato bmp, para evitar distorções de cores, pela compressão de um jpg por exemplo, mas mesmo assim na hora de gerar a imagem o programa fez um pouco de anti-aliasing e gerou uns tons intermediários de cores …

Isto me obrigou a ler o arquivo texto de resultado e procurar por alguns caracteres que ficaram meio que na borda entre uns e outros e fazer uma tabela de substituição … foi um trabalhinho demorado.. mas no fim acabei com um arquivo texto bem mais limpo.

É claro que nem tudo são flores na vida de joseph climber… achei que o mapa tinha ficado pequeno … solucao ? multiplicar os caracteres por 5, para nao distorcer o mapa mas tudo ocupar mais espaço no mapa !!dai Escrevi MultiplyChars que faz o trabalho sujo …

Ainda precisava arrumar um jeito de colocar os dados do mapa no banco de dados, bem de cara tinha um problema, porque o script desta brincadeira ficou com 50mb, e ia demorar um pouco para mandar pro banco e nao deu para zipar e mandar pro banco ficou grande demais … então lah fui eu criar um outro programinha para solucionar pequenos problemas … :) Procura lah AddMapToDatabaseScript uma pérola huahuahua que usa um sintaxe diferente do Mysql para fazer um montão de inserts ao mesmo tempo, e eu criei assim uns 5 scripts enormes que pude enviar para o banco. e finalmente testar as paginas php de acesso aos dados …

querendo testar :

  • acesse www.sioti.com
  • se cadastre no site
  • acesse a pagina http://game.sioti.com/login.php?u=usuario&p=senha onde o usuario e senha sao os que vc usou para se cadastrar no site
  • para receber um pedaco de mapa existem disponiveis duas alternativas:

1. informar x e y e receber um chunk de dados e e os chunks ao redor por exemplo
http://game.sioti.com/layer1_around.php?x=10&y=10

2. informar x e y e receber o chunk de dados correspondente a posição informada
http://game.sioti.com/layer1.php?x=10&y=10

para ler os dados de como os chunks de dados do mapa estão organizados, acesse
http://game.sioti.com/get_setup.php

por enquanto eh soh …

antes que eu me esqueça o algoritmo para garantir que o mapa não acaba e o usuário para poder caminhar sobre o mapa como se fosse um globo esta na implementação do server, mais ainda não sei se vou manter no server ou no cliente, mas jah esta no server no arquivo layer_around.php