martedì 23 settembre 2008
.... mentre io mi godo le lasagne della mamma a Imperia :)
sabato 16 agosto 2008
... dopo quasi tre anni d lavoro? Lo sapro' domani. Dita incrociate.
lunedì 28 luglio 2008
mercoledì 9 luglio 2008
Rock on!
martedì 8 luglio 2008
Oggi passeggiavo per il codice cercando di aggiungere una funzionalita' (perche' qui la definizione di code complete e' molto lasca), quando mi imbatto in un pezzo di codice game-side che aggiorna due Collision Sphere nelll'engine, usate per collidere con la vegetazione. Sono circa una decina di righe di codice che scrissi qualche mese fa per "testare" la funzionalita' nell'engine. Facevano il loro lavoretto, niente di piu', niente di meno, con un bel commento sulla falsa riga di "codice di test da implementare correttamente game side". Oggi ho trovato l'implementazione corretta: quelle dieci righe di codice, che facevano il loro dovere, sono diventate un VegetationCollisionSphereManager, piu' VegetationCollisionSphereItem per un gran totale di 600 righe di codice che, essenzialmente, fanno la stessa cosa. C'e' una rapporto di sessanta a uno.
Io credo che ci sia sempre una spiegazione razionale per tutto, anche per chi si lamenta di avere centinaia di bug ancora da fissare nella sua bug list. Io ne ho quattro. C'e' un rapporto di sessanta a uno anche li'.
mercoledì 25 giugno 2008
... a Febbraio ho comprato una DSLR (Reflex Digitale per gli amici) e sto imparando a fotografare, come testimoniano i curiosi banner di recente apparsi alla sinistra del mio blog.
Dopo circa quattro mesi sono stato accettato da un'agenzia di Macrostock piuttosto famosa chiamata Alamy. In pratica sono ufficialmente un fotoreporter. Solo il pensiero fa molto piu' ridere me di quanto faccia ridere chi legge: e' piu' o meno come prendere in mano un compilatore senza averne mai visto uno prima, e pretendere di scrivere codice di produzione dopo quattro mesi.
A parte gli scherzi mi diverto un mondo: aiuta a rilassarmi la sera dopo cena, prima di tornare a dare la caccia ai memory scribbler. Inoltre la fotografia in generale ha moltissimi legami con il mio lavoro.
Per i Flickr maniaci questo e' il mio Photo Stream e questo un piccolo ritratto di una dolcissima ragazzina durante la sfilata della fiacca Olimpica a Londra.
Stay tuned.
lunedì 26 maggio 2008
Il mio lavoro si e' trasformato nelle ultime settimane (mesi) nell'analisi e (possibilmente) nel fix dei bug nell'engine in ingresso nel database di Fable 2. Ogni giorno ho qualche decina di bug da guardare, se riesco risolvere al momento, oppure indirizzare verso chi di dovere.
Vuol dire in parole povere che ne ho viste parecchie.
L'engine consiste in qualche centinaia di migliaia di righe di codice, divise fra una decina di programmatori nel corso di tre anni.
Da questo lavoro di analisi ho potuto farmi un'idea molto informale (nel senso che non ho raccolto dati precisi) sulle cause dei crash bug in Fable 2, e sul codice che li genera. La stragrande maggioranza dei crash bug e' dovuta a problemi con la gestione del ciclo di vita di un oggetto, quando e' allocato, sopratutto quando, come e dove e' deallocato. I double delete sono all'ordine del giorno. Peggio ancora mantenere reference a oggetti che sono stati deallocati da qualcun altro e scriverci sopra, che equivale a scrivere sopra un oggetto casuale in un qualsiasi pezzo di codice nel sistema che si e' trovato ad usare quel pezzo di memoria deallocato. Crash random e problema difficilissimo da diagnosticare, perche' la causa non e' locale.
Piccole regolette che aiutano molto a prevenire anziche' curare:
- Resource Allocation Is Initalisation, sempre e comunque
- Azzerare un puntatore dopo il delete
- Usare smart pointer dove possibile (ma occhio ai problemi con il ref counting)
- Notificare ai client la distruzione di un oggetto, possibilmente attraverso Observer (ma occhio alle complicazioni di design che ne derivano)
- Fare le cose semplici
L'ultimo sembra un consiglio stupido, ma e' forse l'unico importante: sono tre anni che predico di fare le cose semplici, e io ho cercato di seguire il mio consiglio il piu' possibile, senza complicarmi la vita, non scrivendo mai nulla che non fosse espressamente richiesto, cercando di scrivere codice piu' leggibile possibile. L'ultimo crash bug nel mio codice risale a quattro mesi fa (un doppio delete). Funziona.
venerdì 16 maggio 2008
La settimana scorsa Fable 2 e' stato presentato ad un evento stampa Microsoft. Qui il report di IGN:
http://xbox360.ign.com/articles/873/873866p1.html
Mi ricorda il soldato tedesco sul fronte orientale alla fine del '44, con l'armata rossa alle porte della Germania, che in trincea difende la posizione strenuamente sotto il fuoco dell'artiglieria sovietica, in pesante inferiorita' numerica, senza cibo, senza munizioni, in mezzo alle malattie e allo squallore, in preda al panico. Mentre Hitler a Berlino annuncia l'arrivo delle Divisioni dal Nord che ricacceranno Ivan al di la' dei confini...
Basta crederci e va tutto bene :)
sabato 5 aprile 2008
Un tipico sabato pomeriggio nella Game Industry.
In ordine di apparizione:
- Domino Pizza (immangiabile)
- Birra (bevibile)
- Coca cola (per stare sveglio)
- Monitor col codice
- Monitor col devkit attaccato (vi sarebbe piaciuto ci fosse stato il gioco che gira :D)
- Duck Of Build Breaking Shame! (guadagnata con sudore durante Black&White 2 e difesa strenuamente durante Fable 2)
- Keith che mangia la pizza
Per i puristi, scusate il flash sparato sul monitor ma non avevo un diffusore dietro... Non e' il mio miglior esempio di tecnica fotografica.
venerdì 4 aprile 2008
Ieri sera alle 11 lancio un processo scritto in Python cosi' da avere tutto pronto oggi, giorno di consegna.
Questo mattina sono accolto da:
TypeError: GetTargetFilename() takes exactly 3 arguments (2 given)
Segnalarmi un errore di sintassi a tempo di compilazione effettivamente nel 2008 e' chiedere troppo. Mattinata di lavoro persa. Grazie Guido, I love you too.