Battle Circle AI lascia che il tuo giocatore si senta come se stessero combattendo un sacco di nemici

Il combattimento corpo a corpo è il passatempo preferito in videogameland, il nucleo di innumerevoli serie sia note che oscure, e un'esperienza tesa e avvincente quando viene eseguita correttamente. Molti sviluppatori di giochi hanno fatto un gioco di due esseri che lo biffano fino a quando uno non può più annusare e ha pensato, "questo sarebbe molto meglio se ci fossero tonnellate dei cattivi! "A volte questo è vero, ma spesso la somma è maggiore delle sue parti, e combattere molti" nemici "contemporaneamente non è così eccitante, profondo o sfumato come combattere uno alla volta.

Molti combattimenti corpo a corpo non usano un'IA particolarmente speciale quando combattono più avversari. Ciò significa spesso che combattere due avversari è esponenzialmente più difficile di uno, perché entrambi attaccheranno nello stesso momento, ma puoi solo reagire contro uno di loro. Nei casi peggiori, quando si combattono orde di nemici, ciò può significare che la strategia ottimale è condurre il nemico in una linea a file singolo, quindi attaccarli uno alla volta mentre si sta facendo marcia indietro! Questo non sembra molto fantastico o eccitante, vero??


Passa a 0:53.

Inserisci il "cerchio di battaglia". Questo è un pezzo di codice AI che dice ai nemici di circondarsi intenzionalmente attorno al giocatore e attaccare solo quando il giocatore ha la possibilità di reagire. Questo costringe i nemici a combattere in uno stile e il tempo è molto più divertente per il giocatore ... anche se in realtà è una tattica di combattimento davvero pessima!

Il motivo principale per cui vorresti usare i cerchi di battaglia è di lasciare il giocatore sentire come se combattessero contemporaneamente molti nemici, senza realmente affrontare il vero sfida di combattere molti nemici contemporaneamente. Quindi, nella sua essenza, un cerchio di battaglia è un'illusione. Stai intenzionalmente rendendo le cose più facili per il giocatore in modo che possano sperimentare il fantasia di prendere un gruppo di tizi in una volta e sapendo che uscirai vivo, proprio come in qualsiasi film di arti marziali.


Passa a 1:13.

Un cerchio di battaglia non deve funzionare allo stesso modo per ogni partita; se scegli di usarne uno devi passare il tempo ad adattarlo al tuo gioco. A un'estremità dello spettro, hai cerchi di battaglia "cinematografici", come in Assassin's Creed o Batman: Arkham Asylum, dove i nemici attendono pazientemente il loro turno prima di tentare di attaccare e danno al giocatore molti avvertimenti per affrontare gli attacchi in arrivo. Dall'altro lato, hai cerchi di battaglia "pericolosi", come in Dark Souls, dove i nemici cercheranno di rimanere fuori l'uno dell'altro, ma altrimenti non avranno problemi a prenderti in massa.

Uso le parole "cinematico" e "pericoloso" per descrivere il tipo di esperienza che il giocatore dovrebbe avere all'interno del cerchio; è più un'emozionante esperienza audiovisiva che il giocatore dovrebbe provare confortevole in, o dovrebbe essere un vulnerabile posizione che il giocatore dovrebbe cercare di evitare?

Questo concetto può essere ulteriormente semplificato semplicemente gestendo la quantità di pressione sul lettore. Specificamente, questa è la quantità di motivazione che il giocatore deve reagire ai nemici nel cerchio di battaglia. Un cerchio a bassa pressione consentirà al giocatore di attendere gli attacchi in entrata per contrastare, o procedere ad attaccare un particolare nemico senza una punizione immediata. Un cerchio ad alta pressione costringerà il giocatore a scegliere "combatti o fuggi" non appena sono in circolo, così che entrare nel cerchio in primo luogo dovrebbe essere una decisione tattica premeditata. All'interno di un circolo così pericoloso, il giocatore deve decidere immediatamente chi attaccare, chi neutralizzare, quando e come scappare.

Ho fornito un beat-em-up dell'arena completamente funzionale, anche se minimalista, nei file Unity di esempio. Se non usi Unity, dovresti comunque avere una vaga idea di come adattare il codice del cerchio di battaglia a qualunque lingua e motore stai usando. I file che ti interessano sono EnemyMob.cs e SwordzPlayer.cs.

Ecco il cerchio di battaglia in azione. Fare clic sulla demo per focalizzarla, quindi utilizzare i tasti freccia per spostarsi e premere X biff.

Come funziona

Il cerchio di battaglia AI funziona fondamentalmente in questo modo (dal punto di vista del nemico):

Per prima cosa, cammina verso il giocatore fino a quando entro un raggio di "pericolo"

Mentre sei in modalità "pericolo", non avvicinarti troppo a un altro nemico, a meno che non mi venga dato il permesso di attaccare il giocatore. (Vedi Avoider.cs.)

Anche in modalità "pericolo", prova ad avvicinarti al giocatore. Se ci sono troppi nemici sulla mia strada, non sarò in grado di raggiungere il giocatore fino a quando i nemici non si muovono o il giocatore si muove.

Quando il giocatore è nel mio raggio di "attacco" (all'incirca la portata massima del mio attacco) chiedi al giocatore se sono autorizzato ad attaccare. In tal caso, aggiungimi all'elenco degli attaccanti correnti sull'oggetto giocatore. (Vedere SwordzPlayer.cs.)

  • Se ci sono già il numero massimo consentito di attaccanti sulla lista, mi viene negato il permesso.
  • Se mi viene negato il permesso, prova a mitragliarla per un secondo o due in una direzione casuale finché non mi viene dato il permesso.
  • Se il giocatore esce dal raggio d'attacco, anche se sto attaccando, rimuovimi dalla lista degli attaccanti.
  • Se muoio, o sono stordito o altrimenti incapace di attaccare, rimuovimi dalla lista degli attaccanti.

Il numero massimo consentito di aggressori simultanei (simultaneousAttackers in SwordzPlayer.cs) è fondamentale per bilanciare il tuo cerchio di battaglia. Un numero maggiore causa un aumento esponenziale in pressione. Nell'esempio demo ho impostato su 2; meno giochi nervosi e più "cinematici" 1. Se metti questo numero troppo in alto, sconfiggi lo scopo del cerchio, perché i grandi gruppi di nemici diventano inattaccabili o possono essere sconfitti solo con tattiche di poke-and-run poco interessanti.

Di simile importanza è il tasso di attacco nemico (tasso d'attacco in EnemyMob.cs). Questo non è il più veloce tasso di attacco del nemico, ma quante volte lo faranno scegliere attaccare quando viene data l'autorizzazione. Come ci si aspetterebbe, un numero inferiore aumenta pressione, ma in generale dovresti essere più volte superiore al tasso di attacco reale. Puoi rendere questo tasso un po 'più imprevedibile (e quindi la quantità di pressione leggermente meno prevedibile) aumentando attackRateFluctuation, che aumenterà o diminuirà la velocità di attacco dopo ogni attacco.

Usando questo sistema, hai i mezzi di base per creare quell'illusione di potere che rende molto più divertente per i tuoi giocatori combattere un sacco di nemici contemporaneamente.

Conclusione

Ci sono un sacco di modifiche minori e le aggiunte che puoi fare per combattere all'interno del cerchio sono ancora più interessanti:

  • Un attacco "stordente" o "contatore" che il giocatore può utilizzare per mettere i nemici fuori combattimento per qualche istante, in modo che il giocatore possa attaccare altri nemici nella cerchia
  • Una mossa "schivata" per consentire al giocatore di viaggiare rapidamente dentro, fuori o all'interno del cerchio
  • "Spingere" e "tirare" le mosse che permettono al giocatore di muovere i nemici dentro e fuori dal cerchio
  • I nemici a distanza che cingueranno il giocatore attraverso le aperture nel cerchio e incoraggeranno il giocatore a forzarsi attraverso il cerchio per attaccare prima questi nemici
  • Speciali "capitani" nemici che aumentano il tasso di attacco dei nemici vicino a loro, o ignorano il permesso di attaccare, e quindi aumentano il pressione di alcune parti del cerchio

Quindi fai scorrere quei succhi creativi! Questo è solo l'inizio: fai del cerchio di battaglia una parte fondamentale del tuo gameplay e crea la tua versione del cerchio che si adatta bene con il tuo gioco.