Monday, December 17, 2007

"Mio Dio, è pieno di stelle!"


Lo sviluppo, coi tempi che mi son concessi, procede. E finalmente la mappa inizia ad avere un aspetto...che ricorda quello di una mappa :)
Ogni stella ha le proprie coordinate all'interno di un quadrato della mappa, ovviamente X,Y,Z.
Se Y>0, la stella è posizionata sopra il piano verde che rappresenta l'ipotetico piano su cui e' appoggiato il centro della galassia, se Y<0 ovviamente la stella sta sotto.
Per rendere piu' leggibile la griglia, ho deciso (per ora) di colorare di bianco le stelle che stan sopra, e di giallo quelle che stan sotto, vedete da voi che gia' con 50 stelle il rischio di far confusione non e' nullo.
Tecnicamente ogni stella rappresentata è composta da due elementi: una linea verticale che ne denota la distanza dal piano, e un pallino che come detto, oltre ad aiutare la visualizzazione, dovra' in futuro rappresentare anche il tipo di stella. L'asticella e' una banale linea DX9, mentre il pallino è stato implementato usando uno sprite, per risparmiare triangoli (ogni sprite usa 2 triangoli, se avessi dovuto usare una sfera, sarebbero stati molti di più, che moltiplicato per il numero di stelle presenti beh...).
Il problema degli sprites però è che hanno uno spessore nullo, così il rischio è che, ruotando la mappa, si assottiglino fino a sparire per venir divorati dal back culling.
Così ho risolto ruotando ciascun sprite di un angolo esattamente opposto a quello della telecamera, così da far sì che in qualsiasi modo io pongo la telecamera, questi appaiono sempre perfettamente frontali, dando l'illusione che non siano piatti ma piuttosto sfere.
I problemi più grossi li ho avuti cercando di far convivere sprites e linee, a causa senz'altro della mia poca esperienza con dx9, ma direi che adesso ci siamo.
Un'altra funzione che avranno gli sprite-pallino sarà quella di contenere il nome del sistema. Infatti accanto a ciascuna stella voglio farne comparire il nome.
Una cosa alla volta.
Il prossimo passo sarà comunque noioso: devo far pulizia nelle classi, ora che ho qualcosa che sta in piedi è imperativo far sì che lo scheletro sia pulito e ben documentato, altrimenti non solo sarà il gioco che non vedrà mai la luce, ma anche che finirà molto presto nel trashcan.
Voglio anche approfittarne per far un po' di ottimizzazione. D'accordo che siamo sui 500fps, ma son pur sempre solo 50 sprites, e io sono della vecchia guardia, quelli che vivono per ottimizzare :)

2 comments:

Anonymous said...

Ciao PdG, ti sto seguendo con più attenzione del Dottor House!!!
Quando dici "Infatti accanto a ciascuna stella voglio farne comparire il nome", hai già in mente di far ruotare anche il nome nome della stella (oltre allo sprite della stessa) quando ruoti la mappa?
Ciao!

Michelangelo

PdG said...

Sì ovviamente, altrimenti se ruoti la mappa non leggi più i nomi. Il punto è che con gli sprites comunque se ti avvicini si ingrandiscono e il risultato sarà quello di vedere i nomi grandi per le stelle vicine.
Vediamo se esteticamente va bene altrimenti devo trovare un'altra strada.