My "Half" Life

Blog dedicato alla programmazione, ai videogiochi e a tutto quello che mi viene in mente ^_^

30 marzo 2007

Two funny days

Ciaooooo,

ieri non ho bloggato.... fidatevi... non ne ho avuto il tempo XD
Prima cosa sono "dovuto" arrivare in ritardo a registrare un esame (il dovuto è perchè di default arrivo in ritardo alle prove d'esame). Poi mentre vedevo il compito la professoressa di Lab. Algoritmi mi fa notare un piccolo errore sulla dichiarazione di una struct del tipo:

typedef struct
{
.....
struct tree* n1; //premesso che qua ho fatto un errore di "distrazione" scrivendo "struct"
.....
.....
} tree;

Prof: Questo tipo di dichiarazione non è giusta....
Io: mmm... ma quando utilizzo le strutture per il compilatore di Visual Studio le implemento così...
Prof: Ma questo non è ANSI-C
Io: Coooosaa??? Ma l'ANSI-C è una cosa bruttissima!! io utilizzo il C++... al massimo il C99 (ho fatto una faccia mezza-spiritata)
(la prof mi guarda un attimo... e sorride)
Prof: eh! ma si doveva utilizzare l'ANSI-C
(A quel punto faccio una faccia perplessa... in realtà stavo pensando alle probabili altre violazioni allo standard che avevo fatto).

Vabè... firmo l'esame... torno a casa prendendo il bus.
Ad una fermata il guidatore stava chiudendo subito le porte... nel mentre vedo una signora che con due bustoni si affaticava ad arrivare ai portelli così ad alta voce dico:
-Un attimoooo!!! non chiuda!!
Il guidatore frena di colpo e riapre le porte... non accade niente... guardo la signora...
-Ah... ma lei... non... doveva scendere...
Mi guarda con 2 occhi sbarrati (ieri era il festival delle facce spiritate) e mi segnala un no scuotendo la testa velocemente.
Abbasso la testa e penso
(I C***** miei proprio mai???? )
Poi rido... mi rivolgo allo specchietto retrovisore e faccio un cenno di scuse aggiudicandomi all'1:15 un numero sufficente di maledizioni da bastarmi per l'intera giornata :P
(Ancora mi sto chiedendo per quale motivo quella signora stava correndo verso la porta se doveva scendere 2-3 fermate dopo.

Arrivo a casa e partiamo con Luca a vedere come interfacciare i congegni hardware che fa lui con il software che scrivo io (questa pausa dalla videoludica non è pausa dalla programmazione XD )
Verso sera riusciamo a trovare un formato audio raw e ad utilizzarlo padroneggiandolo... per dirla tutta ho anche ascoltato il mio audio player (nel vero senso della parola.... abbiamo riprodotto in audio il file exe del GMPlayer... sul serio!... credetemi siamo arrivati a questi livelli in casa :D )
Invece stamattina abbiamo continuato a fare qualche giochetto con l'audio... Luca mi diceva che tipo di file dovevo creare... per riscrontrare determinate cose sul sampling e io gli facevo un piccolo code snippet per generare questi valori e inserirli in un file... che poi andava a riprodurre analizzando la sinusoide generata dai samples.

Insomma... oggi riparto per il paese (spero di avere la connessione gprs anche lì... dato che mi connetto rigorosamente da linux... e il computer di mia zia pare odiare questo sistema... poi vediamo chi la spunta!!!! )

Per concludere... ieri ho anche preso in mano una copia della prima release dell'OpenGL Red Book!!! me l'ha portata mio fratello che l'ha trovata in facoltà alla biblioteca di Ingegneria (Premetto che io in facoltà (informatica) nonsono riuscito neanche a trovare un libro su come sviluppare per Linux... figuriamoci il reference delle OpenGL)

Detto questo... ora vado a preparare la valigia... per non arrivare "troppo" in ritardo alla stazione :P

Cya

28 marzo 2007

Cose che funzionano al 50%

Cavolo quanto odio le cose che funzionano al 50% @_@

Stasera io e Luca andiamo a provare se riuscivamo a controllare la porta parallela in tutto e per tutto... e... insomma il titolo è autoesplicativo!

Ok! ho fatto un programma per inviare dati sulla porta... lo avvio e tutto pare andare per il verso giusto... tanto che esce un altro mezzo ipnocircuito a led controllato dal pc....
Poi è venuto il turno dell'input. Inviamo i maledetti 5V su un pin della porta preservato per l'IN e verifichiamo...
...
......
Ma risultano tutti accesi... o meglio i primi 7 risultano accesi e l'ultimo no...
Contando che la seconda parte della porta è indirizzata a 0x379 non capisco l'origine di quel 01111111 e pensare che in output era andata quasi tutto perfettamente T_T
(e per l'esperimento che abbiamo in mente sia l'output che l'input sono di pari importanza...entrambi fondamentali)

Vediamo di continuare a smanettare... al massimo si va a finire all'assembly (speriamo di no!)

Byeeee

27 marzo 2007

Just Bloggin' a bit

Tanto per bloggare un po!
Oggi ho dato l'ultimo esame di questo quadrimestre... e mentre tornavo a casa mi chiedevo giustamente che cosa mi ero portato a fare un ombrello con me per 3 anni se poi il giorno in cui decido di lasciarlo a casa "diluvia"... ma non è che diluviava o nella zona dell'università o in città... diluviava dappertutto (ed io... fissato per le tute... andavo fresco fresco con le tennis....)

Bah! fra un po vado a nanna... domani come prima cosa mi aspetta un programmino per inviare dati sulla porta parallela.
In teoria nulla di complesso(anzi veramente banale) e se funziona allora mi metto sotto per crearne un altro un po più complesso per comandare un circuito che realizzerà Luca (questa volta non è un ipnocircuito.... se ci riesce davvero mi esalto come un bambino... anche perchè è parecchio complesso ).
Fatto questo reinstallo windows e vedo di recuperare le ultime modifiche del sorgente del VertexHolm così quando riparto per il paese vedo di debuggare il quadtree.

Byez!

25 marzo 2007

Ho aperto il sito (chiamiamolo così)

In questo momento sto pensando che state pensando... perchè Gio ha pensato di metter su un sito personale?
...
Forse penso troppo ^^
Essenzialmente ogni volta che distribuisco in rete un software che faccio (ma sì! chiamiamoli software... che sembrano importanti ^^) lo piazzo ad un link a caso oppure su una paginetta web sbarcata qua e là.
Ho deciso pertanto di fare una homepage... basata su blogger per raggruppare tutta la mia attività software e soprattutto avere un forum di supporto (che nessuno utilizzerà mai se non per insultarmi... ma io ho fiducia lo stesso nel buon senso dei computer, "che si bloccheranno", quando quei bastardi scriveranno brutte parole indirizzate alla mia persona XD ).
Per dirla seria, sul forum potete chiedermi un po di tutto sullo sviluppo del software attuale o descrivere problemi e impressioni sul software che avete scaricato... cercherò di rispondervi come mi è possibile.

Per il resto... boh! cercherò di aggiornare il sito ogni tanto (di sicuro quando avrò qualche novità degna di nota).
Il sito (dato che lo considero come mio ufficiale) è in inglese (la variante parlata dalla mia mente e scritta dal mio computer... quindi non datemi addosso per eventuali errori... riempite semplicemente il modulo di reclamo della casa produttrice della mia mente o del mio computer).

Prima di concludere il sito è al seguente link: http://santostefanogiovanni.blogspot.com/

Cya!

Name Conflict

Fino a poco tempo fa curavo attivamente un audio player: il GMPlayer che potete scaricare tranquillamente da sourceforge.
Beh! ho commesso un errore di conflitto di nomi tra il mio software e un altro: il GMPlayer di Linux.
Il mio è GMPlayer -> Graphic Minimalistic Player
Quello di linux è GMPlayer -> GUI Media Player

Quando ho rilasciato le prime versioni del programma in tutta sincerità non sapevo proprio dell'esistenza del GMPlayer di linux... anche perchè il programma originale (che conoscevo) era l'MPlayer che era command-line e solo dopo hanno fatto una espansione con la GUI.

Fatto sta che se si inseriva gmplayer su google, almeno in italia il link al mio software appariva come 2° (Questo è accaduto per 3-4 mesi). Tutt'un tratto, invece, qualsiasi link che portava alla pagina di sourceforge del mio player è sparito da google (abbassando i download da 10-20 al giorno a 0-2 al giorno). L'altro ieri è magicamente riapparso in prima posizione (infatti in 2 giorni ho registrato più di 50 download). Come mai? Perchè il mio player era sparito da un giorno all'altro da google? c'entra in qualche modo il conflitto di nomi? o un semplice errore di sistema? Ma in fondo... a noi che ce ne frega? ^^
Assolutamente niente... ma per chi legge questo post entro 2 giorni a partire dal 25/03 può vedere come vanno le statistiche di download relative a questo strano fenomeno GMPLAYER STATS

Cyaaaaaaaaa

23 marzo 2007

Optimization

Ciao,
Ieri il mio Windows ha deciso in tutta spontaneità di tirare le quoia... portando con se tutte le possibilità di continuare a lavorare sul motore grafico! peccato che dovevo fare alcuni test e bug fix.

Ho riprogettato completamente il terrain rendering in modo da renderlo (almeno in teoria) dannatamente più veloce del precedente.
Come lo realizzo?
mmm... innanzitutto divido la geometria in vertex e index buffer. Il vertex buffer lo piazzo nel pool di memoria della scheda video e se possibile anche l'index buffer (l'index buffer è un atlas degli index buffer di tutti i nodi foglia del quadtree). Poi passo dallo splatting basato sul vertex alpha allo splatting basato sul texture alpha e raggruppo le texture in uno o due atlas. Da quì quando vado a scorrere l'albero non dovrò effettuare cambi di renderstates!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
(i punti esclamativi dovrebbero essere autoesplicativi circa la lentezza di un cambio di renderstate ^_^ )
In pratica faccio tutti i settaggi all'inizio.... e finisce la!

Vediamo... appena rimetto windows butterò per la seconda volta l'implementazione corrende del terrain e la riscrivo da capo.... questa volta in versione definitiva (dato che penso che ormai sono arrivato a quello che volevo!)

Cya

P.S.
Ho visto il DVD del concerto "Tour de Japon" su Final Fantasy... non ho davvero mai ascoltato musica più bella (e ribadisco che The Dream Oath: Maria and Draco (estratta da FF VI) è davvero COMMOVENTE). Se non avete il DVD il concerto è su youtube... ma per ascoltare tutti gli strumenti serve un volume considerevole (altrimenti si perdono dei dettagli di sottofondo che sono fondamentali).

17 marzo 2007

Restart!

Salve
Questa decisione l'ho presa sotto la doccia... ma non per questo è stato un colpo di testa o comunque una decisione avventata.
Frenati da qualche giorno gli entusiasmi sul sistema quadtree del mio motore ho realizzato che effettivamente proprio il sistema di terrain rendering è il collo di bottiglia del VertexHolm.
Oggi stavo cominciando a scrivere il renderer del terrain definitivo, ripulito e ottimizzato, così ho rivisto tutto il codice. Il problema di fondo è che se il terrain gira dai 100 FPS ai 50 FPS (risolti i problemi di stabilità si poteva arrivare anche a un delta minore tra il massimo e il minimo) quella è comunque la velocità massima del motore.
Il terrain nel gioco è composto sempre da mezzo milione di poligoni e c'è sempre uno e un solo terrain da renderizzare. Quindi significa che parto da 100... o meglio nel caso peggiore da 50 FPS in giù! c'è ben poco da stare allegri.

Il motivo di tutto risiede nel fatto che ho costruito il terrain in maniera da assistere il motore di gioco... e ci sono riuscito... tuttavia ho sacrificato il framerate più di quanto pensavo. Quindi ho preso la decisione di riscrivere tutto il terrain renderer da 0 utilizzando un sistema più standard e una tecnica di splatting più moderna.
In questo modo riduco drasticamente i cambi di renderstate (che erano a iosa nel precedente sistema e che sono la causa dei rallentamenti del motore) e ottengo una veste grafica migliore (non sia mai che non riesco a velocizzare il motore... quantomeno avrò una bella grafica!)

Detto questo... è detto tutto... mi rimetto a lavoro! sperando di ottenere i tanto agognati risultati... e per concludere:
Forza Ferrari! Forza Felipe Massa! (dai spettacolo domani anche dalle retrovie)

16 marzo 2007

Finalmente uno screen

Siamo arrivati al cinquantesimo post! E finalmente vi posto anche uno screen del terrain renderer del VertexHolm :P

Come detto in precedenza utilizzo un quadtree per il visibility test e per il rendering utilizzo lo splatting (per vertex) + il detail mapping (tecnica utilizzata in irrlicht)+un ulteriore layer per il lightmapping (a basso dettaglio).
Per come avevo progettato il tutto devo dire di essere soddisfatto anche se devo rivedere un po la stabilità dell'algoritmo perchè mi passa in alcuni punti da ~100FPS a ~54 FPS considerando che comunque mando su schermo (in questo test) molta più geometria di quella che sarà visualizzata nel gioco (che avrà una inquadratura dall'alto tipo warcraft ).

In ogni caso eccovi lo screen... (il terrain è composto da ~512.000 poligoni (512K per l'esattezza)

L'immagine è 800x600... anche se è stata ripresa da 1280x1024 quindi molti dettagli tipo il detail mapping non si vedono bene (aggiungiamoci pure il fatto che non ho utilizzato trilineare+anisotropico per il texture filter :( )

Vi farò sapere come procederà il lavoro!

15 marzo 2007

Ipno-Circuiti

Ieri... per concedermi una pausa con lo sviluppo software.... mi sono dedicato un po all'hardware :D
Così con Luca abbiamo costruito un simpatico ipnocircuito (più che altro ho fatto solo da assistente a Luca con qualche saldatura). Fortuna che abbiamo trovato le componenti... adesso ho anche in camera un ua741 sulla scrivania perchè è bello XD

Il circuito è un lampeggiatore a led con frequenza di lampeggiamento regolabile grazie ad un trimmer... mentre il controllo dell'accensione dei led è affidata ad un chip (anzi un integrato operazionale per essere precisi... dato che Luca "se non sbaglio" lo chiamava in un modo simile) ua741 e ad un condensatore che "detto in maniera profana" controlla l'input da dare al chip.

Una volta costruito siamo rimasti a guardare quei cavolo di led per un sacco di tempo... poi arriva mio fratello e... si mette a guardare il circuito anche lui... dopo un po ho realizzato che due led verdi a quella frequenza sono ipnotici :P (questo prima che Luca ci dava una dimostrazione di multimedialità del circuito collegandolo con un paio di cavetti prima ad una cassa e poi direttamente allo stereo mandando l'illuminazione in sincronia con l'audio :D )

Il tutto comunque (tranne l'exploit dello stereo) lo abbiamo firmato e lo ha messo su YouTube!
Buona Visione!


08 marzo 2007

...dopo qualche giorno

Ciao!
scrivo dopo qualche giorno dall'ultimo post...
1)perchè mi sono beccato una di quelle influenze subdole che non ti aspetteresti mai...
2)perchè il tempo libero che avevo l'ho impiegato a sviluppare quasi al 90%

I risultati ci sono... anche se sono da affinare.
Per prima cosa ho concluso il quadtree generator per il motore grafico. Ho fatto un po di test (dopo un giorno e mezzo di debugging ^^) e sono arrivato alla conclusione che, a quanto pare, l'albero mi viene generato bene e in un tempo di caricamento tuttosommato accettabile. Ho anche provato a farlo lavorare.... in alcuni tratti ho qualche problema di stabilità... ma in generale pare che lavori bene e i risultati... se si mantengono così sono davvero fantastici (almeno per quanto riguarda il framerate!)
che infatti è ~73 FPS.
Per quanto riguarda invece la grafica... beh non ho delle texture bellissime ma pare che rende discretamente. Per la grafica ho utilizzato una strana tecnica di terrain splatting... ben diversa da quelle classiche... diciamo un po primitiva ma riadattata per i miei scopi!

Come secondo progetto (quello per rilassarmi.. da sviluppare in una settimana o giu di li) mi sono messo a sviluppare il remake di Gorilla (un gioco per QBasic) su GameBoy Advance.
Questa volta utilizzo ben poco le potenzialità dell'hardware di questa consollina (dato che voglio ricostruire quella grafica primitiva che era fondamentalmente simpatica per il gioco originale).
Mi limito a lavorare in MODE 3 (che tuttavia è la più pesante poichè gestisce una profondità di colore a 15bit) e a renderizzare i singoli pixel quando accade qualcosa. Ho già disegnato il gorilla e il tiling dell'edificio (o meglio... l'ho scritto con il blocco note :P) e ho codato alcune funzioni di rendering. Mi dispiace di non avere con me uno screenshot... appena vado sul computer da sviluppo me lo salvo e ve lo posto!

ciaoooooooooooo!

02 marzo 2007

Week End!

Questi giorni non ho bloggato molto... questi giorni non ho proprio bloggato ^^
sarà perchè ho passato il tempo libero debuggando i miei soliti stupidissimi errori sul motore grafico... pessima cosa se ti capita con una certa frequenza... probabilmente dovrei smettere di fare test ^^ tanto sono quelli che sbaglio... il codice del motore in fondo funziona :P
E infatti stamane ho tirato un sospiro di sollievo (~3700 righe e tutto pare funzionare per il meglio).
Adesso tocca alla parte più scomoda per questo motore (ovvero quella che deciderà quanto sarà veloce il gioco che ci svilupperemo sopra) ovvero il terrain generation e il terrain rendering.
Ho un paio di strade che potrei intraprendere... ma una mi è decisamente più simpatica... anche se non molto attuale (ma in fondo il gioco è per design impostato su grafica decisamente non al top... quindi chissene! preferisco la velocità e la grandezza degli spazi!)

Per il resto oggi pomeriggio faccio un altro salto al BlockBuster e vedo se riesco a trovare qualche titolo che sa un po di retrogaming (nostalgia del passato) ma che senz'altro farà la sua figura nella mia mensola ludoteca :D
Avevo anche messo gli occhi addosso a DooM e Quake che essenzialmente sono fondamentali in una mensola che contiene le glorie della videoludica... tuttavia sono reperibili sul sito di idSoftware per la modica cifra di 20-25$ ciascuno O_o (GoodBye!)
In ogni caso vedremo oggi dove andrò a parare... anche se ho gia in mente da parecchi giorni IceWindDale, Baldour's Gate ma anche un WarCraft III non sarebbe male... senza contare che penso ci saranno delle new entry ^^

Vabè! vi farò sapere :P
 
Google