In questa lezione esaminiamo due tecniche utili ad ottimizzare il nostro gioco.
Escludere un file
Includere un file in Visual Studio può essere utile perché vogliamo gestirlo con un sistema di controllo del sorgente come Team Foundation Source Control. Ma può accadere che un file del genere non debba essere coinvolto nella compilazione: questo accade anche per alcuni tipi di file della content pipeline.
Consideriamo di avere un modello (tank.fbx
) che abbiamo incluso nella content pipeline. Questo modello è dotato di alcuni file che rappresentano le sue texture (engine_diff_tex.tga
, turret_alt_diff_tex.tga
, ...). Se includiamo anche le textures nel progetto content, nella finestra di output troveremo alcuni warning:
turret_alt_diff_tex.tga : warning : Asset was built 2 times with different settings: turret_alt_diff_tex.tga : warning : using TextureImporter and TextureProcessor turret_alt_diff_tex.tga : warning : using TextureImporter and TextureProcessor, referenced by tank.fbx (ModelProcessor)
che ci indicano che lo stesso file è stato importato e processato due volte con impostazioni differenti: una volta da solo in quanto texture, un'altra in quanto texture ma all'interno del processing del modello che usa la texture.
Possiamo evitare questo effetto indesiderato modificando le proprietà del file che viene processato due volte, e impostando la sua Build Action a None
invece che Compile
.
Compressione
In alcune applicazioni, soprattutto quelle che devono essere scaricate da Internet (le applicazioni per Windows Phone 7 ne sono l'esempio perfetto) la dimensione del pacchetto di gioco è molto rilevante. Se consideriamo che la nostra applicazione può essere scaricata dal marketplace con una connessione dati di un telefonino, diventa cruciale che il tempo di download sia breve, evitando costi e attese eccessive all'utente.
Per queste ragioni possiamo scegliere di sacrificare un po' di performance nel tempo di caricamento dei dati in cambio di velocità di trasferimento dei contenuti, abilitando l'impostazione di compressione.
Dalle proprietà del progetto principale (quello che contiene il sorgente del gioco, non il content project) selezioniamo il tab Content Build e la checkbox compress content pipeline output files. I nostri files .xnb verranno così compressi e automaticamente decompressi al caricamento.