O dano por arranhões é uma mecânica de jogo em que qualquer ataque bem-sucedido sempre causa uma quantidade mínima de dano. Isso é frequentemente usado em sistemas de combate subtrativos, onde a defesa é subtraída diretamente do dano causado por um atacante. Portanto, o alvo sempre sofrerá um dano mínimo.
A desvantagem de tal sistema, pelo menos para mim, é que é um hack. É preciso uma fórmula simples como Damage = Attack - Defense
e transforma-lo em um (ligeiramente) mais complexa: Damage = max(Attack - Defense, 1)
.
Eu também sinto que isso diminui a habilidade de um jogador em desenvolver seu personagem / etc. Não importa quantos bônus de defesa recebam, cada ataque causará um pequeno dano. Então, por que sua defesa é tão alta, se não significa nada?
Além disso, isso agora incentiva o uso de números maiores de Hp e danos, para que os danos causados por arranhões sejam realmente desprezíveis. Afinal, se o dano mínimo for 1 e você tiver apenas 10 Hp, ainda será 10% da sua saúde. Mesmo com 20 cv, são 5%. E prefiro evitar usar números maiores assim, a menos que seja absolutamente necessário.
No entanto, há uma vantagem muito importante dos danos causados por riscos: resolve o problema do impasse.
O impasse acontece quando nenhum dos lados é capaz de causar dano ao outro. Se você investir todos os seus recursos em defesa e poucos em ataque, seu personagem poderá não sofrer dano, mas também não conseguirão lidar muito. Assim, você pode encontrar um encontro em que nenhum dos lados será capaz de causar dano, portanto a batalha continua para sempre. Isso é especialmente se você não tem mecânicas aleatórias, como hits críticos (que eu também odeio).
Pelo menos com danos causados por arranhões, alguém acabará vencendo. Pode ser apenas aquele com o maior número de Hp ou mais alto de ataques, mas a batalha terminará.
Então, eu gosto de ter um sistema de combate onde sempre haverá um resultado. Mas não gosto de sofrer arranhões. Quais são minhas alternativas?
Alternativas que não envolvem rolar números aleatórios; Eu quero que o combate seja 100% determinístico. Se a mesma batalha for travada, o mesmo resultado exato deve acontecer.
Se você quiser detalhes específicos sobre o jogo, pense em termos de combate por turnos, onde a batalha pode ser automatizada (você projeta suas forças e as lança contra outras).
fonte
Respostas:
Você pode implementar um sistema de fadiga / resistência. À medida que mais e mais ataques são feitos, o jogador fica cada vez mais cansado, o que significa que eles são incapazes de manter uma defesa tão boa (esse braço do escudo começa a se sentir muito pesado depois de balançar a espada 50 vezes) à medida que a fadiga aumenta, a defesa cai. Isso significa que um jogador que desenvolveu um bom personagem não sofrerá dano em encontros rápidos, mas um combate prolongado resultará em dano crescente, impedindo um impasse.
fonte
Parece uma pergunta muito aberta. Soluções (que ainda não foram mencionadas) para evitar conflitos:
fonte
Como variante, você pode adicionar o acúmulo de feridas. Certamente, um machado de cobre gigante não penetrará em armaduras pesadas de aço, mas causará alguns danos bruscos e poderá até quebrar ossos. O mesmo vale para balas e coletes.
Toda vez que um personagem é atingido, converta parte do dano penetrante e cortante em dano contundente, que se acumula. Após certo limiar (que depende da resistência, por exemplo), o dano acumulado irá interferir nas habilidades de combate do personagem. Algumas opções aqui:
A armadura pode ser menos eficiente ao receber ataques nas mesmas partes do corpo.
Feridas significativas: dano periódico, fraqueza devido à dor.
Feridas graves: perda de consciência a curto prazo (tornando o personagem muito vulnerável).
Ferimentos extremos: perda permanente de estatísticas (se o personagem conseguir sobreviver).
Related: Mecânica de danos em Dwarf Fortress
fonte
Implemente diferentes tipos de danos, com armaduras que apenas protegem contra alguns tipos de danos. Por exemplo, dano cinético, ácido, dano por fogo, etc. Nenhuma armadura deve proteger contra cada tipo de dano.
Os usuários podem colocar suas armaduras em camadas para proteger contra todos os tipos de danos, mas não podem proteger contra todos os tipos de danos ao mesmo tempo. Isso também implementa alguma estratégia nas batalhas, onde os jogadores precisam mudar os tipos de dano para passar pelas várias camadas de armadura.
fonte
Você não pode ter um status de defesa e apenas dar a inimigos maiores um maior hp. Eu sei que você deseja evitar números gigantescos, mas se você quer um jogo determinístico por turnos, em que os ataques não se baseiam diretamente na entrada dos jogadores (não há chance de erro humano atrapalhar o ataque), o status da defesa parece um pouco inútil também.
Se você está preocupado com o aspecto da apresentação, pode dividir a HP em Corações ou em pips de saúde EG 100 hp = 1 coração. Os corações começam a ficar pretos quando um personagem perde HP e depois desaparece completamente. Dessa forma, é mais fácil para o jogador entender do que 129301239103123hp, mas você não precisa se preocupar em equilibrar alguma equação mágica.
Se você está preocupado com o realismo, sempre pode ser animado para parecer que o alvo do ataque bloqueia com sucesso ou é apenas levemente arranhado até o golpe fatal.
fonte
Adicione um mecânico de desgaste para defesa. Faça todos os ataques reduzirem ligeiramente a defesa do alvo.
Eventualmente, mesmo um ataque fraco desgastará a defesa do alvo o suficiente para causar dano real.
fonte
Se você está bem em sair do mundo dos números inteiros e quer apimentar o sistema de subtração, pode usar o algoritmo de redução de danos do Warlords Battlecry III:
Esta é a função que se comporta muito semelhante ao pseudocódigo acima:
Quando o RD é menor que o ataque (dano recebido), ele se comporta como o ataque - k * DR, onde k é 0,693 (
ln(2)
para ser exato). Quando o DR estiver próximo ou maior, o dano recebido será reduzido pela metadeDR/attack
. Por exemplo, para DR = 30 e ataque = 10, o dano seria 1,25 (ataque pela metade 3 vezes).Pode parecer mais complicado e difícil para o ser humano avaliar, mas é livre de hackers e as alterações nos dois parâmetros são relevantes. Se o atacante ganhar poder de ataque bônus ou o defensor ganhar ou perder DR por pequenas quantidades, o dano resultante será alterado.
fonte
Use carros alegóricos.
Mesmo se você apresentar HP inteiro ao player, use float para hp e float para danos.
Estou usando classes de armaduras fracionárias agora, onde armaduras de 1,0 é invencível e armaduras de 0,0 significa "leva dano total". O dano é reduzido como:
Essa fórmula tem o efeito de permitir "dano duplo" ao definir armadura para -1.
Também classifiquei os danos em categorias, consulte os tipos de dano concussivo / explosivo de Starcraft ou o sistema de tipo de dano de Eve, por exemplo.
Então agora, um pouco de imp coçando a sua armadura de classe .99 acabará por bater em você até a morte, mas os ataques parecerão não causar dano ao jogador (ele permanecerá a 1 hp, passando de 1,15 hp para 1,1499 hp). próximo ataque ..)
fonte
Um gráfico de habilidades pode colocar algumas habilidades causadoras de dano como pré-requisitos para habilidades defensivas de nível superior, a fim de reduzir a capacidade de um jogador de fazer construções altamente assimétricas.
Acertos críticos podem causar algum dano, desde que a defesa não seja absurdamente alta. Se você os tornar periódicos e não aleatórios, ainda terá um combate determinístico.
Após um número de acertos com falha, você pode reduzir automaticamente a velocidade de ataque em favor de maior chance de acerto e dano. Seu personagem de raspadinha super-rápido estava fazendo dez ataques por segundo; agora, após quinze ataques sem causar dano, ele recebe três ataques por segundo a + 50% de acerto e + 200% de dano. Isso é semelhante a ocorrências críticas, mas é mais rápido para esse tipo de situação.
Você poderia usar a redução de dano percentual da armadura, mas para torná-lo mais interessante do que outra maneira de aumentar o seu HP máximo, você pode fazer com que a porcentagem de redução seja maior para ataques mais fracos. Por exemplo, redução de 90% para 1-20hp de dano, 60% para 20-30 e 30% para todo o resto.
Finalmente, não se preocupe com grandes números. Eles oferecem um grau de controle muito mais refinado do que os pequenos. Ter um personagem de nível 1 começando com 100 pontos de vida significa que você pode ter algo que os mata em sete hits, mas não em cinco. Isso significa que você pode ter danos causados por veneno e outros danos ao longo do tempo que não são escandalosamente devastadores (assim como alguns que são, se você quiser). Se você não gosta de exibir números grandes, encontre uma maneira de não exibi-los.
fonte
Você diz que quer que sempre haja uma resolução, mas isso tem que ser uma vitória?
Considere a abordagem usada pelo Dominions - no turn 50, o atacante automaticamente rouba. No turn 75, o defensor automaticamente rouba. (Uma rota não funciona automaticamente - algumas unidades são imunes ao roteamento e, mesmo que uma unidade imóvel faça o roteamento, ela não pode realmente sair.) No turn 100, tudo o que resta é eliminado.
Embora eu discorde da maneira exata como ela funciona (há situações em que simplesmente leva muito tempo para matar o outro lado), a idéia básica permanece válida.
O que eu sugeriria:
Veja alguma medida do poder de cada lado. (Os pontos de vida são um ponto de partida óbvio, mas tenha cuidado, a Dominions tem um problema a esse respeito, onde a "perda" de pontos de vida que não é significativa está sendo contada - mudança de forma, convocação, etc., resultando no encaminhamento de exércitos devido a baixas quando eles não nem faça nada.) Acompanhe o valor mínimo atingido e observe quantas voltas foram desde que um novo mínimo foi definido. Se demorar muito sem que seja definido um novo mínimo, você tem algum tipo de impasse e o atacante deve recuar.
fonte
Uma alternativa que ainda não vi é que, como o valor da sua armadura torna o ataque negativo, você pode adicionar um pouco de RNG para um verdadeiro bloco:
Quanto maior o déficit de dano após a armadura ser levada em conta, mais ataques o personagem pode bloquear antes de sofrer outro ataque de arranhão.
Isso fornece uma pequena escala extra para estatísticas defensivas, sem torná-las invulneráveis, além de permitir que ataques passem por esse mecânico de blocos, caso você queira, e naturalmente evitará impasses.
As lutas podem levar muito tempo se você tiver estatísticas acumuladas em sua defesa por ofensas, mas chegarão lá no final.
fonte
Muitos jogos de luta em 3D evitam danos causados por arranhões. Exemplos são Tekken e Soul Calibur 2. Eles evitam isso dificultando a defesa perfeita. Alguns ataques são simplesmente muito rápidos para reagir. Eu acho que é uma solução muito boa.
fonte
Eu acho que reduzir a eficácia da Defesa não é uma boa opção. Desautorizar um jogador leva a uma má experiência de jogo. Por que não fazer o contrário?
Por que não ligar o ataque com o passar do tempo. Isso aumenta os danos causados por arranhões com o tempo, reduzindo o incentivo ao bloqueio. No meio da tarde do jogo, um personagem pode matar outro enquanto chora enquanto ele está defendendo.
Alguns rpgs pnp implementam um "mecanismo de tensão". Cada tensão de volta aumenta em um. Todos os testes têm o modificador adicionado do valor da tensão, empurrando a batalha para o fim.
Outra idéia, vinda dos jogos de luta, é um ataque que passa pela defesa. Não sei se o seu jogo é baseado em turnos ou em tempo real, mas esse ataque também pode abrir o oponente para um combo ou desativá-lo temporariamente.
Acredito que o truque não é defender a defesa. Faça outras opções tão boas quanto a defesa ou reduza os tempos em que a defesa é uma boa opção.
fonte