Estive estudando como usar o pipeline de conteúdo XNA adequadamente para um jogo em que estou trabalhando. No entanto, tenho tido dificuldade em entender e não tenho certeza sobre a melhor maneira de proceder.
O exemplo específico é: eu tenho um jogo estilo RPG 2D de baixo para cima. Desejo criar um utilitário (provavelmente Windows Forms) que permita criar e editar mapas facilmente. Cada mapa consiste em 1 ou mais camadas gráficas, cada camada contendo uma grade N x N de blocos. Por sua vez, cada bloco começa como um bitmap.
Dadas as informações acima, vejo algumas maneiras de proceder:
- Armazene as informações do mapa em um arquivo XML compatível com o carregador XML do Content Pipeline. Cada bloco é armazenado como uma referência de sequência ao recurso de textura correspondente. Recursos de textura são adicionados ao projeto do jogo.
- Armazene as informações do mapa em um arquivo XML compatível com o carregador XML do Content Pipeline. Cada bloco é armazenado como o caminho para os arquivos .bmp / .png correspondentes.
Agora, há coisas que eu realmente não gosto nas duas abordagens. O principal problema da abordagem 1 é que a criação do mapa e a criação de ativos de textura .xnb são completamente separadas. O arquivo de mapa .xml é criado pelo utilitário, enquanto o recurso de textura é adicionado ao meu conteúdo no meu jogo. Isso se torna um problema ao tentar garantir que o arquivo de mapa .xml e todos os ativos de textura no projeto permaneçam sincronizados.
A abordagem dois me permitiria manter todo o arquivo de imagem apropriado ao lado dos arquivos de mapa usando o utilitário de mapa. No entanto, parece que eu não deveria ter que fazer algo assim. Além disso, eu precisaria ser mais inteligente sobre o carregamento dos mapas para não carregar rapidamente a mesma imagem do disco para cada bloco.
Portanto, minha pergunta é: se você deseja adicionar um utilitário de geração de conteúdo (como um editor de mapas), qual é a melhor maneira de garantir que o conteúdo personalizado (arquivo de mapa) permaneça sincronizado com os ativos de textura. Além disso, lembre-se de que no meu editor de mapas eu precisaria carregar e exibir os ativos de textura.
Qualquer entrada é muito apreciada.