Como preparar um jogo para localização?

48

Muitos projetos não pensam em localização até o jogo terminar. Em seguida, a localização é feita como um hack e é óbvio que foi adicionada posteriormente. Algumas áreas específicas de preocupação:

  • Sequências de texto (obviamente)
  • Clipes de áudio como músicas e / ou narrativas
  • Texto renderizado em texturas (por exemplo, uma etiqueta em uma caixa)
  • Texto renderizado em quadros em filmes pré-renderizados
  • Fontes / conjuntos de caracteres para diferentes idiomas
  • Etc.

Quais são algumas boas maneiras de se preparar para esses desafios nos estágios iniciais de desenvolvimento, para que você possa facilitar as coisas sem incorrer em muito custo antecipadamente?

kevin42
fonte
8
Ultimamente, tenho jogado Dawn of Discovery - Venice, localizado em inglês do alemão. É cerca de 99% correto. . . e, de vez em quando, um dos personagens fala inexplicavelmente em alemão por uma linha, ou um dos relatórios de status do prédio tem trincas ou (de vez em quando) sou informado de que posso comprar um Item de Depuração na loja local. Qualquer que seja o método que você use, verifique se é fácil detectar linhas não traduzidas - se você precisar lê-las visualmente ou jogar o jogo e esperar que elas apareçam, você está fazendo errado.
ZorbaTHut
@ZorbaTHut O item de depuração é uma maneira de relatar erros de tradução ou os desenvolvedores do DoD usaram um DLC para corrigir falhas de localização?
precisa
Criar uma linguagem falsa que seus programadores possam ler e escrever pode ser benéfico. O Google tem uma linguagem "hacker" e o Facebook tem Pirate. É divertido para os desenvolvedores e é algo que eles podem testar sozinhos sem aprender um novo idioma.
26413 John McDonald
Para adicionar as respostas acima, sugiro que você faça uma rodada de pseudo-localização (essencialmente o nome formal e o processo do ponto "Torne o texto localizado em falta óbvio" na resposta superior). Você poderá eliminar possíveis problemas de implementação antes mesmo da tradução começar.
Anthony

Respostas:

49

Não sou especialista, mas aqui estão algumas coisas básicas:

Certifique-se de que suas seqüências de caracteres possam lidar com mais do que apenas ASCII

Você precisará de alguns caracteres especiais que não se encaixem no ASCII e sua classe de cordas não deve vomitá-los. UTF-8 é uma codificação comum porque é eficiente em termos de espaço. Faça o que fizer, teste cedo e resolva os problemas.

É realmente uma boa idéia usar uma classe de cordas real e não apenas em char *todos os lugares, ou você estará em um mundo de dor.

Não esqueça suas fontes. Verifique se todas as fontes que você está usando possuem os caracteres necessários.

Puxe suas cordas para fora do código

Este é o mais importante. Verifique se todas as seqüências de texto estão armazenadas fora do código em algum arquivo de dados que você pode trocar. A instalação de um pipeline para isso pode ser uma tarefa árdua, mas você economizará muito tempo depois. Você precisará de uma API simples para que, sempre que precisar de uma string no código, seja tão simples quanto:

String text = Locale::getString("some unique identifier");

Não concatene ou construa seqüências de caracteres no código

É importante não fazer suposições sobre como um pedaço de texto é construído com palavras menores. Mesmo algo tão inócuo quanto:

String currency = Locale::getCurrencyString() + money.toString();
// creates $123

é um problema porque outros idiomas podem colocar a marca da moeda após o número. Em vez disso, use cadeias de formato localizadas como:

String format = Locale::get("currency format"); // returns "${0}" in English
String currency = String::Format(format, money.toString());

Dessa forma, os localizadores podem reorganizar as palavras na string de formato.

Minimize a quantidade de texto que aparece na arte, especialmente nos vídeos

Bifurcar bens artísticos é uma tarefa árdua. Você provavelmente precisará fazer isso pelo menos um pouco para alguns elementos da interface do usuário, mas é um aborrecimento. Forçar FMV é uma dor enorme, porque agora você precisa renderizar e armazenar cópias duplicadas do seu FMV.

Teste minuciosamente em diferentes idiomas

Na maioria das bases de código, é fácil dizer printf("Hi there");ou loadTexture("someTexture");esquecer demais que elas precisam passar pela sua API de localização. Alguém esquecerá e você terminará com algo correto no seu idioma principal, mas errado nos outros. A única maneira de descobrir isso é fazer com que seus testadores testem em idiomas não primários.

Tornar óbvio o texto localizado ausente

Você normalmente traduz seu texto no final do ciclo; portanto, na maior parte do tempo, não haverá dados para alguns idiomas. Tudo bem, pois permite iterar em seu conteúdo sem precisar retranslatar constantemente. A desvantagem é que isso significa que é fácil você perder coisas e esquecer de traduzir algumas coisas.

Uma coisa barata que você pode fazer é fazer com que o texto ausente apareça muito obviamente como "!!! TRADUÇÃO NECESSÁRIA PARA ID #blah blah !!!" no jogo quando está faltando.

Crie sua interface do usuário com base no idioma do pior caso

Idiomas diferentes tendem a ter palavras mais longas ou mais curtas. Uma interface do usuário com uma aparência bonita em inglês pode ter texto que ultrapassa seus limites, é recortado ou quebra incorretamente em um idioma mais longo. Você precisará fazer alterações na interface do usuário para acomodar o idioma do pior caso (ou forçar a interface do usuário, mas provavelmente não é isso que você deseja fazer).

Irritantemente, o inglês geralmente é o idioma mais curto do que os normalmente localizados, então seus designers provavelmente estão projetando inadvertidamente para o melhor caso. Faça com que eles usem texto extra longo para seus espaços reservados quando projetarem. Suponha que qualquer parte do texto possa ser cerca de 30% mais longa do que em inglês. O Google Tradutor pode ser bom para obter um texto aproximado para o espaço reservado.

Tempo de orçamento para tradução

A tradução de texto geralmente acontece tarde quando a equipe está cansada e realmente não se importa. No entanto, você receberá muitos erros quando isso acontecer. As palavras ultrapassam os limites, os tradutores cometem erros etc. Para piorar a situação, o tempo de resposta para a iteração do texto pode ser longo se você precisar enviar texto para as pessoas no exterior e aguardar as alterações. Aloque tempo para este trabalho.

maravilhoso
fonte
4
Ah, cordas concatenadas. Que dor na bunda. Funciona muito bem no idioma nativo para criar variedade de maneira rápida e fácil. Mas então você entra em um idioma com uma gramática diferente e é um fracasso completo. Todos os outros pontos também são bons. 'Configurações' em alemão era 'Einstellungen', que consome bastante espaço na tela quando você precisar.
Casey Wagner
13

Além de outras sugestões, uma coisa que fiz no passado que ajuda muito a encontrar texto traduzido que vaza dos componentes da interface do usuário é ter um modo de idioma especial para o seu jogo que, ao exibir qualquer string, analisa todos os idiomas e escolhe a versão mais longa dessa sequência. Dessa forma, depois de ajustar todas as seqüências de caracteres nesse modo, você saberá que corrigiu todos os sangramentos de texto em todos os idiomas.

James Sutherland
fonte
9

Localizar um jogo corretamente é muito difícil .

Você pode navegar na Internet, ler postagens de blog ou respostas do StackOverflow; você pode aprender as estruturas tradicionais da i18n, como gettext ; leia as páginas da Wikipedia sobre localização internacional e localização de jogos ; consulte o excelente guia de idiomas da Microsoft - mas localizar jogos é realmente mais difícil do que isso. De fato, com jogos é provavelmente mais difícil do que com qualquer outro aplicativo ou interface da web. Isso porque os jogos são muito mais dinâmicos, mais vibrantes, mais vivos (bem, pelo menos bons jogos são).

Mais precisamente, provavelmente será necessário executar as seguintes etapas:

Estabeleça os limites.

Você deseja tomar uma decisão muito importante para quais idiomas deseja oferecer suporte desde o início. Quanto maior a sua escolha, mais suposições sobre como um idioma pode se comportar serão quebradas. Freqüentemente, essas suposições estão tão profundamente impressas em nossos cérebros, que nem podemos imaginar que elas possam estar incorretas sem que alguém as indique. O que nos leva ao próximo ponto:

Encontre os especialistas para cada idioma que você deseja oferecer suporte.

Especialista significa alguém que possui habilidade analítica e conhecimento suficientes do idioma, que seria capaz de apontar quais suposições são feitas por um falante de inglês que não são válidas em seu próprio idioma. Então, você precisará criar uma estratégia para contornar essas suposições.

Como exemplo: nas línguas ocidentais, justificamos o texto em um parágrafo inserindo espaço extra entre as palavras. Na língua árabe do texto é justificado através da inserção de caracteres kashida dentro das palavras. Pode ser assim .

Outro exemplo: em russo, existem 2 formas plurais para a maioria das palavras. Assim, por exemplo, você traduziria "1 moeda" / "3 moedas" / "5 moedas" como "1 moeda", "3 moedas", mas "5 moedas". O procedimento real para decidir a forma plural correta se parece com isso:

function LocalRU::GetPlural(n, form0, form1, form2) {
    return (n%10) == 0 || (n%100) >= 5 && (n%100) <= 20? form0 : 
           (n%10) == 1? form1 : 
           (n%10) <= 4? form2 : form0;
}

Crie um módulo de tradução com reconhecimento de contexto.

Você provavelmente sabe que a tradução sempre depende do contexto. E você sabe que o contexto dentro de um jogo muda o tempo todo. O que acontece se colocarmos essas duas declarações juntas? Em geral, suas traduções devem ser tão dinâmicas quanto seu jogo.

Por exemplo, uma frase simples "eu concordo" se traduz em russo como um dos "Я согласен" / "Я согласна" / "Я согласно", dependendo do sexo do interlocutor (homem / mulher / transgênero | queer | interrogatório). Se esta for uma das suas linhas de diálogo, o módulo de idioma terá que escolher uma das traduções possíveis em tempo de execução, dependendo do sexo do seu personagem (supondo que você ofereça essa opção aos seus jogadores).

A mesma frase, quando traduzida para o japonês, terá novamente traduções diferentes, dependendo do nível de formalidade do relacionamento entre o interlocutor e o ouvinte. Assim, se você introduzir em seu jogo a ideia de reputação, amizade ou nível variável de superioridade (digamos, seu personagem pode evoluir de Novato para Geral), será necessário levar isso em consideração ao formar a tradução. (Na verdade, isso não é específico do japonês. Mesmo em inglês, no exército, você nunca diz "Senhor, sim, senhor!" Para alguém abaixo de você no ranking.)

Tenha uma maneira de pular para o contexto.

Seus tradutores devem ter a capacidade de ver o contexto em que uma determinada frase aparece. Às vezes o contexto é óbvio, às vezes você precisa ver / ouvir / experimentar você mesmo para traduzir algo corretamente.

Mesmo frases simples como "Este livro é azul". não pode ser traduzido sem ambiguidade sem que eu olhe para o livro e veja que tom particular de azul é.

Evite jogos de palavras, trocadilhos e outros elementos específicos do idioma.

Ou talvez não evite, mas pelo menos tenha uma estratégia em mente para o que fazer quando o jogo de palavras não puder ser traduzido. Porque provavelmente não vai.

No mínimo, você não deve criar nenhuma missão / quebra-cabeça / objeto de jogo que dependa de certas palavras com duplo significado ou semelhantes a outras palavras. Porque uma vez traduzido, você quebrará seu próprio jogo. (Por exemplo, em um jogo antigo Fallout2, a principal missão era encontrar o objeto chamado GECK; também havia vários monstros "Gecko" (lagartos mutantes) ao redor do jogo; naturalmente eles criavam várias referências e missões em torno dessa semelhança de nomes, que fez boas traduções extremamente difíceis).

Anime-se!

Localizar um jogo é difícil. Mas é difícil para todos. Se você fizer um esforço e fazê-lo corretamente, isso não passará despercebido pelos críticos do jogo em seu país de destino. Um jogo com boa tradução se destacará e obterá lucros maiores. Afinal, o texto é tão importante para criar atmosfera no jogo quanto os gráficos (é por isso que os RPGs antigos baseados em texto eram tão imersivos).

Paxá
fonte
Uma alternativa para "evitar o jogo de palavras" é incluir um escritor criativo em uma equipe de tradução de idiomas e permitir que eles modifiquem os significados literais. O FFXIV faz isso extraordinariamente bem em sua versão em inglês, como um bom exemplo.
Patrick Hughes
3

Wil Shipley tem de longe o melhor guia de localização que eu já li. Infelizmente, é específico do iPhone, mas ainda é possível obter informações geralmente úteis. Além disso, ele aborda a localização de ativos e a interface do usuário - dois dos maiores desafios na localização de jogos que posso imaginar.

Dave O.
fonte
1

Sempre, sempre trate o idioma de origem como um idioma localizado.

Portanto, se o seu idioma de origem for EN, mantenha todos os recursos e seqüências de caracteres EN em uma pasta EN separada e puxe a partir daí.

Puxe recursos EN através do pipeline de localização pretendido.

Ao fazer isso de uma maneira simples, você poderá capturar talvez 80% dos problemas de localização e ser configurado para um processo de localização muito mais fácil.

Eu localizei muitos jogos e sempre lidero com essa pepita.

user79563
fonte
1

Vejo algumas ótimas dicas aqui!

Tentarei fazer uma lista dos erros mais comuns que podem variar desde dificultar sua localização até arruinar completamente seu jogo:

  • Pensando em localização como o último passo do desenvolvimento de jogos
  • Não isolando suas seqüências de texto do código-fonte
  • Concatenação / quebras de linha no meio de uma frase.
  • Supondo que horários, datas e unidades não precisem de localização
  • Não fornecer material de referência suficiente para os tradutores / Não responder às perguntas deles
  • Supondo que todo o texto do seu jogo esteja em ASCII
  • Tendo texto em imagens
  • Tendo caixas de texto / interface do usuário rígidas
  • Supondo que todos os idiomas tenham o mesmo tamanho que o inglês
  • Usando o Google Translate / tradução automática
  • Ignorando fatores culturais
  • Não alocando orçamento suficiente para localização

A localização deve ser integrada ao desenvolvimento o mais cedo possível e você deve sempre ter isso em mente ao criar um jogo.

Com o planejamento certo e uma cuidadosa pesquisa de mercado, você economizará muitos problemas e despesas mais adiante.

Por acaso, sou o fundador de uma empresa de localização de jogos e abordamos a preparação de um jogo para localização há alguns meses em nosso blog.

Aqui está o infográfico que resume essa postagem: https://magic.piktochart.com/output/18317297-9-steps-to-cheaper-game-development-with-localization

O link para a postagem completa que cobre essas dicas com mais detalhes está na parte inferior.

Damien Yoccoz
fonte