Friday, July 25, 2008

Orbite

Le operazioni per l'implementazione del tempo procedono.
Attualmente ho un orologio, in grado di gestire il passare del tempo, con virtualmente qualsiasi velocita'.
Ovvero posso impostare il calendario al 7 luglio del 3273, e fare in modo che ad ogni secondo trascorso nella realta', nel gioco sia in trascorso un minuto, un millennio, sei millisecondi, eccetera.
Questo è indispensabile per poter poi regolare la fisica dell'universo, ad esempio le orbite dei pianeti.
La terra ruota su sè stessa in 24 ore, e orbita attorno al sole in 365 giorni, mentre la luna orbita attorno alla terra, per tutto ciò ovviamente serve un orologio, e per poterne apprezzare gli effetti si deve poter accelerare anche il passare delle ore.
Quello che segue è il primo esperimento un pò più serio di quanto avete già visto: la terra che per l'appunto ruota attorno al sole, e la luna a sua volta attorno alla terra, mentre la terra ruota effettua le sue rotazioni quotidiane.
Le orbite per ora sono circolari, non ellittiche, ma non è importante, l'importante è che l'orologio funzioni.

Monday, July 21, 2008

Luce solare

Prima di dedicarmi al calendario, volevo sistemare i problemi ancora presenti.
Uno di questi, nato dopo la ristrutturazione del codice, riguardava l'errata illuminazione del sole, ovvero i pianeti venivano illuminati come se il sole si trovasse in un posto diverso da quello effettivo.
Sistemata la faccenda, ne ho anche approfittato per ridurre l'intensità delle lens flares effettivamente troppo appariscenti.


E a costo di sembrare uno spaccone voglio dire che adoro l'aspetto che ora ha il sole, specie quando lo si vede da lontano!

Friday, July 18, 2008

Tempo

Fin'ora l'universo di Tau Ceti è rimasto perennemente congelato in quell'unico attimo indefinito, dovuto alla mancanza di tempo.
Ma il tempo è fondamentale per qualsiasi cosa, in primis per la creazione delle animazioni, ma anche per il calcolo delle orbite, della fisica.
La nostra terra ruota attorno a sè stessa in 24 ore, ad esempio.
Tempo, appunto: è arrivato il momento di implementarlo.

Ora, una delle sfide più grosse sarà quella di riuscire a regolarne il suo scorrere scegliendo diverse velocità: non posso ovviamente farvi giocare per 10 giorni di fila solo per raggiungere la Luna, anche perchè sarebbe un'esperienza molto noiosa.
Molto meglio poter accelerare il tempo nei momenti di calma, magari di 10, 100, 1000 volte, in modo da poter compiere lunghi viaggi in tempi ragionevoli, senza dover rinunciare ad un minimo di realismo.

Non sarà semplice, ci ritorneremo, per ora eccovi un video della terra non piu' immobile, ma che finalmente ruota su sè stessa.

Thursday, July 17, 2008

Lens Flares crescono..

Seguendo la scaletta delle cose da sistemare, che ho pubblicato il mese scorso, tra le varie attività vi era anche la manutenzione delle lens flares.

















































Al di là dell'aspetto grafico, che si risolve con photoshop e pazienza, quel che non andava bene era che la dimensione degli artefatti non dipendeva dalla distanza della fonte luminosa.
Creando cosi' effetti piuttosto brutti quando ci si avvicinava troppo al sole.
Ho sistemato un pò di cose e finalmente sono più soddisfatto del risultato, tanto che a mio avviso per quanto riguarda il sole si può tranquillamente togliere la mesh sferica e lasciare solo la lens.
Che ne dite?
Nel filmato potete anche farvi un'idea di com'e' venuto ora Saturno.


Monday, July 14, 2008

Buco Nero

Uno dei problemi con i quali ho combattuto fino a sabato scorso riguardava la definizione dei piani di clipping.
Tutte le schede video infatti, per guadagnare in prestazioni, permettono di impostare due piani, detti piani di clip, che definiscono la zona entro la quale gli oggetti devono essere considerati visibili o, analogamente, le due zone dello spazio nelle quali NON vanno disegnati tutti i triangoli che vi appartengono.
Il concetto che sta alla base di una simile decisione è abbastanza semplice ed intuitivo: un oggetto molto lontano da noi sarà talmente piccolo che difficilmente sarà anche visibile. Quindi tanto vale nemmeno disegnarlo, si risparmiano energie. E un oggetto troppo vicino idem, tanto vale considerarlo dietro alla nostra nuca e comunque non visibile.
Definiti sia il piano di clip "lontano", che quello "vicino", l'area racchiusa tra di essi, chiamata "frustum", è di fatto l'unica porzione dello spazio che viene considerata dalla scheda video, ed è anche la zona dove viene implementato lo z-buffer.
Z buffer che, mi serve per disegnare quei pianeti tipo Saturno, con l'anello, dove non è sufficiente affidarsi alle normali per evitare i problemi di facce nascoste.
Ora, lo spazio e' immenso, lo z-buffer no. Se, come detto, definisco un unico z-buffer per tutto il settore, esso avra' una risoluzione ridicola, essendo esso a 16 bit.
L'idea è quella quindi di racchiudere solo il pianeta dentro il frustum, e cambiare frustum ogni volta che disegno un altro pianeta. In questo caso le dimensioni saranno non più quelle dell'intero sistema solare, ma bensì del solo anello, e lo z-buffer in questo caso funziona decorosamente.

Fino a sabato ho combattuto come un disperato cercando di far star dentro al frustum il pianeta, con risultati pero' catastrofici, come potete leggere qui se ne avrete mai voglia.
Fortunatamente grazie al forum gamedev ho trovato chi mi ha fatto capire cosa sbagliavo ed ora Saturno non ha più buchi!

Monday, July 7, 2008

Di ritorno da Manhattan...

..in questo sciagurato paese, incapace di pensar ad altro che al calcio e a berlusconi, ancora fuso dal jet-lag, volevo salutarvi e approfittarne per affrontare un argomento.
Più di una persona mi ha contattato in privato chiedendomi se poteva in qualche modo collaborare al mio progetto visto che in effetti da solo le cose vanno molto a rilento.

La risposta è "sì, però".

Il però riguarda le mie promesse. Non posso infatti garantire assolutamente nulla sulla riuscita del progetto e sul mio impegno. Tau Ceti infatti nasce come mio esercizio individuale per studiarmi le directx, motivato da un periodo di forte "depressione professionale", dove di fatto passavo intere settimane in ufficio senza aver nulla da fare. Ed avendo io bisogno di dimostrare piu' che altro a me stesso che non sono solo uno capace di scaldare una sedia, anzichè passare le giornate col solitario ho deciso di investire il tempo libero in qualcosa di quantomeno più edificante.
A partire da Febbraio sono stato (prevedibilmente) spostato dal posto precedente, ed ora ho un'attività parecchio più intensa rispetto alla precedente, pertanto il tempo da dedicare a Tau Ceti è attualmente quasi nullo.
Ora, ovviamente, non posso trascurare il lavoro per il mio hobby, e pur non avendo alcuna intenzione di fermare i lavori, non posso nemmeno garantire che le cose riprenderanno a viaggiare come avveniva ad esempio in gennaio. A meno che qualcuno mi assuma e mi paghi per lavorare a Tau Ceti :), cosa purtroppo fantascientifica in Italia, dove l'informatica e' solo fogli excel, email, "urgente", e query incasinatissime su inutili gestionali.

Pertanto, ogni vostro aiuto è apprezzato e grato, ovviamente mi arrogo la facoltà di decidere se quel che ricevo è adeguato o meno al gioco (ovvero, non ve la prendete se la vostra bellissima mesh non verra' inclusa nel gioco, se mi mandate un drago o un comodino), ma per onestà vi devo avvisare che potrebbe trattarsi di lavoro fatto per niente. O magari con 20 persone che collaborano invece riusciamo a terminarlo.
Non lo so, avevo il dovere morale di avvertirvi, dopodichè grazie in anticipo a tutti coloro che vorranno dedicarmi del loro tempo.