Conceptos clave de SimSpace Weaver - AWS SimSpace Weaver

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Conceptos clave de SimSpace Weaver

Una simulación o juego está limitado por el ordenador que lo ejecuta. A medida que aumenta el tamaño y la complejidad de su mundo virtual, el rendimiento del procesamiento comienza a degradarse. Los cálculos tardan más, los sistemas se quedan sin memoria y la velocidad de fotogramas de los clientes disminuye. En el caso de las simulaciones que no necesitan un rendimiento en tiempo real, esto solo puede resultar molesto. O bien, podría tratarse de una situación empresarial crítica en la que el aumento de las demoras en el procesamiento se traduzca en un aumento de los costos. Si su simulación o juego necesita un rendimiento en tiempo real, la degradación del rendimiento es sin duda un problema.

Una solución habitual para una simulación que alcanza un límite de rendimiento es simplificar la simulación. Los juegos online con muchos usuarios suelen solucionar los problemas de escalado haciendo copias de su mundo virtual en diferentes servidores y distribuyendo los usuarios entre ellos.

SimSpace Weaver resuelve el problema de escalamiento dividiendo el mundo virtual espacialmente y distribuyendo las piezas en un clúster de instancias informáticas que se ejecutan en el Nube de AWS. Las instancias de cómputo funcionan juntas para procesar todo el mundo de la simulación en paralelo. Su mundo de simulación aparece como un único espacio integrado para todo lo que contiene y para todos los clientes que se conectan a él. Ya no es necesario simplificar una simulación debido al límite de rendimiento del hardware. En su lugar, puede añadir más capacidad de cómputo en la nube.

Cómo funciona SimSpace Weaver

La simulación consiste en un mundo con objetos en su interior. Algunos de los objetos (como personas y vehículos) se mueven y hacen cosas. Otros objetos (como árboles y edificios) son estáticos. En SimSpace Weaver, una entidad es un objeto del mundo de simulación.

Usted define los límites del mundo de simulación y lo divide en una cuadrícula. En lugar de crear una lógica de simulación que funcione en toda la cuadrícula, cree una lógica de simulación que funcione en una celda de la cuadrícula. En SimSpace Weaver, una aplicación espacial es un programa que se escribe y que implementa la lógica de simulación para una celda de la cuadrícula. Esto incluye la lógica de todas las entidades de esa celda. El área de propiedad de una aplicación espacial es la celda de la cuadrícula que controla la aplicación espacial.

nota

En SimSpace Weaver, el término «aplicación» puede hacer referencia al código de una aplicación o a una instancia en ejecución de ese código.

El mapa del mundo de la simulación dividido en una cuadrícula bidimensional
Su mundo de simulación dividido en una cuadrícula

Usted divide su mundo de simulación en una cuadrícula. Cada aplicación espacial implementa la lógica de simulación para una sola celda de la cuadrícula.

SimSpace Weaver ejecuta una instancia del código de la aplicación espacial para cada celda de la cuadrícula. Todas las instancias de aplicaciones espaciales se ejecutan en paralelo. Básicamente, SimSpace Weaver divide la simulación general en varias simulaciones más pequeñas. Cada una de las simulaciones más pequeñas gestiona una parte del mundo general de la simulación. SimSpace Weaver puede distribuir y ejecutar estas simulaciones más pequeñas en varias instancias de Amazon Elastic Compute Cloud (Amazon EC2) (denominadas trabajadores) en el Nube de AWS. Un solo trabajador puede ejecutar varias aplicaciones espaciales.

Las entidades pueden moverse por el mundo de la simulación. Si una entidad entra en el área de propiedad de otra aplicación espacial (otra celda de la cuadrícula), el propietario de la aplicación espacial de la nueva área asume el control de la entidad. Si la simulación se ejecuta en varios trabajadores, una entidad podría pasar del control de una aplicación espacial de un trabajador a una aplicación espacial de otro trabajador. Cuando una entidad se traslada a otro trabajador, SimSpace Weaver gestiona la comunicación de red subyacente.

Suscripciones

La visión del mundo de una aplicación espacial es su propia área de propiedad. Para saber qué sucede en otra parte del mundo de la simulación, la aplicación espacial crea una suscripción. El área de suscripción es un subconjunto del área global de simulación. Un área de suscripción puede incluir partes de varias áreas de propiedad, incluida la propia área de propiedad de la aplicación espacial. SimSpace Weaver notifica a la aplicación espacial todos los eventos de la entidad (por ejemplo, entrada, salida, creación, actualización y eliminación) que se produzcan en el área de suscripción.

La cuadrícula del mundo con una sola celda observable
La visión del mundo de una aplicación espacial

La visión del mundo de una aplicación espacial es su área de propiedad, que es una celda de la cuadrícula mundial.

La cuadrícula del mundo con una celda observable y un área observable adicional que abarca otra celda y partes de las celdas circundantes
La vista de una aplicación espacial con un área de suscripción adicional

Una aplicación espacial utiliza una suscripción para averiguar qué sucede en otra parte del mundo de la simulación. El área de suscripción puede contener varias celdas de cuadrícula y partes de celdas.

Por ejemplo, una aplicación que simula entidades que interactúan físicamente puede necesitar información sobre las entidades que se encuentran más allá de los límites espaciales de su área de propiedad. Para ello, la aplicación puede suscribirse a las áreas que bordean su área de propiedad. Tras crear la suscripción, la aplicación recibe notificaciones sobre los eventos de las entidades en esas áreas y puede leerlas. Otro ejemplo es un vehículo autónomo que necesita ver a todas las entidades situadas a 200 metros de distancia, independientemente de la aplicación que posea la zona. La aplicación para el vehículo puede crear una suscripción con un filtro en forma de cuadro delimitador alineado con los ejes que (AABB) cubre el área visible.

Puede crear una lógica de simulación que no se encargue de gestionar los aspectos espaciales de la simulación. Una aplicación personalizada es un programa ejecutable que se ejecuta en un único dispositivo de trabajo. Usted controla el ciclo de vida (inicio y finalización) de una aplicación personalizada. Los clientes de simulación pueden conectarse a una aplicación personalizada para ver la simulación o interactuar con ella. También puede crear una aplicación de servicio que se ejecute en todos los trabajadores. SimSpace Weaverinicia una instancia de la aplicación de servicio en cada trabajador que ejecuta la simulación.

Las aplicaciones personalizadas y las aplicaciones de servicio crean suscripciones para obtener información sobre los eventos de las entidades y leer las entidades. Estas aplicaciones no tienen áreas de propiedad porque no son espaciales. El uso de una suscripción es la única forma de que puedan enterarse de lo que sucede en el mundo de la simulación.

Cómo se usa SimSpace Weaver

Cuando usaSimSpace Weaver, estos son los pasos principales que debe seguir:

  1. Escribir y crear aplicaciones de C++ que integren el SDK de la aplicación SimSpace Weaver.

    1. Sus aplicaciones realizan llamadas a la API para interactuar con el estado de la simulación.

  2. Cree clientes que vean su simulación e interactúen con ella a través de algunas aplicaciones.

  3. Configure la simulación en un archivo de texto.

  4. Cargue los paquetes de aplicaciones y la configuración de la simulación en el servicio.

  5. Inicie la simulación.

  6. Inicie y detenga sus aplicaciones personalizadas según sea necesario.

  7. Conecte a los clientes con sus aplicaciones personalizadas o de servicio para ver la simulación o interactuar con ella.

  8. Compruebe los registros de simulación en los registros de Amazon CloudWatch.

  9. Detenga la simulación.

  10. Limpie la simulación.

Esquema de simulación

El esquema de simulación (o esquema) es un archivo de texto con formato YAML que contiene información de configuración para la simulación. SimSpace Weaver utiliza el esquema al iniciar una simulación. El paquete distribuible del SDK de la aplicación SimSpace Weaver incluye un esquema para un proyecto de muestra. Puede utilizar este cliente como punto de partida para sus propias aplicaciones. Para obtener más información sobre el esquema de simulación, consulte SimSpace Weaver referencia del esquema de simulación.

Trabajadores y unidades de recursos

Un trabajador es una instancia de Amazon EC2 que ejecuta la simulación. El tipo de trabajador se especifica en el esquema de simulación. SimSpace Weaver asigna su tipo de trabajador a un tipo de instancia de Amazon EC2 específico que utilice el servicio. SimSpace Weaver inicia y detiene a sus trabajadores por usted y gestiona la comunicación de red entre los trabajadores. SimSpace Weaver inicia un conjunto de trabajadores para cada simulación. Las diferentes simulaciones utilizan diferentes trabajadores.

La capacidad informática disponible (procesador y memoria) de un trabajador se divide en unidades lógicas denominadas unidades de recursos informáticos (o unidades de recursos). Una unidad de recursos representa una cantidad fija de capacidad de procesador y memoria.

nota

Anteriormente, denominábamos ranura a una unidad de recursos de cómputo. Es posible que aún vea este término anterior en nuestra documentación.

Reloj de simulación

Cada simulación tiene su propio reloj. El reloj se inicia y se detiene mediante llamadas a la API o la consola SimSpace Weaver. La simulación se actualiza solo cuando el reloj está en marcha. Todas las operaciones de la simulación se producen dentro de segmentos de tiempo denominados graduaciones. El reloj anuncia la hora de inicio de cada graduación a todos los trabajadores.

La frecuencia del reloj (o frecuencia de graduación) es el número de pulsaciones por segundo (hercios o Hz) que anuncia el reloj. La frecuencia de reloj deseada para una simulación forma parte del esquema de simulación. Todas las operaciones de una marca deben completarse antes de que comience la siguiente. Por este motivo, la frecuencia de reloj efectiva puede ser inferior a la frecuencia de reloj deseada. La frecuencia de reloj efectiva no será superior a la frecuencia de reloj deseada.

Particiones

Una partición es un segmento de la memoria compartida de un trabajador. Cada partición contiene parte de los datos de estado de la simulación.

Una partición de una aplicación espacial (también denominada partición de aplicación espacial o partición espacial) contiene todas las entidades del área de propiedad de una aplicación espacial. SimSpace Weaver coloca las entidades en las particiones de aplicaciones espaciales en función de la ubicación espacial de cada entidad. Esto significa que SimSpace Weaver intenta colocar las entidades que están espacialmente cerca unas de otras en el mismo elemento de trabajo. Esto minimiza la cantidad de conocimiento que una aplicación requiere sobre las entidades que no son de su propiedad para simular las entidades que sí son de su propiedad.

State Fabric

State Fabric es el sistema de memoria compartida (la colección de todas las particiones) entre todos los trabajadores. Contiene todos los datos de estado de la simulación.

State Fabric utiliza un formato binario personalizado que describe una entidad como un conjunto de datos iniciales y un registro de actualizaciones para cada campo de datos de esa entidad. Con este formato, puede acceder al estado de una entidad en un punto anterior del tiempo de simulación y volver a asignarlo a un punto en el tiempo real. El búfer tiene un tamaño finito y no es posible retroceder en el tiempo más allá de lo que hay en el búfer. SimSpace Weaver usa un puntero hacia el desplazamiento actual en el registro de actualizaciones de cada campo y actualiza un puntero como parte de una actualización de campo. SimSpace Weaver asigna estos registros de actualización al espacio de procesos de una aplicación mediante la memoria compartida.

Este formato de objeto reduce los gastos generales y no supone costes de serialización. SimSpace Weaver también utiliza este formato de objeto para analizar e identificar los campos de índice (como la posición de la entidad).

Entidades

Una entidad es el bloque de datos más pequeño de la simulación. Algunos ejemplos de entidades son los actores (como personas y vehículos) y los objetos estáticos (como edificios y obstáculos). Las entidades tienen propiedades (como la posición y la orientación) que se pueden almacenar como datos persistentes en SimSpace Weaver. Las entidades existen dentro de las particiones.

móviles

Una aplicación de SimSpace Weaver es un software que se escribe y que contiene una lógica personalizada que ejecuta cada graduación de la simulación. El objetivo de la mayoría de las aplicaciones es actualizar las entidades a medida que se ejecuta la simulación. Sus aplicaciones utilizan las API del SDK de la aplicación SimSpace Weaver para realizar acciones (como leer y actualizar) en las entidades de la simulación.

Las aplicaciones y los recursos necesarios (como las bibliotecas) se empaquetan en archivos.zip y se cargan en SimSpace Weaver. Una aplicación se ejecuta en un contenedor de Docker en un dispositivo de trabajo. SimSpace Weaver asigna a cada aplicación un número fijo de unidades de recursos al trabajador.

SimSpace Weaver asigna la propiedad de una (y solo una) partición a cada aplicación. Una aplicación y su partición se encuentran en el mismo elemento de trabajo. Cada partición solo tiene un propietario de aplicación. Una aplicación puede crear, leer, actualizar y eliminar entidades en su partición. Una aplicación es propietaria de todas las entidades de su partición.

Hay tres tipos de aplicaciones: aplicaciones espaciales, aplicaciones personalizadas y aplicaciones de servicio. Se diferencian según los casos de uso y los ciclos de vida.

nota

En SimSpace Weaver, el término «aplicación» puede hacer referencia al código de una aplicación o a una instancia en ejecución de ese código.

Aplicaciones espaciales

Las aplicaciones espaciales actualizan el estado de las entidades que existen espacialmente en la simulación. Por ejemplo, puede definir una aplicación de Physics que se encargue de mover y colisionar entidades para cada tic en función de su velocidad, forma y tamaño. En este caso, SimSpace Weaver ejecuta varias instancias de la aplicación Physics en paralelo para gestionar el tamaño de la carga de trabajo.

SimSpace Weaver gestiona el ciclo de vida de las aplicaciones espaciales. Usted especifica una disposición de las particiones de las aplicaciones espaciales en el esquema de simulación. Al iniciar la simulación, SimSpace Weaver inicia una aplicación espacial para cada partición de la aplicación espacial. Al detener la simulación, SimSpace Weaver cierra las aplicaciones espaciales.

Otros tipos de aplicaciones pueden crear entidades, pero solo las aplicaciones espaciales pueden actualizar entidades. Otros tipos de aplicaciones deben transferir las entidades que crean a un dominio espacial. SimSpace Weaver usa la ubicación espacial de una entidad para moverla a la partición de una aplicación espacial. Esto transfiere la propiedad de la entidad a la aplicación espacial.

Aplicaciones personalizadas

Utiliza aplicaciones personalizadas para interactuar con la simulación. Una aplicación personalizada lee los datos de la entidad mediante suscripciones. Una aplicación personalizada puede crear entidades. Sin embargo, la aplicación debe transferir una entidad a una aplicación espacial para incluirla en la simulación y actualizarla. Puede asignar a SimSpace Weaver un punto de conexión de red a una aplicación personalizada. Los clientes de simulación pueden conectarse al punto de conexión de la red para interactuar con la simulación. Usted define sus aplicaciones personalizadas en su esquema de simulación, pero es responsable de iniciarlas y detenerlas (mediante llamadas a la API de SimSpace Weaver). Después de iniciar una instancia de aplicación personalizada en un trabajador, SimSpace Weaver no transfiere la instancia a otro trabajador.

Aplicaciones de servicio

Puede usar una aplicación de servicio cuando necesite ejecutar un proceso de solo lectura en todos los trabajadores. Por ejemplo, puede usar una aplicación de servicio si tiene una simulación grande y necesita un cliente de visualización que recorra la simulación y muestre solo las entidades visibles al usuario. En este caso, una sola instancia de aplicación personalizada no puede procesar todas las entidades de la simulación. Puede configurar una aplicación de servicio para que se ejecute en todos los trabajadores. Luego, cada una de estas aplicaciones de servicio puede filtrar las entidades de su trabajador asignado y enviar solo las entidades relevantes a sus clientes conectados. Luego, su cliente de visualización puede conectarse a diferentes aplicaciones de servicio a medida que avanza por el espacio de simulación. Las aplicaciones de servicio se configuran en el esquema de simulación. SimSpace Weaver inicia y detiene las aplicaciones de servicio por usted.

Resumen de las API

En la tabla siguiente se resumen las características de los distintos tipos de aplicaciones SimSpace Weaver.

  Aplicaciones espaciales Aplicaciones personalizadas Aplicaciones de servicio
Entidades de lectura

Entidades de actualización

No

No

Creación de entidades

Sí*

Sí*

Ciclo de vida

Administrado (SimSpace Weaver lo controla).

No administrado (usted lo controla).

Administrado (SimSpace Weaver lo controla).

Método de inicio

SimSpace Weaver inicia una instancia de aplicación para cada partición espacial, tal y como se especifica en el esquema.

Usted inicia cada instancia de aplicación.

SimSpace Weaver inicia una o más instancias de aplicación en cada dispositivo de trabajo, tal y como se especifica en el esquema.

Los clientes pueden establecer conexión

No

* Cuando una aplicación o aplicación de servicio personalizada crea una entidad, la aplicación debe transferir la propiedad de la entidad a una aplicación espacial para que la aplicación espacial pueda actualizar el estado de la entidad.

Dominios

Un dominio de SimSpace Weaver es un conjunto de instancias de aplicación que ejecutan el mismo código de aplicación ejecutable y tienen las mismas opciones y comandos de inicio. Nos referimos a los dominios por los tipos de aplicaciones que contienen: dominios espaciales, dominios personalizados y dominios de servicio. Las aplicaciones se configuran dentro de los dominios.

Suscripciones y replicación

Una aplicación crea una suscripción a una región espacial para conocer los eventos de las entidades (por ejemplo, entrar, salir, crear, actualizar y eliminar) en esa región. Una aplicación procesa los eventos de entidades de una suscripción antes de leer los datos de las entidades de particiones que no son de su propiedad.

Una partición puede existir en el mismo servidor que la aplicación (esto se denomina partición local), pero otra aplicación puede ser propietaria de la partición. Una partición también puede existir en un equipo de trabajo diferente (esto se denomina partición remota). Si la suscripción es a una partición remota, el trabajador crea una copia local de la partición remota mediante un proceso denominado replicación. A continuación, el trabajador lee la copia local (partición remota replicada). Si otra aplicación del trabajador necesita leer desde esa partición con la misma marca, el trabajador lee la misma copia local.