Tipo sferrare pugni o calci, ad esempio.
Il problema sta nel fatto che un gioco deve proporre una sfida, cioé l´avversario deve restituirle.
Quindi ci vogliono delle istruzioni che dicono al personaggio guidato dal computer come combattere.
Il metodo che ho sviluppato per Eclisse dei sentimenti si basa interamente sul trigger "Ailevel" che restituisce il livello di intelligenza artificiale del computer.
Partiamo da un richiamo al funzionamento del file CMD, dove ci sono i comandi per far agire il personaggio.
-Nozioni pratiche si trovano nel mio intervento successivo
Per utenti principianti:
Il computer ragiona a scatti di un sessantesimo di secondo, e ad ogni scatto valuta tutto quello che sta succedendo nel programma, e stabilisce cosa disegnare e che suoni eseguire.
Quando arriva a leggere il file CMD, lo legge dall´alto in basso, e ad ogni comando controlla se puó eseguirlo.
Per quanto riguarda l´essere umano il problema é che se una mossa contiene in sé l´esecuzione di una mossa successiva, impedirá alla successiva di essere eseguita da un essere umano, in quanto quando il computer osserverá che é stata eseguita la precedente, interromperá la lettura del file CMD.
Per quanto riguarda l´intelligenza artificiale bisogna pensare a questi due estremi:
un combattente che cerca di creare l´occasione per piazzare colpi devastanti
un combattente che si affida solo a colpi di disturbo per non scoprirsi troppo.
Siccome apparirá che il computer preferisce usare i colpi che stanno in cima nel file CMD, si puó creare sfumature di queste due psicologie semplicemente scegliendo l´ordine in cui mettere i comandi, ricordando che due comandi eseguiti con tasti di attacco diversi non si tapperanno mai a vicenda.
Lo stesso vale per la preferenza fra calci e pugni...
Ad esempio si puó fare una serie
pugno pesante / calcio pesante /pugno medio / calcio medio / pugno leggero / calcio leggero
Per un personaggio che andrá a preferire i pugni ai calci, i pesanti ai leggeri.
Oppure un militare europeo che predilige calci leggeri per piazzare pugni potenti, ma se non vede l´occasione preferisce disturbare.
calcio leggero / pugno pesante / pugno leggero / pugno medio / calcio pesante / calcio medio
Per utenti esperti:
Ora, con lo strumento AIlevel di ogni mossa si dovrebbe definire quando va usata e quando non va usata.
Prendiamo questa:
Quote
;jab accovacciato
[State -1, Crouching Light Punch]
type = ChangeState
value = 400
triggerall = command = "x"
trigger1 = statetype = C
trigger1 = ctrl
[State -1, Crouching Light Punch]
type = ChangeState
value = 400
triggerall = command = "x"
trigger1 = statetype = C
trigger1 = ctrl
Ora, dobbiamo stabilire quali triggers sono comuni al computer e all´umano. In questo caso non ci interessa che il computer emuli la pressione di un pulsante. Anzi, vogliamo impedire che tale richiesta alteri la nostra mappatura.
Quote
;jab accovacciato
[State -1, Crouching Light Punch]
type = ChangeState
value = 400
triggerall = statetype = C
triggerall = ctrl
[State -1, Crouching Light Punch]
type = ChangeState
value = 400
triggerall = statetype = C
triggerall = ctrl
Questo va bene sia per il computer sia per l´essere umano, ora vediamo di distinguere fra i due.
Quote
;jab accovacciato
[State -1, Crouching Light Punch]
type = ChangeState
value = 400
triggerall = statetype = C
triggerall = ctrl
;N-up
trigger1 = Ailevel = 0 ; Specifica che lo sta guidando l´umano.
trigger1 = command = "x"
;CPU
trigger2 = Ailevel = 0 ; Specifica che lo sta guidando l´umano.
trigger2 = P2bodydist X < ([distanza utile del colpo] +16) - (Ailevel *2)
trigger2 = P2bodydist Y < 140 - (Ailevel*20) ;Ai livelli 7 ed 8 non la proverá mai contro un avversario in aria
trigger2 = random < ailevel ; fino allo 0,8% di probabilitá ogni sessantesimo di secondo.
[State -1, Crouching Light Punch]
type = ChangeState
value = 400
triggerall = statetype = C
triggerall = ctrl
;N-up
trigger1 = Ailevel = 0 ; Specifica che lo sta guidando l´umano.
trigger1 = command = "x"
;CPU
trigger2 = Ailevel = 0 ; Specifica che lo sta guidando l´umano.
trigger2 = P2bodydist X < ([distanza utile del colpo] +16) - (Ailevel *2)
trigger2 = P2bodydist Y < 140 - (Ailevel*20) ;Ai livelli 7 ed 8 non la proverá mai contro un avversario in aria
trigger2 = random < ailevel ; fino allo 0,8% di probabilitá ogni sessantesimo di secondo.
Questo é un esempio a caso in cui il computer esegue la mossa a seconda della distanza dall´avversario, in accordo alla propria intelligenza.
La stringa evidenziata é estremamente importante, se omessa il computer eseguirá la mossa appena il trigger2 é soddisfatto, senza considerare le mosse successive nel file CMD.
Per utenti avanzati
trigger2 = random < ailevel
significa:piú il computer é intelligente maggiori sono le probabilitá che la provi
trigger2 = random > ailevel
significa: piú il computer é stupido maggiori sono le probabilitá che la provi
Quindi ogni mossa dovrebbe avere 4 gruppi di triggers, messi in questo ordine.:
1 triggerall richiesto sia a umani sia a CPU + Eventuali triggers per mosse che partono da piú situazioni
1 trigger1 solo per umani
Dopodiché
1 gruppo di triggers che dice quando é stupido o inutile farla (e dovrebbero vietarla agli ultimi 2-3 livelli)
1 gruppo di triggers che dice quando é intelligente farla. Questo gruppo di trigger puó semplicemente essere costituito dalla negazione dei parametri di cui al gruppo precedente seguito da una espressione casuale.

Aiuto










