Vivere una Vita Alternativa dentro un Ambiente Sintetico

Transcript

Vivere una Vita Alternativa dentro un Ambiente Sintetico
Ambienti Virtuali e Giochi
Vivere una Vita Alternativa dentro
un Ambiente Sintetico
Stefano Cacciaguerra ([email protected])
1
Contenuti
Introduzione
Esempi
Caratteristiche
Come Programmarli
Come Gestire la Partecipazione in essi
2
Introduzione
2500 a.c.
Nella città sumera di Ur nasce il Gioco Reale di Ur. Il primo
gioco da tavolo in cui il giocatore è rappresentato da una pedina.
1664 d.c.
Un certo C. Weikmann inventa Konigsspiel il gioco del re. Un
esercito di 30 figurine preso dagli scacchi e antenate dei soldatini
per ciascuno dei 14 diversi ruoli di combattimento simulando le
lotte del potere dell’epoca.
1865 d.c.
L. Carroll scrive Alice nel Paese delle Meraviglie. Prende
forma l’idea di un viaggio paradossale nei territori della
fantasia.
1969 d.c.
Per facilitare la comunicazione tra poli universitari in america R.
Talyor dell’agenzia Arpa collega 4 calcolatori di università
differenti. Arpanet sarà la madre di Internet.
1972 d.c.
D. Arneson e G. Gygax creano il primo sistema di regole per
Dungeons&Dragons. Il primo gioco di ruolo moderno.
3
Introduzione
1978 d.c.
Nell’Università di Essex, in Inghilterra, fa la comparsa il primo
Multi-User Dungeon (MUD), ideato da R. Trubshaw. È ancora
un gioco fatto di solo testo che permette agli utilizzatori di
spostarsi in zone virtuale diverse e di dialogare tra loro.
1997 d.c.
I Mondi Virtuali ed i Massive Multiplayer Online Role Play
Games (MMORPG) diventano popolari negli USA. Il più
famoso è Ultima Online di R. Garriot, una simulazione della vita
medioevale in 3D. Il gioco conta 160.000 abbonati.
2005 d.c.
World of Warcraft, un mondo virtuale di ambientazione fantasy
ispirato ad un saga di Massive Multiplayer Online Real time
Strategy games (MMORTS) totalizza 5 milioni di abbonati.
Tratto dall’articolo Vite Parallele apparso sul
mensile Quark, marzo 2006.
4
Domande
Perché uno studente australiano di 24 anni dovrebbe comprare un’isola
che non c’è per 26500 dollari sul pianeta entropia?
Chi comprerebbe un paio di nike o di levi’s 501 per la propria
controparte artificiale?
Chi ucciderebbe (per davvero) un concorrente rivale dopo che ti ha
rubato la preziosa spada magica?
Domande assurde, eppure trovano la stessa risposta!
Un partecipante ad un Ambiente Virtuale
5
Gli AV Costituiscono una Realtà
Gli Ambienti Virtuali (AV) stanno entrando prepotentemente nelle nostre vite
tanto da costituire una seconda chance per molti umani.
Gli AV hanno un’economia, un governo, una valuta. Migliaia di Abitanti vi ci
nascono e vi ci muoiono.
Sono mondi di fantasia accessibili via web.
World of
Warcraft
Oltre 5 milioni di
abbonati
Project
Entropia
Turnover di 16.350.000
dollari in gennaio 2005
Second
Life
Centinaia di negozi
dalla Ferrari all’i-Pod
66
Ambienti Virtuali
Ambiente virtuale (AV) è il termine utilizzato per indicare una realtà
simulata creata attraverso l’uso del computer.
Attualmente, il termine è utilizzato per la rappresentazione virtuale di un
sistema complesso: dai videogiochi ai simulatori di volo.
Alcune delle caratteristiche principali degli ambienti virtuali sono:
di sfruttare una rappresentazione sensoriale talmente immersiva da
essere percepita come reale dai partecipanti,
di supportare le azioni di più utenti contemporaneamente e la
formazione di gruppi,
di permettere l’interazione con entità sintetiche intelligenti,
di usufruire di dispositivi embedded come PDA e SmartPhone od
oggetti ad hoc come casco od occhialini, auricolari, cyberglove e
cybertuta.
7
Rappresentazione Sensoriale Realistica
Un AV deve dare al partecipante la sensazione di essere inserito
all’interno di un ambiente talmente immersivo da permettergli di
sviluppare abilità che potrebbe sfruttare nel mondo reale.
Esempio eclatante: Simulatore di Volo.
Problema il livello di dettaglio costa sia in termini computazionali sia in
termini di memoria utilizzata!
Negli AV è importante sviluppare solo i dettagli che sono
fondamentali per la realizzazione della simulazione.
Esempio eclatante: Gara di automobili.
È interessante la realizzazione del circuito, non dello sfondo (platea,
box, …)
8
Ambiguità
Attenzione all’ambiguità della parola realistica.
Non è legata al fatto che l’ambiente riprodotto ne deve per forza
richiamare uno esistente.
Possono esistere degli ambienti virtuali che vogliono promuoverne una
supposta o riprodurre una realtà fantastica .
Ad esempio, si cambiano le leggi della fisica
da quella terrestre a quella lunare.
Ad esempio, mondi fantastici come EverQuest II.
9
Graphical Processor Unit
Cmq le moderne schede video montano micro processori e buffer di
memoria dedicati che permettono alla scheda grafica di sostituire nei
calcoli la CPU.
Questo effetto è talmente rilevante che le schede video sono definite
GPU (Graphical Processor Unit). Ad esempio Nvidia ed ATI.
In questo senso, risulta possibile utilizzare una grafica spinta:
10
Massive Multi-Player
La realizzazione di un gioco in modalità multi-player dipende dalla
gestione di 2 fattori principali:
Responsiveness
gli eventi che descrivono l’evoluzione del
gioco devono essere ricevuti dagli utenti in
tempo reale (vincoli real-time).
Reliability and Game Consistency
L’evoluzione del gioco deve essere descritta a
tutti i partecipanti nello stesso modo preciso e
Corretto ( tutti i giocatori adottano una
strategia in base allo stesso contenuto
informativo).
11
Dispositivi Mobili e Reti Wireless
Dispositivi Mobili come PDA e Smart-phone dispongono di
sufficiente potenza computazionale ed un’antenna che gli permettono
di partecipare ad AV.
Altri dispositivi dedicati:
Sony PSP, Nintendo Dual Screen e Nokia ‘ngage
Due tipi di rete:
La rete cellulare di 3G garantisce la disponibilità di connettività
su ampio raggio ma con transmission throughput limitato.
Le reti Wi-Fi, Bluetooth e HomeRF offrono una bandwidth
maggiore ma dentro un raggio limitato.
12
Interazione a Gruppi
Molte volte gli AV promuovano la formazione di team per risolvere un
problema comune.
Ad esempio, in Travian le alleanza proteggono i propri membri.
Gli AV promuovono la nascita di comunità virtuali: gruppo di persone
che utilizzano la stessa tecnologia via Internet per attività sociali.
la creazione di vere e proprie società artificiali.
Ad esempio, in Travian, ogni partecipante deve competere con migliaia
di altri giocatori per il controllo delle risorse naturali e gestire
l’evoluzione di un piccolo villaggio.
13
Interazione con Entità Intelligenti
Gli AV moderni necessitano di un largo numero di partecipanti che spendono
il loro tempo nella creazione e nel mantenimento di relazioni sociali per un
lungo periodo.
Una possibile soluzione per popolare gli AV è realizzare entità autonome ed
intelligenti in grado di competere e cooperare con i partecipanti umani.
Dovrebbe essere indistinguibile il comportamento di un’entità software da
quello di un umano (passare un Turing Test cooperativo).
Per raggiungere questo scopo esistono due possibili approcci:
dotare l’entità di una conoscenza più approfondita dell’ambiente
(Reinforcement Learning)
permettere ad un’entità di analizzare il comportamento di un umano e
cercare di riprodurlo (Machine Learning)
14
Interazione con Entità Intelligenti
Neuro-Evolving Robotic Operatives (NERO):
un progetto di ricerca in collaborazione tra il Department of Computer
Sciences and the Digital Media Collaboratory at the University of Texas at
Austin.
Utilizza un algoritmo real-time di NeuroEvolution of Augmenting Topologies.
Per giocare ogni partecipante deve evolvere il proprio esercito di robot
cercando di insegnargli come comportarsi in alcune situazioni. Questo è
possibile facendo il tuning del cervello artificiale dei robot.
15
Reale-Virtuale-Reale
Esistono dispositivi pervasivi che permettono di aumentare
l’esperienza sensoriale all’interno di un AV (Realtà Virtuale):
Casco permette la visione stereoscopica
ed un effetto sonoro immersivo
Cyberglove e Cybertuta permettono
la sensazione tattile
Real Tournament Ogni partecipante usa un dispositivo
che integra tecnologie GPS, sensori, Wi-Fi, GPRS, su
un PDA per competere alla cattura di una serie di mostri
in una arena virtuale mappata sulla città di Lancaster.
16
Realizzare un AV tramite SPADES
SPADES (System for Parallel Agent Discrete Agent Simulation) è un
sistema middleware per simulazioni multi-agenti distribuite.
Permette di realizzare un AV all’interno del quale vivono entità
artificiali pensanti chiamate agenti.
Promuove la creazione di simulazioni ripetibili ed efficienti
distribuite tra più computer.
Un agente riceve delle sensazioni dal mondo simulato, pensa ad
una strategia per raggiungere il suo scopo, attua una mossa.
Il modello del mondo simulato riproduce la leggi del sistema
complesso riprodotto, spedendo sensazioni agli agenti e attuando le
loro azioni.
17
La Architettura di SPADES
CLIENT
Computer 1
Agent
pipe
SERVER
Communication
Server
Simulation
Engine
World
Model
Computer A
Computer 2
Agent
Computer N
tcp/ip
pipe
Communication
Server
pipe
Communication
Server
Agent
18
Ciclo del World Model
#include ….
…
main(….)
{
inizialize();
pauseModeCallback ();
getMonitorHeaderInfo ();
agentConnect (AgentID agent, AgentTypeDB::AgentTypeConstIterator at);
while (!fine_simulazione)
{
simToTime (SimTime time_curr, SimTime time_desired);
getMonitorInfo (SimTime time);
controllo_stato_della_simulazione();
}
finalize();
}
19
World Model
bool BallWorldModel::initialize (SimEngine * pSE)
Permette di inizializzare l’evoluzione del World Model.
bool BallWorldModel::finalize ()
Permette di gestire la chiusura dell’evoluzione del World Model.
void BallWorldModel::pauseModeCallback ()
Quando il sistema SPADES si attiva la simulazione viene bloccata in attesa della
connessione di tutti i componenti.
bool BallWorldModel::agentConnect (AgentID agent,
AgentTypeDB::AgentTypeConstIterator at)
Si occupa dell’inizializzazione del communication server e degli agenti
spades::SimTime BallWorldModel::simToTime (SimTime time_curr, SimTime
time_desired)
Ogni volta che il world model deve aggiornare l’evoluzione del mondo richiama questa
metodo che setta il tempo attuale a quello desiderato. All’interno di questa chiamata risulta
possibile controllare quello che sta accadendo nel mondo controllando le azioni degli agenti
e inviando le nuove sensazioni.
20
World Model: Monitor Interface
Monitor Interface:
Componente del SE che permette
di estrarre informazioni sullo
stato del mondo
Simulation
Engine
World
Model
M.I.
tcp/ip
spades::DataArray BallWorldModel::getMonitorHeaderInfo ()
Permette di esportare all’esterno della simulazione informazioni sul suo
andamento. In particolare, questa permette di scrivere un header per le
informazioni successive.
spades::DataArray BallWorldModel::getMonitorInfo (SimTime time)
Come sopra solo che si occupa di spedire le informazioni.
21
Agenti
#include ….
…
main(….)
{
processInitSense(…);
switch (aType){
case 0:
pAgentBehavior = new BuildingBehavior(…);
break;
case 1:
pAgentBehavior = new CarBehavior(…);
break;
case n:
…
break;
}
while (! done)
{
pacs_interface->receiveMessage();
pAgentBehavior->processMessage(m)
}
}
22
Agenti
BallWorldAgentBehavior::processInitSense(…parametri..)
Ritorna la initSense che è il messaggio di inizializzazione di un
agente, ritorna il contenuto attraverso diversi parametri (prodotta
generalmente dall’agentConnect).
CarBehavior(…parametri..) o BuildingBehavior(…parametri..)
Attivano agenti di tipo Car o di tipo Building.
FromCSMessage* pacs_interface->receiveMessage()
Si occupa di gestire l’arrivo delle sensazioni
bool pAgentBehavior->processMessage(m)
Si occupa di gestire l’invio delle azioni
23
Agenti
CarBehavior(int n, AgentSpeed s, AgentCommInterface* pCommInterface,
ActionServer* pActionServer, int p_hSize, int p_vSize, int p_aSize, int p_viewL)
n = numero degli agenti
s = velocità dell’agente (numero di pixel per unità di tempo)
pCommInterface = puntatore alla common interface
pActionServer = puntatore al proprio Action Server
p_hSize = parametro dimensione della piazzola dell’edificio (altezza)
p_vSize = parametro dimensione della piazzola dell’edificio (larghezza)
p_aSize = parametro alla dimensione dell’agente
p_viewL = parametro alla distanza massima (in numero di pixel) a cui l’agente può vedere
Altri parametri
PolarPosition lastMove = contiene l’ultima mossa in coordinate polari
Vector lastPos = contiene l’ultima mossa in coordinate cartesiane
paa = new AgentAction();
int id = id dell’agente
int offset[3] = le tre coordinate cartesiane che individuano la posizione dell’agente
int rotation[3] = le tre rotazioni rispetto gli assi cartesiani
int state = lo stato dell’agente
24
Partecipazione all’AV
Un umano partecipa all’AV prendendo il controllo di un agente
sostituendosi alla sua capacità di elaborare un strategia.
Per fare questo, abbiamo esteso il sistema middleware di SPADES
attraverso un participatory framework.
Agent
pipe
Interfaccia
Recver Sender
Avatar
Communication
Server
tcp/ip
S
E
W
M
M.I.
tcp/ip
25
Controllo dell’Agente
#include ….
…
void CarBehavior::doAgentAction()
{
/* scrivere il codice per il comportamento dell’agente
quando non è pilotato */
}
void CarBehavior::doUserAction(void* actionStruct)
{
/* scrivere il codice per il comportamento dell’agente
quando riceve le azioni dall’umano*/
}
26
Ultima Ora
Il mondo virtuale di Hive7 è stato interamente realizzato con
tecnologia AJAX, da molti considerata l'ossatura principale del
cosiddetto Web 2.0.
Un prototipo di metaverso, termine della letteratura cyberpunk che
indica un mondo digitale accessibile tramite interfaccia telematica.
27
Riferimenti
Vite Parallele
http://www.videoludica.com/news.php?news=201
Travian
http://www.travian.it
Neuro-Evolving Robotic Operatives
http://www.nerogame.org/
Project Entropia
http://www.entropiauniverse.com
Age of Empire III
http://www.ageofempires3.com
Second Life
http://secondlife.com
World of Warcraft
http://www.worldofwarcraft.com
Quake IV
http://www.quake4game.com/
Punto Informatico
http://www.punto-informatico.it/
Hive7
http://www.hive7.com/
28
Riferimenti
S. Cacciaguerra, S. Mirri, P. Salomoni & M. Pracucci Wandering About the City, Multi-Playing a Game, in Proc. the 2nd IEEE
International Workshop on Networking Issues in Multimedia Entertainment , Las Vegas (USA), January 2006.
S. Cacciaguerra, C. Cagneschi & R. Fabbri The Architectonical Design of Virtual Environments Fuels a new Form of the
WWW, in Proc. European Simulation and Modelling Conference 2005, Porto (Portugal), October 2005.
S. Cacciaguerra, M. Roffilli Agent-based participatory simulation activities for the emergence of complex social behaviours, in
Proc. of AISB05, Social Intelligence and Interaction in Animals, Robots and Agents, Hatfield, (England), April 2005.
S. Cacciaguerra, S. Mirri, P. Salomoni & M. Baldassarri Almost Blue: The Design of a Cooperative Game by Integrating
Accessible Interaction, in Proc. of Euromedia 2005 Toulouse, (France), April 2005.
S. Cacciaguerra , M. Roccetti & P. Salomoni, Multimedia Entertainment Applications, in Encyclopedia of Multimedia, ((B.
Furht Ed.), Springer, 2005, 510-518, included also "Digital Cinema", "In-home, In-car, In-flight Entertainment", "Interactive
Story Telling".
S. Ferretti, M. Roccetti & P. Salomoni On-line Gaming, in Encyclopedia of Multimedia, (B. Furht Ed.), Springer, January
2006, 653-660, included also “Dead Reckoning”, “Fairness in Online Games”, “Game Accessibility”, “Game Event
Synchronization”.
K. Mitchell, D. McCaffery, G. Metaxas, J. Finney, S. Schmid, A. Scott, “Six in the city: introducing Real Tournament - a
mobile IPv6 based context-aware multiplayer game,” Proc. of the 2nd workshop on Network and system support for games,
ACM press, 2003, pp. 91-100.
To appear
S. Cacciaguerra e M. Roffilli, The Artificial Intelligence promotes Internet communities.
29