Sei sulla pagina 1di 14

1

VRML 2.0 con Java CAPÍTULO 17

Multiusuario y los Mundos de


Trabajo
2

VRML 2.0 con Java CAPÍTULO 17

Contenido CAPÍTULO 17

• Descripción conceptual
• Radiodifusión y Multicasting
• Ejemplo de Aplicación
3

VRML 2.0 con Java CAPÍTULO 17

Descripción conceptual

En el capítulo 7 y el capítulo 8 que trata un entorno multiusuario como


esencialmente una especie de base de datos compartida. Sin embargo, eso es
sólo la mitad de la imagen. Hay más de una entidad en un mundo virtual que
simplemente una entrada en una base de datos, una entidad también puede
ser visto como una fuente continua de datos de streaming, que se deriva de la
"piloto" a cada uno de los "aviones" (las copias de los piloto que se están
ejecutando en todos los otros hosts en la red).

El ejemplo más evidente de esto es discurso. Si usted habla en un micrófono en


su sistema, usted quiere que su discurso a emanar de sus aviones teledirigidos
sobre todos los otros sistemas en el mismo mundo virtual. Evidentemente, esto
no es una base de datos de operación. Si usted tiene una cámara de vídeo
conectada al ordenador, y se utiliza para enviar imágenes de su rostro que se
aplica como un mapa animado de textura en la cara de tu avatar, está de
nuevo el envío de datos de streaming.

Si lo hace captura de movimiento mediante un rendimiento de configuración de


la animación, el constante cambio de posición de todos sus articulaciones, es
otro ejemplo de flujo de datos que deben ser transmitidas a través de la red. Lo
mismo ocurre si lo hace la expresión facial captura. El formato MPEG-4 está
trabajando en la iniciativa de normalizar el formato de estos dos tipos de flujos
de datos. Puede encontrar más información acerca de MPEG en
http://www.mpeg.org/ y http://drogo.cselt.stet.it/ufv/leonardo/mpeg/.

Propuesta actualizaciones que se generan por simplemente mover tu avatar a


través del medio ambiente son también una especie de streaming de datos,
como es el texto que usted envía a cabo durante una sesión de chat en línea.

De estos ejemplos, es claro que un sistema multiusuario de verdad tiene dos


aspectos básicos a la misma: una base de datos de entidades en el medio
ambiente y algún tipo de mecanismo para la distribución de flujos de datos que
son emitidos por esas entidades. Vamos a examinar estos dos aspectos y eche
un vistazo a dos importantes optimizaciones: particionamiento espacial y
filtrado.
La base de datos mundo

Si examinamos el tipo de operaciones que suelen realizar en la construcción,


mantenimiento, y explorar un entorno virtual, nos encontramos con que
muchas de esas operaciones son idénticas a las personas involucradas en un
sistema de base de datos.

Por ejemplo, si crea un nuevo objeto en el medio ambiente (una mesa o silla,
4

VRML 2.0 con Java CAPÍTULO 17

por ejemplo), que está básicamente añadir un nuevo registro a la base de


datos que describe el mundo. Incluso si no hay "gestor de bases de datos"
participan como tales, es conceptualmente un "añadir" operación. Del mismo
modo, si usted decide destruir ese objeto, que está realizando un "eliminar"
que la entrada en operación en la base de datos. Si altera la apariencia del
objeto (por ejemplo, la pintura por la presidencia un color diferente), que está
realmente la actualización de la base de datos de entrada para ese objeto.
Todas estas operaciones requieren que exista una única "clave" para cada
entidad que lo identifica en la base de datos. Vamos a hacer referencia a este
último como identificador de la entidad.

El mundo como el tratamiento de una base de datos compartida también nos


permite abordar las cuestiones de la propiedad en una forma muy natural. Es
hasta el propietario de la base de datos para decidir quién está autorizado a
añadir, suprimir o modificar las entradas en el mismo. Además, cada entrada
puede tener un propietario asociado a él, a fin de evitar el vandalismo virtual
(por ejemplo, alguien de su pintura una silla feo color). También puede haber
un mecanismo para transferir la propiedad de la entidad.

Dado que puede haber casos en los que todos los múltiples procesos de intento
de actualizar un registro particular, al mismo tiempo, tiene que haber alguna
forma de registro de bloqueo. Por ejemplo, si un usuario intenta activar una luz
encendida, y otro para que llegue al mismo tiempo, sólo uno de ellos debe ser
capaz de alterar el estado de la luz, cualquiera que llegue ahí primero bloquear
el disco, hacer el cambio, entonces desbloquear el disco. El segundo usuario
hacer lo mismo, pero no podrá hacerlo hasta que el primer usuario ha
renunciado a la cerradura. También puede haber mecanismos de tiempo, a fin
de impedir la celebración de los procesos de bloqueo indefinidamente.

Por supuesto, la operación más común en el mundo de base de datos es


simplemente la recuperación de datos, ya que cualquier persona que explorar
un mundo virtual claramente tiene que ser capaz de obtener los datos que lo
describe.

Figura 17.1 muestra cómo la base de datos del mundo se ve. Tenga en cuenta
que esta base de datos metáfora no implica necesariamente el uso de un
sistema de base de datos reales. Se trata simplemente de una forma útil de
conceptualizar las exigencias de un entorno multiusuario.

Figura 17.1 La base de datos mundo


5

VRML 2.0 con Java CAPÍTULO 17

Particionado espacial

El modelo de base de datos de un mundo virtual es útil, pero hay algunas preguntas que
deja sin respuesta. La más básica es, "¿Cómo sabemos lo que para recuperar los datos?" Es
evidente que no la práctica de descargar todo un universo virtual cada vez que entrar en él,
ni de guardarlo en la memoria de todos los normales de un sistema informático. Incluso si
pudiera, la enorme complejidad del mundo virtual, haría que la prestación en 3-D
subsistema de rodillas. Lo que tenemos que hacer alguna partición es el mundo virtual en
pedazos más pequeños. Sólo las piezas que podemos ver realmente sería descargado,
almacenado en la memoria, y prestados.

Por ejemplo, el plano se muestra en la Figura 17.2. Si un usuario está en la cocina de esta
casa virtual, que no será capaz de ver el garaje o den. Si se mueven en la sala, se puede ver
la madriguera, pero aún no puede ver el garaje. Si la mayoría de deambular por la casa y no
ver en todo el garaje y, a continuación, los datos para el garaje no tiene que ser descargado
o prestado. Si van en el garaje, que ya no puede ver la cocina, por lo que la cocina no tiene
que ser prestados. Si la memoria está firme, los datos de la cocina puede ser desechado (y
más tarde vuelve a cargar, si es necesario).

Figura 17.2 espacial particionado

Vamos a hablar de particionamiento espacial en profundidad en el capítulo 21. Por ahora,


sólo tener en cuenta que un mundo virtual puede ser dividido en regiones, y que de región a
región, la visibilidad puede proporcionar una base para el filtrado de las actualizaciones en
un entorno multiusuario. Abrir la propuesta de la Comunidad ha reconocido la importancia
de la separación y espacial prevé un apoyo explícito a las regiones.
Streaming de datos

Como se describe anteriormente, la otra manera de ver un entorno virtual es pensar en ello
como un conjunto de entidades que están emitiendo continuamente todo tipo de datos:
audio, vídeo, posiciones corporales, expresiones faciales, movimiento de datos, texto, y
mucho más. Figura 17.3 ilustra este punto de vista.

Figura 17.3 streaming de datos

A fin de comprender cómo todo esto se procesa los datos de streaming, echemos un vistazo
a la forma de audio normalmente se manejan. Al hablar en un micrófono, la voz se
digitaliza los datos (o la muestra), lo que significa que la convierten en una serie de valores
numéricos. Estas son entonces dividido en marcos de la información, y cada marco está
comprimido. Los datos comprimidos para cada marco se envía a través de la red y
descomprimido en el extremo receptor, y la resultante de los valores numéricos se
convierten de nuevo en una señal de audio.
Latencia, Interpolación, y Protocolos de red
6

VRML 2.0 con Java CAPÍTULO 17

Uno de los principales desafíos en la construcción de cualquier tipo de sistema que soporta
la interacción multiusuario es reducir al mínimo el efecto de latencia. Latencia se refiere a
la demora entre el momento en una acción se lleva a cabo y el tiempo es percibido por los
otros componentes del sistema. Si el caso de la expresión, la latencia es muy notable, con
una demora de unos pocos cientos de milisegundos naturales puede hacer una persona a la
comunicación casi imposible.

Puede recordar el debate en el Capítulo 8 sobre TCP y UDP, y las importantes diferencias
entre ellos. Discurso de la comunicación es un ejemplo de donde UDP gana claramente a
través de TCP, UDP ya que ofrece mucho más baja latencia. UDP también es adecuado para
la multidifusión.

Discurso de marcos se envían mediante UDP. Esto significa que los marcos que no pueden
ser entregados de manera oportuna son simplemente descartados. Significa también que
algunas imágenes pueden llegar fuera de secuencia.

Cada discurso se le asigna un marco de número de secuencia. Si un marco de intervención


se ha caído, el receptor se dará cuenta de las diferencias y llevar a cabo una interpolación
entre los dos marcos que rodean. Por ejemplo, si habla 275 y 277 marcos de llegar, pero
276 no, el discurso va a construir un subsistema intermedio marco de colmar el vacío. Esto
reducirá la calidad de la voz un poco, pero una ligera degradación en la calidad suele ser
preferible a la latencia que se derivarían de la espera de una retransmisión de la falta de
marco.
Radiodifusión y Multicasting

Los paquetes pueden ser enviados a partir de un único host en la red directamente a otro
host, lo que a veces se llama unicasting. También pueden ser enviadas simultáneamente a
todos los hosts de su subred, lo que se llama radiodifusión. Radiodifusión es práctico en
redes grandes, por ejemplo, que no queremos que la gente pueda enviar paquetes de
difusión a todos los hosts en Internet. Una alternativa a la radiodifusión es la multidifusión.

Multicasting obras de dejar de lado una dirección en particular, llamado grupo multicast
dirección, que los paquetes se pueden enviar a. Cualquier host puede unirse a cualquier
grupo multicast, y entonces recibirá todos los paquetes dirigida a ese grupo. Esta técnica se
utiliza en Mbone, o Multicast Backbone, que soporta audio y video conferencia a través de
Internet.

Multicasting la gran ventaja es que reduce la carga de la red, ya que cada paquete puede ser
enviado y, una vez recibida por varios hosts.

No todos los hosts y enrutadores de red multidifusión de apoyo, pero con la llegada de la
nueva generación de estándar de la propiedad intelectual (PI-NG, también denominada IP
versión 6), es de esperar que la multidifusión serán ampliamente disponible.

Si llega marco de un discurso fuera de secuencia, una de dos cosas va a suceder. Si se trata
de un marco que no ha sido procesada, sin embargo, el marco puede ser utilizado en cola y,
a continuación, cuando llegue el momento. Si se trata de un marco que ya se ha procesado,
puede ser simplemente desechada. Por ejemplo, si llegan los marcos en el orden 275, 277,
7

VRML 2.0 con Java CAPÍTULO 17

276, pero el sistema sigue siendo la generación de audio de marco 273, entonces 276
marcos simplemente se coloca en su lugar correcto. Por otro lado, si el sistema ya está
transformación marco 277 llega al 276, 276 se descarta, ya que ya no es útil.

Evidentemente, el mismo enfoque puede utilizarse para otros tipos de datos de streaming.
Por ejemplo, si una entidad en el medio ambiente es que emite un flujo continuo de datos
con su posición, es posible interpolar datos que faltan y hacer caso omiso de los datos que
se reciban fuera de secuencia. En el caso de movimiento de datos, también es posible
extrapolar la ubicación de la entidad después de cada cuadro sobre la base de su velocidad
y, posiblemente, su aceleración.

Dead Reckoning y comportamientos de más alto nivel

Otra técnica es de estima, que a menudo se utiliza la RV en el militar. En un


algoritmo de estimación, el remitente es tanto el comportamiento de la
simulación completa de la entidad y el enfoque más simple extrapolación
también. Cuando los resultados de estas dos simulaciones difieren en más de
un margen de error especificada, una nueva actualización de mensaje se envía.

Esta técnica puede reducir drásticamente el uso del ancho de banda, ya que
las actualizaciones se envían sólo cuando son absolutamente necesarias.

En un sentido abstracto, estimación envía "nivel superior" de información,


como la velocidad y, posiblemente, los valores de aceleración. Esta técnica se
puede ampliar mediante el envío de muy alto nivel de comportamientos, por
ejemplo, una entidad podría enviar un "paseo" o "ejecutar" o "sonrisa"
comportamiento, tendría que llevarse a cabo en el extremo receptor.
Sincronización de datos

Otra consideración importante es que los diferentes flujos de datos (voz,


movimiento, etc) deben ser sincronizados. Por ejemplo, si las expresiones
faciales se envían en un flujo de datos y voz de datos en otro, tiene que haber
alguna manera de mantener la sincronización de labios de manera que
coincidan con los movimientos de la boca con los sonidos del habla.

Podemos sincronizar los flujos de datos por poner una fecha en cada paquete y
el uso de una sola vez para todos los diferentes tipos de datos de streaming.
Esta solución se aplica a mucho más que la sincronización labial, por supuesto,
por ejemplo, si tu avatar del movimiento está fuera de sintonía con la posición
de su cuerpo al caminar, sus pies no toquen el suelo en el momento adecuado,
y estudiará como si está de deslizamiento sobre el hielo.
Asociando múltiples flujos
8

VRML 2.0 con Java CAPÍTULO 17

No sólo hay que sincronizar el flujo de datos de una entidad en términos de


tiempo, también tenemos que ser capaces de asociarse con múltiples flujos de
la misma entidad. Por ejemplo, digamos que el sistema es capaz de manejar
plenamente spatialized de audio. Tiene que haber alguna manera para que el
subsistema de audio conocer la ubicación tridimensional de una fuente de
sonido, lo que significa que hay que asociar el movimiento de flujo de datos de
audio con el flujo de datos. Esto es fácilmente manejada por el etiquetado de
cada paquete de datos en cada entidad con el ID de la fuente, lo que puede
muy bien ser la misma entidad de identificación que sirve como un elemento
clave en el modelo de base de datos que se describe anteriormente.
Filtrado

Como puede imaginar, la cantidad de tráfico de datos generado en un entorno


virtual pueden ser enormes. Con cada uno de las decenas de miles de
participantes que emiten continuamente múltiples flujos de datos, se necesita
alguna forma de gestionar que el tráfico de modo que hosts conectados más
de los vínculos con poco ancho de banda todavía puede participar. Filtrado de
las pantallas de los datos de conexiones extrañas identificado como líneas de
bajo ancho de banda. Ambos Abrir Comunidad y CyberSockets han propuesto
técnicas para hacerlo.

Filtrado puede ocurrir en varios lugares. En el caso de un servidor central del


sistema, el filtrado debe aparecer claramente en ese servidor central. Un
sistema de multidifusión de filtrado puede tener un anfitrión que recibe todas
las actualizaciones y decide cuáles que transmita a los huéspedes que se
conectan a ella, con líneas de bajo ancho de banda, lo que es el método usado
por Open Comunidad, por ejemplo.

Independientemente de dónde se produce la filtración, el receptor necesita una


manera de informar al mecanismo de filtrado de lo que los datos a enviar y los
datos no enviar. El mecanismo de filtrado también necesita una manera de
informar al receptor acerca de las nuevas entidades que han entrado en
existencia o ser de interés para el usuario, así como una manera de informar al
receptor acerca de las entidades que dejen de ser pertinentes o salir de la
simulación total . Figura 17.4 ilustra cómo podría funcionar este filtrado.
(Downsampling se discutirá más adelante en este capítulo.)

Figura 17.4 Filtrado actualizaciones

Hay una serie de técnicas de filtrado, no todos los cuales son utilizados por
cualquier sistema.
Distancia basado en la Agudeza y filtrado basado en
9

VRML 2.0 con Java CAPÍTULO 17

La aproximación más simple es utilizar la distancia para filtrar las


actualizaciones. Si el ancho de banda es limitado, sólo los datos de las
entidades más cercano para el usuario son enviados a la acogida del usuario.
Este es el enfoque utilizado en el horizonte CyberSockets, y también se
corresponde con un aura de Sony en el sistema multiusuario.

Un enfoque de este tipo de obras, pero puede utilizar algunas refinamiento. Un


objeto grande que la distancia puede ser más pertinente que un objeto
pequeño que la cerca, por ejemplo, si el ancho de banda es limitado, puede
que desee ver el oso pardo de 10 metros de distancia, pero ignorar la housefly
1 metro de distancia, a pesar de que el housefly está más cerca . Esto puede
hacerse fácilmente mediante la sustitución de la agudeza a distancia. La
agudeza es una medida de la relación entre el tamaño y la distancia, por
ejemplo, si usted tiene una agudeza visual de 0,1, un objeto un metro de
altura, de pie a 10 metros sería en los límites de la pertinencia. Nada más
grande o más cerca sería más pertinente, algo más pequeño o más lejos sería
menos relevante.

Es evidente necesidad de estar separados agudeza valores para cada tipo de


flujo de datos, por ejemplo, usted podría escuchar algo viene de largo antes de
poder verlo. Es también a cada una de las entidades para fijar sus valores de
tamaño de manera significativa para cada tipo de flujo de datos.

La actual configuración de la agudeza valor debería ser dejada a cada uno de


los ejércitos, ya que factores tales como la resolución de la pantalla y el
número de canales de audio disponibles influirán en la forma en que esos
valores se establecen agudeza.

Independientemente de si la distancia o la agudeza se utiliza para filtrar las


actualizaciones, el filtrado de host o servidor central necesita saber la
ubicación del usuario y la ubicación de cada entidad, a fin de calcular la
distancia entre ellos.
Downsampling

Otra técnica para reducir la cantidad de datos enviados a un cliente es


downsampling. Como se recordará a partir de nuestra primera discusión de los
paquetes se redujo, la recepción de huéspedes que se espera que la
interpolación de los datos que no llega de manera oportuna. Un filtro de
acogida podrán optar por no enviar a cada actualización, sino que cada
segundo actualización para una determinada entidad. Envío de datos de esta
forma se reducirá la fidelidad de los datos resultantes, pero no en una forma
catastrófica.
10

VRML 2.0 con Java CAPÍTULO 17

Por ejemplo, si varias entidades están hablando a la vez, el filtrado de acogida


puede enviar cada discurso marco para la entidad más cercana al usuario, pero
sólo cada segundo discurso de marco para una entidad poco más lejos.
Entidades, incluso más lejos que sólo tienen uno de cada cuatro o cada ocho
enviados a través de actualización. Entidades más allá de una cierta distancia
no habría retransmitido las actualizaciones para el usuario a todos, en cuyo
caso downsampling este proceso se convierte en una distancia equivalente a la
agudeza o enfoque.

Tenga en cuenta que downsampling se aplica no sólo a los datos de expresión,


sino a las expresiones faciales y posiciones corporales, e incluso las
actualizaciones de movimiento.

Uso de las particiones de filtrado espacial

Particiones espacial, que se introdujo anteriormente, también son útiles como


base para el filtrado. Por ejemplo, si un usuario está en la cocina, que no es
necesario para recibir noticias de alguien de pie en el garaje.

Podemos optar por utilizar espaciales diferentes particiones para distintos tipos
de datos de streaming, por ejemplo, es posible que no pueda ver el garaje de
la cocina, pero puede que todavía escuchar el auto de puesta en marcha del
motor.
Ignorando Entites

Una técnica muy sencilla es simplemente hacer caso omiso de ciertas


entidades. Si un usuario encuentra una entidad molestos (por ejemplo, alguien
cantando fuera clave bailando la Macarena), pueden optar por ignorar los datos
de ese usuario. Ellos pueden optar por hacer caso omiso de cualquier
combinación de los arroyos, por ejemplo, si les molesta el canto, pero no el
baile, que silenciar el audio de esa entidad por decir la filtración de acogida de
no más adelante-los datos de audio a partir de esa entidad.

Por supuesto, es completamente imposible hacer caso omiso de otra entidad,


ya que pueden afectar el medio ambiente. Si se mueven alrededor de un
objeto, tiene que ser capaz de ver el objeto en movimiento (suponiendo que no
se está ignorando así como el objeto). En efecto, la molestia de cantar / bailar
avatar sería un hombre invisible, conocido sólo por el efecto que tiene sobre los
demás objetos de su visión del mundo.
Uso de Grupos de Pares y

Una variante de la función de ignorar es el uso de sus compañeros. Mediante la


designación de una entidad como un compañero, algunos datos se envían sólo
11

VRML 2.0 con Java CAPÍTULO 17

a los que los pares. Esto proporciona una forma de comunicación privada,
como un susurro en el barro.

Los grupos son otra variante de esta idea. Mediante la designación de algunas
otras entidades como parte de un grupo, puede configurar las conversaciones
privadas entre los miembros del grupo que no son transmitidas a los anfitriones
que no son parte de ese grupo. Esto es análogo a un canal privado de IRC en
un período de sesiones. El CyberSockets API, por ejemplo, apoya los conceptos
de pares y grupos.

Si todos los flujos de comunicación son procesados utilizando grupos, de


manera eficaz de crear una serie de "universos paralelos" que comparten el
mismo entorno virtual estático sino que se disjunta poblada por grupos de
entidades.
Locus de control

Cada entidad en el entorno virtual se encuentra bajo el control de algunos


procesos. Ese proceso es la fuente de todos los flujos de datos de esa entidad y
es responsable de la actualización de la escena base de datos con información
sobre la entidad. En efecto, el proceso es el propietario de la entidad.

Este propietario es responsable en última instancia de la reunión de alto nivel


de toma de decisiones para la entidad. También posee la base de datos de
entrada para la entidad y es teóricamente el único proceso que puede hacer
que las actualizaciones en nombre de la entidad. Esto se refiere a las
cuestiones de la seguridad y la identidad se ha señalado anteriormente.
Avatares

En el caso de un avatar, es necesario un proceso que presenta una interfaz de


usuario que permite a la persona que controle el avatar para llevar a cabo
diversas actividades. Esto puede ser cualquier cosa, desde un cuadro de
diálogo para AWT un equipo de animación de rendimiento, pero es necesario
estar allí en alguna forma u otra.
'Bots

En el caso de un agente autónomo (o "bot), es necesario que haya algunos de


inteligencia que permite que el proceso para responder a su entorno y
reaccionar en consecuencia. Sin embargo, este tema de fronteras en toda el
área de la inteligencia artificial, que está fuera del alcance de este libro.
Conexión a datos externos

En el caso de entidades que están impulsados por fuentes de datos externas,


tales como las cotizaciones bursátiles, necesitamos la interfaz entre la fuente
de los datos y la tecnología multiusuario.
12

VRML 2.0 con Java CAPÍTULO 17

"Dumb" Entidades

En el caso de objetos sencillos, sin inteligencia o el comportamiento,


necesitamos una base de datos de proceso que sigue la pista de la existencia y
la ubicación del objeto para que otros puedan acceder a él.
Interacción

Una cuestión sumamente compleja en entornos multiusuario, y uno que aún no


ha sido tratado en forma seria, es la cuestión de la interacción. Si me tiran una
pelota a través de una habitación, puede llamar a través de una estatua y
romper una ventana. Si este tipo de interacciones se lleven a cabo, el sistema
necesita alguna forma de detectar e informar a las entidades a fin de que
puedan responder en consecuencia.

Es muy importante, desde el punto de vista de mantener un modelo de mundo,


que la interacción entre dos entidades, únicamente se ha determinado;
cualquier ambigüedad se traducirá en la rápida escalada de incoherencias. Por
ejemplo, si un huésped decide que la ventana se rompe y no otro host, y luego
romper un vidrio de sonido puede o no puede ser generado, y un gato puede o
no saltar en el aire, y así sucesivamente.

La tarea de la detección de interacciones es claramente de orden n-cuadrado,


donde n es el número de entidades en la simulación. Por tanto, es necesario
particionar y simplificar el problema. La investigación es continuación de la
mejor manera de resolver el problema de la interacción.
Componentes de un sistema multiusuario

De la discusión anterior, podemos ver que una serie de procesos especializados


son necesarios para aplicar plenamente un sistema multiusuario. Estos
incluyen

• Un sistema de base de datos


• Un sistema de particionado espacial
• Un mecanismo de filtrado
• Un control de proceso para cada entidad
• Uno o más procesadores de interacción
• Y, por supuesto, cada uno de los hosts que realmente hacer que el mundo
virtual de los usuarios

Un Ejemplo de Aplicación

En el transcurso de los próximos dos capítulos, Justin y yo seré el desarrollo de


un simple sistema multiusuario. Inevitablemente, las limitaciones de tiempo
nos han obligado a mantener el diseño general muy simple, todavía, nuestro
13

VRML 2.0 con Java CAPÍTULO 17

sistema, al menos, ilustran algunos de los conceptos discutidos en este


capítulo y se muestran como una aplicación real podría funcionar.
Arquitectura general

En aras de la simplicidad, nuestro sistema multiusuario se construirá en torno a


un servidor central. Como se discutió en este y en los capítulos anteriores, un
servidor central, es una menos que ideal. Sin embargo, para fines de tutoría, es
mucho más fácil trabajar con un enfoque totalmente distribuida sería.

Tenga en cuenta que hemos diseñado el código para que sea extensible. La
funcionalidad del servidor se divide limpiamente entre las operaciones y la
base de datos de filtrado, a fin de que puedan ser particionado a cabo en dos
procesos separados (posiblemente corriendo en diferentes máquinas).

El diseño es también lo suficientemente flexible que pudiera adaptarse a una


topología multiservidor, el filtrado de los ejércitos se presente la misma interfaz
a sus clientes, sino que se comunican entre sí utilizando multidifusión.

Idioma

Desde este libro se ocupa de VRML 2.0 y Java, nos pondremos en construir
nuestro mundo utilizando VRML, por lo que tendremos el código tanto de
nuestros clientes y nuestro servidor en Java. Este enfoque tiene algunas
ventajas y algunas desventajas.

La principal ventaja es que Java es un potente portátil idioma. Que seremos


capaces de sacar provecho de sus capacidades de multithreading, tanto en el
cliente y (más importante) en el servidor. También vamos a utilizar Java y sus
capacidades de sincronización automática de la gestión de memoria.

Dado que las clases Java son portables, tanto de nuestros clientes y nuestro
servidor será capaz de funcionar en cualquier plataforma que tenga una
máquina virtual de Java y conexión en red, y los clientes se ejecutan en una
plataforma será capaz de interactuar con los servidores se ejecutan en una
plataforma diferente.

La principal desventaja de usar Java es el rendimiento. Una solución de Java es


demasiado lento para manejar un gran número de clientes, y hacer streaming
de audio en tiempo real está fuera de la cuestión. Sin embargo, sería posible
volver a ciertas partes del código del sistema en C y aún mantener el alto nivel
de funcionalidad en Java.
Interfaces
14

VRML 2.0 con Java CAPÍTULO 17

Nuestra interfaz para el navegador de VRML será a través de la interfaz


externa de autoría, que se describe en el Capítulo 5. El EAI nos permite
construir fácilmente y acceder al mundo virtual.

Vamos a presentar nuestra propia interfaz del usuario para la interacción, la


comunicación y de navegación, que vamos a crear utilizando la interfaz de
AWT. La interfaz de la red serán tratados con la creación de redes de paquetes
de Java. Vamos a definir un simple y extensible apátridas formato de mensaje
que proporciona suficiente información inteligente para el filtrado basado en la
agudeza y regiones.

Nuestra primera aplicación sólo admite el movimiento y el texto, vamos a


hacer ningún intento de tratar con el streaming de audio, vídeo, las
expresiones faciales o posiciones corporales.
Proyecto de Distribución

Capítulo 18 se debatirá la aplicación de la multi-cliente. Asimismo, describir el


simple mensaje de protocolo que se utilizará en el proyecto.

En el capítulo 19, Justin se discutirá la aplicación del servidor, incluyendo el


interior de las estructuras de datos que utiliza para llevar un registro de las
entidades en la simulación.

Potrebbero piacerti anche