Eu queria saber como isso funciona.
Você carrega o mapa completo quando o jogo inicia ou carrega partes do mapa em tempo de execução?
E como você salvaria os mapas? Seria em XML ou em algum formato binário?
Obrigado!
Eu concordo com o eBusiness. Depende do tamanho e como você deseja editá-lo.
Estime o tamanho de bytes do seu mapa em uma representação razoavelmente compacta. Decida também quais partes do mapa podem mudar conforme o jogo é jogado. As partes que não mudam podem ser carregadas e não precisam ser salvas. Se o tamanho estimado for pequeno, armazene tudo na memória. Não vale a complexidade extra de carregar partes do mapa e rastrear o que você carregou ou não, a menos que os dados sejam tão grandes que sejam necessários.
Por exemplo, se você estivesse escrevendo o Civilization II , o tamanho do mapa pode ser de 100 x 100 blocos.
Isso é menos de 30k para uma representação binária compacta dos objetos mapa + Civ II, para que você possa armazenar tudo na memória, mesmo se usar um formato detalhado muito maior. Eu obtive os números acima de alguém fazendo engenharia reversa na estrutura do mapa Civ II .
Daggerfall , considerado por alguns como um mapa ridiculamente grande, parece ter 5000x2500 e cerca de 25 megabytes, mas também possui um grande número de NPCs (750.000 é o que eu li, mas parece muito alto). Nos computadores de mesa / laptop de hoje, isso também pode caber na memória, mas em dispositivos móveis ou navegadores que podem ser um pouco grandes demais. Há um wiki descrevendo o formato do mapa de Daggerfall .
Você pode reduzir o tamanho identificando e considerando a redundância . Por exemplo, em vez de armazenar 100.000 árvores ou espadas idênticas, cada uma em um formato XML, armazene uma árvore e uma espada e 100.000 referências a elas. Nos formatos binários, essa referência pode ter apenas 1 ou 2 bytes e, em um formato mais detalhado, a referência ainda pode ser razoavelmente pequena.
Faça a coisa mais simples que funciona para o seu jogo. Se o mapa for pequeno, não importa se você usa um formato compacto ou detalhado. Se o formato compacto caberia na memória, mas o formato detalhado não, você precisa decidir se o trabalho extra do formato binário é mais ou menos do que o trabalho extra de carregar partes do mapa. Isso vai depender do jogo. Em um jogo do tipo Civ, onde você precisa de todos os dados para simular curvas, o formato binário é provavelmente uma escolha melhor. Em um jogo parecido com Daggerfall, em que você não precisa carregar áreas, exceto o que está perto do jogador, carregar partes do mapa é provavelmente uma escolha melhor. Se o mapa é tão grande que mesmo o formato compacto não cabe na memória, primeiro pergunte a si mesmo se realmente vale a pena todo o trabalho extra para lidar com isso e, se for o caso, crie um formato binário no qual você possa carregar partes.
Para o meu projeto atual (hobby), os mapas e todos os objetos neles cabem em 50 MB, portanto, manter tudo na memória seria bom. No entanto, eu quero que ele seja executado no navegador e 50 MB é mais do que desejo transferir pela rede, por isso estou mantendo todos na memória do servidor e carregando apenas partes do mundo no cliente. Os blocos do meu mapa têm 1 byte por bloco, 2048x2048 blocos (4 MB). Os objetos (árvores, cadeiras, orcs etc.) são codificados em JSON para simplificar. No cliente, apenas carrego as áreas do mapa (incluindo seus objetos) que estão próximas ao player.
A quantidade de carga depende pelo menos de quão grande é o mapa, se os dados puderem caber razoavelmente na memória, não haverá realmente motivo para se preocupar com o carregamento progressivo.
A coisa mais notável que o XML faz é ocupar muito espaço extra de armazenamento / memória / espaço de rede / tráfego. Se você acha que usar XML é divertido, faça isso apenas para quantidades relativamente pequenas de dados.
Ao projetar um formato de dados, você deve ter em mente como deseja editar esses dados. Você pode usar um editor de texto simples para gravar seus dados como um arquivo de texto simples, esses arquivos diretamente ou convertê-los em um formato binário para economizar espaço. Você pode usar um editor de imagens para aumentar seus níveis como bitmaps. Novamente, convém converter para um arquivo menor.
Ou você pode criar seu próprio editor; nesse caso, há poucas razões para não usar um formato binário compacto.
fonte
Não há uma resposta para essas perguntas. Tudo isso é inerentemente com você.
Você pode salvar os mapas da maneira que quiser e exibi-los / renderizá-los a qualquer momento.
fonte