Franny's Adobe

Il blog di Francesco Carucci
posts - 99, comments - 948, trackbacks - 6705

martedì 23 settembre 2008

Fable 2 is GOLD

.... mentre io mi godo le lasagne della mamma a Imperia :)

posted @ martedì 23 settembre 2008 14:59 | Feedback (46) | Filed Under [ Fable 2 ]

sabato 16 agosto 2008

E' il mio ultimo commit in Fable 2...

... dopo quasi tre anni d lavoro? Lo sapro' domani. Dita incrociate.

posted @ sabato 16 agosto 2008 16:59 | Feedback (8) |

lunedì 28 luglio 2008

Why Crunch Mode Doesn't Work: 6 Lessons

http://www.igda.org/articles/erobinson_crunch.php

Grazie Federico per la segnalazione.

posted @ lunedì 28 luglio 2008 11:18 | Feedback (61) |

mercoledì 9 luglio 2008

Non solo bug

 

Rock on!

posted @ mercoledì 9 luglio 2008 15:12 | Feedback (16) |

martedì 8 luglio 2008

Sessanta a uno

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'.

posted @ martedì 8 luglio 2008 12:35 | Feedback (7) |

mercoledì 25 giugno 2008

[OT] Fra un bug e l'altro...

... 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.

posted @ mercoledì 25 giugno 2008 15:28 | Feedback (9) |

lunedì 26 maggio 2008

Un'analisi informale dei crash bug in C++

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.

posted @ lunedì 26 maggio 2008 11:06 | Feedback (6) |

venerdì 16 maggio 2008

Fable 2: The Choices You Make

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 :)

posted @ venerdì 16 maggio 2008 13:32 | Feedback (9) |

sabato 5 aprile 2008

Crunching! (Side B)

Un tipico sabato pomeriggio nella Game Industry.

 

DSC02488


In ordine di apparizione:

  1. Domino Pizza (immangiabile)
  2. Birra (bevibile)
  3. Coca cola (per stare sveglio)
  4. Monitor col codice
  5. Monitor col devkit attaccato (vi sarebbe piaciuto ci fosse stato il gioco che gira :D)
  6. Duck Of Build Breaking Shame! (guadagnata con sudore durante Black&White 2 e difesa strenuamente durante Fable 2)
  7. 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.

posted @ sabato 5 aprile 2008 15:31 | Feedback (45) |

venerdì 4 aprile 2008

Python, I love you

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.

posted @ venerdì 4 aprile 2008 11:54 | Feedback (33) |

Powered by:
Powered By Subtext Powered By ASP.NET