¿Cuál es una alternativa al daño por arañazos para resolver el bloqueo muerto de combate?

37

El daño por rasguño es una mecánica de juego por la cual cualquier ataque exitoso siempre causa una cantidad mínima de daño. Esto se usa a menudo en sistemas de combate sustractivo, donde la defensa se resta directamente del daño hecho por un atacante. Por lo tanto, el objetivo siempre recibirá un daño mínimo.

La desventaja de tal sistema, al menos para mí, es que es un truco. Se necesita una fórmula sencilla como Damage = Attack - Defensey lo convierte en un uno (ligeramente) más complejo: Damage = max(Attack - Defense, 1).

También siento que resta valor a la habilidad de un jugador para desarrollar su personaje, etc. No importa cuántas bonificaciones de defensa obtengan, cada ataque causará un pequeño daño. Entonces, ¿por qué poner tu defensa tan alta, si no significa nada?

Además, esto ahora alienta el uso de números más grandes para Hp y daños, por lo que el daño por arañazo es realmente insignificante. Después de todo, si el daño mínimo es 1, y solo tienes 10 Hp, eso sigue siendo el 10% de tu salud. Incluso con 20 Hp, eso es 5%. Y preferiría evitar usar números más grandes como ese a menos que sea absolutamente necesario.

Sin embargo, hay una ventaja muy importante del daño por arañazos: resuelve el problema de punto muerto.

El punto muerto ocurre cuando ninguno de los lados puede dañar al otro. Si inviertes todos tus recursos en defensa y unos pocos en ataque, es posible que tu personaje no reciba daño, pero tampoco podrán hacer mucho daño . Por lo tanto, podrías encontrar un encuentro en el que ninguna de las partes podrá infligir daño, por lo que la batalla continúa para siempre. Esto es especialmente si no tienes mecánicas aleatorias como golpes críticos (que también odio).

Al menos con daños por arañazos, alguien finalmente ganará. Puede que solo sea el que tenga más HP o el mayor número de ataques, pero la batalla terminará.

Así que me gusta tener un sistema de combate donde siempre habrá un resultado. Pero no me gusta tener daños por arañazos. ¿Cuales son mis alternativas?

Alternativas que no implican rodar números aleatorios; Quiero que el combate sea 100% determinista. Si se libra la misma batalla, debe ocurrir exactamente el mismo resultado.

Si quieres detalles sobre la jugabilidad, piensa en términos de combate por turnos, donde la batalla se puede automatizar (diseñas tus fuerzas y luego las enfrentas con otras).

Nicol Bolas
fuente
8
¿Podrías hacer un sistema de armadura deteriorado (por encuentro) para resolver el problema de punto muerto?
Tetrad
1
Te sugiero que eches
Exilyth
3
Posición del Defensor del Diablo: en lugar de obligar a los jugadores a jugar de forma segura, ¿por qué no dejarlos decidir si quieren usar construcciones estúpidas que pueden llegar a un punto muerto?
Patrick Hughes
3
@PatrickHughes: Porque creo que es un mal diseño del juego permitir que el jugador se ponga en una mala posición sin una advertencia adecuada. E incluso con advertencia, deben ser capaces de salir una vez que vean que está sucediendo. Si sus elecciones de diseño de personajes no pueden ser retiradas, entonces deben saber por adelantado que no se están arruinando permanentemente al tomar decisiones que parecían una buena idea en ese momento.
Nicol Bolas
1
La combinación de rpg-design-patterns.speedykitty.com/doku.php/… con rpg-design-patterns.speedykitty.com/doku.php/pattern:hit_points y la falta de aleatorización conducen al problema descrito en la pregunta. El problema podría solucionarse utilizando rpg-design-patterns.speedykitty.com/doku.php/… o un rpg-design-patterns.speedykitty.com/doku.php/… .
Exilyth

Respuestas:

41

Podría implementar un sistema de fatiga / resistencia. A medida que se realizan más y más ataques, el jugador se fatiga cada vez más, lo que significa que no puede mantener una defensa tan buena (ese brazo protector de repente comienza a sentirse realmente pesado después de balancear la espada 50 veces) a medida que aumenta la fatiga, la defensa cae. Esto significa que un jugador que ha desarrollado un buen personaje no sufrirá daños en encuentros rápidos, pero un combate prolongado dará como resultado un aumento del daño que evitará un punto muerto.

Sutty1000
fuente
21

Esta parece una pregunta muy abierta. Soluciones (que ya no se mencionan) para evitar puntos muertos:

  • Permitir puntos muertos como un resultado final viable. Esta es la solución menos esperada o típica. En un juego de estrategia en tiempo real, por ejemplo, esto podría ser un alto el fuego incómodo o un conflicto tenso pero discreto en un equilibrio violento.
  • Una limitación de tiempo con lazos permitidos
  • Una limitación de tiempo en la que gana el primer golpe / puntaje / punto después del límite (muerte súbita / tiempo extra)
  • Peligros aleatorios en el sistema (a la bombs en Super Smash Bros ). Esto cambia el enfoque de la situación de ofensa a defensa.
  • Cualquier factor externo para desequilibrar el sistema (por ejemplo, un tercer agente con alto daño y baja armadura, un acuerdo de ambos lados para "duelo" sin toda esa armadura)
  • Defensa como% reducido (probablemente la solución más simple, siempre y cuando la defensa esté limitada)
  • Habilidades o tácticas que alteran la dinámica del juego (opciones que no resultan en daño, como una habilidad de Capa / Invisibilidad)
  • Medios de hacer mucho más daño (golpes críticos clásicos, bonificaciones de sigilo, bonificaciones de altura, bonificaciones de terreno, una habilidad que convierte porciones de tierra al azar en lava)
  • Medios de dañar o bajar la armadura, o causar un daño directamente dirigido a los personajes de alta defensa (habilidad que invierte la armadura en el cálculo, por lo que los agentes con menor defensa reciben menos daño)
  • Artículos o habilidades de uso limitado (p. Ej. Bombas, habilidades poderosas pero drenantes). Solo es útil si hay objetivos a largo plazo más allá del punto muerto con el que equilibrar el uso limitado
  • Terminar el combate artificialmente (opción clásica "Huir")
Attackfarm
fuente
7

Como variante, puede agregar acumulación de heridas. Seguramente, el hacha gigante de cobre no penetrará una armadura de acero pesada, pero hará un daño contundente e incluso puede romper huesos. Lo mismo es cierto para balas y chalecos.

Cada vez que se golpea a un personaje, convierte parte del daño punzante y cortante en daño contundente, que se acumula. Después de cierto umbral (que depende de la resistencia, por ejemplo), el daño acumulado interferirá con las habilidades de combate del personaje. Algunas opciones aquí:

  • La armadura podría ser menos eficiente al recibir golpes en las mismas partes del cuerpo.

  • Heridas significativas: daño periódico, debilidad debido al dolor.

  • Heridas graves: pérdida de conciencia a corto plazo (lo que hace que el personaje sea muy vulnerable).

  • Heridas extremas: pérdida permanente de estadísticas (si el personaje logra sobrevivir).

Relacionado: Mecánica de daños en Fortaleza Enana

Sombras en la lluvia
fuente
2
Iba a sugerirle a cada arma un daño contundente que la armadura no pueda bloquear. Las espadas y las dagas tendrían una pequeña capacidad de golpe, pero las hachas y las mazas serían muy efectivas.
jmegaffin 05 de
5

Implemente diferentes tipos de daños, con armaduras que solo protegen contra algunos tipos de daños. Por ejemplo, daño cinético, daño por ácido, daño por fuego, etc. Ninguna armadura debe proteger contra cada tipo de daño.

Los usuarios pueden colocar sus armaduras en capas para protegerse contra todos los tipos de daños, pero no pueden proteger contra todos los tipos de daños al mismo tiempo. Esto implementa también una estrategia en las batallas, donde los jugadores tienen que cambiar los tipos de daño para atravesar las diversas capas de armadura.

MichaelHouse
fuente
4

Simplemente no podrías tener una estadística de defensa y solo darles a los enemigos más grandes HP. Sé que quieres evitar números gigantes, pero si quieres un juego determinista basado en turnos donde los ataques no se basen en la entrada de los jugadores directamente (no hay posibilidad de que un error humano arruine el ataque) la estadística de defensa parece un poco inútil también.

Si le preocupa el aspecto de la presentación, puede dividir HP en Hearts o Health pips EG 100 hp = 1 heart. Los corazones comienzan a ponerse negros cuando un personaje pierde HP, luego desaparecen por completo. De esa forma, es más fácil de entender para el jugador que 129301239103123hp, pero no tiene que preocuparse por equilibrar alguna ecuación mágica.

Si le preocupa el realismo, siempre puede animarlo para que parezca que el objetivo del ataque bloquea con éxito o solo se rasca ligeramente hasta el golpe mortal.

Lewis Wakeford
fuente
1
" si quieres un juego determinista basado en turnos donde los ataques no se basan en la entrada de los jugadores directamente [...] la estadística de defensa también parece un poco inútil " . La defensa no se basa en el concepto de "posibilidad de- pierda". Es más como la reducción de daños en D&D, no THAC0 (o como lo llamen en estos días). Defensa significa que un ataque de 40 daños puede reducirse a 10 daños si tienes 30 de defensa. No veo cómo eso puede ser "inútil."
Nicol Bolas
1
Sé que las matemáticas son un poco diferentes, pero en realidad no hay una gran diferencia en términos de juego entre solo darle a un personaje una cantidad proporcional de salud y que el daño se reduzca en cierta cantidad. No si siempre debe haber alguna forma de infligir daño a un objetivo. EDITAR: Eso supone que no hay ataques especiales que ignoren la defensa u otros modificadores de juego.
Lewis Wakeford
Tener una estadística de defensa sustractiva te da algo más que solo HP (además de todas las cosas que excepto, como ataques especiales o modificadores). Crea una estratificación entre los usuarios de daño a lo largo del tiempo y los usuarios de alto daño. Un personaje que ataca varias veces pero con un daño menor se encontrará con un personaje de alta defensa, mientras que un personaje más lento y de mayor daño hará más daño con el tiempo. Los simples puntos de vida no crearán esta estratificación.
Nicol Bolas
4

Agregue una mecánica de desgaste para la defensa. Hacer que cada ataque reduzca ligeramente la defensa del objetivo.

Finalmente, incluso un ataque débil desgastará la defensa de los objetivos lo suficiente como para infligir daño real.

Philipp
fuente
3

Si estás de acuerdo en salir del mundo de los enteros y estás dispuesto a darle vida al sistema de sustracción, puedes usar el algoritmo de reducción de daños de Warlords Battlecry III:

damage = attack

while DR > 0:
    usedDR = DR
    if DR > damage
        usedDR = damage
    damage = damage - usedDR * 0.5
    DR = (DR - usedDR) / 2

HP = HP - damage

Esta es la función que se comporta de manera muy similar al pseudocódigo anterior:

damage(attack, DR) = attack * 2 ^ -(DR/attack)

Cuando DR es más pequeño que el ataque (daño entrante), se comporta como un ataque: k * DR donde k es 0.693 ( ln(2)para ser exactos). Cuando DR está cerca o es más grande, el daño entrante que el daño se reduce a la mitad DR/attack. Por ejemplo, para DR = 30 y ataque = 10, el daño sería 1.25 (ataque reducido a la mitad 3 veces).

Puede parecer más complicado y más difícil de evaluar para los humanos, pero está libre de ataques y los cambios en ambos parámetros son relevantes. Si el atacante gana poder de ataque adicional o el defensor gana o pierde DR incluso en pequeñas cantidades, el daño resultante cambiará.

Emperador Orionii
fuente
1

Usa flotadores.

Incluso si presenta HP entero al jugador, use float para hp y float para daño.

Ahora estoy usando clases de armadura fraccionaria, donde la armadura de 1.0 es invencible y la armadura de 0.0 significa "recibe daño completo". El daño se reduce como:

float hpReduction = hp - dmg*(1.f - armor) ;

Esta fórmula tiene el efecto de permitir "doble daño" al establecer la armadura en -1.

También he clasificado el daño en categorías, vea los tipos de daño conmoción / explosivo de Starcraft, o el sistema de tipo de daño de Eve para un ejemplo.

Así que ahora, un pequeño diablillo rascando tu armadura de clase .99 eventualmente te matará a Cherry Tap , pero los ataques parecerán que no hacen daño al jugador (él permanecerá en 1 hp mientras pasa de 1.15 hp a 1.1499 hp el próximo ataque ..)

bobobobo
fuente
0

Un gráfico de habilidades podría poner algunas habilidades de daño como requisitos previos para las habilidades defensivas de nivel superior para reducir la capacidad de un jugador para hacer construcciones altamente asimétricas.

Los golpes críticos pueden recibir algo de daño mientras la defensa no sea absurdamente alta. Si los haces periódicos en lugar de al azar, todavía tienes un combate determinista.

Después de varios golpes fallidos, puede reducir automáticamente la velocidad de ataque en favor de una mayor probabilidad de golpe y daño. Tu personaje scratch superrápido estaba haciendo diez ataques por segundo; ahora, después de quince ataques sin hacer daño, obtiene tres ataques por segundo a + 50% de golpe y + 200% de daño. Esto es similar a los golpes críticos, pero es más rápido para este tipo de situación.

Podrías usar la reducción de daño basada en porcentaje de la armadura, pero para hacerla más interesante que otra forma de mejorar tu HP máximo, podrías hacer que el porcentaje de reducción sea mayor para golpes más débiles. Por ejemplo, 90% de reducción por 1-20 hp de daño, 60% por 20-30 y 30% por todo lo demás.

Finalmente, no te preocupes por los grandes números. Te dan un grado de control mucho más fino que los pequeños. Tener un personaje de nivel 1 comienza con 100 puntos de golpe significa que puedes tener algo que los mata en siete golpes pero no en cinco. Significa que puede tener daños por veneno y otros daños a lo largo del tiempo que no son escandalosamente devastadores (así como algunos que sí lo son, si lo desea). Si no le gusta mostrar números grandes, busque la forma de no mostrarlos.

dhasenan
fuente
0

Dices que quieres que siempre haya una resolución, pero ¿tiene que ser una victoria?

Considere el enfoque utilizado por Dominions : al cumplir 50 años, el atacante se enruta automáticamente. En el turno 75, el defensor derrota automáticamente. (Una ruta no funciona automáticamente; algunas unidades son inmunes a la ruta e incluso si una unidad inmóvil se enruta, en realidad no puede salir). En el turno 100, todo lo que queda se mata.

Si bien no estoy de acuerdo con la forma exacta en que funciona (hay situaciones en las que simplemente lleva demasiado tiempo matar al otro lado), la idea básica sigue siendo válida.

Lo que sugeriría:

Mire alguna medida del poder de cada lado. (Los puntos de golpe son un punto de partida obvio, pero tenga cuidado, Dominions tiene un problema a este respecto en el que se cuenta la "pérdida" de puntos de golpe que no es significativa: cambio de forma, convocatoria, etc., lo que resulta en el enrutamiento de los ejércitos debido a las bajas cuando no ocurrieron ni siquiera tome ninguno). Mantenga un registro del valor mínimo alcanzado y observe cuántos turnos han pasado desde que se estableció un nuevo mínimo. Si pasa demasiado tiempo sin que se establezca un nuevo mínimo, tiene un punto muerto de algún tipo y el atacante debe retirarse.

Loren Pechtel
fuente
0

Una alternativa que aún no he visto es que a medida que el valor de su armadura hace que el ataque sea negativo, podría agregar un poco de RNG para un verdadero bloqueo:

const stratchDamage = 1;
var armour = 10; 
var blockCount = 0;

function registerAttack (incomingAttack)
{
    var incomingDamage = incomingAttack - armour;

    // Nothing unusual, deal damage
    if( incomingDamage > 0 ) 
    {
        dealDamage(incomingDamage);
    } 

    // Armour cancels out attack, deal scratch damage
    else if( incomingDamage == 0 ) 
    {
        dealDamage(scratchDamage);
    }

    // Armour over attack value, check if can block
    else
    {
        var trueBlockChance = armour - incomingDamage;

        // blockCount starts at 0, will always block first attack
        if( trueBlockChance  > blockCount ) 
        {
            // Can technically do nothing, or trigger block animations etc
            block();
            blockCount ++; // Increment block so they can't block forever
        }
        else
        {
            dealDamage(stratchDamage);
            blockCount = 0;
        }
    }
}

Cuanto mayor sea el déficit de daño después de tener en cuenta la armadura, más ataques puede bloquear el personaje antes de sufrir otro ataque de arañazos.

Esto proporciona una pequeña escala adicional para las estadísticas defensivas sin hacerlos invulnerables, también permite que los ataques atraviesen esta mecánica de bloqueo si así lo desea y, naturalmente, evitará puntos muertos.

Las peleas pueden tomar mucho tiempo si has acumulado estadísticas en tu defensa sobre la ofensiva, pero al final llegará allí.

Tom 'Blue' Piddock
fuente
Cita de OP: Quiero que el combate sea 100% determinista. Esto no permite un combate 100% determinista.
Charanor
Entonces el bloqueo también puede basarse en turnos, para cada nivel de trueBlock sobre un ataque, el enemigo debe atacar tantas veces para lograr un daño por arañazo. Se puede aplicar la misma idea.
Tom 'Blue' Piddock
@Charanor: ajustó la respuesta para que sea 100% determinista.
Tom 'Blue' Piddock
-1

Muchos juegos de lucha en 3D evitan daños por arañazos. Algunos ejemplos son Tekken y Soul Calibur 2. Evitan esto al dificultar tener una defensa perfecta. Algunos ataques son simplemente demasiado rápidos para reaccionar. Creo que es una muy buena solución.

Daniel Kaplan
fuente
-1

Creo que reducir la efectividad de Defensa no es una buena opción. Darle poder a un jugador lleva a una mala experiencia de juego. ¿Por qué no dar la vuelta?

¿Por qué no encender el ataque a medida que pasa el tiempo? Esto aumenta el daño por arañazos con el tiempo, lo que reduce el incentivo del bloqueo. En la mitad del juego, un personaje puede matar a otro mientras se lamenta sobre él mientras se defiende.

Algunos pnp rpgs implementan un "mecanismo de tensión". Cada tensión de giro aumenta en uno. Todas las tiradas tienen el modificador agregado del valor de tensión, empujando la batalla hacia un final.

Otra idea, proveniente de los juegos de lucha, es un ataque que pasa por la defensa. No sé si tu juego es por turnos o en tiempo real, pero este ataque también podría abrir al oponente a un combo o desactivarlo o algunas de sus habilidades temporalmente.

Creo que el truco no es quitarle la potencia a la defensa. Haga otras opciones tan buenas como la defensa, o reduzca los tiempos en los que la defensa es una buena opción.

Vasco Correia
fuente