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
Scarica

Red Cross Wars