Età della pietra

Oggi vi parlo dei “magnifici” strumenti con cui lavoro. Ammetto che mi stanno facendo venire un po’ la depressione, il lavoro è bello ma i sistemi con cui tocca lavorare sono primitivi a dire poco.

Come progettista dell’intelligenza artificiale per Age of Conan (questo è il gioco a cui sto lavorando adesso) mi occupo sostanzialmente di mettere a disposizione dei progettisti del gameplay vari script più o meno complicati che facciano determinate cose. Facciamo un esempio pratico così è chiaro. E’ stato deciso da qualcuno a caso che quando un giocatore parla con un personaggio controllato dal pc che si chiama Franco Voltagabbana, questo smette di essere un personaggio amichevole con cui si può parlare e diventa invece un guerriero aggressivo che attacca il personaggio.

Ebbene, questo design che sembra semplicissimo viene smembrato in 47283 comodi passaggi che rendono la comunicazione non essenziale ma fondamentale. Il primo passo è l’idea del progettista delle quest, ovvero dei compiti che il giocatore esegue durante le sue avventure nel gioco. Questa persona è responsabile della scrittura dei dialoghi delle quest e del testo che il giocatore vede nel gioco. Quando l’idea di quest è pronta, viene passata ai progettisti del gameplay che ne astraggono i punti chiave e cominciano a implementarla nel gioco. Per fare questo usano uno strumento molto complicato che è stato prodotto circa dieci anni fa e che continuamente viene aggiornato (anche più di una volta al giorno). I progettisti del gameplay però non sono capaci di dare intelligenza alle cose, ovvero sono responsabili soltanto di piazzare gli oggetti in giro per il mondo, quindi sono capaci di fare apparire Franco Voltagabbana ma non di farlo comportare come il progettista delle quest vuole. E’ qui che entrano in gioco i progettisti dell’intelligenza artificiale come me, sostanzialmente veniamo bombardati da due tipi di richieste: “voglio che la tal cosa si comporti in tal modo” e “la cosa non si deve comportare in tal modo ma in tal altro”.

Ora, tutta questa struttura in realtà ce l’ha un suo senso, non è che le cose siano fatte a caso. Questi passaggi mi sembrano ragionevoli anche per evitare l’antipattern One Man Army che come tutti noi ingegneri sappiamo in genere è da evitare.

Il problema sono gli strumenti diretti di lavoro. Definire il loro comportamento “esoterico” è fare loro un enorme complimento. Eseguire un test può richiedere anche mezz’ora tra continui riavvii delle applicazioni, deployment apparentemente privi di alcuna logica tra copie locali e copie remote, sincronizzazioni che non sincronizzano e altre bizzarrie che rendono tutte le operazioni lentissime. Francamente penso che se qui ci fosse una struttura migliore, non avrebbero bisogno di 250 persone per fare tutto quello che fanno ma ne basterebbero probabilmente 150. Questo è il livello di spreco di tempo indotto dal sistema.

Allo spreco di tempo indotto da sequenze di operazioni veramente insensate (una su tutte: lo strumento che si usa più spesso va chiuso e riaperto ogni volta che si vuole fare una copia in remoto di qualcosa se no per qualche motivo crasha. A domanda posta gli sviluppatori del programma stesso rispondono: “Non ne abbiamo idea ma tanto basta aprirlo e richiuderlo, no?”. Eh, si, proprio un bel metodo.) vanno aggiunte due cose che secondo me creeranno una quantità di problemi immensa nel tempo a venire se non cambiano l’intera struttura produttiva (anche se proprio oggi parlavo con un collega e dice che ci stanno pensando): la documentazione e il sistema di intelligenza artificiale.

Sulla documentazione c’è poco da dire. E’ vecchia, spesso non sincronizzata con le versioni correnti e talvolta mancante del tutto. In pratica la conoscenza viene tramandata tramite il sapere degli antichi che attorno a un fuoco spiegano i segreti di Manitù, come la sequenza arcana di operazioni CheSeLaFaiCrashaTuttoAncheSeNonHaSenso oppure il comando di una banalità totale che in realtà si fa in un modo e non come sarebbe del tutto ovvio.

Il sistema di intelligenza artificiale è un casino inimmaginabile per diretta conseguenza della mancanza di documentazione. Questa settimana è tornato il collega che mi deve fare il training. Il suo modo personale di fare training è stato darmi da fare una cosa e dirmi “okay, adesso hai la task settata, falla”. “Uh??!”.

Inutile dire che lo strumento per il design delle intelligenze artificiali è un casino allucinante, pieno di comandi obsoleti mai rimossi e soprattutto intriso da logiche che definire bizzarre è un complimento. Facciamo un esempio pratico giusto per renderci conto di quanto sono inutilmente complicate le cose. Siccome non tutti i lettori mangiano pane e software, rendo le cose molto semplici. Quando si scrive un programma, si vuole in genere poter controllare qualche condizione. Ad esempio Pierino ha 8 mele. Chiedo al mio programma di verificare se il mio Pierino ha più di 5 mele. Il programma fa la verifica e siccome 8 è maggiore di 5 mi risponderà “Vero” a tale controllo. Mi sembra una cosa semplice.

Ebbene, nel magnifico strumento per l’intelligenza artificiale questo controllo, che più o meno in tutto l’universo informatico conosciuto e sconosciuto si chiama “if”, nel nostro tool si chiama “controlla statistica personaggio”. “Controlla statistica personaggio”…

Ma cosa diamine c’entra??? Che logica ha??? Il mio trainer oggi mi spiegava che la cosa ha senso perchè inizialmente il comando era stato messo per fare i controlli rispetto ai dati di un personaggio ma che diamine, non ha senso!

Insomma, queste sono le rogne con cui sto combattendo ora. Devo dire che tra il mal di testa notevole, la ricerca estenuante di una casa (una palla mostruosa, oggi spero di avere trovato quella giusta perchè non voglio più cercare, mi sono rotto) e il cambio di alimentazione che mi sta un po’ irritando, sono un po’ seccato. Ma tutto si aggiusterà spero.

Annunci

3 Risposte to “Età della pietra”

  1. CarMas Says:

    Paese che vai, usanze che trovi 😀
    Anche se devo ammettere che alcune situazioni che descrivi mi suonano stranamente (inquietantemente) familiari. Qui la documentazione è tutta a carico mio (e ciò non è detto che sia un bene), ma manca un processo produttivo basato sulla logica… “ok ho scritto il manuale del prodotto X che deve fare A”, “no è cambiata la specifica, adesso fa B”.. ma perché nessuno mi dice nulla?
    Per non parlare dell’inadeguatezza degli strumenti di lavoro (oggi mi è toccato cambiare l’alimentatore scoppiato, ricordiamo che a ottobre ho cambiato la mobo) che sicuramente non aiuta!

    Vabbè. Piuttosto, non mangiare schifezze, che poi ci tocca portarti a recuperare con lo steamed rice 😛

  2. Bea Says:

    Immagino che forse non sia il caso di dirti che quando tornerai a casa dovrai mettere a posto tutti i computer, primo tra tutti il mio, visto che la Pinnacle sta impazzendo, il masterizzatore continua a non aprirsi (con tanto di cd incastrato dentro), la mia licenza antivirus è scaduta e mi appaiono strane finestre che chiedono password e soldi (richieste che non saprei come soddisfare!).. Per non parlare di quelle operazioni CheSeLaFaiCrashaTuttoAncheSeNonHaSenso!
    Non essere seccato fratellone, ti abituerai all’alimentazione a base di renne e salmoni!
    Tengo le dita incrociate per la casa…. Anche perchè qui la Camassa me la sorbisco io, ed è più angosciata di te, credimi!

  3. GodHouse Says:

    Controlla statistica personaggio (Tronco in Importa_Statistiche_Avanzate) {
    Importa_Statistiche_Avanzate = Importa_Statistiche_Avanzate + Tronco
    }

    Meglio il buon vecchio put tro bor….

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...


%d blogger hanno fatto clic su Mi Piace per questo: