Tuesday, May 27, 2008

Radar

Un pò a rilento (con mio sincero rammarico), ma la creazione del radar prosegue.
Con oggi finalmente posso farvi vedere un piccolo video, visto che qualcosa inizia finalmente funzionare.
Come detto più e più volte, non ho nessuna presunzione di voler rivoluzionare un genere o inventare qualcosa di nuovo, pertanto ho deciso di affidarmi ai vecchi e collaudati sistemi di rappresentazione tridimensionali tipici dei giochi spaziali.
Il concetto e' semplice: l'ellisse rappresenta l'area del radar, su di essa, perpendicolare, un segmento identifica un qualsiasi oggetto rilevato dal medesimo. La lunghezza del segmento indica la distanza tra l'oggetto e il piano ove siete posizionati. Se il segmento e' bianco, l'oggetto sta SOPRA di voi, se e' grigio sta SOTTO. Se l'oggetto e' alla medesima vostra altezza, il segmento diventa un punto.
Inoltre il radar utilizza un sistema di riferimento solidale con l'astronave, quindi se ruota l'astronave (come potete vedere dal filmato), e' la stazione spaziale che da l'impressione di girare all'interno del radar, questo per aiutare il pilota ad orientarsi: se in macchina girate in una rotonda, la vostra impressione sara' quella degli alberi che girano attorno a voi, e non gli alberi fermi e voi a girare.

Ancora purtroppo non funziona bene, quando si compongono due rotazioni (pitch e yaw) i risultati sono completamente sbagliati, e devo capire il perchè, ad ogni modo, superati questi problemi, sarà relativamente semplice espanderne la funzionalità affinchè visualizzi tutti i corpi presenti nello spazio e non solo la stazione spaziale, messa lì per test.

Wednesday, May 14, 2008

Il Radar


Come detto la volta precedente, un buon tool per la navigazione potrebbe essere un vettore che rappresenti costantemente la direzione di movimento relativa all'orientamento dell'astronave.
Per far cio', c'e' poco da fare, occorre iniziare a lavorare al radar, che tanto prima o poi avrei dovuto affrontare.
Per ora, come potete vedere (meglio se clickate sull'immagine) ho definito l'"armatura" del radar e ho pasticciato un po' con le coordinate.
Per ottenere l'effetto simil-3d ho disegnato con Paint Shop Pro un cerchio grande, ci ho fatto un bel buco in mezzo, ed ho applicato l'effetto "bevel".
Infine ho preso il risultato e vi ho applicato una proiezione prospettica per dargli l'inclinazione che vedete nella schermata, ridimensionato il tutto a 256x128 e dato in pasto ad uno sprite che lo visualizza costantemente.

Tuesday, May 6, 2008

Manovre 2


Un'altra utilità che dovrebbe migliorare la manovrabilità del nostro mezzo è il radar.
Il quale, a differenza di quanto avviene nei giochi di Braben, potrebbe a sto punto mostrare anche il vettore di movimento dell'astronave rispetto al suo attuale orientamento. Nell'immagine vedete una bozza dell'idea: le due linee diagonali tratteggiate rappresentano il campo visivo del giocatore, le linee bianche gli oggetti che stanno sopra il piano dell'astronave, e quelli grigi quelli che stanno sotto.
Inoltre la freccia rossa indica la direzione attuale dell'astronave, senz'altro piu' precisa delle classiche "stelle che ci vengono contro", senza contare che le stelle ovviamente se ne stanno belle ferme.
Che ve ne pare come idea?

Monday, May 5, 2008

[OT] Ei fù


Oggi è il 5 Maggio, auguri a tutti gli interisti, che tanto vinceranno SICURAMENTE questo scudetto ;)

Manovre


Come avete potuto notare dal video del precedente articolo, la manovrabilità dell'astronave è decisamente ostica, al punto che il nostro veicolo è di fatto non pilotabile.
Ho aggiunto oggi un primo aiuto. Che non sarè la soluzione di ogni male ma almeno rende le manovre un pò più semplici.
In sostanza, premendo DESTRA o SINISTRA, si accende il razzo di manovra opposto, e la nostra astronave inizia a ruotare nella direzione scelta. Il guaio è che una volta che si smette di azionare il razzo, il corpo continua a ruotate su sè stesso fino a quando non viene applicata una forza contraria, grazie all'inerzia (avete presente gli asteroidi che ruotano sempre su sè stessi? Ecco.)
Ovvero, per ruotare diciamo di 90 gradi ad ovest, dovete premere ad esempio SINISTRA, e prima di raggiungere i 90 gradi di rotazione, premere DESTRA fino a quando la rotazione non si arresta. E se lo tenete premuto un pò troppo, una volta fermatasi, l'astronave inizierà a ruotare verso est.
Irritante.

Così ho implementato un sistema di bilanciamento automatico che funziona così: tenendo premuto sinistra o destra si accende il razzo corrispondente, e l'astronave inizia a ruotare, ovviamente piu' lo tenete premuto e maggiore diventera' la velocita' di rotazione.
Pero', non appena spegnete il razzo/rilasciate il pulsante, si accendera' automaticamente il razzo opposto, che rallentera' la rotazione fino a quando arriverà a zero. Raggiunto l'arresto, automaticamente il razzo si spegne, e la vostra astronave a questo punto rimane immobile.
Rimane chiaramente l'effetto dell'inerzia, quindi una volta che smettete di premere un tasto, l'astronave non si fermera' all'istante, ma gradualmente. Quindi se dovete ruotare di 90 gradi, dovete azionare il razzo fino a 45 gradi, dopodiche' lasciare che gli altri 45 gradi siano a carico del razzo opposto che frena la rotazione. Ma questo non è Quake, è uno spacesim :)

I "dolori" verranno per la gestione del propulsore principale. Il comportamento attuale è fisicamente corretto, ma poco pratico: se l'astronave si muove diciamo verso nord, e, mentre è in movimento, la si ruota, l'effetto non è come nell'automobile quello di cambiar direzione di movimento, ma bensì verrà cambiato senz'altro l'orientamento di prua-poppa, ma la direzione di movimento rimarrà sempre verso nord. Se una volta cambiato l'orientamento si accendono i razzi o i retrorazzi allora la direzione varierà, ma ancora una volta non nella direzione di orientamento, ma bensì nella risultante della somma vettoriale tra orientamento e spostamento.

Insomma, un macello, del tutto inusabile quando si tratta di dover far manovre di "fino", tipo un attracco od un combattimento.
Devo trovare un modo per rendere la guida più immediata, senza rendere di contro la simulazione troppo irrealistica.