Estou fazendo um RPG de cima para baixo para iPhone. Estou usando tilemaps (CCTMXTileMap) e o mecanismo cocos2d-iphone.
Eu criei uma classe que pode lidar com o carregamento de mapas e NPCs na tela, uma classe que lida com entrada e uma classe que deve exibir diálogo. A classe de diálogo pega uma única string ou uma matriz e a exibe na tela dentro de uma caixa de diálogo elegante, ocultando os controles até o usuário tocar na tela, quando passa para a próxima mensagem ou se é a última / única mensagem, oculta a caixa de diálogo.
Meus NPCs estão atualmente armazenados no Core Data. Suas seqüências precisarão ser atualizadas com base no progresso da missão. Além disso, existem outros bits de caixa de diálogo, como letreiros e outras mensagens.
Então, onde coloco o conteúdo textual do meu jogo? Não acho que o Core Data seja o lugar certo, por três razões:
Se minhas strings forem armazenadas no Core Data, provavelmente terei mais dificuldade em traduzi-las.
Se minhas strings estiverem no Core Data, isso só me deixa com strings para NPCs (que seriam anexados aos NPCs no Core Data). Onde isso deixa todo o resto?
Se eu deixar minhas strings no Core Data, é um pouco pesado nas operações de carregamento, não?
Dadas todas essas informações básicas, onde coloco minhas cordas e o diálogo no meu jogo?
tl; dr
Qual é uma maneira eficiente de armazenar seqüências de caracteres para um jogo iOS, para que elas possam ser acessadas, traduzidas e referenciadas facilmente em várias partes do jogo?
Respostas:
A menos que você tenha alguns requisitos específicos de portabilidade, formatação ou velocidade, os recursos de sequência padrão da Apple devem estar bem.
fonte
NSLocalizedString
funciona muito bem. A menos que você queira armazenar árvores de diálogo inteiras, talvez seja necessário um formato que suporte esse tipo de estrutura.string #8
, oustrings(8)
, ou[strings objectAtIndex:8];
?Eu criaria um arquivo ou arquivos externos para todas as strings. carregue-o uma vez quando o programa iniciar em algum objeto global. em tempo de execução, todo objeto que precisa exibir uma sequência precisa solicitar a esse objeto global a sequência correta. você pode usar chaves para cada string ou uma matriz. se você não gostar da ideia de objeto global, poderá carregar todas as cadeias sempre que precisar diretamente do arquivo, mas isso pode causar um baixo fps ao carregar diálogos. Usando essa abordagem, você pode alterar facilmente o idioma quando quiser, basta começar a ler de um arquivo diferente.
fonte