Recentemente, criei um clone básico do Space Invaders, em C ++, usando a estrutura Allegro 5. Depois que terminei, percebi que tinha cerca de 10 sprites e 13 MB de DLLs; alguns dos jogadores nem tinham as DLLs mingW, o que tornava o jogo muito confuso.
Como empacotar todos os meus recursos de forma que eu possa adicionar e remover dados facilmente ao meu jogo e reduzir o tamanho do recurso, basicamente colocando-os em um único local? Eu estou usando codeblocks.
zziplib
para armazenar todos os meus recursos habituais em um arquivo zip e carregá-los no meu jogo através de um pipeline de conteúdo personalizado para o mecanismo. O que você está procurando basicamente no começo é uma maneira de carregar arquivos de um arquivo zip na memória para poder usá-los em seu jogo. Em relação às DLLs, é bastante difícil, porque elas geralmente precisam estar no mesmo diretório que o executável ou oWindows
ouSystem32
dir que NÃO é recomendado! Que tal um arquivo SFX para extrairTEMP
e executar a partir daí?Respostas:
Parece que há dois desafios que você enfrenta aqui: distribuição e embalagem de ativos.
Distribuição
Empacote seu aplicativo inteiro em diretórios como achar melhor e, em seguida, coloque o diretório de nível superior em um arquivo .zip. Distribua esse arquivo .zip. Quando seus usuários extraírem o zip, eles terão uma pasta com tudo o que precisam, prontos para executar o jogo.
Como você coloca seus arquivos?
Eu costumo fazer algo assim:
Embalagem de Ativos
Você pode usar algum tipo de biblioteca de compactação (zlib, lzo) para compactar todos os recursos do jogo (o diretório res \ acima) em um único arquivo. Então você precisa usar a mesma biblioteca de compactação para extrair o conteúdo de seus recursos, em tempo real, para carregar seus ativos no jogo.
Então, o que acontece quando você deseja consertar seus ativos? Em seguida, você deve: compilar um arquivo de ativos totalmente novo e distribuí-lo aos seus usuários (para que eles estejam essencialmente baixando novamente o que eles já têm, mais as poucas adições), ou você precisa criar um atualizador (outro programa para manter ) e lide com o fato de que as coisas podem dar errado e seu arquivo de ativos será corrompido ...
Honestamente, não é exatamente trivial fazer isso funcionar e não vejo o resultado da sua situação. Um diretório simples deve ser suficiente para encapsular seus 10 sprites e é muito mais fácil adicionar e corrigir coisas: basta fazer o download para o diretório certo e pronto.
Construindo um instalador
Isso pressupõe que você esteja mirando no Windows ... depois de concluir o procedimento acima, você poderá criar um instalador para o seu jogo. Eu evitaria a todo custo os métodos ClickOnce suportados pelo Visual Studio. É não o seu instalador típico do Windows e vem com seu próprio conjunto de peculiaridades.
Dê uma olhada nesta pergunta do StackOverflow - ela contém um conjunto de links úteis para os pacotes do instalador que você pode usar. Muitas pessoas hoje em dia parecem gostar do WiX . Eu nunca o usei. Além disso, AdvancedInstaller e InnoSetup são escolhas populares.
fonte
Você pode vincular estaticamente algumas das bibliotecas em vez de incluir as DLLs. Se e como é diferente para todas as bibliotecas.
fonte
Você pode usar um software como o Enigma para compactar seus arquivos e salvá-los em um único .dat. Você precisaria alterar a pasta do seu iniciador.
fonte