StuntCAR : Simulazioni di Fisica !
(C) 2007/April - Francesco Settembrini - f.settembrini@poliba.it - www.dft.poliba.it
Alcune manovre ... interessanti.
L' Informatica e` la mia passione ...
... anche la Computer Grafica e` la mia passione ...
... anche la Musica e` la mia passione ...
... anche la Fisica e` la mia passione ...
... anche la Multimedialita` e` la mia passione ...
... queste ( e anche molte altre... ) sono le mie passioni !
Allora, mi sono chiesto:
- Perche` non realizzare un bel videogioco con la scusa di studiare la Fisica ?
E` proprio da questa motivazione che e` nato StuntCAR, simulatore di auto da scontro: la massima liberta` di scorrazzare su un'ampia arena ricca di ostacoli e rampe per poter compiere gimncane e salti alla guida del nostro veicolo preferito ( si puo` scegliere tra una smart, una GT e un fuoristrada ) .
E con la possibilita` di modificare interattivamente lo scenario di gioco spostando rampe, barili e birilli per adattarlo ai propri spericolati gusti !
Penso che siano rari i programmatori che, avendo deciso di realizzare una simulazione di fisica, non siano prima passati (magari inavvertitamente) per una animazione di fisica !
C'e` una bella differenza tra animazione e simulazione !
Infatti possiamo facilmente intuire che mentre una animazione e` semplicemente una riproduzione in sequenza di una serie di frame precalcolati una simulazione e` invece un qualcosa che evolve spontaneamente in una serie di frame calcolati dinamicamente (in informatichese si direbbe a run-time ).
In altre parole potremmo dire che una animazione e` un qualcosa di statico (pur rappresentando oggetti in movimento) mentre una simulazione e` un qualcosa di dinamico .
Una animazione si realizza riproducendo una sequenza precalcolata di posizioni ( in effetti sarebbe piu` giusto parlare di assetti perche` oltre alle traslazioni sono coinvolte anche le rotazioni ) mentre per realizzare una simulazione e` necessario risolvere a run-time le equazioni differenziali legate al moto (ricavate dalle note leggi della meccanica classica newtoniana) a partire dalle cosiddette condizioni iniziali.
Il vantaggio e il merito principale di una simulazione e` che davvero si puo` interagire con il sistema sintetico in maniera libera e naturale cosi` come avverrebbe nella realta` .
Ovviamente purche` le leggi adottate siano quelle reali del nostro mondo !
Dico questo perche` non e` affatto preclusa la possibilita` che si possano inventare mondi virtuali governati da leggi fisiche DIVERSE da quelle che noi definiamo reali : l'importate e` che tali mondi virtuali abbiano i connotati di un sistema coerente!
Ad esempio nel nostro mondo simulato possiamo anche definire una legge fisica che obblighi le persone a camminare con la testa all' in giu`!
L' importante e` che questa legge fisica si MANTENGA ... tanto poi le persone, prima o poi, si adatteranno a camminare a testa in giu`!!!
E` poi FONDAMENTALE che ci sia un GARANTE delle LEGGI FISICHE per evitare che le persone, che sin dalla notte dei tempi si erano adattate a camminare a testa in giu`( e SOPRATTUTTO CHE ERANO INNATAMENTE CONVINTE CHE L'UNICO E SOLO MODO DI CAMMINARE FOSSE A TESTA IN GIU`), si ritrovino improvvisamente COSTRETTE a camminare con la testa all' in su ! (sarebbe un GUAIO !!)
E chi e` IL GARANTE ?
... ma non mi dilungo piu` su questo argomento perche` questa, credetemi, e`davvero ... tutta un'altra storia !
L' applicazione StuntCAR e` un eseguibile (.exe) progettato per il sistema operativo Windows XP con Service Pack 2.
Questa scelta di abbandonare i sistemi operativi di MicroSoft piu vetusti e` dovuta al fatto che le diverse componenti software multimediali utilizzate dal simulatore sono gia` nativamente integrate in WindowsXP mentre sono (del tutto) assenti nelle versioni precedenti di questo sistema operativo.
E poiche` lo scopo principale di questo lavoro e` stato quello di realizzare un simulatore di fisica e non un videogioco ( ne` ci sono velleita` commerciali ) non mi sono preoccupato di retro-compatibilita` con i vecchi sistemi operativi di Bill Gates.
Per cio` che riguarda l'hardware e` consigliabile disporre di un processore Intel Pentium con frequenza di almeno 1 GHz : sconsiglio l'uso dei processori AMD (es. Athlon ) perche` si potrebbero presentare (gravi) problemi di incompatibilita` (l'applicazione fa intenso uso del set esteso di istruzioni SSI/MMS dei Pentium III/IV ).
Non e` richiesta una elevata quantita` di RAM mentre e` necessario che la scheda grafica non sia eccessivamente datata : ottime sono le sk grafiche di N-Vidia ad iniziare dalla serie 4xxx, accelerate per le OpenGL e per le DirectX 9 .
Anche la scheda audio puo` essere di tipo generico purche` il driver sia aggiornato alle DirectX 9 di MicroSoft.
L' installazione di StuntCAR e` guidata da un installer che si presenta in forma di eseguibile (StuntCAR_Installer.exe, oppure StunCAR_setup.exe) che provvede a copiare i files dell'applicazione in una cartella scelta dall'utente e ad impostare correttamente alcune chiavi del registry di Windows.
Questo programma di installazione si trova nella sottocartella contribs/redist. Una volta espanso esso occupera` circa 120 Mb .
Non preoccupatevi del seguente messaggio di avvertimento visualizzato all'avvio dell'installer (cliccate pure su OK ) :
esso e` dovuto al fatto che ho utilizzato una versione trial di Macrovision InstallAnywhere.
In seguito bisogna impostare le opzioni tipiche di una installazione, come l'unita` disco e la cartella in cui copiare i files ...
... e la eventuale icona sul desktop :
Ad installazione completata nel menu` di sistema ci sara` la voce StuntCar e sul desktop apparira` la relativa icona.
Avviato StuntCAR (con un doppio click sulla sua icona o dal menu` di sisteam) appare, dopo qualche istante, un dialogo che invita l'utente a selezionare la risoluzione grafica: se si ha un computer non particolarmente veloce e` consigliabile iniziare con una bassa risoluzione grafica (ad esempio 320x240 pixels) .
Dopo qualche istante apparira` la schermata iniziale che visualizza lo scenario di gioco e l'help dei comandi :
Comando Azione
ESC per terminare l'esecuzione ed uscire dal videogioco.
F1 per mostrare l' help .
F2 per passare in modalita` debug (visualizza forze, fps, statistiche, ... )
P per sospendere l'esecuzione del gioco ( andate pure a prenderVi un ... caffe`! ) .
S per attivare / disattiavre l'audio.
X per attivare / disattivare gli effetti speciali .
V per cambiare il punto di vista.
1,2,3 per scegliere il veicolo preferito .
tasti cursore per dirigere il veicolo ( destra, sinistra, avanti, indietro ).
spazio attento! Freeeenaaaaaaa!
Per una rapida preview suggerisco di vedere il seguente breve filmato ( aumentate al massimo (:->) il volume degli altoparlanti e cliccate sulla figura seguente per attivare il MediaPlayer ) :
Per iniziare a giocare, premete 1, 2 o 3 per scegliere la vostra auto preferita e ...
... buon divertimento !
Alcune manovre ...interessanti.
Vorrei ancora una volta ribadire il concetto che StuntCAR e` fondamentalmente un simulatore di fisica. In particolare esso e` nato dal desiderio di creare un ambiente virtuale in cui poter calare degli attori che interagiscono seguendo le leggi della meccanica.
Questo livello di interazione e` evidenziato oltre che dal fatto che si puo` guidare i veicoli ( tramite i tasti cursore) anche dal fatto che ogni oggetto puo` essere agganciato col mouse e spostato a piacimento.
Per agganciare gli oggetti basta cliccarvici sopra col tasto sinistro del mouse e, tenendo premuto il tasto, trascinare il mouse nella direzione in cui si vuole che avvenga lo spostamento.
Suggerisco di osservare il seguente filmato di esempio :
Premendo il tasto F2 si passa in modalita` debug che consente di ottenere informazioni aggiuntive sugli oggetti dello scenario :
Talvolta puo` risultare utile poter cambiare il punto di vista : per far cio` premere il tasto V (viewpoint) ripetutamente finche` non si trovi l'angolazione che ci soddisfi :
Se si dispone di una scheda grafica sufficientemente veloce si possono anche attivare alcuni effetti speciali come quello di polvere causato dall'attrito degli pneumatici sull'arena. Per attivare/disattivare tale effetto premere il tasto X :
Si puo` gareggiare a chi riesce a fare il salto piu` lungo (long jump) o anche quello piu` strano (crazy jump) :
E` anche disponibile una versione di StuntCAR che consente una visione stereoscopica : questo, in abbinamento al fatto che anche l'audio e` in 3D, consente all'utente che disponga di hardware adatto ( schede grafiche con uscita stereosopica, data-gloves, ecc...) di condurre entusiasmanti esperienze di realta` virtuale.
StuntCAR e` stato completamente scritto in C++ : cio` a richiesto un impegno di oltre 4 mesi di duro lavoro per scrivere (e testare) le oltre 75000 righe di codice.
Come compilatore ho preferito utilizzare il MicroSoft VisualC++ 7.0, di cui riporto lo screenshot del workspace relativo a StuntCAR :
Per i piu` curiosi o per coloro che, come me, condividono la passione per la computer grafica riporto di seguito un paio di files sorgente del progetto :
Cars.cpp, in cui si possono trovare le princiapli righe di codice utilizzate per modellare gli autoveicoli.
CSimStuntCar.cpp , il modulo principale di gestione dell'intera applicazione.
Nel concludere questa breve descrizione di StuntCAR vorrei rimarcare un paio di concetti, a mio avviso, molto importanti :
1. Creare un videogioco partendo da bits e bytes e` una... impresa !
2. Creare un videogioco partendo da bits e bytes e` si` una impresa ma talmente entusiasmante che vale sicuramente la pena di essere compiuta e che TUTTI DOVREBBERO FARE ALMENO UNA VOLTA NELLA VITA !!! (;->)
by: Francesco Settembrini ... nell'anno del Signore 2007 .