Estou escrevendo um jogo que precisa salvar muitos dados detalhados (trajetórias exatas de algumas entidades) em um arquivo externo. Quero economizar espaço em disco e largura de banda compactando-o, mas nunca fiz isso, então não sei se existe uma maneira preferida de fazê-lo.
É claro que a compressão-descompressão não deve afetar muito a velocidade do jogo.
compression
Marco Giancotti
fonte
fonte
Respostas:
A biblioteca zlib possui ligações para a maioria das linguagens de programação e é bastante rápida. No entanto, você deve comparar vários algoritmos de compersão, porque um algoritmo pode obter melhores taxas de compactação no seu tipo de dados do que no caso geral.
fonte
Uma maneira possivelmente extrema de compactar dados é registrar apenas as etapas / entradas usadas para criá-los. Algo parecido com o que o ModNation Racer faz (amaldiçoa esses longos tempos de carregamento à medida que recria a pista). (Google para vídeos do editor de trilhas no ModNation Racer).
ou seja, se eu estivesse armazenando algum terreno, armazenaria todas as manipulações a partir de uma planície plana. ou seja, aplique o pincel em forma de vulcão com esta força, aqui. Aplique a operação de suavização de terreno nesta área, com esta força. Adicione meu objeto predefinido aqui. Usando curvas semelhantes a curvas de bezier com 'quadros-chave' para construir uma trilha / trajetória de vôo / qualquer outra coisa.
Muitos outros jogos fazem esse tipo de coisa não apenas para carregamento de nível, mas também para jogabilidade, tornando o jogo determinístico, enviando apenas entradas de jogadores (acho que o PixelJunk Shooter 2 faz isso).
fonte