quinta-feira, 27 de março de 2008

Empacotando seus jogos

XNA_pack_utility

Um recurso interessante do XNA Game Studio é a ferramenta XNA Game Studio Package Utility (xnapack.exe), que já é instalada junto com o XNA GS. Como o próprio nome já diz, ela serve para empacotar nossos projetos e, assim, podemos distribuir nossos jogos sem medo de revelar nosso código-fonte.

Uma vez eu fui enviar um joguinho meu a um amigo. Ele tinha o XNA GS, mas não enviei os "content" do meu jogo. Não vi problema nenhum, uma vez que estava enviando para ele o executável do jogo. Ele retornou dizendo que não estava conseguindo executá-lo, que aparecia uma mensagem de erro. Foi pura inexperiência minha (nossa).

Com esta ferramenta, posso enviar para ele o executável junto com os "content" (sons, texturas, etc.), e tudo isto sem ele ver o código. Não que eu queira isso sempre, mas as vezes isso é necessário. Caso queira enviar tudo, incluindo o código-fonte, basta compactar a pasta do projeto e enviar.

A ferramenta pode ser acessada de dentro do Visual Studio ou via linha de comando.

Dentro do ambiente de desenvolvimento do VS, quando seu projeto estiver aberto, clique no menu Build e depois clique em Package [nome_do_projeto] as XNA Creators Club Game.

Na janela de output, aparece o status do empacotamento. Quando terminar o processo, o arquivo .ccgame estará dentro da pasta diretório_do_projeto\bin\x86.

Para desempacotar, basta clicar 2x no arquivo .ccgame e a XNA Game Studio Package Utility será chamada e fará todo o processo.

Para empacotar via linha de comando, vá no menu Iniciar, procure por Microsoft XNA Game Studio 2.0, clique em Tools, e finalmente em XNA Game Studio Command Prompt. Use o comando cd para ir até o diretório do projeto que você quer empacotar.

Para empacotar, a sintaxe é a seguinte:

> xnapack executável platforma [opções]

sendo o parâmetro "executável" o arquivo executável do seu jogo, sendo "plataforma" a plataforma que você quer pro seu jogo (Windows ou XBox360?) e "[opções]" são os parâmetros que setam algumas propriedades. Temos 4:

/nologo – nenhum logo ou mensagem de "copyright" é empacotada.

/output:arquivo – diz o caminho e o nome do arquivo de saída. Por padrão, o jogo é criado na mesma pasta que o executável está. (A forma contraída deste parâmetro é: /o: )

/quiet – retira todas as mensagens que não são mensagens de erro.

/thumbnail:arquivo – caminho para um "thumbnail" opicional. (A forma contraída é: /th: ) Para o Windows, este "thumbnail" aparece na janela de decompactação. Para o Xbox 360, o "thumbnail" também aparece na tela "My Games", localizada na lista Games Library.

Agora, pra descomplicar, vai um exemplo para empacotar um jogo para Windows chamado Shooter, sem mensagem de "copyright" ou logo:

> xnapack Shooter.exe Windows /nologo

O resultado será um arquivo .ccgame criado na mesma pasta que o executável do jogo.

Para desempacotar via linha de comando, abra o mesmo prompt, use o cd para ir até o diretório do projeto e digite o seguinte:

> xnapack unpack pacote [opções]

sendo "pacote" o arquivo .ccgame previamente criado. As opções podem ser:

/console:nome – Se for para descompactar um jogo para Xbox360, este parâmetro serve para identificar o console. Se nenhum for especificado aqui, o XBox padrão é usado. (Forma contraída: /c: )

/nologo – mesma coisa que no empacotamento.

/quiet – mesma coisa que no empacotamento.

/run – executa o jogo quando o mesmo estiver instalado. Só vale para o XBox360.

/showui – mostra um UI (user interface) para confirmação e cópia dos arquivos.

 

Claro que há outras formas de usar esta ferramenta, mas essas duas são as principais. Podemos, então, compartilhar nossos jogos (os arquivos .ccgame literalmente) com nossos amigos (que precisam ter o XNA GS). Eles estarão aptos a jogá-lo, mas não a modificá-lo.

Só uma observação: o Package Utility suporta apenas os projetos de jogos. Ele não suporta projetos de bibliotecas para jogos.

Aliás, duas: cuidado ao descompactar. Se o diretório destino da descompactação já existir, o XNA Game Studio Package Utility vai deletar a essa pasta e tudo que tiver dentro dela! Isso vale tanto para projetos para Windows quanto para XBox360.

Valeu!

Nenhum comentário: