Uma das coisas bacanas de ser programador e gostar de RPG é poder criar um gerador de personagem aleatório com certa facilidade. Desenvolvi um por aqui para XR-III, que tenho utilizado, mas uma coisa me incomodava um pouco e tem a ver com a definição dos atributos. Vamos falar disso um pouco hoje.
Tá, mas o que pretendo abordar tem a ver com conceito e método, então quem gosta de gerar coisas aleatoriamente com papel, caneta e dado com certeza poderá tirar algum proveito também.
Atributos do XR-III
Um personagem XR-III tem natureza, arquétipo e outras características para se sortear. O foco aqui são os valores numéricos para os 3 atributos: Físico, Mente e Espírito. As regras são:
- Nenhum atributo pode ter valor menor que 1
- Nenhum pode ter valor maior que 5 (personagens iniciais)
- A soma dos 3 atributos tem que dar 7
Algoritmo Caótico
A primeira solução para gerar esses atributos foi a mais óbvia: vou sortear valores entre 1 e 5! Isso pode ser feito computacionalmente de jeito bem fácil. Com dados, a solução que adotei foi: rolo 1d6 e subtraio 1.
Ah, o valor não pode ser 0. Qual a solução para isso? Simples. Basta responder à pergunta: qual o nível de atributo mais comum, a média? Quando cair 0, considere-se que foi o valor mais comum! No nosso caso, 2.
Esse método funciona relativamente bem, mas quebra aquela terceira regrinha. Pode aparecer personagem com 3 ou 4 pontos de atributo e outros com 14 ou 15. É um bom começo, mas precisaria de ajustes para dar certo. Quais ajustes? Vejamos…
Rerrolagens, Ajustes e Descartes
Vejo três soluções para o problema da terceira regra:
- Ajuste: esta solução é prática para aplicarmos mecanicamente, sem computador. A ideia é: veja o quanto ficou diferente e ajuste os valores. Por exemplo: saiu 3, 3 e 4. Isso dá 10, 3 a mais do que devia. Então, podemos baixar os 3 atributos em um para termos 2, 2 e 3. Resolvido. Se a diferença não é um valor múltiplo de 3 (1, 3 e 4, por exemplo), você decide que valores vai mudar.
- Rerrolagem: uma solução mais fácil computacionalmente, mas não tão difícil com papel, caneta e dado. Não deu múltiplo de 7, some os 2 primeiros valores. Se der menos que 6, troque o 3º valor por 1; se der menos, role de novo até sair um valor que somado com os outros 2 dê 7. Agora se os dois primeiros já passaram de 6, então você deve rolar de novo o 2º valor.
- Uma versão alternativa desse método é analisar se a soma foi maior ou menor do que o desejado (7). Se for maior, substitua o maior número que havia sido sorteado por uma nova rolagem. Se for menor, rerrole o menor número.
- O método do descarte não é recomendável com papel e caneta. É o mais fácil e preguiçoso de todos, que pode desperdiçar muito processamento também. É simples: antes de mostrar o resultado, verifique se a soma deu 7, se não deu jogue tudo fora e comece de novo.
Só Dentro do que Falta
Este método achei mais interessante por tender a gerar personagens mais equilibrados. Comecei a usá-lo com um sorteador (que permite definir qualquer intervalo, simulando dados que “não existem”, como um d11) e só depois implementei um algoritmo que faz isso.
Imagine os 3 atributos de 1 a 5 como se fossem 15 quadrados, com linhas separando em blocos de 5. Agora pinte 1 quadradinho de cada bloco, representando que cada atributo já tem valor 1 de partida.
Para sortear o próximo número, você conta os quadradinhos em branco e sorteia só nesse intervalo.
Repete esse procedimento até ter 7 quadradinhos pintados. Pronto, atributos gerados. Confuso? Veja um exemplo prático:
- Começamos com Físico 1, Mente 1, Espírito 1, representados como xoooo xoooo xoooo. O intervalo é de 12 “não-marcados”. Então dá pra rolar 1d12
- Digamos que o resultado foi 1. Atualizamos para xx000 x0000 x0000, ou seja, F 2, M 1, E 1. Agora há só 11 casas livres. Role 1d11. Se estiver usando dados, role 1d12 mesmo e role de novo se cair um 12.
- Agora saiu um 7. A 7ª casinha em branco é a última do segundo bloco. Podemos marcá-la ou qualquer outra do mesmo bloco. Ficaria então assim: xx000 x000x x0000. Como são equivalentes, prefiro marcar a 4ª casinha pra ficar mais organizado. xx000 xx000 x0000, ou seja, F 2, M 2, E 1. E temos agora 10 casas em branco.
- Rolando 1d10 sai um 3. Isso joga novamente no primeiro bloco (seria a última casinha do bloco). Vamos marcar xxx00 xx000 x0000, ou seja, F 3, M 2, E 1. São 9 possibilidades restantes.
- Na última rolagem (1d9), sai um 8, ativando o 3º bloco. Resultado final: xxx00 xx000 xx000, ou seja, F 3, M 2, E 2.
O que gostei deste método é que a cada rolagem a chance dos atributos mais baixos é maior que a dos atributos mais altos. Isso me soa mais realista, já que assim a tendência é que os valores sejam mais medianos e personagens com algum atributo em nível 5 sejam mais raros.
Sorteando por Modelo
Uma outra possibilidade é você fazer uma tabela de sorteio com distribuições pré-definidas, e isso dá pra ser feito para sortear atributos em qualquer sistema de RPG. Em XR-III, a tabela com todas as possibilidades teria 15 valores. Você poderia limitá-los a um dado que você queira. Uma tabela para 6 valores poderia ficar assim:
Rolagem | Físico | Mente | Espírito |
1 | 1 | 1 | 5 |
2 | 4 | 1 | 2 |
3 | 3 | 1 | 3 |
4 | 2 | 1 | 4 |
5 | 2 | 2 | 3 |
6 | 2 | 4 | 1 |
Pois é, foram apenas divagações, mas que talvez alguém mais possa achar interessantes.
— Cárlisson Galdino