[PS1] Legend of Legaia

Iniciado por Rafael Quinalha, Agosto 08, 2026, 17:17:37 PM

tópico anterior - próximo tópico

0 Membros e 1 Visitante estão vendo este tópico.

gledson999

Citação de: Rafael Quinalha online Agosto 12, 2026, 22:01:52 PM
Citação de: gledson999 online Agosto 12, 2026, 18:12:06 PMAh, entendi! E sim, exatamente, o gdkchan é BR e ele é o principal cérebro por trás dessa ferramenta que é fazer a engenharia reversa dos scripts afim de remover essa limitação dos textos devido as funções dos Opcodes, controles, labels, e foi justamente isso na qual o projeto ainda ficou parado, aos poucos a ferramenta vai ficando funcional, mas boa sorte ai no seu projeto.

Quanto ao app que você está usando, eu dei uma olhada por acima aqui (na verdade a IA olhou e recriou com umas firulas a mais), e a versão que tem no github mostra tudo bagunçado a parte dos scripts, não mostra os textos sem compressão, nem textos comprimidos que não são dos scripts, então acredito que essa sua versão mostrada aqui já tenha resolvido isso. Pelo que a IA falou, ela também não recalcula corretamente os ponteiros.
Porque você não usa a IA para te ajudar nesse processo de ajuste no seu app?


 
 
É que essa versão pública do github é a versão inicial na qual ela apenas descomprime os textos comprimidos e permite editar, porém deverá ter os mesmos tamanhos e larguras dos textos, a que temos em privado é a versão WIP, ou seja é a versão que está em andamento na qual ela recria todos os arquivos idênticos ao original e sem limites de tamanhos nos textos ajustando ponteiros e scripts, porém não são todos os scripts que estão funcionais ainda, já a questão dos textos que não são comprimidos são partes da biblioteca do executável como textos UI dos menus, configurações, etc que passarão a serem totalmente editáveis pois no processo será completamente lido como código C descompilado que será implementado em breve.

FR Oliveira

Boa tarde tudo bem

Nossa que maravilha nem sabia, acabei de ver no canal do André, meus parabéns esse jogo merece.

 :cuteeyes:

André Tavares

#17
Citação de: Rafael Quinalha online Agosto 08, 2026, 17:17:37 PMPara o pessoal que já manja bastante de tradução com IA, preciso que umas dicas:
Atualmente implementei um fluxo no editor que usa IA para traduzir, tem um glossário para obedecer e algumas regras.
Estou com dois modelos locais para isso usando o Ollama (Aya Expanse 8B e Translategemma 12B) e coloquei opção de temperatura para eles (entre 0.0 a 1.00)
Eu seleciono os blocos ou arquivos inteiros e ambos traduzem, mas o resultado eu não gostei muito, fica genérico demais, para tradução de NPCs com diálogos irrelevantes, até passa, mas para textos da história eu não gostei. Meu intuito é ir traduzindo e revisando ao mesmo tempo, ganhar um pouco de tempo, mas manter a qualidade, porém, não consigo ver um fluxo melhor que esse, mas de repente, vocês possam me indicar algo melhor.
Os pontos que eu queria saber de vocês é:
Errei nos modelos?
No fluxo?
Nas regras das IA?


Passei pelo mesmo problema traduzindo The Legend of Dragoon e o "genérico
demais" tem uma causa bem específica: o modelo não sabe quem está falando.
Você deu a ele um glossário e regras, que dizem o que não fazer, mas nada que
diga como aquele personagem fala. Sem isso, toda linha sai na mesma voz, que é
a voz média da internet em português. Para NPC de loja isso passa. Para a história,
não passa, e você percebeu certo.

O que mudou o jogo para mim foi parar de escrever instrução de estilo e começar
a medir o que já estava traduzido.

Extraia a voz do que você já tem

Você provavelmente já tem umas centenas ou milhares de linhas traduzidas e
revisadas à mão. Isso não é só trabalho pronto, é um corpus. Alinhe original e
tradução linha a linha, separe por personagem e conte.

No meu caso deu isto:

                falas   palavras/fala   "!!"   "..."
Dart              834        7,0          45     170
Albert            204       13,2           5      62
Rose              235        9,3           1      85
Meru              177        8,8          61      36

A Rose tem um ponto de exclamação em 235 falas. A Meru tem 61 em 177. O
Albert escreve o dobro do tamanho do Dart. Isso não é impressão, é o que está
no arquivo, e cada número desses vira uma linha do prompt daquele personagem.

Depois eu comparei o vocabulário de cada um com o do jogo inteiro por
log-likelihood, para achar o que só ele diz. Saiu coisa que eu jamais teria
escrito de cabeça: caraca, se liga e manjo aparecem duas, duas e uma vez
no corpus inteiro, todas na boca da Meru. E ela chama o rei de Beto, três
vezes, apelido que não existe em nenhuma outra fala.

Minidicionário por personagem, não lista de adjetivos

A parte que mais rendeu foi cruzar as duas pontas alinhadas e ver como cada um
verte a mesma expressão inglesa:

thank you    Albert  agradeço        Shena   obrigada
sorry        Rose    Perdão          Shena   desculpe
wait         Lavitz  Espere          Dart    Espera
something    Rose    algo            Haschel alguma coisa
a little     Shena   um pouquinho    Lavitz  um pouco

Mesma palavra, escolhas diferentes conforme quem fala. Isso vai para o prompt
como tabela, com a contagem ao lado (4/6, 19/26), e é infinitamente mais
útil que "fale de forma formal". "Formal" cada modelo interpreta de um jeito;
thank you → agradeço, 3/5 não tem margem.

Para um personagem meu que fala português quebrado, o dicionário virou tabela
de padrão sintático com exemplo ao lado: Me wait here vira Eu, aqui espero.
Sem o exemplo, vira regra abstrata e o modelo inventa a própria quebra.

Dois níveis: geral e personagem

Tenho um arquivo _geral.txt que entra em toda chamada, com registro,
tratamento, pontuação e limite de caixa, e um arquivo por personagem que entra
só nas falas dele. No prompt, o geral vem primeiro e o do personagem vem por
último
, com uma frase explícita dizendo que em caso de conflito o do
personagem vence. Modelo que lê duas instruções segue a mais próxima, e a Meru
contradizer o registro da casa é o objetivo, não um conflito a resolver.

Só fiz isso para os dez personagens principais. O resto recebe só o geral, e tudo
bem: é exatamente onde você mesmo disse que "até passa".

A armadilha que me custou mais tempo

O prompt ensina pelo exemplo, não pela regra. Levei duas semanas para
entender isso e me pegou duas vezes:

Primeira: eu mandava as linhas já traduzidas como memória de tradução, com os
códigos de controle do jogo crus dentro ([C27]Dart, [C08]...). Depois de
ler algumas dezenas desses exemplos, o modelo concluiu que tradução naquele
jogo se escreve assim e passou a inventar códigos que ninguém pediu. A
validação descartava a resposta e eu culpava o modelo.

Segunda, mais constrangedora: escrevi todos os arquivos de voz em ASCII, sem
acento, por hábito de terminal. O modelo recebia 700 palavras de instrução em
português desacentuado antes de traduzir, e devolvia tradução sem acento. Não
havia regra nenhuma mandando tirar acento; ele só imitou o que estava vendo.

Se as suas saídas estão saindo genéricas, vale olhar o prompt inteiro com essa
lente: tudo que está lá dentro é exemplo de como escrever, inclusive o que
você achava que era só instrução.

Tire do modelo o que ele não precisa decidir

Isso melhorou a qualidade mais do que qualquer ajuste de temperatura.

Quebra de linha o meu programa faz sozinho, porque só ele sabe que a caixa tem
36 caracteres. Tag de abertura de janela e nome do falante saem do texto antes
de enviar e voltam intactos depois. Resultado: 94% das janelas chegam ao
modelo como frase limpa
, sem um código sequer para ele carregar. Antes eram
3%. Cada coisa que você tira do prato dele é uma coisa a menos para dar errado,
e o modelo gasta a atenção toda no que importa, que é a frase.

Vale a pena separar também o glossário obrigatório da memória de tradução, e
dizer no prompt que são coisas diferentes. Termo do glossário é decisão
tomada
, com uma frase explícita de "use exatamente isso, não melhore". Linha
parecida traduzida antes é precedente, útil como referência e errado tratar
como lei. Se os dois chegam na mesma lista, o modelo trata tudo com o mesmo
peso.

Sobre temperatura e sobre modelo local

Temperatura baixa não deixa a tradução menos genérica, deixa mais previsível,
inclusive mais previsivelmente genérica. Genérico é falta de informação no
prompt, não excesso de aleatoriedade. Eu deixaria baixo (0.2 a 0.3) e resolveria
o resto no prompt.

Sobre 8B e 12B locais: podem começar a apresentar limitações quando você exige
simultaneamente tradução, glossário, regras, contexto e um perfil de voz complexo.
Não é questão de idioma, é de seguir várias instruções ao mesmo tempo sem largar
 nenhuma. Se você não puder usar API, vale ao menos comparar lado a lado numa
amostra de 20 linhas de história com um modelo grande, só para saber quanto do
problema é prompt e quanto é modelo. Sem essa medida, dá para passar meses
ajustando prompt para compensar limitação de modelo, ou o contrário.

Sobre traduzir arquivo inteiro

Aqui eu discordo do seu fluxo atual, e é a mudança que eu faria primeiro.

Traduzir em lote e revisar depois é bom para NPC e ruim para história,
justamente porque a revisão de história é reescrita, não correção. Eu deixaria
o lote para o texto irrelevante e faria a história janela a janela, com a
sugestão nascendo como pendente, nunca como traduzida. A sugestão é ponto
de partida, e a diferença prática é que uma linha pendente você lê de verdade;
uma linha já marcada como pronta você aceita no piloto automático.

Uma coisa que ajuda muito nisso: um painel ao lado mostrando a captura da cena
daquela janela. Quem está falando, se é loja ou cutscene, se aquele it é uma
pessoa ou uma espada. Sem contexto visual, você está revisando às cegas, e aí
tanto faz quem traduziu primeiro.

Ponha validação automática no caminho

Fecho com o que me poupou mais retrabalho. Toda sugestão passa por checagem
antes de virar texto: código de controle que sumiu descarta a resposta, código
que o modelo inventou é apagado e a frase aproveitada, caractere que a fonte do
jogo não desenha é trocado, linha acima do limite é apontada, termo do
glossário que divergiu vira aviso.

Esse último achou 60 janelas com termo fora do combinado no meu CD2, incluindo
um nome que virou Fúria Rainha num lugar e Fúria-Rainha em outro. Ninguém
acha isso lendo janela por janela; só aparece jogando o disco inteiro, seis
meses depois.

Desculpe o texto longo, mas quis colocar tudo o que passei e aprendi na marra durante a
minha tradução. Espero que esses pontos ajudem de alguma forma no seu projeto!

Rafael Quinalha

Eu tive que mudar alguns processos na tradução, eu achei que tivesse com o jogo e arquivos totalmente mapeados, mas para minha surpresa, apareceram alguns problemas.
Então o que eu fiz:
Agora ao invés de traduzir tudo e ver no que dá, eu jogo, traduzo, jogo traduzido (revisão in-game) e se estiver ok, passo para o próximo. Assim, se houver algum problema, já corrijo na hora para não ter surpresas.
Vai demorar um pouco mais? Sim, mas no final será até mais rápido do que passar para o pessoal testar e fazer a revisão, com certeza eles iriam encontrar muitos bugs e travamentos.

Citação de: FR Oliveira online Agosto 20, 2026, 14:09:51 PMBoa tarde tudo bem

Nossa que maravilha nem sabia, acabei de ver no canal do André, meus parabéns esse jogo merece.

 :cuteeyes:
Você nem sabia? Que absurdo.  :bomba:

Brincadeiras a parte, aguarde que essa tradução não vai demorar muito.

Citação de: André Tavares online Agosto 21, 2026, 01:04:07 AMPassei pelo mesmo problema traduzindo The Legend of Dragoon e o "genérico
demais" tem uma causa bem específica: o modelo não sabe quem está falando.
..........

Desculpe o texto longo, mas quis colocar tudo o que passei e aprendi na marra durante a
minha tradução. Espero que esses pontos ajudem de alguma forma no seu projeto!

Valeu pela ajuda André, eu realmente não queria mexer profundamente no fluxo que criei. Antes de alterar, tentei ao máximo otimizar o processo.
Tive progressos muitos bons, simplesmente trocando os modelos que eu usava.
Após uma pesquisa mais aprofundada, descobri um modelo local de tradução que mudou bastante o meu fluxo, ele é o Tower 9B, ele foi treinado para obedecer regras, como glossários e etc sem causar muitos problemas, os outros modelos que eu usava, eram teimosos e não gostavam muito de obedecer regras (ele foram treinados assim) já o treinamento do tower veio exatamente para resolver esse problema.
Quanto ao uso de APIs, realmente mudaria o cenário usando modelos muito melhores, mas não estou afim de gastar com IA para traduzir, pois não vou ganhar 1 real com isso, se eu fosse um grupo que monetizasse com isso, eu até investiria, mas não é o meu caso.
Projeto Atual:
[PSX] Legend of Legaia
Projetos Concluídos:
[PSX] Brave Fencer Musashi
[PC] Final Fantasy Tactics – The Ivalice Chronicles
[PSX] Parasite Eve
[PSX] Fear Effect 1, Fear Effect 2
[PS2] Xenosaga, Xenosaga 2
[PSP] Final Fantasy Tactics