Università degli Studi di Pisa Corso di Laurea Specialistica in Tecnologie Informatiche Corso di Realtà Virtuale Presentazione progetto: Red Cross Wars di Marco Fais Introduzione Realizzato come progetto per il corso di Realtà Virtuale First Person Shooter ispirato al buon vecchio Quake 3 Arena (dal quale prende in prestito qualche modello e alcune texture e suoni) Red Cross Wars 2 Strumenti Utilizzati Sviluppato usando XVR Codice: linguaggio di scripting s3d alcune parti in OpenGL Modellazione 3D Studio Max 9 plugin Polygon Cruncher per la semplificazione di alcuni modelli Deep Exploration 5 Red Cross Wars 3 Codice Codice organizzato in classi classi che rappresentano oggetti della scena ognuna ha un suo metodo Draw (e si occupa di disegnare le sue cose) classi che rappresentano altri oggetti (ad esempio la partita) Red Cross Wars 4 Classi: oggetti della scena Map, che modella la mappa include un piccolo parser per leggere le informazioni dal file di configurazione Character, che modella il personaggio include una macchina a stati per la gestione delle animazioni e i metodi per il calcolo della collision detection Menu Red Cross Wars 5 Classi: oggetti della scena PowerUp, che modella oggetti come munizioni o energia AmmoRail, che rappresenta una railata AmmoRocket, che rappresenta un rocket include i calcoli della collision detection SPObject, che modella uno dei bersagli della modalità single player Red Cross Wars 6 Principali altre classi Sfx, che costituisce un wrapper per l'audio sopra le classi di XVR SinglePlayer, che si occupa della gestione di una partita in single player Red Cross Wars 7 Principali altre classi MultiPlayerServer, che gestisce il server durante una partita multiplayer principalmente funge da interlocutore tra client e li sincronizza MultiPlayerClient, che gestisce il lato client in una partita multiplayer chi ospita il match avrà un oggetto server e un oggetto client che si connette al server locale come un qualsiasi altro client Red Cross Wars 8 Interazione con l'ambiente Mediata: si interagisce tramite il proprio personaggio, con visuale in prima persona Mouse + Tastiera per muoversi nel mondo e guardarsi attorno Solo tastiera nei menu Red Cross Wars 9 Mappe Disponibili 3 diverse mappe Per ogni mappa oltre al modello è presente un file di configurazione nome del subset che rappresenta il terreno posizione della mappa nel mondo eventuale fattore di scala posizioni degli oggetti presenti nella mappa Cielo realizzato con una skysphere Red Cross Wars 10 Mappa 1: Military Camp Si è partiti da un modello di un campo militare trovato su internet in formato .max Modifiche apportate: eliminazione degli oggetti superflui per alleggerire la scena semplificazione dei modelli rimanenti modellazione di nuovi oggetti per riempire gli spazi lasciati vuoti dagli oggetti eliminati Red Cross Wars 11 Mappa 1: Military Camp Red Cross Wars 12 Mappa 2: Space Map Una piattaforma nello spazio modellata da zero Red Cross Wars 13 Mappa 3: Q3tourney5 Una delle mappe di Quake 3 Arena Diversi passaggi di formato: dal file .bsp delle mappe di Quake 3 a VRML usando un tool da linea di comando (q3bsp) da VRML al formato .max di 3D Studio Max usando Deep Exploration 5 Red Cross Wars 14 Mappa 3: Q3tourney5 Red Cross Wars 15 Armi Due tipi di armi disponibili Rocket Launcher Railgun Entrambe prese da Quake 3 Arena conversione modelli da .md3 a .max ancora con Deep Exploration Red Cross Wars 16 Character Presente un unico modello come character Modello di un membro della SWAT trovato su internet in formato .max già texturizzato con lo scheletro (biped) Modifiche apportate: semplificazione della mesh del modello aggiunta delle armi realizzazione delle animazioni (corsa in avanti e all'indietro) Red Cross Wars 17 Character Red Cross Wars 18 Powerups Rotazione attorno all'asse y Movimento oscillatorio verticale Red Cross Wars 19 Modalità di gioco Single player obiettivo: colpire tutti i bersagli entro il tempo limite Multiplayer: Free For All tutti contro tutti, vince il primo che raggiunge il frag limit Team Deathmatch a squadre, vince la squadra che per prima raggiunge il frag limit Red Cross Wars 20 Single Player: bersagli Tre diversi tipi di bersagli Non tutti visibili nello stesso istante compaiono a gruppi di 5 alla volta rimangono visibili per un determinato periodo di tempo (dipendente dal tipo del bersaglio) Red Cross Wars 21 Single player Red Cross Wars 22 Multiplayer Red Cross Wars 23 Menu Indipendente da controlli html Gestione della tastiera per l'inserimento di informazioni quali l'indirizzo ip e la porta del server o il nome del giocatore Red Cross Wars 24 Menu Red Cross Wars 25 Audio Audio 3D per riprodurre i suoni durante il gioco passi del giocatore rocket railate esplosioni I suoni nel menu non usano audio 3D Red Cross Wars 26 Altri dettagli implementativi Le animazioni di character, rocket e rail sono indipendenti dal frame rate si fa una stima del frame rate corrente considerando il tempo impiegato per disegnare gli ultimi 10 frame si aggiornano le posizioni degli oggetti coerentemente con tale valore Red Cross Wars 27 Altri dettagli implementativi Collision Detection IsColliding sull'obj della mappa Character – Mappa Rocket – Mappa Railata – Mappa IsColliding sull'obj linkato alla mesh del Character Rocket – Character Railata – Character Test sulla distanza Character – Character Red Cross Wars 28 Possibili sviluppi futuri... Un qualche effetto alla coda del rocket, in modo da renderlo più realistico Simulazione della fisica più accurata Utilizzo di lightmap nei modelli delle mappe Qualche altra modalità multiplayer Last Man Standing Capture The Flag Un'intelligenza artificiale in modo da poter aggiungere dei bot alla partita (sia single player che multiplayer) Red Cross Wars 29