Qual è un'alternativa al danno da graffio per risolvere il deadlock del combattimento?


37

Il danno da graffio è una meccanica di gioco in base alla quale ogni attacco riuscito infligge sempre una quantità minima di danno. Questo è spesso usato nei sistemi di combattimento sottrattivi, in cui la difesa viene sottratta direttamente dal danno fatto da un attaccante. Pertanto, il bersaglio subirà sempre un danno minimo.

L'aspetto negativo di un tale sistema, almeno per me, è che è un trucco. Ci vuole una formula semplice come Damage = Attack - Defensee lo trasforma in un (leggermente) più complesso: Damage = max(Attack - Defense, 1).

Sento anche che sminuisce l'abilità di un giocatore nello sviluppare il proprio personaggio / ecc. Indipendentemente da quanti bonus di difesa ottengono, ogni attacco infliggerà alcuni piccoli danni. Quindi perché aumentare la tua difesa se non significa nulla?

Inoltre, questo ora incoraggia l'uso di numeri più grandi per Hp e danni, in modo che il danno da graffio sia davvero trascurabile. Dopotutto, se il danno minimo è 1 e hai solo 10 Hp, è ancora il 10% della tua salute. Anche con 20 Hp, questo è il 5%. E preferirei evitare di usare numeri più grandi come quello a meno che non sia assolutamente necessario.

Tuttavia, esiste un aspetto molto importante del danno da graffio: risolve il problema dello stallo.

Il deadlock si verifica quando nessuna delle due parti è in grado di danneggiare l'altra. Se investi tutte le tue risorse in difesa e poche in attacco, il tuo personaggio potrebbe non subire danni, ma neanche loro saranno in grado di infliggere molto. Quindi, potresti imbatterti in un incontro in cui nessuna delle parti sarà in grado di infliggere danni, quindi la battaglia continua per sempre. Questo è specialmente se non hai meccaniche casuali come colpi critici (che odio anche io).

Almeno con danni da graffio, qualcuno alla fine vincerà. Potrebbe essere solo quello con il maggior numero di Hp o il più alto numero di attacchi, ma la battaglia finirà.

Quindi mi piace avere un sistema di combattimento in cui ci sarà sempre un risultato. Ma non mi piace avere danni da graffio. Quali sono le mie alternative?

Alternative che non prevedono il rotolamento di numeri casuali; Voglio che il combattimento sia deterministico al 100%. Se si combatte la stessa battaglia, deve accadere lo stesso esatto risultato.

Se vuoi particolari sul gameplay, pensa in termini di combattimento a turni, in cui la battaglia può essere automatizzata (progetti le tue forze, quindi mettile contro altre).


8
Potresti creare un sistema di armatura in deterioramento (per incontro) per risolvere il problema del deadlock?
Tetrad

1
Ti suggerirei di dare un'occhiata a "Modelli di progettazione di giochi di ruolo di successo": rpg-design-patterns.speedykitty.com/doku.php/start
Exilyth

3
Devil's Advocate position: invece di forzare i giocatori a giocare in modo sicuro, perché non lasciarli decidere se vogliono usare build stupide che possono bloccarsi?
Patrick Hughes,

3
@PatrickHughes: Perché credo che la cattiva progettazione del gioco consenta al giocatore di mettersi in una brutta posizione senza un adeguato preavviso. E anche con preavviso, devono essere in grado di uscirne una volta che vedono che sta accadendo. Se le loro scelte di design del personaggio non possono essere riprese, allora devono sapere in anticipo che non si stanno rovinando definitivamente facendo delle scelte che all'epoca sembravano una buona idea.
Nicol Bolas,

1
La combinazione di rpg-design-patterns.speedykitty.com/doku.php/… con rpg-design-patterns.speedykitty.com/doku.php/pattern:hit_points e una mancanza di randomizzazione porta al problema descritto nella domanda. Il problema potrebbe essere alleviato utilizzando rpg-design-patterns.speedykitty.com/doku.php/… o un rpg-design-patterns.speedykitty.com/doku.php/… .
Exilyth

Risposte:


41

Potresti implementare un sistema di fatica / resistenza. Man mano che si fanno sempre più attacchi, il giocatore diventa sempre più affaticato, il che significa che non sono in grado di mantenere una difesa così buona (quel braccio scudo improvvisamente inizia a sentirsi davvero pesante dopo aver fatto oscillare la spada 50 volte) man mano che la fatica aumenta, la difesa cade. Ciò significa che un giocatore che ha sviluppato un buon personaggio non subirà danni negli scontri rapidi, ma un combattimento più prolungato comporterà un aumento dei danni prevenendo un deadlock.


21

Sembra una domanda molto aperta. Soluzioni (che non sono già state menzionate) per prevenire deadlock:

  • Consentire deadlock come risultato finale praticabile. Questa è la soluzione meno attesa o tipica. In un gioco RTS, ad esempio, potrebbe trattarsi di un disagio irrequieto, o di un conflitto teso ma modesto in un equilibrio violento.
  • Un limite di tempo con legami consentiti
  • Un limite di tempo in cui il primo colpo / punteggio / punto dopo il limite vince (morte improvvisa / straordinari)
  • Pericoli casuali nel sistema (a bombe in Super Smash Bros ). Ciò cambia il focus della situazione dall'offesa alla difesa.
  • Qualsiasi fattore esterno per sbilanciare il sistema (ad esempio un terzo agente con un danno elevato e un'armatura bassa, un accordo da entrambe le parti a "duellare" senza tutta quell'armatura)
  • Difesa in% ridotta (probabilmente la soluzione più semplice, purché la difesa sia limitata)
  • Abilità o tattiche che alterano le dinamiche del gameplay (scelte che non comportano danni, come un'abilità Mantello / Invisibilità)
  • Mezzi per infliggere danni molto maggiori (colpi critici classici, bonus invisibili, bonus altezza, bonus terreno, un'abilità che trasforma porzioni di terreno casuali in lava)
  • Mezzi di danneggiare o abbassare l'armatura o causare un danno indirizzato direttamente ai personaggi ad alta difesa (abilità che inverte l'armatura nel calcolo, quindi gli agenti con difesa inferiore ricevono meno danni)
  • Oggetti o abilità ad uso limitato (ad es. Bombe, abilità potenti ma drenanti). Utile solo se ci sono obiettivi a lungo termine oltre lo stallo con cui bilanciare un uso limitato
  • Termina il combattimento artificialmente (opzione classica "Fuggi")

7

Come variante, è possibile aggiungere l'accumulo di ferita. Sicuramente un'ascia di rame gigante non penetrerà in armature di acciaio pesante, ma causerà alcuni danni contundenti e potrebbe persino spezzare le ossa. Lo stesso vale per proiettili e gilet.

Ogni volta che un personaggio viene colpito, trasforma parte del danno da piercing e da taglio in danno contundente, che si accumula. Dopo una certa soglia (che dipende dalla resistenza, ad esempio), il danno accumulato interferirà con le abilità di combattimento del personaggio. Alcune opzioni qui:

  • L'armatura potrebbe essere meno efficiente quando subisce colpi nelle stesse parti del corpo.

  • Ferite significative: danni periodici, debolezza dovuta al dolore.

  • Ferite gravi: perdita di coscienza a breve termine (che rende il personaggio molto vulnerabile).

  • Ferite estreme: perdita permanente delle statistiche (se il personaggio riesce a sopravvivere).

Correlati: meccanica dei danni nella fortezza nana


2
Stavo per suggerire di infliggere a ogni arma danni da sbaglio che non possono essere bloccati dall'armatura. Spade e pugnali avrebbero una piccola capacità di sbavatura, ma asce e mazze sarebbero molto efficaci.
jmegaffin,

5

Implementa diversi tipi di danno, con armature che proteggono solo contro alcuni tipi di danno. Ad esempio, danni cinetici, danni da acido, danni da fuoco, ecc. Nessuna armatura deve proteggere da ogni tipo di danno.

Gli utenti possono stratificare le proprie armature per proteggersi da tutti i tipi di danno, ma non possono proteggere contemporaneamente da tutti i tipi di danno. Questo implementa anche una strategia nelle battaglie, in cui i giocatori devono cambiare tipo di danno per superare i vari strati di armatura.


4

Si potrebbe semplicemente non avere uno stat difesa e solo dare più grandi nemici più grandi CV. So che vuoi evitare numeri giganteschi, ma se vuoi un gioco a turni deterministico in cui gli attacchi non sono basati sull'input diretto dei giocatori (non c'è possibilità che l'errore umano incasini l'attacco) le statistiche di difesa sembrano un po 'inutili anche.

Se sei preoccupato per l'aspetto della presentazione, puoi suddividere HP in pips Hearts o Health EG 100 cv = 1 cuore. I cuori iniziano a diventare neri quando un personaggio perde HP, poi scompare del tutto. In questo modo è più facile per il giocatore capire che 129301239103123 CV, ma non devi preoccuparti di bilanciare alcune equazioni magiche.

Se sei preoccupato per il realismo, potresti sempre averlo animato per sembrare che il bersaglio dell'attacco si blocchi correttamente o sia solo leggermente graffiato fino al colpo mortale.


1
" se vuoi un gioco a turni deterministico in cui gli attacchi non sono basati sull'input diretto [...] dei giocatori, anche la statistica della difesa sembra un po 'inutile. " La difesa non si basa sul concetto di "possibilità di- Perdere". È più come una riduzione del danno in D&D, non in THAC0 (o come la chiamano in questi giorni). Difesa significa che un attacco di 40 danni può essere ridotto a 10 danni se hai 30 difese. Non vedo come possa mai essere "inutile.
Nicol Bolas

1
So che la matematica è un po 'diversa, ma in realtà non c'è un'enorme differenza in termini di gioco tra il fatto di dare a un personaggio una quantità proporzionata di salute e di avere un danno ridotto di un certo importo. Non se ci deve essere sempre un modo per infliggere danni a un bersaglio. EDIT: Supponendo che non ci siano attacchi speciali che ignorano la difesa o altri modificatori del gameplay.
Lewis Wakeford,

Avere una stat difensiva sottrattiva ti dà qualcosa di più di un semplice Hp (oltre a tutte le cose che escludi, come attacchi speciali o modificatori). Crea una stratificazione tra utenti danneggiati nel tempo e utenti ad alto danno. Un personaggio che attacca più volte ma con un danno inferiore si scontrerà con un personaggio ad alta difesa, mentre un personaggio più lento e con un danno elevato farà più danni nel tempo. Alcuni punti ferita non creeranno questa stratificazione.
Nicol Bolas,

4

Aggiungi un meccanico logoro per la difesa. Rendi ogni attacco leggermente ridotto la difesa del bersaglio.

Alla fine anche un attacco debole consumerà la difesa del bersaglio abbastanza da infliggere il danno effettivo.


3

Se stai bene uscendo dal mondo degli interi e sei pronto a rendere piccante il sistema di sottrazione, puoi usare l'algoritmo di riduzione del danno di 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

Questa è la funzione che si comporta in modo molto simile allo pseudocodice sopra:

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

Quando DR è più piccolo dell'attacco (danno in arrivo), si comporta come un attacco - k * DR dove k è 0,693 ( ln(2)per l'esattezza). Quando DR è vicino o maggiore, il danno in arrivo rispetto al danno viene dimezzato DR/attackvolte. Ad esempio per DR = 30 e attacco = 10, il danno sarebbe 1,25 (attacco dimezzato 3 volte).

Può sembrare più complicato e più difficile da valutare per l'uomo ma è privo di hack e le modifiche in entrambi i parametri sono rilevanti. Se l'attaccante guadagna potere d'attacco bonus o il difensore guadagna o perde DR anche di piccole quantità, il danno risultante cambierà.


1

Usa i galleggianti.

Anche se presenti HP interi al giocatore, usa float per hp e float per danni.

Ora sto usando le classi di armature frazionarie, dove un'armatura di 1.0 è invincibile e un'armatura di 0,0 significa "subisce un danno completo". Il danno è ridotto in quanto:

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

Questa formula ha l'effetto di consentire il "doppio danno" impostando l'armatura su -1.

Ho classificato il danno anche in categorie, vedi i tipi di danno concussivo / esplosivo di Starcraft o il sistema del tipo di danno di Eva per un esempio.

Quindi ora, un piccolo imp che graffi la tua armatura di classe .99 alla fine ti farà battere a morte Cherry , ma gli attacchi sembreranno non danneggiare il giocatore (rimarrà a 1 CV mentre passa da 1,15 CV a 1,1499 CV il prossimo attacco ..)


0

Un grafico delle abilità potrebbe mettere alcune abilità di infliggere danni come prerequisiti per abilità difensive di livello superiore per ridurre la capacità di un giocatore di creare build altamente asimmetriche.

I colpi critici possono subire danni purché la difesa non sia assurdamente alta. Se li rendi periodici piuttosto che casuali, hai ancora combattimenti deterministici.

Dopo un certo numero di colpi falliti, potresti ridurre automaticamente la velocità d'attacco a favore di maggiori probabilità e danni di colpo. Il tuo personaggio scratch superveloce stava facendo dieci attacchi al secondo; ora, dopo quindici attacchi che non fanno danni, subisce tre attacchi al secondo al + 50% per colpire e + 200% al danno. Questo è simile ai colpi critici, ma è più veloce per questo tipo di situazione.

Potresti usare la riduzione del danno in percentuale basata sull'armatura, ma per renderlo più interessante di un altro modo per potenziare i tuoi PS massimi, potresti avere una percentuale di riduzione maggiore per i colpi più deboli. Ad esempio, riduzione del 90% per 1-20 CV di danno, 60% per 20-30 e 30% per tutto il resto.

Infine, non preoccuparti per i grandi numeri. Ti danno un controllo molto più preciso rispetto a quelli piccoli. Avere un personaggio di livello 1 che inizia con 100 punti ferita significa che puoi avere qualcosa che li uccide in sette colpi ma non in cinque. Significa che puoi avere danni da veleno e altri danni nel tempo che non sono scandalosamente devastanti (così come alcuni, se vuoi). Se non ti piace visualizzare numeri grandi, trova un modo per non visualizzarli.


0

Dici che vuoi che ci sia sempre una risoluzione, ma deve essere una vittoria?

Considera l'approccio usato dai domini 50 ° anno l'attaccante si dirige automaticamente. Al turno 75 il difensore si dirige automaticamente. (Una rotta non funziona automaticamente - alcune unità sono immuni alla rotta e anche se un'unità immobile si dirige non può effettivamente andarsene.) Al turno 100 tutto ciò che rimane viene ucciso.

Mentre non sono d'accordo con il modo esatto in cui funziona (ci sono situazioni in cui ci vuole semplicemente troppo tempo per uccidere l'altra parte) l'idea di base rimane valida.

Cosa suggerirei:

Guarda alcune misure della potenza di ciascun lato. (I punti ferita sono un ovvio punto di partenza, ma fai attenzione, i domini hanno un problema a questo proposito in cui vengono contati i punti ferita "perdita" non significativa - shapechanging, evocazioni ecc. Che causano il routing degli eserciti a causa di vittime quando non lo facevano non prenderne nemmeno uno.) Tieni traccia del valore minimo raggiunto e nota quante curve è stata impostata da quando è stato impostato un nuovo minimo. Se dura troppo a lungo senza che venga impostato un nuovo minimo, hai un deadlock di qualche tipo e l'attaccante dovrebbe ritirarsi.


0

Un'alternativa che non ho ancora visto è che, poiché il valore dell'armatura rende negativo l'attacco, potresti aggiungere un po 'di RNG per un blocco vero:

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;
        }
    }
}

Maggiore è il deficit di danno dopo aver preso in considerazione l'armatura, più attacchi il personaggio può bloccare prima di subire un altro attacco di danno da graffio.

Ciò fornisce una piccola scala in più per le statistiche difensive pur non rendendole invulnerabili, inoltre consente agli attacchi di superare questa meccanica di blocco se lo si desidera e naturalmente previene i deadlock.

I combattimenti potrebbero richiedere molto tempo se hai accumulato statistiche in difesa oltre l'attacco, ma alla fine ci arriverà.


Citazione da OP: voglio che il combattimento sia deterministico al 100%. Ciò non consente un combattimento deterministico al 100%.
Charanor,

Quindi anche il blocco può essere basato su turni, per ogni livello di trueBlock su un attacco, il nemico deve attaccare più volte per ottenere danni da graffio. La stessa idea può essere applicata.
Tom 'Blue' Piddock,

@Charanor: aggiustata la risposta in modo deterministico al 100%.
Tom 'Blue' Piddock,

-1

Molti giochi di combattimento 3D evitano danni da graffio. Esempi sono Tekken e Soul Calibur 2. Lo evitano rendendo difficile avere una difesa perfetta. Alcuni attacchi sono semplicemente troppo veloci per reagire. Penso che sia una soluzione abbastanza buona.


-1

Penso che ridurre l'efficacia della difesa non sia una buona opzione. Il depotenziamento di un giocatore porta a una brutta esperienza di gioco. Perché non fare il contrario?

Perché non alimentare l'attacco col passare del tempo. Questo fa aumentare i danni da graffio nel tempo, riducendo l'incentivo al blocco. A metà partita, un personaggio può ucciderne un altro mentre piange su di lui mentre si sta difendendo.

Alcuni rpg pnp implementano un "meccanismo di tensione". Ad ogni giro la tensione aumenta di uno. Tutti i tiri hanno il modificatore aggiunto del valore di tensione, spingendo la battaglia verso la fine.

Un'altra idea, proveniente dai giochi di combattimento, è un attacco che passa attraverso la difesa. Non so se il tuo gioco è a turni o in tempo reale, ma questo attacco potrebbe anche aprire l'avversario a una combo o disabilitare temporaneamente lui o alcune delle sue abilità.

Credo che il trucco non sia indebolire la difesa. Rendi le altre opzioni altrettanto valide della difesa o riduci i tempi in cui la difesa è una buona opzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.