Desarrollo de juegos en 3D con ShiVa3D Suite Descripción general del proyecto

¿Tienes curiosidad por el desarrollo de juegos en 3D? ¡Ahora es el momento de aprender! Esta serie de tutoriales de cinco partes demostrará cómo construir un juego simple con ShiVa3D Suite, un motor de juegos 3D multiplataforma y una herramienta de desarrollo. Esta serie fue diseñada originalmente solo para miembros de Tuts + Premium, pero se entregará a la comunidad de forma gratuita con cada parte publicada de forma consecutiva durante los próximos 5 días. Sigue leyendo para comenzar tu viaje hacia la programación 3D.!


Introducción a la serie

En esta serie de tutoriales, presentaremos el desarrollo de juegos en 3D para la plataforma Android utilizando ShiVa3D Suite. Desarrollar una aplicación de Android con gráficos 3D puede ser difícil por varias razones. Los desarrolladores deben estar familiarizados con la API de OpenGL y la API de Android específica que lo admite. Además, el desarrollo de gráficos en 3D puede incluir código C / C ++ nativo por motivos de rendimiento además del código Java / Objective-C. Esto aumenta el nivel de conocimiento y esfuerzo requerido para desarrollar una aplicación 3D de Android. Además, la creación de gráficos 3D implica una experiencia única independiente de la competencia de programación Java o C / C ++. En resumen, el desarrollo de aplicaciones 3D requiere habilidades avanzadas de diferentes disciplinas.

ShiVa3D Suite es un conjunto de herramientas diseñadas para desarrollar aplicaciones 3D multiplataforma. Estas herramientas facilitan el diseño y la composición de su aplicación en función de tareas y conceptos específicos. Por ejemplo, puede separar un modelo visual 3D de su comportamiento y trabajar en esos aspectos de manera independiente. Además, el desarrollo del juego en la Suite ShiVa3D permite la abstracción del juego desde la plataforma objetivo en particular. Los juegos desarrollados con esta suite se pueden implementar en múltiples plataformas de destino, incluidos los sistemas operativos Windows, iOS y Android, entre otros..

Este tutorial ofrece un ejemplo de cómo desarrollar un juego 3D para la plataforma Android utilizando dos elementos principales de ShiVa3D Suite, ShiVa Editor y ShiVa Authoring Tool. El sistema operativo de destino de esta aplicación tutorial es Android 3.2 (Honeycomb). Sin embargo, también proporcionaremos una discusión sobre cómo migrar el juego a dispositivos iOS, como el iPhone / iPod Touch y el iPad / iPad2..


Organización de la serie

Este tutorial ha sido organizado como una serie de 5 partes. En la parte 1, presentaremos la aplicación tutorial, discutiremos varios conceptos de ShiVa3D y las herramientas principales en la Suite ShiVa3D. En la parte 1, también explicaremos los archivos en el archivo de descarga que acompaña a este tutorial. En la parte 2, comenzaremos a describir cómo desarrollar el juego utilizando el Editor ShiVa. Presentaremos los módulos del Editor ShiVa utilizados en el desarrollo de la aplicación tutorial. Luego, hablaremos sobre los archivos de modelos de Collada que representan a los personajes principales de la aplicación. Finalmente, discutiremos algunos pasos iniciales para crear la aplicación, como crear el juego y la escena, así como importar los modelos de Collada..

En la parte 3, mostraremos cómo editar la escena de nuestra aplicación. También comenzaremos a ingresar el código para los AIModels del juego. En la parte 4, terminaremos de codificar los restantes AIModels y realizaremos pruebas de unidad animando el juego. Luego exportaremos el juego desde ShiVa Editor para importarlo a Shiva Authoring Tool. Finalmente, discutiremos dos opciones de creación diferentes en la Herramienta de creación de Shiva, una para generar un ejecutable de Android y otra para generar un proyecto de Eclipse.

En la parte 5, comenzaremos personalizando el juego en Eclipse. Esto incluirá la configuración del proyecto Eclipse, los cambios de código y la construcción del código Java y las bibliotecas nativas. En ese momento habremos completado el tutorial en términos de desarrollo e implementación. En el resto de la parte 5, revisaremos el código, analizaremos cómo migrar el juego a dispositivos iOS y daremos algunas observaciones finales..


Creditos

El modelo de Collada y los archivos de imagen relacionados para el pato amarillo de la bañera, así como el modelo de Collada para el huevo son cortesía de Sony Computer Entertainment Inc. Estos modelos se han descargado de la sección de Muestras básicas del Banco de modelos de collada.org, y se licencian bajo los términos de la Licencia de Fuente Compartida SCEA.

La textura de "mármol" utilizada en el fondo se ha descargado de http://www.texturewarehouse.com y está licenciada bajo la licencia Creative Commons, Attribution-NonCommercial-ShareAlike 2.0.

El autor se ha beneficiado enormemente de un libro sobre ShiVa3D, titulado Introducción a la programación 3D con ShiVaÆ. Además, el código de manejo de eventos multitáctiles explicado en 'Revisión de código' tomó prestada una técnica presentada en un tutorial en el sitio del desarrollador de ShiVa3D, denominado Gestión multitáctil.


Descripción del juego

El juego comienza con una pantalla de inicio que muestra a los personajes principales del juego: un pato amarillo en la bañera en primer plano y un huevo detrás, como se muestra a continuación..

Figura 1. Pantalla de bienvenida

Luego, la pantalla principal del juego aparece con dos objetos, el pato y el huevo. El pato realiza un movimiento angular en un espacio 3D en un plano fijo definido por y = 3. El huevo solo puede moverse a lo largo de una línea recta definida por x = 0, y = 3. El movimiento de pato y huevo en los ejes globales x, y, z se muestra a continuación.

Figura 2. Pato y Huevo - Movimiento Global

Al mismo tiempo, el pato gira alrededor de sus ejes x, y, z locales, independientemente de su rotación global, como se muestra a continuación.

figura 3. Pato - Movimiento Local

De manera similar, el Huevo gira alrededor de su eje x local independientemente de su movimiento global (ver más abajo).

Figura 4. Huevo - Movimiento Local

El movimiento (global) del huevo a lo largo de la ruta lineal puede controlarse mediante la acción táctil del usuario en la pantalla. Si el dedo del usuario se mueve de izquierda a derecha, entonces el huevo se mueve en la dirección z negativa. Por el contrario, si el dedo del usuario se mueve de derecha a izquierda, entonces el huevo se mueve en la dirección z positiva. (Vea abajo.)

Figura 5. Moviendo el huevo

Desde la geometría en la Figura 2, observe que la trayectoria lineal que describe el movimiento global del huevo está en el plano fijo en el que el pato hace su movimiento global. Por lo tanto, el pato y el huevo pueden chocar en los dos puntos de intersección definidos por la trayectoria lineal del huevo y la trayectoria angular del pato. Los puntos de colisión se muestran en el siguiente diagrama..

Figura 6. Puntos de colisión

Si el pato y el huevo chocan, la rotación del pato cambiará de dirección, en el sentido de las agujas del reloj a la izquierda, o viceversa..

El objetivo del juego es chocar el huevo y el pato tantas veces como sea posible. Cada vez que se produce una colisión, la puntuación del usuario, que se muestra en la esquina inferior derecha de la pantalla, se incrementará. Además, el dispositivo Android vibrará por una duración de 100 milisegundos.

El usuario puede reiniciar el juego aplicando una acción de doble toque (por ejemplo, moviendo dos dedos en la pantalla) como se muestra a continuación.

Figura 7. Reiniciando el juego

Antes de que la aplicación se reinicie, se muestra un mensaje informativo durante aproximadamente un segundo como se muestra a continuación.

Figura 8. Reinicio del juego

Cuando la aplicación se reinicia, las posiciones del pato y el huevo y la puntuación inicial se restablecen..

Ambiente de desarrollo ShiVa3D

Conceptos de ShiVa3D

En esta sección, discutiremos conceptos básicos del desarrollo de juegos en 3D con ShiVa3D. La mayor parte de la discusión aquí está tomada de la documentación original de ShiVa3D. Para obtener más información, visite http://www.stonetrip.com/developer/doc/ y el manual del usuario que viene con el editor ShiVa.

Juego Representa un juego, la entidad principal de la aplicación. Encapsula todo lo demás en la aplicación, como cámaras, escenas, modelos, etc. El juego es una unidad de implementación independiente.

Escena representa un lugar o vista asociado con el juego. Hay un conjunto de objetos o modelos asociados con una escena. Un juego puede tener más de una escena. Por simplicidad, el juego en la aplicación tutorial tiene una sola escena..

Cámara Representa un punto de vista en el juego. El usuario verá el juego a través de la cámara. Una cámara puede moverse de una posición a otra, o su dirección puede cambiarse. En nuestro tutorial, la cámara se mantendrá fija..

Modelo es un objeto o un conjunto de objetos con diversos atributos como forma, luz y sensor. En nuestro juego hay dos modelos: un pato y un huevo. Esos son objetos tridimensionales con un 'rol' particular en nuestro juego. Cada rol del pato y el huevo tiene su propio AIModel (ver más abajo) para describir ese rol a través del código.

Aimodel Implica 'inteligencia artificial' y representa comportamiento. Un AIModel podría estar asociado con un usuario que juega el juego o un objeto en el juego. En este tutorial, usaremos solo los objetos AIModels. Un AIModel puede tener funciones, manejadores, estados y variables para describir los comportamientos específicos..

Guión contiene el código en un AIModel, por ejemplo, el código para una función o un controlador. El lenguaje de scripting en ShiVa3D es Lua. (http://www.lua.org)

Sensor Puede detectar ciertos eventos físicos. En nuestro juego, el pato y el huevo tienen sensores de colisión para detectar una colisión. Cuando un sensor detecta un evento, puede ser manejado por el controlador de eventos apropiado en el AIModel asociado con el objeto que contiene el sensor.

HUD significa "pantalla de visualización superior" y es un término utilizado para representar varios widgets de la interfaz de usuario, como botones, etiquetas, listas y controles deslizantes, que permiten al usuario interactuar con el juego. Los únicos componentes de HUD que vamos a utilizar en nuestro juego son las etiquetas de texto..

Herramientas ShiVa3D

Para desarrollar nuestra aplicación tutorial, utilizaremos la versión gratuita de ShiVa3D Suite (http://www.stonetrip.com/download.html), que incluye el Editor de ShiVa PLE (edición de aprendizaje personal) y la Herramienta de creación de ShiVa. El diagrama a continuación ofrece una descripción general del proceso de desarrollo que usamos con esas herramientas.

Figura 9. Proceso de desarrollo de ShiVa3D

Discutamos los pasos individuales de ese proceso..

Editor de ShiVa

El Editor ShiVa tiene varios componentes para desarrollar y probar un juego 3D desde cero. Una característica importante del Editor ShiVa es que un juego desarrollado con esa herramienta se puede implementar (después de haber sido creado en la Herramienta de creación ShiVa) en diferentes dispositivos con diferentes sistemas operativos (por ejemplo, una PC con sistema operativo Windows o una tableta con sistema operativo Android o iPhone).
Algunas de las acciones básicas que puede realizar con el Editor ShiVa son las siguientes.

  • Desarrollar:
    • Crea un nuevo juego.
    • Crea una nueva escena y asócala al juego..
    • Importe modelos 3D, edite sus atributos y colóquelos en una escena..
    • Cree AIModels, asócielos con los modelos y escriba scripts para los AIModels..
    • Conecte sensores a modelos y escriba scripts para manejar eventos asociados con esos sensores.
    • Compila los scripts en el juego..
  • Prueba:
    Puede realizar una prueba inicial de su juego en el entorno de desarrollo antes de implementarlo en un dispositivo de destino. Las pruebas se realizan a través de la función Animate del Editor ShiVa. Para la animación, puede cambiar la configuración del tamaño de la pantalla para ver cómo se mostrará el juego en el dispositivo de destino real. Puede ingresar eventos clave y de clic con el mouse desde el mouse y el teclado de su máquina de desarrollo. Para emular eventos táctiles es posible que necesite disposiciones adicionales. Por ejemplo, para probar un controlador para eventos táctiles, una opción es escribir un controlador para eventos clave que encapsula la funcionalidad en el controlador de eventos táctiles. (Consulte http://www.stonetrip.com/developer/1720-mix-mouse-and-multitouch). Otra opción es instalar las Herramientas de desarrollo del dispositivo (http://www.stonetrip.com/download.html). Luego, integre el dispositivo de destino real, ejecutando el Simulador de entrada de dispositivos 3D de ShiVa, con el Editor de ShiVa en la máquina de desarrollo a través de una red Wi-Fi. Con esa opción, puede simular las entradas directamente usando el dispositivo de destino.
  • Exportar:
    Una vez finalizada la prueba, exporta el juego. Esto generará un archivo con una extensión .stk. El juego exportado será utilizado por Shiva Authoring Tool, que se describe a continuación..

Herramienta de autor ShiVa

El propósito principal de Shiva Authoring Tool es convertir un juego, creado a través del Editor ShiVa, en una aplicación que se pueda implementar en un dispositivo en particular (por ejemplo, un iPhone, iPad o tableta Android). Se aplican ciertas restricciones con respecto al sistema operativo de la máquina que ejecuta Shiva Authoring Tool y el dispositivo de destino para la conversión. Por ejemplo, la Shiva Authoring Tool que se ejecuta en una máquina con Windows no puede generar una aplicación de iPad o iPhone. En este tutorial, usamos una PC con Windows como máquina de desarrollo y nuestra plataforma objetivo es Android. La siguiente información se aplica a este entorno particular.

Algunas de las acciones básicas que uno puede realizar con Shiva Authoring Tool son las siguientes.

  • Importar: importa el juego que se exportó a través del Editor ShiVa.
  • Creación: hay dos tipos de creación: paquete APK y proyecto.
    • Si se selecciona el tipo de autoría como un paquete APK, esto creará un archivo apk listo para su implementación en el dispositivo de destino. Opcionalmente puedes elegir la opción de instalar mientras construyes. Esto instalará automáticamente el archivo APK en el dispositivo como parte del proceso de construcción. Si no elige la opción de instalación al compilar, el paquete APK resultante se puede instalar en el dispositivo de destino en otro momento utilizando la herramienta ADB SDK de Android.
    • Si el tipo de autoría se selecciona como Proyecto, esto creará un archivo zip que se puede importar a Eclipse como un proyecto de Android. El proyecto contendrá archivos Java y C creados por Shiva Authoring Tool. Puede editar esos archivos para personalizar aún más la aplicación para el dispositivo de destino. Tenga en cuenta que no es necesario elegir el tipo de autoría como Proyecto a menos que desee personalizar aún más su aplicación en Eclipse.

    Nota: Para cada tipo de creación, hay dos opciones de compilación: Distribución y Desarrollo. En este tutorial, solo discutiremos el tipo de compilación de Desarrollo.

Eclipse

Uno puede personalizar el juego en Eclipse de la siguiente manera.

  • Importar: Importa la aplicación de Android en Eclipse.
  • Desarrollar: Personaliza el código. Puede cambiar tanto el código Java como el C que se generaron automáticamente con la Herramienta de creación de Shiva.
  • Construir: compilar el código Java a través de Eclipse. Compile el código C y construya las bibliotecas nativas a través de la utilidad Cygwin Make.
  • Instalar: instale la aplicación en el dispositivo de destino a través de Eclipse.

Requisitos previos de software

Para utilizar la herramienta de creación ShiVa en el entorno de Windows para el desarrollo de Android, utilizamos el siguiente software de requisitos previos. Tenga en cuenta que Eclipse y ADT para Eclipse solo son necesarios si desea generar un proyecto de Eclipse para la personalización del código. Para obtener más información, consulte http://www.stonetrip.com/developer/doc/authoringtool/installation.

Software Versión utilizada en la aplicación tutorial
SDK de Android revisión 13 (Android 3.2)
Android NDK revisión 7
Cygwin, GNU hace el paquete versión 3.82.90
Hormiga apache versión 1.8.0
SDK de Java versión 1.6
Eclipse versión 3.7
ADT para Eclipse versión 16.0.1

Tenga en cuenta que nuestro objetivo principal en este tutorial es Android 3.2 (Honeycomb), para el cual se ha probado la aplicación..


Archivos en el archivo de descarga

En esta sección, daremos una descripción de los archivos en el archivo de archivo que acompaña a este tutorial..

El archivo comprimido tiene tres subcarpetas: set1, set2 y set3.

  • La carpeta set1 consta de duck.dae, duckCM.tga, marble.jpg y sphere.dae que se utilizan para crear el juego en ShiVa Editor. Consulte la sección "Desarrollo del juego en ShiVa Editor" para obtener detalles sobre cómo usar esos archivos..
  • La carpeta set2 consta de app_icon.png, app_icon_72x72.png, app_splash.png y app_splash_800x1280.png. Consulte la sección llamada 'Herramienta de creación de Shiva' para obtener detalles sobre cómo usar app_icon.png y app_splash.png. Consulte "Personalizar el juego en Eclipse" para obtener detalles sobre cómo usar app_icon_72x72.png y app_splash_800x1280.png.
  • En set3, hay tres archivos: Duck.ste, Duck.stk y Duck_Android_final.zip.
    • Duck.ste es una exportación del juego tutorial Duck del Editor ShiVa. Le proporciona una versión completa del juego con todos sus recursos, incluido el código, así como duck.dae, duckCM.tga, marble.jpg y sphere.dae. Representa el estado final del juego en la sección "Desarrollando el juego en el editor ShiVa". Si experimenta un problema mientras sigue las instrucciones de esa sección, Duck.ste debería ser particularmente útil. Puede abrir dos instancias separadas del Editor ShiVa, importar Duck.ste en una instancia como referencia y trabajar en la otra instancia para llevar a cabo las instrucciones. (Para importar Duck.ste en el Editor de ShiVa, vaya a Principal -> Proyectos para abrir el cuadro de diálogo Configuración y haga clic en Agregar para agregar un nuevo proyecto. Luego, en ese proyecto, abra el Explorador de datos y seleccione Importar -> Archivar. En el campo de texto Importar archivo, especifique la ruta completa a Duck.ste.)
    • Duck.stk es una exportación del juego tutorial Duck desde ShiVa Editor como un paquete de tiempo de ejecución de Android. Esto es una entrada a la herramienta de autor ShiVa. Si lo desea, puede omitir todos los pasos en 'Desarrollar el juego en ShiVa Editor', ir a la sección llamada 'Shiva Authoring Tool' y comenzar a crear importando Duck.stk.
    • Finalmente, Duck_Android_final.zip es un archivo de proyecto de Android en el que ya se ha realizado la personalización del código. Este archivo de proyecto puede ser beneficioso de varias maneras:
      • Puede usarlo como referencia mientras sigue las instrucciones en 'Personalizar el juego en Eclipse'.
      • Si desea omitir las instrucciones en 'Personalizar el juego en Eclipse', simplemente impórtelo en Eclipse. No realice cambios en el código, luego implemente el juego en su dispositivo. (Nota: su entorno de Eclipse debe tener la ubicación del SDK de Android configurada en las Preferencias de Eclipse, como se describe en 'Personalizar el juego en Eclipse').
      • Este archivo contiene el archivo de aplicación de Android Duck.apk en la carpeta Duck \ bin \ classes que se puede instalar fácilmente en un dispositivo compatible con Android 3.2 a través de la herramienta ADB del SDK de Android sin Eclipse.

Comentarios finales para la parte 1

En la parte 1 de este tutorial, presentamos la aplicación tutorial, discutimos varios conceptos de ShiVa3D así como las herramientas principales de la suite ShiVa3D. También explicamos los archivos en el archivo de descarga que acompaña a este tutorial. En la parte 2, comenzaremos a describir cómo desarrollar el juego utilizando el Editor ShiVa. Presentaremos los módulos del Editor ShiVa utilizados en el desarrollo de la aplicación tutorial. Luego, hablaremos sobre los archivos de modelos de Collada que representan a los personajes principales de la aplicación. Luego, analizaremos algunos pasos iniciales para crear la aplicación, como crear el juego y la escena, así como importar los modelos de Collada..