3D Village - ambiente virtuale in multi-utenza
Creazione di comunità virtuali in rete

Autore: Ignazio Locatelli (VRML DREAMERS)
Abstract
3D Village è un pacchetto software che implementa una applicazione Client/Server volta alla realizzazione di comunità virtuali on line. Il termine comunità virtuale va qui assunto nella sua forma più pura, intendendosi un ambiente virtuale 3D condiviso da più utenti contemporaneamente. Gli utenti connessi possono interagire fra di loro tramite diversi strumenti di comunicazione, che vanno dalla tradizionale chat alla possibilità di assumere particolari sembianze (avatar) fino alla realizzazione di una propria casa virtuale allinterno dellambiente.
3D Village è il motore software sopra il quale possono essere implementate numerose applicazioni multi-utenza. Questo paper analizza le funzionalità di 3D Village, considerando un esempio concreto in fase di sviluppo (attualmente operativo su Internet): DreamCity. DreamCity è un paese in costante evoluzione, la cui struttura, le strade, le case e le regole che ne determinano la vita sono completamente dipendenti dalloperato dei suoi abitanti.
DreamCity pone nuovi ed interessanti quesiti: come gestire lo sviluppo del paese? Quali regole seguire per garantire una pacifica convivenza fra i suoi utenti? Sono ipotizzabili nuove forme di democrazia? A fronte di queste richieste e problematiche, 3D Village si deve evolvere per poter fornire ai propri utenti i mezzi necessari per conseguire la realizzazione di una vera comunità virtuale.
Si ringraziano le seguenti persone per la collaborazione offerta nello sviluppo di 3D Village:
VRML DREAMERS: gruppo italiano di persone appassionate di VRML e realtà virtuale in Internet. Fondato agli inizi del 1997 il gruppo ha prodotto una enorme quantità di lavori in campo 3D su Internet, soprattutto per quanto concerne VRML. Il sito di riferimento del gruppo è: http://www.lucia.it/vrml. Tale sito contiene una grossa quantità di informazioni riguardanti VRML, tutorials, demo, progetti, links, e varie iniziative volte ad una maggiore diffusione di questo standard nel nostro paese. Per ulteriori informazioni, rivolgersi a vrmlds@logicom.it
Introduzione
La sempre maggiore diffusione di Internet e di hardware ad elevate prestazioni a basso costo ha reso possibile la realizzazione di applicazioni a forte contenuto multimediale ed interattivo distribuite attraverso la rete. In questo contesto, stiamo assistendo da pochi anni al tentativo di creare la tecnologia software necessaria alla distribuizione e fruizione di ambienti 3D in realtà virtuale. Lo sforzo più rappresentativo in questa direzione è rappresentato dallo standard VRML (la versione 1.0 risale al 1995, mentre è del 1997 la relativa standardizzazione ISO della seconda versione). A fronte di un utilizzo iniziale volto soprattutto alla ricostruzione di opere architettoniche, levoluzione dello standard ha consentito ben presto la creazione di ambienti virtuali caratterizzati da un elevato grado di interattività con lutente, consentendo allambiente di animarsi e reagire in funzione degli stimoli ricevuti dal suo visitatore. Grazie poi allintroduzione di una interfaccia programmativa verso Java, si sono di fatto estese enormemente le capacità del linguaggio.
In particolare, lutilizzo combinato di Java e Vrml consente di implementare interfacce di interazione molto più complesse, nonché di introdurre un elemento determinante: linterconnessione fra più utenti sfruttando applicazioni client / server.
Se si ripercorre velocemente la storia delle realizzazioni VRML dal 95 ad oggi, possiamo notare la seguente evoluzione:
Quale il prossimo passo? La risposta è facilmente immaginabile: lutente medio di internet vuole interagire con altre persone che come lui sono connesse alla rete, vuole avere a disposizione strumenti sempre più evoluti che gli consentano di comunicare e trasferire informazioni. A tal fine basti considerare il successo di IRC (Internet Relay Chat) con migliaia di utenti connessi a qualsiasi ora, pronti a trattenersi per ore in chat.
3D Village prende spunto da tutte queste considerazioni. Quello che si vuole implementare è un ambiente virtuale 3D che consenta una comunicazione molto più ricca di quella fornita da una semplice chat. Sfruttando 3D Village gli utenti possono condividere lo stesso spazio virtuale, interagendo con meccanismi molto più evoluti che si affiancano alla tradizionale chat. Utilizzando appieno linterfaccia Java-Vrml è dunque possibile interconnettere più utenti, consentendo loro di percepire la reciproca presenza (visualizzando e muovendo nellambiente i corrispondenti avatar) e di interagire fra di loro.
3D Village è il pacchetto software che consente la realizzazione di applicazioni multi-utenza. Lunica applicazione attualmente in fase di sviluppo che si basa sul pacchetto 3D Village è DreamCity, un paese virtuale da poco fondato e in attesa dei suoi primi abitanti. Nel corso di questo paper verranno analizzate le diverse caratteristiche offerte da DreamCity. Già da ora, vale la pena notare un fattore importante: labitante di questo paese virtuale non si limita a chattare con altri utenti; può prenotarsi un lotto di terreno, costruirsi la propria casa virtuale, andare a trovare amici nelle rispettive case, persino giocare a nascondino se preferisce. DreamCity consente ad un utente di avere una propria presenza stabile allinterno del paese: una seconda casa e una seconda vita su internet (pur con tutte le limitazioni che la tecnologia attuale impone).
Punti di partenza
3D Village è il frutto di una lunga attività in campo Java-Vrml. Pur rappresentando un esemplare unico nel suo settore per certe caratteristiche (quale la possibilità di crearsi una propria casa virtuale), 3D Village prende spunto da altre applicazioni simili, per lo più di tipo commerciale, presenti sulla scena Internet.
Il punto di riferimento principale per quanto riguarda ambienti in multi-utenza implementati utilizzando vrml è rappresentato senzaltro da Blaxxun, società con sedi negli USA e in Germania e da sempre allavanguardia in questo settore (http://www.blaxxun.com).
La base di partenza più importante è rappresentata comunque da una applicazione sviluppata dallautore e da Fabio Di Fabio, denominata MultiDream, già presentata alla scorsa edizione del NIR-IT. MultiDream ha rappresentato un ottimo esperimento per verificare la fattibilità di applicazioni di questo tipo sfruttando solo linterfaccia java-vrml (il solo è riferito al fatto che sia in MultiDream che in 3D Village non risulta necessario lo scaricamento di plug-in appositi, come invece nel caso di Blaxxun).
3D Village, pur prendendo fortemente spunto dallesperienza maturata con MultiDream, è stato completamente riscritto, razionalizzandolo in diverse parti e consentendo di ottenere una piattaforma facilmente estendibile e che consenta lintroduzione di nuove caratteristiche. La maggior parte del lavoro è stata infatti condotta nella realizzazione di funzionalità molto più avanzate sia per quanto riguarda la chat (che ora segue molto da vicino il modello di IRC, con gruppi di discussione e messaggi privati) che, soprattutto, per quanto afferisce alla realizzazione di un paese virtuale (costruzione delle proprie case e prenotazione dei lotti di terreno).
Per concludere questa breve introduzione, si ricorda che 3D Village è tuttora un prodotto in corso di sviluppo. Al fine di rendere sempre più accattivante e ricco lambiente, sono previste entro breve nuove funzionalità, quali linserimento di agenti autonomi, la possibilità di spostare oggetti nellambiente, nonché di lasciare messaggi in opportune bacheche per utenti che si connettano più tardi.
Descrizione del pacchetto software 3D Village
Prima di passare ad analizzare le caratteristiche dellapplicazione finale che si interfaccia allutente (DreamCity), vale la pena analizzare sommariamente il cuore del sistema: il motore multi-utenza. Non si intende qui procedere ad una analisi dettagliata, ritenendola non appropriata in questo contesto e preferendo lasciare spazio alla successiva esposizione delle ricche funzionalità e opportunità offerte da DreamCity.
Quali sono i compiti che deve assolvere un motore multi-utenza? Essenzialmente possono essere riassunti qui di seguito:
Il grafico seguente mostra il flusso di informazioni che si vertifica in fase di login (assumendo di avere un secondo utente, Client2, già connesso):

Come si può notare, il server si pone in attesa di una eventuale connessione: non appena questa giunge (messaggio May_I_Connect?), controlla se lutente può essere ammesso nellambiente e in caso positivo risponde con un messaggio Ok_Connect e fornendo tutti i dati per poter inizializzare la scena (in questo caso il messaggio Info User 2 conterrà informazioni circa il nickname del client 2, il suo avatar, ecc.). Contestualmente comunica a Client 2 che un nuovo utente è entrato nellambiente, fornendo tutte le informazioni necessarie per poterlo inserire nella chat e per fare comparire il suo avatar nellambiente 3D da lui visto. Si ricorda che per avatar si intende loggetto 3D che di fatto rappresenta lutente allinterno di un mondo virtuale. Tale oggetto si sposta o ruota in funzione della posizione e dellorientamento assunto dallutente corrispondente nellambiente.
A seguito della fase di login, il server deve continuamente mantenere la comunicazione fra tutti i clients connessi. Molto sommariamente, i messaggi che intercorrono tra server e client possono essere riassunti in queste categorie:
Messaggi testuali
Questa tipologia di messaggi è di fondamentale importanza. La chat rappresenta infatti il modo migliore per consentire la comunicazione tra gli utenti connessi. In seguito allesperienza di MultiDream nella quale era prevista una sola chat pubblica, si è deciso di potenziare questo mezzo di comunicazione inserendo la possibilità di creare dei gruppi di discussione e attivare delle chat private. In particolare i gruppi di discussione (creati dinamicamente durante le conversazioni) consentono di suddividere i messaggi testuali, evitando la confusione tipica di una sola chat pubblica.
Messaggi di posizione e orientamento degli avatar
Questa tipologia di messaggi è caratteristica delle comunità virtuali 3D. Una volta posizionato un avatar nellambiente, è necessario che questo si muova in funzione dei movimenti dellutente corrispondente (che naviga lambiente mediante i comandi di navigazione offerti dal suo browser vrml). In ogni istante, lavatar rappresenta lutente nella posizione da lui occupata. Se pertanto lutente 1 sta osservando lutente 2 standogli davanti, lutente 2 vedrà il suo avatar davanti a lui. Se lutente 1 decide di allontanarsi, allo stesso modo lutente 2 vedrà il corrispondente avatar muoversi in quella direzione.
Il rilevamento della posizione dellutente viene effettuato tramite opportuni sensori vrml: i dati raccolti dallapplicazione client (si tratta in sostanza delle tre coordinate x,y,z) vengono spediti al server in modo che questultimo li possa propagare a tutti gli altri clients connessi.
La figura seguente mostra il procedimento di aggiornamento della posizione degli avatar su tutti i clients connessi.

La nuova posizione rilevata dal sensore vrml agganciato al Client 2 viene trasferita al Server, il quale provvede a inoltrare tale informazione a tutti gli altri clients; questi ultimi, sfruttando linterfaccia Java/Vrml muoveranno loggetto-avatar associato al Client 2 nella scena 3D. In questo modo la posizione dellavatar rappresentante il Client 2 viene mantenuta costantemente aggiornata.
Creazione e ingresso in gruppi di discussione
In qualsiasi momento un utente può creare un gruppo di discussione. I messaggi inviati al gruppo sono visibili solo dai clients che lo hanno sottoscritto. Un gruppo viene automaticamente eliminato non appena il numero di partecipanti diventa zero. Le modalità tramite le quali creare un gruppo o unirsi ad un gruppo esistente dipendono dalla particolare applicazione montata sopra 3D Village. In seguito si analizzerà la soluzione adottata da DreamCity.
Autenticazione utenti
3D Village è predisposto per la registrazione degli utenti che accedono agli ambienti in multi-utenza. In occasione della prima connessione gli utenti sono invitati a fornire i seguenti dati:
Tutti questi dati possono essere modificati in qualsiasi istante. Successive fasi di accesso allambiente potranno essere effettuate semplicemente fornendo la coppia nickname password.
Lautenticazione di un utente ha lo scopo di associare ad un nick un solo utente, in modo da garantire lidentità della persona che si incontra nellambiente.
Gestione dei profili utente
Ad ogni utente connesso viene associato un certo profilo, corrispondente ai dati da lui immessi durante la fase di prima connessione (o modificati in seguito). Ogni client può avere accesso a parte di queste informazioni, tipicamente quelle relative agli hobby o a descrizioni di vario tipo.
Gestione dei lotti di terreno e inserimento delle case
La filosofia che sta alla base di 3D Village è quella della comunità virtuale, del paese in continua espansione: di un modo di vivere il virtuale che sia in grado di rispecchiare il reale. In questo senso si è pensato di aggiungere la possibilità per ogni utente di costruirsi in modo automatico e dinamico una propria casa. Le modalità realizzative sono molto semplici. Dati alcuni vincoli (in base alle dimensioni del lotto prenotato) ogni utente potrà costruirsi la propria casa registrandola in un file vrml (operazione possibile anche off line). Depositando questo file su un qualsiasi server internet, sarà poi possibile indicare al server 3D Village lurl della propria casa, scegliendo poi il lotto di terreno sul quale ubicarla.
3D Village deve svolgere tutti i compiti relativi al controllo dei lotti liberi, memorizzando di volta in volta sul server le informazioni circa le nuove case, quelle abbattute (lotti lasciati liberi), ecc.
Durante la fase di connessione da parte di un client, oltre allelenco di tutti gli avatar presenti, si dovranno fornire al client tutte le informazioni circa le case presenti in paese, in modo che la scena 3D venga assemblata in maniera corretta.
Le funzionalità sopra elencate sono le principali svolte da 3D Village. Prima di passare ad analizzare lapplicazione DreamCity, il prodotto finale con il quale gli utenti possono interfacciarsi (ma certo non lunico possibile), riporto solo qualche informazione di carattere implementativo.
Il server 3D Village è scritto completamente in Java (compatibile con la versione 1.02 del JDK della Sun). E importante far notare che il server nel suo complesso occupa meno di 40 Kb e che può essere eseguito su qualunque Server Internet che disponga di un ambiente run time per Java (praticamente tutti). E quindi garantita la massima portabilità dellapplicazione.
A riposo 3D Village non consuma risorse computazionali (rimane in attesa di connessioni). E strutturato sfruttando metodologie di multithreading, creando nuovi thread di esecuzione per ogni client connesso. Particolari files di log consentono di risalire al numero di utenti che si sono connessi, nonché ad eventuali problemi sorti durante le fasi di connessione.
Analogamente al server, anche i clients sono solitamente scritti interamente in Java (il solitamente è riferito al fatto che il server può essere interrogato da qualunque applicazione client ne soddisfi il protocollo di comunicazione). Per fare un esempio, il client di DreamCity è rappresentato da una applet scritta in Java 1.02 e occupa meno di 60 Kb (più la parte vrml, che per ambienti non molto complessi si attesta sui 20Kb, ottimizzando e zippando a dovere). Questo consente a chiunque sia dotato di un browser html e di un corrispondente browser vrml di poter usufruire di DreamCity, senza preventivamente doversi scaricare un plug-in apposito (come succede nella maggior parte delle soluzioni commerciali).
DreamCity
DreamCity è una paese virtuale basato sul software multi-utenza 3D Village. E realizzato interamente sfruttando Vrml e Java ed interconnettendosi ad un opportuno server internet.
I requisiti software per poter accedere a DreamCity sono minimi: basta disporre di un browser html (Navigator 3.x o superiore, Internet Explorer 4.x o superiore) e di un browser vrml 2.0 (preferibilmente Cosmo Player 2.x).
Entrando in DreamCity, si entra a far parte di una vera e propria comunità virtuale. Qui si utilizza il termine di comunità virtuale nella sua accezione più pura. Comunità implica un frequente scambio tra i suoi partecipanti, un reciproco e continuo influenzarsi. Chiamare comunità semplici servizi di web hosting come Geocities o Tripod può di fatto sembrare una forzatura del termine.
DreamCity offre possibilità di elevata interazione tra i suoi abitanti, li stimola a collaborare per la buona riuscita del progetto, del paese nel quale abitano.
Qui di seguito si procede ad analizzare i servizi offerti da DreamCity, elencandone le caratteristiche e le modalità tramite le quali potere entrare a far parte di questa comunità.
Ambiente 3D Multi-Utente
DreamCity è innanzitutto un ambiente 3D di realtà virtuale in multi-utenza. Lutente può navigare liberamente lambiente, spostandosi in qualunque parte del paese, semplicemente sfruttando i comandi di navigazione resi disponibili dal browser VRML.
Una opportuna applet Java si interfaccia allambiente VRML in modo da consentire linterconnessione con un server 3D Village. Linterconnessione al server consente allapplet di aggiornare la scena 3D nel seguente modo:
In qualsiasi momento, il collegamento al server consente di mantenere coerenti tutte le rappresentazioni dellambiente sui diversi clients.
La figura seguente mostra una tipica situazione relativa a DreamCity. Ci si trova nella piazza centrale e davanti allutente sono presenti due avatar, corrispondenti ad altri due utenti connessi.

Ingresso in DreamCity
Tutti gli abitanti di DreamCity devono essere registrati. Non esiste alcuna barriera allingresso; se lutente si trova alla sua prima connessione dovrà semplicemente registrarsi, fornendo nickname, password, tipo di avatar e altre informazioni opzionali che ne caratterizzano il profilo.
Successivi accessi a DreamCity potranno essere eseguiti semplicemente fornendo nickname e password.
Lo scopo principale della registrazione degli utenti è quello di consentire una relazione univoca tra un nick e la persona che lo sta utilizzando, evitando problemi di identificazione. Consente inoltre di tenere traccia della popolazione del paese, nonché fornire unutile base di partenza per eventuali statistiche di accesso, di crescita della popolazione, ecc.
A conclusione dello scaricamento dellapplet e dellambiente vrml, compare la seguente Dialog Box

Se si è al primo ingresso, si deve selezionare il bottone New User. La seguente finestra apparirà, invitando a completare i dati che caratterizzeranno il profilo utente. Di tutti questi dati, password e url avatar non verranno mai mostrati.

Si noti come lutente possa specificare un avatar personale mediante il quale essere rappresentato nellambiente. Il file vrml che descrive lavatar può essere ubicato da qualunque parte su internet.
Il pulsante Submit consente di inviare questi dati al server. Il server 3D Village controllerà che il nickname non sia utilizzato da un altro utente e in caso negativo risponde con un messaggio di OK, consentendo al client di connettersi allambiente.
Nel caso in cui lutente sia un utente già registrato in precedenza, basterà selezionare il pulsante Registered User (vedi Figura 4) e quindi verrà richiesto linserimento di nickname e password (Figura 6)

Subito dopo essere entrati in 3D Village, il client richiede al server tutte le informazioni di stato necessarie per aggiornare lambiente. Le informazioni richieste sono le seguenti:
Gli utenti presenti in paese allatto della connessione vengono elencati in una lista a scorrimento presente sulla destra dellapplet (vedere Figura 7). Per ogni utente si procede anche allo scaricamento del suo avatar, in modo da poterlo visualizzare allinterno dellambiente. Le posizioni di ciascun avatar sono necessarie per settare in modo corretto la posizione iniziale (i successivi movimenti verranno ricevuti quando lutente si sposterà).
In sede di connessione iniziale è inoltre necessario ottenere dal server lelenco dei gruppi di discussione attivi. I nomi di tali gruppi vengono elencati in una lista a scorrimento presente sulla destra dellapplet.
La figura seguente mostra lintera applicazione in funzione.

Come si può notare dalla figura precedente, gruppi e utenti connessi vengono elencati nelle due liste laterali.
Funzionalità di chat
Il meccanismo principale per consentire linterazione e la comunicazione tra gli utenti risulta essere la chat. Per questo motivo si è deciso di potenziare molto questo strumento, seguendo il modello utilizzato in IRC.
Nella Figura 7 è chiaramente visibile larea di visualizzazione per i messaggi di tipo pubblico. Tale area viene altresì utilizzata per la visualizzazione di messaggi di controllo provenienti dal server: si tratta solitamente di messaggi relativi alla creazione di un nuovo gruppo, allingresso/uscita di utenti e risposte ad eventuali richieste da parte del client al server.
Una sola chat pubblica risulterebbe però ampiamente insufficiente per gestire la comunicazione tra gli utenti. Già con 5 6 clients si incontrerebbero problemi non indifferenti causati dalla confusione tra i vari messaggi visualizzati. In aggiunta a questo motivo, si è ritenuto opportuno introdurre delle soluzioni in grado di tutelare la privacy della comunicazione qualora richiesto.
A tal fine, le funzionalità implementate sono le seguenti:

Avatar personalizzati
Una delle caratteristiche più interessanti di DreamCity e del pacchetto 3D Village è rappresentata dalla possibilità di accedere allambiente tramite un proprio avatar personalizzato. Questo consente da un lato una maggiore forma di comunicazione verso gli altri utenti (ognuno può decidere di rappresentarsi come meglio crede), dallaltro rende immediata lidentificazione di un certo utente (in quanto unico titolare di quellavatar).
La realizzazione di avatar da utilizzare in DreamCity deve seguire alcune semplicissime regole. Gli unici requisiti imposti sono infatti relativi alle dimensioni fisiche dellavatar, in modo che a riposo lavatar venga rappresentato con i piedi a terra.
Un altro aspetto che necessariamente deve essere tenuto in considerazione è relativo alla dimensione in termini di poligoni: avatar troppo dettagliati potrebbero portare ad eccessivi tempi di download oltre che a rallentamenti in fase di rendering sulle macchine meno dotate.
A parte questi vincoli, oguno può entrare a far parte di DreamCity con il corpo che preferisce.
Costruzione delle proprie case virtuali
Unaltra funzionalità fondamentale di DreamCity è rappresentata dalla possibilità offerta ad ogni abitante di costruirsi la propria casa virtuale. Questa caratteristica rende DreamCity un esperimento decisamente interessante ed unico nel panorama di Internet.
Laggiunta di questa funzionalità fa sì che lambiente possa evolvere nel tempo, perfezionarsi e crescere in funzione dei suoi abitanti. Pone inoltre tutta una serie di problematiche e spunti decisamente interessanti che verranno analizzati in seguito.
Per poter procedere alla realizzazione di una propria casa virtuale, un abitante di DreamCity deve seguire i seguenti passi:

Questo meccanismo risulta essere estremamente flessibile e dinamico. Un qualsiasi cittadino di DreamCity può crearsi la propria casa off line utilizzando un qualunque tool di sviluppo. Una volta realizzata la propria abitazione (o una qualsiasi struttura che vuole inserire sul proprio lotto) , non dovrà fare altro che parcheggiarla su un qualunque server internet e specificare lindirizzo in DreamCity.
Qualunque modifica allabitazione potrà essere effettuato sul file originario, senza modificare nessuna impostazione relativa a DreamCity.
In questo modo, lutente dovrà seguire soltanto alcune semplici regole (come per esempio quella di non superare i limiti dimensionali del proprio lotto) per realizzare la propria casa 3D.
Grazie a questa semplicità ed immediatezza è lecito attendersi una rapida crescita del paese nei primi giorni di pubblicazione di DreamCity.
Conclusioni
Questo paper ha voluto soltanto mostrare le caratteristiche principali del motore multi-utenza 3D Village e della sua prima e più importante applicazione: DreamCity.
Prima di chiudere, alcune considerazioni sono necessarie.
DreamCity offre ad un generico navigatore di internet la possibilità di calarsi in una comunità virtuale dai contenuti molto più profondi di quelli di una semplice chat o di una comunità in stile Geocities. Offre la possibilità di entrare in stretto contatto con altri utenti, di interagire mediante forme più evolute di comunicazione, nonché lopportunità di cooperare alla crescita effettiva della comunità. Tutti questi aspetti e queste nuove forme di interazione fanno sorgere una serie di problematiche e di domande decisamente interessanti (che probabilmente vengono a crearsi anche nei modelli più tradizionali di comunità virtuali).
Per esempio, come gestire la ripartizione dei lotti di terreno? Si assegnano i lotti migliori, di centro, agli abitanti più insigni o tramite aste di qualche tipo? Come si decide se un certo lotto debba essere destinato a verde pubblico? Come gestire la situazione di un cittadino che ha la fortuna di occupare un lotto centrale ma ha una casa scadente e che di fatto turba tutto lambiente circostante? Chi deve prendere queste decisioni?
Ci deve essere ununica persona responsabile? O magari è possibile organizzare delle assemblee periodiche tramite le quali decidere un nuovo piano regolatore? E se una persona deve esserci per eseguire rapidamente compiti di ordinaria amministrazione, come deve essere designata? In altre parole, il sindaco di DreamCity lo si elegge con tecniche di democrazia diretta?
Le domande poste qui sopra non sono paradossali. Forse lo possono essere in relazione alla situazione presente oggi. Ma un domani? Di fronte a comunità di centinaia di abitanti, appetibili anche per scopi commerciali (quali mostre di prodotti, agenti di commercio con i loro avatar che cercano di attirare lattenzione dei clienti), come verranno prese queste decisioni?
DreamCity non risolverà questi problemi: se non altro potrà fornire un primo spunto di riflessione per cominciare a pensarci.