Lumberyard
Guía del usuario (Version 1.20)

Cómo funciona el administrador de recursos de Cloud Canvas

El desarrollo de juegos es una actividad inherentemente local. Dispone de una copia local de su código de juego, activos y otros recursos. En el equipo local puede hacer compilaciones, pruebas y ajustes las veces que sea necesario.

Con la nube es diferente. Se trata de un entorno extraño. Coloca los recursos "allí" donde el juego los necesite. Pero esos recursos no residen en el sistema de su equipo. El proceso de utilizar y modificar los recursos en la nube no es el mismo que con los recursos locales.

Cloud Canvas Resource Manager (Administrador de recursos de Cloud Canvas) soluciona este problema. Le permite disponer de las descripciones locales de los recursos de AWS en la nube que su juego necesita y proporciona los medios para crear e interactuar con las instancias de esos recursos en AWS. Su recurso podría ser una tabla de base de datos, un bucket de almacenamiento de archivos o código que se ejecuta en respuesta a un evento.


      Administrador de recursos

Para proyectos de equipo, el código fuente y los activos que esté utilizando probablemente procedan de un sistema de control en origen. Los cambios que realice se comparten con otras personas que trabajan en el proyecto a través de dicho sistema de control en origen. Distintas personas pueden trabajar al mismo tiempo con diferentes versiones ("ramas") del código y con diferentes versiones de activos sin que interfieran entre sí.

Al desarrollar un juego que utilice los recursos en la nube en AWS, varias personas que trabajen en el juego al mismo tiempo podrán compartir dichos recursos. A veces necesitará que existan en la nube diferentes versiones de dichos recursos. También le interesa asegurarse de que las personas que desarrollan el juego utilicen la versión de los recursos en la nube que coincida con la versión del código y los activos con los que estén trabajando.


      Administrador de recursos en un entorno de equipo

Una vez publicado el juego, los jugadores utilizarán una copia de producción, mientras que su equipo utilizará otra copia privada para trabajar en la solución de errores y nuevos contenidos.

También le interesará hacer lo siguiente:

  • Asegurarse de que los jugadores no pueden obtener acceso a los recursos de juegos de versiones en desarrollo.

  • Evitar que el equipo de desarrollo realice cambios que podrían dañar el juego publicado.

  • Proteger la información de los jugadores, como direcciones de correo electrónico, frente a accesos no autorizados por parte de los miembros del equipo.

Cloud Canvas Resource Manager (Administrador de recursos de Cloud Canvas) proporciona las herramientas necesarias para hacer lo siguiente:

  • Mantener descripciones de los recursos de AWS de las que dependa el juego.

  • Crear tantas copias de los recursos de AWS como sea necesario para las versiones y para los equipos de desarrollo.

  • Ayudar a proteger el acceso a dichos recursos.

El papel de AWS CloudFormation

Cloud Canvas Resource Manager (Administrador de recursos de Cloud Canvas) integra el uso de AWS CloudFormationen el entorno de desarrollo del juego de Lumberyard. AWS CloudFormation le permite mantener las descripciones de los recursos de AWS que necesita en plantillas de archivos de texto que puede comprobar en su sistema de control de origen. Estas descripciones pueden estar ramificadas y combinadas junto con el resto del código de juegos y los activos. Cuando necesite crear instancias reales de los recursos en AWS, Cloud Canvas Resource Manager (Administrador de recursos de Cloud Canvas) pasará las descripciones a AWS CloudFormation, el cual utilizará los archivos de plantilla para crear, actualizar o eliminar recursos en AWS de acuerdo con las descripciones.


        El administrador de recursos utiliza AWS CloudFormation para crear recursos en AWS

Puede utilizar el administrador de recursos para organizar sus descripciones en cualquier número de grupos de recursos. Cada grupo puede describir todos los recursos necesarios mediante una característica de juego, como, por ejemplo, un sistema de seguimiento de puntuaciones altas. Para obtener más información, consulte Definiciones de recursos.

El administrador de recursos le permite crear tantas implementaciones de los recursos como necesite. Podría tener una implementación para el equipo de desarrollo, otra para el equipo de control de calidad y otra para el juego publicado, o cualquier otra según sus necesidades. Cada implementación contiene una instancia independiente y completa de todos los recursos del proyecto. Las implementaciones se implementan por medio de recursos de pila de AWS CloudFormation. Para obtener más información, consulte Implementaciones de recursos.

Puede elegir la implementación con la que desee trabajar en Lumberyard Editor. Por ejemplo, si crea una implementación de "control de calidad" y la utiliza para probar su juego, Lumberyard Editor asigna automáticamente las referencias a los recursos del código de juego a la instancia de "control de calidad" de esos recursos.


        Elección de la implementación

Del mismo modo, también puede especificar la implementación que utilizar para las compilaciones de versiones del juego. Para obtener más información, consulte Mapeo de recursos.

Cada implementación incluye una política administrada de AWS y un rol de AWS que puede utilizar para otorgar acceso a esa implementación a usuarios y grupos específicos de AWS. Por ejemplo, si a los jugadores se les concede acceso a recursos específicos dentro de una implementación. Para obtener más información, consulte Control del acceso a los recursos.

Un examen más exhaustivo de las pilas de AWS CloudFormation

Los proyectos del administrador de recursos de Cloud Canvas constan de una o más pilas de AWS CloudFormation. Todas las plantillas de pilas se almacenan como archivos en el sistema de control en origen del proyecto.

  • Una única pila de proyecto con los recursos compatibles con el administrador de recursos de Cloud Canvas. La plantilla de pila del proyecto se almacena en un archivo en el sistema de control en origen del proyecto.

  • Cualquier número de pilas de implementación. Una implementación representa un conjunto independiente y completo de todos los recursos necesarios para el juego. Cada pila de implementación contiene una pila secundaria para cada grupo de recursos. Todas las pilas de implementación se definen mediante una única plantilla de pila de AWS CloudFormation.

  • Una pila de acceso de implementación por pila de implementación. La pila de acceso de la implementación define los recursos utilizados para conceder acceso a una implementación, incluidos los roles de IAM y los grupos de identidades de Amazon Cognito. Son distintas de las pilas de implementación, ya que los desarrolladores de juegos deben poder actualizar las pilas de implementación, aunque no cambiar los permisos asociados a la implementación.

  • Cualquier número de pilas de grupos de recursos. Cada grupo de recursos representa un conjunto de recursos relacionados con una característica de juego arbitraria. Las pilas de grupos de recursos solo existen como elementos secundarios de pilas de implementación. Cada grupo de recursos tiene su propia plantilla de pila, que define la pila del grupo de recursos para cada implementación.

Por lo tanto, si hay implementaciones de tres y cuatro grupos de recursos, dispone de un total de 12 pilas de grupo de recursos, tres pilas de implementación, tres pilas de acceso de implementación y una pila de proyecto (19 pilas en total). También tiene un total de siete plantillas de pila, una para la pila del proyecto, una para todas las pilas de implementación, una para todas las pilas de acceso de implementación y una para cada grupo de recursos. La imagen siguiente ilustra esta situación.


          Un ejemplo de pilas del grupo de recursos y de implementación

Administrador de recursos de Cloud Canvas

Además de comunicarse con Amazon Web Services, Cloud Canvas también puede ayudarle a administrar sus recursos. Amazon Web Services puede ayudarle a crear y administrar los recursos en la nube que necesita un grupo de recursos del juego. Una vez implemente el grupo de recursos, podrá utilizar implementaciones de Cloud Canvas para gestionar los recursos para operaciones de desarrollo, pruebas y versiones en directo del juego.

Definición de los recursos

Puede crear recursos en la nube utilizando plantillas de AWS CloudFormation. AWS CloudFormation es un servicio de Amazon Web Services con el cual puede definir, crear y administrar recursos de AWS de forma predecible y repetida mediante plantillas. Las plantillas son archivos de texto con formato JSON que puede utilizar para especificar el juego de recursos que desea crear de forma conjunta como una única unidad (una pila).

En una plantilla, cada recurso obtiene su propia definición de AWS CloudFormation en la que se especifican los parámetros que rigen el recurso. Las plantillas de AWS CloudFormation están fuera del ámbito de este tema, pero ahora es suficiente con saber que puede definir, por ejemplo, una plantilla con una tabla de Amazon DynamoDB y dos funciones AWS Lambda. Para ver un ejemplo de plantilla de AWS CloudFormation que crea una tabla de Amazon DynamoDB, consulte la Guía del usuario de AWS CloudFormation.

Implementaciones

Mientras esté trabajando en un nuevo grupo de recursos, es posible que el equipo de control de calidad quiera probarlo. Desea poder proporcionar una versión de su grupo de recursos que el equipo de prueba pueda utilizar mientras continua trabajando en su propia versión. Cloud Canvas le ofrece la posibilidad de crear implementaciones independientes para poder mantener los recursos correspondientes de las distintas versiones. Las implementaciones son diferentes instancias de las características del producto.

En una situación como esta, se podrán tres implementaciones: una para el equipo de desarrollo, una para el equipo de prueba y otra para los jugadores en directo. Los recursos de implementación son independientes entre sí y pueden contener diferentes datos, porque, por ejemplo, no desee que los datos introducidos por el equipo de prueba sean visibles para los jugadores.

Cloud Canvas le permite gestionar cada una de estas implementaciones de forma independiente, y puede pasar de una implementación a otra según desee. Después de realizar cambios, puede utilizar Cloud Canvas para actualizar su característica o implementación y los recursos de AWS correspondientes.

Flujo de trabajo de equipo con implementaciones

El siguiente ejemplo de flujo de trabajo ilustra cómo funcionan las implementaciones de Cloud Canvas:

  1. El equipo de prueba le informa de un error. Soluciona el problema en su código de Lambda.

  2. Cambia a la implementación de desarrollo y carga la nueva versión de la función de Lambda. El código de Lambda en las implementaciones de prueba y en directo permanece intacto por ahora, y continúan funcionando tal cual.

  3. Una vez satisfecho con la solución al error, actualiza el código de Lambda en la implementación de prueba. El equipo de prueba ahora prueba su solución. La implementación en directo siguen sin cambios.

  4. Una vez que el equipo de prueba aprueba la solución, usted actualiza la implementación en directo propagando la solución a los jugadores en directo sin que tengan que bajarse una nueva versión del juego.

Comunicarse con los recursos en la nube con Flow Graph

Este tema contiene referencias a herramientas y características que son heredadas. Si desea utilizar herramientas heredadas en Lumberyard Editor, deshabilite la gema CryEntity Removal mediante Project Configurator o la línea de comandos. Para obtener más información sobre las características heredadas, consulte la Referencia heredada de Amazon Lumberyard.

Como el juego se comunica con sus recursos de AWS, puede utilizar el sistema de gráficos de flujo de Lumberyard para implementar la interacción entre su juego y AWS. Los nodos de gráficos de flujo específicos de Cloud Canvasfuncionan como otros nodos de gráficos de flujo, pero realizan llamadas a los servicios de AWS. Por ejemplo, si su característica utiliza dos funciones de Lambda necesarias en situaciones diferentes, puede utilizar el sistema de gráficos de flujo de Lumberyard para especificar que se llamen a las funciones cuando se den las condiciones apropiadas en el juego.

También puede utilizar el gráfico de flujo para tomar las medidas adecuadas según el éxito o el fracaso de una función. Por ejemplo, su función podría dar error como resultado cuando no haya conexión a Internet, o cuando a función no disponga de los permisos suficientes para contactar con el recurso. Su juego puede analizar los errores y gestionarlos adecuadamente; por ejemplo, pidiéndole al jugador que vuelva a intentarlo o no.

Si tiene varias implementaciones, Cloud Canvas mantiene un mapeo interno de nombres fáciles de recordar con instancias de AWS para que el juego sepa qué recursos de AWS debe utilizar. Cloud Canvas asigna la implementación seleccionada actualmente al correspondiente conjunto de recursos.

Por lo tanto, cuando usted publica su juego, usa una implementación específicamente establecida para jugadores en directo. Si utiliza la versión de desarrollo de una característica y cambia su implementación para hacer pruebas, el juego llama a la función de Lambda asociada con la implementación de prueba.

Gestión de permisos con Cloud Canvas

Gestionar permisos es una parte importante a la hora de crear un juego seguro conectado a la nube. Mantener permisos diferentes e independientes es importante en las fases de desarrollo, prueba y producción. Puede aplicar permisos a sus equipos de desarrollo y de prueba, a los recursos de AWS que utiliza el juego y a los jugadores. Uno de los objetivos clave es proteger sus recursos de AWS del juego frente a ataques informáticos u otra forma de abuso.

Puede utilizar permisos para especificar exactamente quién puede hacer qué con los recursos de AWS que forman parte del juego. Por ejemplo, si tiene una característica de juego que carga capturas de pantalla, puede crear un bucket de Amazon S3 para almacenar las capturas de pantalla. Puede establecer permisos para que el juego pueda escribir (enviar archivos) en el bucket pero no leerlos desde él. Esto impide que los usuarios curiosos examinen los archivos que se han subido. Por otra parte, puede conceder permisos a los miembros del equipo para leer archivos del bucket y así puedan revisarlos y aprobarlos. Con Cloud Canvas también puede configurar los permisos para las implementaciones individuales. Por ejemplo, las implementaciones de prueba y en directo pueden tener diferentes conjuntos de permisos.

Al igual que las características, puede definir permisos a través de plantillas de AWS CloudFormation. Los permisos se aplican en cualquier momento que actualice sus recursos en la nube con las herramientas de gestión de recursos de Cloud Canvas.

Para obtener más información, consulte Control del acceso a los recursos.