Lumberyard
Guía del usuario (Version 1.21)

Consideraciones de diseño para la creación de juegos móviles mediante Lumberyard

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.

Lumberyard es un motor de juegos multiplataforma que le permite desarrollar juegos sin preocuparse tanto por las plataformas de lanzamiento. No obstante, a continuación se mencionan determinadas cuestiones relacionadas con el desarrollo, incluida la lógica de juego, las entradas y el ciclo de vida de la aplicación.

Entrada

Puede que deba tener en cuenta los diversos dispositivos de entrada físicos al diseñar su juego. Lumberyard es compatible con los siguientes dispositivos de entrada para iOS y Android:

  • Pantallas táctiles

  • Sensores de movimiento

Toque

Puede utilizar el nodo TouchEvent (que se encuentra en Input (Entrada), Touch (Táctil)) en el editor de Flow Graph para generar un script de entradas táctiles específicas.

También puede generar scripts de entradas táctiles con nodos de flujo más avanzados:

  • MultiTouchCoord: genera eventos táctiles a partir del ID especificado (dedo).

  • MultiTouchEvent: devuelve información sobre la ubicación táctil.

  • TouchRayCast: genera un raycast para cada fotograma.

  • VirtualThumbstick: implementa una tecla de navegación virtual.

Si ha creado la lógica del juego para utilizar entradas basadas en el ratón, Lumberyard permite emular eventos de ratón mediante la entrada táctil principal de los dispositivos móviles. Para habilitar la posibilidad de emular eventos del ratón, establezca s_SimulateMouseEventsWithPrimaryTouch en 1. Para admitir la lógica de entrada multitáctil y evitar que los eventos de ratón emulados se generen junto con los eventos táctiles, establezca s_SimulateMouseEventsWithPrimaryTouch en 0.

Gestos

Lumberyard proporciona una gema Gestures (en Project Configurator) que permite generar un script de entradas en el editor de Flow Graph mediante los nodos de flujo (que se encuentran en Input (Entrada), Gestures (Gestos)) que detectan acciones de entrada basadas en los gestos, lo que incluye:

  • Tocar (o hacer clic, toque único)

  • Arrastrar (o desplazamiento lateral, toque único)

  • Mantener pulsado (o pulsar, toqué único)

  • Deslizar (toque único)

  • Pellizcar (toques múltiples)

  • Rotar (toques múltiples)

Los gestos que solo requieren un toque único para reconocerse (tocar, arrastrar, mantener pulsado y deslizar) funcionan de la misma forma que las entradas de ratón en un equipo. Los gestos de toques múltiples (pellizcar y rotar) solo se reconocen cuando se efectúan múltiples toques a la vez.

Sensores de movimiento

Puede utilizar una serie de nodos MotionSensor en el editor de Flow Graph para devolver los datos del sensor de movimiento que se generan a través de dispositivos móviles desde el acelerómetro, el giroscopio y el magnetómetro. Cada nodo de flujo devuelve un vector (o cuaternión para la orientación) para los siguientes aspectos del dispositivo:

  • Aceleración: sin procesar, generada por el usuario o la gravedad.

  • Rotación: sin procesar o sin sesgo.

  • Campo magnético: sin procesar, sin sesgo o norte magnético.

  • Orientación: absoluto o diferente de la lectura anterior.

Lógica del juego

Puede utilizar el nodo CheckPlatform en el editor de Flow Graph para modificar la lógica del juego vinculando su lógica con la plataforma actual.

También puede utilizar AZ_PLATFORM_* #defines en C++ para incluir o excluir de forma explícita código de recopilación basado en plataformas específicas. También puede incluir archivos completos que se compilarán para una plataforma determinada si incluye los archivos en un archivo .waf_files independiente.

Por ejemplo, Code\Framework\AzFramework\AzFramework\API\ApplicationAPI_ios.h solo aparece en Code\Framework\AzFramework\AzFramework\azframework_ios.waf_files, al que se hace referencia exclusivamente para iOS en:

Code\Framework\AzFramework\AzFramework\wscript ios_file_list = ['azframework_ios.waf_files'],

Ciclo de vida de la aplicación

Lumberyard proporciona una gema Process Life Management (en Project Configurator) que indica cómo puede dar respuesta a diversos eventos del ciclo de vida de la aplicación con el fin de detener el juego, mostrar una pantalla de presentación modal y otras acciones que deba llevar a cabo la aplicación si pierde el enfoque. Puede obtener acceso a eventos específicos del sistema en C++ si se conecta al EBus adecuado; no obstante, Lumberyard también genera eventos para cualquier plataforma que puede utilizar en todas las plataformas admitidas.

Eventos del ciclo de vida de las aplicaciones de Lumberyard iOS Android
OnApplicationConstrained applicationWillResignActive onPause()
OnApplicationUnconstrained applicationDidBecomeActive onResume()
OnApplicationSuspended applicationDidEnterBackground onPause()
OnApplicationResumed applicationWillEnterForeground onResume()
OnMobileApplicationWillTerminate applicationWillTerminate onDestroy()
OnMobileApplicationLowMemoryWarning applicationDidReceiveMemoryWarning onLowMemory()

Para recibir eventos de ciclo de vida de procesos en el videojuego

  1. Derive su clase de AzFramework::ApplicationLifecycleEvents::Bus::Handler (o AzFramework::[Ios|Android|Windows]LifecycleEvents::Bus::Handler para eventos específicos de plataformas).

  2. Anule las funciones correspondientes a los eventos que quiera anular:

    void OnApplicationConstrained(Event /*lastEvent*/) override; void OnApplicationUnconstrained(Event /*lastEvent*/) override; void OnApplicationSuspended(Event /*lastEvent*/) override; void OnApplicationResumed(Event /*lastEvent*/) override
  3. Establezca una conexión con el bus de eventos donde quiera empezar a escuchar eventos (asegúrese de desconectarse cuando ya no desee recibirlos):

    ApplicationLifecycleEvents::Bus::Handler::BusConnect(); ??? ApplicationLifecycleEvents::Bus::Handler::BusDisconnect();

Para ver un ejemplo completo sobre cómo suscribirse y responder a eventos de aplicación, consulte el directorio Gems\ProcessLifeManagement\Code\Source\ProcessLifeManagementGem.h\.cpp.