Benvenuto Visitatore!  / Create an account

Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
[Gba] Trainer AI
#1
Questa guida non offre nuove conoscenze, ma riporta in italiano informazioni che fino ad adesso erano consultabili solo in lingua straniera. Quello della IA degli allenatori è un argomento sul quale non mi ero molto interessato fino ad ora, e per esigenze pratiche ho dovuto colmare questa lacuna. Ho pensato che a qualcuno potesse far comodo avere queste informazioni tradotte in italiano, con link alle fonti originali.
Bando alle ciance, ecco la guida.



LE FONTI

Ho trovato due guide su internet a riguardo.
Una inglese su PokeCommunity, qui:
Research: Trainer AI in Fire Red
Il link riporta degli studi e considerazioni molto approfonditi, ma un messaggio in particolare tratto da quella discussione è stato copia-incollato e condiviso moltissime volte, il quale però, senza tutta la spiegazione circostante, è fine a sé stesso. Il messaggio in questione è il seguente:
Il messaggio lascia presupporre che scrivendo 1 nel box "Unknown" su Advance Trainer ottieni il primo comportamento; scrivendo 2 il secondo, e così via. In realtà NON è così. Per capirne meglio, riporto una seconda discussione, questa volta in spagnolo da WAH. Riporto anche una traduzione automatica della discussione:
Usar la IA de combate correctamente [Google Translate - ENG]

Le due guide si completano a vicenda, ma ho notato che ci sono alcune inconsistenze. Quando ci sono, do priorità alla guida spagnola, perché è più recente e più completa. Segue la mia trascrizione in italiano di queste guide.



LA SPIEGAZIONE

Per dirla in breve: Ogni allenatore ha associati quattro byte. Vederli in esadecimale non ci è molto utile, ma è più facile capirne il funzionamento se lo si guarda come un un numero a 32 cifre in binario:
Codice:
HEX: 00 00 00 00
BINARY: 0000 0000 0000 0000 0000 0000 0000 0000
Ogni cifra rappresenta uno dei seguenti effetti, che può essere o meno attivo nella IA dell'allenatore, a seconda che quel numero sia 1 o 0 (0 significa che non è attivo; 1 significa che è attivo). Gli effetti sono numerati a partire dalla cifra più a destra e proseguendo verso sinistra:
  • 0000 0000 0000 0000 0000 0000 0000 0001: CONTROLLA DEBOLEZZE E RESISTENZE
    La IA non userà attacchi poco efficaci, e darà priorità agli attacchi superefficaci.
    NOTA: La guida inglese sostiene che si limiti a controllare che una mossa non sia poco efficace, senza fare nulla riguardo alle mosse superefficaci.
  • 0000 0000 0000 0000 0000 0000 0000 0010: CONTROLLA LA DISPONIBILITÀ
    Non usa attacchi che causano uno status già inflitto (es. non userà Tuononda due volte), né attacchi che richiedono uno status non ancora inflitto (es. non userà Incubo su un Pokémon sveglio); Darà priorità ad attacchi precisi se la nostra elusione è alta; Eccetera. È molto importante per distinguere un allenatore scarso da uno vagamente competente.
  • 0000 0000 0000 0000 0000 0000 0000 0100: TENTA DI MANDARE KO
    La descrizione nelle due guide non è chiarissima, ma credo che la IA dia priorità a mosse che manderanno KO l'avversario.
  • 0000 0000 0000 0000 0000 0000 0000 1000: SETUP AL PRIMO TURNO
    Al primo turno [con una chance di circa 3/10, stando alla guida inglese] verrà data priorità a mosse difensive o debilitanti (list of move scripts at 081DBAA7)
  • 0000 0000 0000 0000 0000 0000 0001 0000: STRATEGIE RISCHIOSE
    Verrà data priorità ad attacchi "rischiosi" [Con una chance di circa 5/10, stando alla guida inglese] , come mosse da 1HKO (es. Abisso), casuali (es. Metronomo), dannose (es. Autodistruzione), o inconsistenti (mosse con alta percentuale critica). [La guida inglese fornisce una lista delle mosse che rientrano in questo ambito: link]
  • 0000 0000 0000 0000 0000 0000 0010 0000: PRIORITÀ A MOSSE FORTI
    Dà priorità alla mossa con maggior potenza.
    NOTA: La guida inglese dice invece che, con una chance di 4/10, viene data priorità a mosse di stato o difensive. Sono incerto sull'accuratezza di questa affermazione.
  • 0000 0000 0000 0000 0000 0000 0100 0000: STAFFETTA (BATON PASS)
    La mossa Staffetta (Baton Pass) avrà priorità.
    NOTA: La guida inglese è più dettagliata. Quando ci sono altri Pokémon in squadra, viene data priorità, con chance di circa 6/10, a mosse di stato o difensive. Le chance aumentano a 9/10 se il Pokémon ha la mossa Staffetta (Baton Pass).
  • 0000 0000 0000 0000 0000 0000 1000 0000: NIENTE
    Nessun effetto.
  • 0000 0000 0000 0000 0000 0001 0000 0000: CONSAPEVOLE DEGLI HP DEI POKéMON IN CAMPO
    Se ha pochi HP, dà priorità a mosse curative o autodistruttive; diminuisce la priorità di queste mosse quando ha molti HP. Nelle battaglie in doppio, preferisce attaccare il Pokémon prossimo al KO.
  • 0001 1111 1111 1111 1111 1110 0000 0000: NIENTE
    Nessun effetto.
  • 0010 0000 0000 0000 0000 0000 0000 0000: VAGANTE
    Per i Pokémon vaganti (Latios/as; I cani leggendari). Funziona anche sugli allenatori!
  • 0100 0000 0000 0000 0000 0000 0000 0000: SAFARI
    Per il safari. Il Pokémon ti guarda o scappa; Non attacca. Funziona anche sugli allenatori!
  • 1000 0000 0000 0000 0000 0000 0000 0000: TUTORIAL
    Usato per il Poochyena/Zigzagoon di inizio gioco in RSE. Fugge se il Pokémon del giocatore scende a vita rossa (20% di vita). Funziona anche per gli allenatori!



COME MODIFICARE LA IA CON ADVANCE TRAINER/G3T

Lavoreremo solamente con i primi otto valori, corrispondenti alla prima cifra esadecimale (dopo spiegherò il perché). Voi potete attivare tutte le routine di comportamento che preferite, modificando i valori con un programma come Advance Trainer o G3T. Il modo è il seguente:
  1. Step 1: Decidiamo quali valori attivare
    Supponiamo ad esempio che vogliamo un allenatore che usi la prima, la terza e la quinta routine di comportamento. Il numero in binario sarà il seguente:
    Codice:
    BINARIO: 0001 0101
    Come vedete, gli 1 sono in prima, terza e quinta posizione.
  2. Step 2: Trasformare il numero in decimale
    Per qualche motivo, questi programmi lavorano con valori decimali. Pertanto dobbiamo convertire il nostro numero binario in decimale, con un qualsiasi convertitore online.
    Codice:
    BINARIO: 0001 0101
    DECIMALE: 21
  3. Step 3: Inserire il numero
    Su Advance Trainer, il valore da modificare è chiamato "Unknown", perché il programma è vecchio e all'epoca non si conosceva la funzionalità di questi byte. Su G3T è chiamato "Unknown (AI?)". Trascrivete lì il numero in decimale che avete ottenuto, et voilà, ora l'allenatore si comporterà come l'avete programmato.
    NOTA BENE: Su Advance Trainer, nella schermata della squadra di un allenatore, ogni Pokémon ha un "AI Value". Questa definizione NON è corretta, in quanto non si tratta della IA del Pokémon, ma delle sue statistiche EV. Su G3T questo valore è correttamente riportato col nome "EVs".
Suppongo possa farvi comodo conoscere in che modo GameFreak ha programmato i suoi allenatori. Guardando ad una ROM pulita di Smeraldo, ho notato che:
• Gli allenatori standard hanno tutti un valore di 1 (0000 0001) o 3 (0000 0011);
• Capipalestra, Super4, Campione, Assi del parco lotta, Team cattivo, Boss del team e alcuni allenatori molto forti hanno 7 (0000 0111);
• Alcune eccezioni: Alice, Capopalestra Volante di Forestopoli, ha 23 (0001 0111); Fosco, il Super4 Buio, ha 15 (0000 1111); e qualche allenatore a caso ha 11 (0000 1011).



USARE LE IA 9-32

Tenete presente che i vari programmi (ATrainer, PGE, G3T) lavorano soltanto con i primi otto valori, corrispondenti alla prima delle quattro cifre esadecimali, per una svista dei programmatori. Di norma non ci importerebbe, dato che a noi interessano solo i primi otto (perché sono quelli con effetti utili per la IA; Gli altri sono quasi tutti inutilizzati).
Se però volessimo usare le altre cifre (ad esempio, nel caso creassimo nuove routine di comportamento), è necessario operare manualmente con HxD o altri editor esadecimali. Consiglio di fare riferimento alla guida in spangolo per ulteriori dettagli, ma sostanzialmente si tratta di localizzare dove si trovino i quattro byte dell'allenatore a cui vogliamo modificare la IA, e scrivere in esadecimale il numero che corrisponde alle routine di comportamento che vogliamo attivare. Ad esempio, se volessimo un allenatore forte ma che fugge se scendiamo sotto il 20% di vita, dovremmo scrivere:
Codice:
BINARIO:1000 0000 0000 0000 0000 0000 0000 0111
HEX: 80 00 00 07
Prima di usare questo numero, però, dovete ribaltarlo:
Codice:
80 00 00 07 -> 07 00 00 80



NOTE A MARGINE

Ci sono un paio di cose ancora che meritano di essere citate, già che siamo in tema.

Tabella delle mosse espansa e nuovi tipi
Come fa notare un utente di WAH, dovete tener presente che la IA funzionerà correttamente solo con le mosse e i tipi del gioco originale. Se aggiungete nuove mosse o nuovi tipi (ad esempio, se aggiungete il tipo Folletto/Fairy), la IA non saprà come comportarsi.
Pertanto, se espandete la tabella delle mosse o aumentate il numero di tipi nel vostro gioco, dovete anche apportare modifiche alla IA degli allenatori.
Bug delle abilità
Come riportato nella discussione di PokeCommunity, su Ruby e Fire Red c'è un bug relativo alla capacità della IA di riconoscere l'abilità del Pokémon del giocatore. Potete andare a leggere il messaggio originale per maggiori informazioni, ma per dirla in breve, se il Pokémon avversario ha un'abilità che si attiva (come Intimidazione) la IA penserà che sia il Pokémon del giocatore ad averla, finché il nostro Pokémon non attiverà a sua volta la sua abilità. Questo bug è stato risolto in Emerald.
L'utente propone, nel messaggio originale, anche una routine corretta per sistemare questo bug.
 Mi Piace Ricevuti: 
eMMe97, IvanFGK, Andrea, s n a r m p h, Jabu29, Manuxn, Bonnox like this post
Cita messaggio
#2
Finalmente una guida che spiega come rendere più "difficili" gli allenatori senza bisogno di alzare di 23 livelli la squadra avversaria.
Capito, creatori di remake? Heart Pacman
 Mi Piace Ricevuti: 
Cita messaggio
#3
Ma questa guida…è uno spettacolo! Grandissimo Flygon!!!
 Mi Piace Ricevuti: 
Cita messaggio
#4
C'è giusto l'inconveniente di capire come far usare in modo adeguato all'AI le nuove mosse aggiunte espandendo la tabella
 Mi Piace Ricevuti: 
Flygon likes this post
Cita messaggio
#5
Sì, sfortunatamente la IA lavora bene solamente con le mosse e le abilità del gioco standard. Aggiungendone di nuove (ad esempio, aggiungendo il tipo Fairy), la IA non saprà comportarsi adeguatamente. Il sesto messaggio nella discussione di Whack-A-Hack (link a Google Translate) citava questo problema, e rimandava ad un progetto su PokeCommunity per modificare la IA per farla funzionare con una tabella espansa delle mosse.
 Mi Piace Ricevuti: 
Bonnox likes this post
Cita messaggio




Utenti che stanno guardando questa discussione: 2 Ospite(i)