Avatar do usuário
jonnyall
Membro
Membro
Autor
Mensagens: 46
Registrado em: Ter Abr 04, 2017 1:31 am
Karma: 72

Calculoes RPGísticos  Tópico resolvido

Qua Out 10, 2018 1:09 pm

Olá pessoal! Eu estou desenvolvendo um jogo RPG (não de turn) e estou com dificuldade na parte de cálculos, por não estar desenvolvendo no RPG maker, o qual já vem muitas dessas contas prontas parar vc.

A situação é a seguinte:

todo objeto "vivo" tem alguns status(posso atualizar isso de acordo com oq aprender aqui)


STR = //"Algum numero";
VAR = //"Algum numero";
DEF = //"Algum numero";
LCK = //"Algum numero";



STR é responsavel pelo dano base do personagem.
VAR é responsavel por quanto o dano vai variar antes de ser reduzido pela DEF.
DEF é responsavel por diminuir o ataque recebido
LCK até o momento, só é responsavel pelo danos criticos.

Vou representar como other aquele q está atacando.

dano = other.STR*(quantas vezes mais forte);

//O quanto o dano base irar variar.
dano = dano + dano*random_range(-other.VAR/100,other.VAR/100);

//Reduzindo o dano.
dano = (dano*dano)/(dano +DEF)

//Verificar se o dano será[hlc][/hlc] critico.
critical = scr_probability((other.LCK/(LCK +other.LCK)*100) //scr q eu mesmo implementei, ele retorna true se deu dentro de certa porcentagem.

if critical
   dano *= 2;

//Tirando HP
HP -= dano;



Eu realmente pesquiso sobre o assunto, mas a único calculo que eu encontrei foi esse da Defesa, os outros eu mesmo implementei(var, critico)

Agora trago-lhes o problema, no meu jogo, existiram itens que tem certa chance de serem dropados e há tb ataques que tem uma chance de aplicar algum debuf.

Como faço para aumentar a chance de um item ser dropado apartis da minha LCK ? (neste contexto lCK não é uma porcentagem e sim um valor numérico)

Agora segunda situação, temos três fatores determinantes para o debuf acontecer: LCK de quem foi atacado (aumenta a chance do debuf NÃO acontecer), LCK de quem está atacando (aumenta a chance do debuf acontecer) e a propria chance do debuf por si só.

Alguém pode me dar uma ideia, como montar essa formula ou algum site/blog do qual falem disso ?
Obrigado pela ajuda
Editado pela última vez por jonnyall em Qui Out 11, 2018 9:22 pm, em um total de 1 vez.
AS: Jonnyall

Imagem

Tags:
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 158
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 321

Re: Calculoes RPGísticos

Qua Out 10, 2018 2:06 pm

Creio que você quer converter a Luck em porcentagem sem precisar de fato fazer isso em seus números.

Neste caso basta criar uma variável chamada maxLuck = 100 (ou 255)
E depois antes de fazer seus cálculos converter a Luck do usuário em uma porcentagem com base no maxLuck.
Que seria var luckAtual = (Luck / maxLuck);
Ele iria retornar um valor entre 0 e 1, se você quiser ver mais claramente a porcentagem bastaria multiplicar o produto por 100.

Em relação ao debuf tu pode subtrair uma Luck pela outra antes de fazer a conversão para porcentagem ou fazer as duas conversões e então subtrair, posteriormente você soma este valor (se você estiver dando a chance do debuf em porcentagem) à chance do debuf, assim se o cara que vai sofrer o debuf tiver mais sorte que o que está castando o valor vai ficar negativo (digamos -.1) e ao somar à chance do debuf (digamos .5) as chances do debuf pegar serão 40% (.4).
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
jonnyall
Membro
Membro
Autor
Mensagens: 46
Registrado em: Ter Abr 04, 2017 1:31 am
Karma: 72

Re: Calculoes RPGísticos

Qui Out 11, 2018 9:34 pm

Opa obrigado pela ajuda... mas cara não quero converter a luck pra porcentagem não, pelo menos no caso do debuf.
Eu vi de um outro jogo (robei kkkk), Castlevania Circle of Mooon, o item tem sua chance de dropar (RATE) e vc tem seu atributos lCK.
A conta é a seguinte.


Probability = Rate + (Rate * (LCK - 100) / 200);


Neste caso, vc só aumenta as chances se sua lCK for maior 100, se for igual a sorte será igual a rate.

Baseado no que vc falou e nessa conta que eu peguei, agr pro caso do debuf(suponha q a chance do debuf seja a variável DEBUporb)
A conta seria essa.

chance = DEBUporb +DEBUporb*((other.LCK -LCK) / other.LCK);


Bom ... não sei se é o melhor código ou conta, mas não queria limitar a LCK, quero q a sorte sempre seja algo referencial.
AS: Jonnyall

Imagem
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 158
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 321

Re: Calculoes RPGísticos

Qui Out 11, 2018 10:17 pm

Eu não sei se entendi o que você quer, porque naquela fórmula (a divisão seria pelo valor máximo possível da Luck) a Luck de ambos sempre vai ser relevante no debuf.

Como você está definindo a chance de debuf? Em valores reais mesmo, acho que o maior problema aqui é que você está usando maçãs como base e eu estou usando laranjas.
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx
 
Avatar do usuário
jonnyall
Membro
Membro
Autor
Mensagens: 46
Registrado em: Ter Abr 04, 2017 1:31 am
Karma: 72

Re: Calculoes RPGísticos

Sex Out 12, 2018 6:26 pm

Hah desculpa. acho que não fui claro mesmo, a chance do defu é sim uma porcentagem, assim como a chance de drop de item tb.
Porque não quero um LCK maxima? pq é o mesmo que vc limitar a força de atack ou defeça. quando eu digo que quero que as sortes sejam referenciais, quero dizer, que sempre vai ser uma comparação (vc só é sortudo quando encontra alguém menos sortudo do que vc) de quem tem mais e quem tem menos lCK (menos no caso dos item)

Por exemplo:
A chance de ser critico. sempre retornara valores de 0 a 1;
other.LCK/(LCK +other.LCK);

se sorte do inimigo for maior retornará valores 0.5 entre e 1;
se não, retornar valores 0.5 entre e 0;
se forem iguais, irá retornar 0.5;

note tb, que quanto mais próximos os valores mas perto de 50% do critico acontecer, quanto mais distante, dependendo de quem tem mais sorte, mais fácil ou difícil e dar um critico.

Agr explicando as chances do debuf...

chance = DEBUporb +DEBUporb*((other.LCK -LCK) / other.LCK);

DEBUporb sempre será um valor de 0 a 1, oq estou fazendo é sempre aumentado a chance do debuf caso minha lck seja menor do q o inimigo, caso seja igual o dividendo será igual a zero, então a chance do debuf acontecer vai ser igual DEBUprob, se minha lCK for maior, eu irei diminuir a chances do de acontecer graças a essa parte da conta "(other.LCK -LCK)". E a divisão pelo other.LCK é para montar uma franção e mustiplica pela chances unicamentes do debuf e dpois somar (dependendo de quem for maior). Usei oq vc falou nessa parte de diferença.

E os drop do item, e só perceber q se luck for igual a 100 a chance de eu dropar sera igual a chance do item, logo eu preciso ter una lck maior do q 100 para aumentar minhas chances de drop, fora isso, só estou diminuindo a as chances.

gostei da comparação de laranja e mançãs .... não sei se vc me entendeu oq eu quis explicar, mas sinta-se livre pra me mandar um pm, obrigado pela sua atenção, vc é uma pessoa muito legal, sempre o vejo tirar duvidas, susseco brow !!! :D
AS: Jonnyall

Imagem
 
Avatar do usuário
None
Colaborador
Colaborador
Mensagens: 158
Registrado em: Sáb Abr 14, 2018 8:11 pm
Karma: 321

Re: Calculoes RPGísticos

Qui Out 18, 2018 12:18 am

Eu fiquei perdido, na minha cabeça não há motivo para não limitar valores em um jogo.

Se você conseguir fazer funciona como você quer depois posta aqui como tu fez :D
Cachorro-quente!!!

Como criar um jogo de RPG Japonês no estilo Final Fantasy https://goo.gl/efr6fx

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante