Compactação de dados salvos no jogo

9

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.

Marco Giancotti
fonte
11
Que linguagem você está usando?
Richard Marskell - Drackir

Respostas:

8

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.

Raphael R.
fonte
1

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).

George Duckett
fonte