7. Lógica del juego y conectividad con redes sociales.

Sin valoraciones

7. Lógica del juego y conectividad con redes sociales.

Este capítulo lo dedicaremos a darle una lógica al juego y a los pequeños detalles que falta para convertir el juego en un producto finalizado. En cuanto a herramientas 2D de Unity3D, solo usaremos el componente Distance Joint 2d pero profundizaremos en el sonido y en las redes sociales, dos componentes imprescindibles en los videojuegos a día de hoy.

7.1 Lógica del juego y uso del componente Distance Joint 2d.

Hemos construido un nivel pero aún nos falta implementar la lógica del juego, es decir, que el jugador gane o pierda. En el Anexo 4 están definido las diferentes formas de superar un nivel.

Cuando finalicemos el nivel, nos aparecerá la pantalla de resultado de un nivel (Figura 7.1) que cargará las variables previamente almacenadas (antes de acceder a un determinado nivel, almacenamos los datos del nivel y los requisitos para superarlo) y calculará el número de estrellas que otorgará al jugador, activando o desactivando cada estrella. Las estrellas tienen un ligero balanceo con respecto a un eje. Esto se consigue añadiéndoles a cada una un componente Distance Joint 2D.

7. Lógica del juego y conectividad con redes sociales.

Figura 7.1. Pantalla de resultado de un nivel y su script asociado.

7. Lógica del juego y conectividad con redes sociales.

Figura 7.2. Distance Joint 2D asociado a un GameObject.

En la figura 7.2 podemos ver los campos que incluye el componente Distance Joint 2D. Podemos conectarlo a otro GameObject (con Rigid Body 2D) y activar o desactivar la colisión con dicho objeto. En “Distance” elegimos la distancia máxima entre los dos puntos y activando la última opción solo se balanceará a la distancia máxima.

7.2. Añadiendo redes sociales a nuestro juego.

El uso de las redes sociales en nuestros juegos es muy útil para que nuestro juego llegue a más gente pero hay que analizar bien su uso para que no resulte molesto al usuario. En nuestro caso añadiremos un botón de Facebook que aparecerá tras superar cada nivel y permitirá compartir la puntuación.

Dado que es una herramienta externa lo cual no está incluido en el objetivo del proyecto, en el Anexo 7.1 se comenta brevemente como añadir el SDK de Facebook para compartir una publicación y además menciona la herramienta “Soomla” que nos facilitará la integración con todas las redes sociales y con las compras “in-Apps”.

8. Conclusiones.

En este proyecto se ha creado un tutorial práctico de las nuevas herramientas aparecidas en la versión 4.3 de Unity3d para crear contenido en 2D, a la vez que se ha implementado un videojuego completo. Para realizar esta tarea, se ha intentado que cada tema se centre en una herramienta o funcionalidad específica de la versión 4.3 a la vez que se avanza en la implementación del juego.

Aunque el tutorial se centra en dichas herramientas nativas de Unity3d, dado que implementar un videojuego es una tarea compleja y bastante extensa, me ha resultado imposible no incluir diversos temas alejados del propósito principal del tutorial pero que son necesarios en el desarrollo de cualquier videojuego como son:

  • Herramientas de desarrollo: hemos explicado e instalado las herramientas de desarrollo. Unity3d es un motor gráfico basado en scripts y aunque incluya su propio IDE, disponemos de varias alternativas para programar los scripts.
  • Documento de diseño del videojuego (GDD): en la implementación de un videojuego es común que trabaje un equipo de personas por lo que es necesario un documento más laxo que el documento de Especificación de Requisitos para detallar el videojuego.
  • Inteligencia artificial: en cualquier juego por simple que sea, como por ejemplo el Pong, incluye inteligencia artificial. En este tutorial hemos implementado un algoritmo A* y hemos comentado la alternativa que ofrece
  • Redes sociales: al tratarse de un videojuego enfocado a plataformas móviles, la integración con redes sociales es algo esencial por lo que se ha integrado con una de las redes sociales más conocidas, Facebook, y además se ha hecho una introducción con las demás redes sociales y plataformas.
  • Otros: la importancia de la música, gráficos y otros detalles para que un videojuego tenga un acabado profesional.

Estas nuevas herramientas de Unity3d nos han proporcionado todo lo necesario para la implementación de un videojuego en 2D. Aunque es cierto que en todo momento trabajamos sobre un entorno en 3D adaptado al 2D no he notado ninguna caída de rendimiento en el entorno de desarrollo ni en los dispositivos que ejecutan el videojuego gracias a la potencia del hardware actual. Unity3d nos ha facilitado mucho la implementación del videojuego resultante, el cual está adaptado a dispositivos móviles pero es posible exportarlo a otras plataformas como videoconsolas realizando unos cambios mínimos. Gracias al uso de las escenas, es fácil añadir contenido al videojuego y mejorarlo al contrario que con frameworks más livianos donde hay que tener en cuenta las futuras actualizaciones a la hora de programar la arquitectura del videojuego. Por otra parte, Unity3d dispone de mucha comunidad que crea contenido por lo que siempre encontraremos alguna solución para cualquier cosa que necesitemos, como por ejemplo la facilidad con la que hemos integrado las redes sociales en el videojuego.

En resumen, aunque utilizar Unity3d para implementar un videojuego en 2D pueda ser como «matar moscas a cañonazos», en este tutorial hemos visto que las facilidades que nos proporciona Unity3d, su versatilidad, su comunidad detrás y la potencia del hardware actual, hace que compense utilizar este motor gráfico para este tipo de desarrollos.

8.1 Mejoras y trabajo futuro.

Como tutorial de las nuevas herramientas nativas para 2D, he abarcado la mayor parte de ellas por lo que es un tutorial práctico bastante completo. Sin embargo, durante la realización de este proyecto Unity3d ha lanzado varias versiones, entre ellas la 4.6 que incluye las nuevas herramientas GUI para facilitar la implementación de menús. En el videojuego elegido, no ha requerido de grandes menús por lo que no ha sido necesario utilizar las antiguas herramientas GUI incluidas desde las primeras versiones de Unity3d, sin embargo, dado el potencial de estas herramientas en la versión 4.6, sería interesante ampliar este tutorial con ellas.

Por otra parte, la integración con redes sociales y plataformas móviles es una parte interesante en el videojuego implementado. No forma parte del objetivo del proyecto pese a que hemos realizado la integración con la red social Facebook, sin embargo hubiese sido interesante profundizar en el framework open-source y gratuito “Soomla” el cual al ser un framework muy extenso, requiere mucho más tiempo de dedicación que el especificado en un proyecto fin de grado.

8.2 Aprendizaje personal.

A nivel de tecnología, el proyecto me ha servido para conocer más a fondo el motor de desarrollo Unity3d, tanto su interfaz y herramientas como su forma de trabajar con él. También he mejorado mis conocimientos en C#, lenguaje que ya conocía de antes pero a nivel de desarrollo de aplicaciones de escritorio y además adquirir buenas prácticas de programación ya que en un videojuego que requiere el uso de más recursos hardware, es indispensable utilizar buenas prácticas a la hora de programar y definir los objetos.

En cuanto a técnicas y algoritmos, con la inteligencia artificial de los enemigos he tenido que refrescar todos los conocimientos adquiridos durante la carrera y analizar que algoritmo era el más adecuado para este caso. Además de hacer uso de las buenas prácticas aprendidas como he comentado en el párrafo anterior.

A nivel de producto, me ha servido para conocer todos los entresijos del desarrollo de un videojuego y cómo intervienen muchos otros campos además de la programación. Por lo tanto, aunque en este proyecto hemos implementado un juego completo, en general un videojuego debería ser desarrollado por un grupo de personas con diferentes roles para asegurarnos de que el producto se lance con un mínimo de calidad.

8.3 Problemas técnicos.

Un problema que he tenido ha sido utilizar una herramienta de control de versiones con Unity3d. En mi caso he utilizado Bitbucker, un servicio de alojamiento de código basado en Git y Sourcetree que es un cliente Git que provee de una interfaz visual para utilizar los comandos de Git. Unity3d está basado en «escenas» las cuales guardan su configuración en ficheros .meta (xml) que identifican los objetos de la escena y otras configuraciones. Estos ficheros pueden cambiar con solo abrir una escena por lo que es difícil saber si se han realizado cambios reales. Para solucionar este problema, hay que configurar el fichero “.gitignore” para Unity3d (GitHub tiene dispone de un fichero configurado) y trabajar en la medida de lo posible con objetos Prefab (objetos que almacenan componentes y propiedades).

Otro problema ha sido que pese a que Unity3d ofrece todas las herramientas necesarias, el tema de los gráficos y las animaciones requieren de un «toque artístico» del que no dispongo. La solución ha sido utilizar recursos gratuitos en la medida de lo posible y realizar animaciones sencillas.

Por otra parte, a nivel personal he tenido que compaginar el proyecto con un trabajo a jornada completa por lo que el tiempo de desarrollo del proyecto se ha alargado más tiempo de lo previsto.

 

 

La lógica del juego y la conectividad con redes sociales son dos aspectos cruciales en el desarrollo de un videojuego moderno:

Lógica del Juego:

1. Sistema de Juego:

  • Define las reglas y mecánicas fundamentales del juego.
  • Implementa sistemas de salud, puntuación, objetivos, etc.

2. Máquina de Estados:

  • Utiliza una máquina de estados finitos para gestionar los diferentes estados del juego (inicio, pausa, juego en curso, fin de juego, etc.).

3. Personajes y Enemigos:

  • Crea scripts para el comportamiento de los personajes y enemigos.
  • Implementa inteligencia artificial para enemigos utilizando sistemas como árboles de comportamiento o máquinas de estados.

4. Manejo de Entradas:

  • Configura el sistema de manejo de entradas para el control del jugador.
  • Gestiona eventos como clics, toques, teclas, etc.

5. Físicas del Juego:

  • Ajusta y personaliza las físicas del juego según las necesidades.
  • Configura la gravedad, fricción, colisiones, etc.

6. Progresión y Desbloqueables:

  • Diseña un sistema de progresión que motive a los jugadores.
  • Implementa desbloqueables como nuevos niveles, personajes, logros, etc.

7. Sistema de Puntuación:

  • Crea un sistema de puntuación que refleje el rendimiento del jugador.
  • Integra tablas de clasificación para fomentar la competencia.

8. Efectos Visuales y Sonoros:

  • Implementa efectos visuales y sonoros para mejorar la experiencia del jugador.
  • Asocia eventos del juego con efectos de sonido y animaciones.

9. Optimización y Rendimiento:

  • Realiza optimizaciones para garantizar un rendimiento suave.
  • Implementa niveles de detalle (LOD), carga diferida y otras técnicas.

10. Sistema de Guardado:

  • Desarrolla un sistema de guardado para retener el progreso del jugador.
  • Utiliza PlayerPrefs o sistemas de guardado personalizados.

Conectividad con Redes Sociales:

1. Selección de Plataformas:

  • Decide qué plataformas de redes sociales integrarás (Facebook, Twitter, etc.).
  • Regístrate como desarrollador en las plataformas seleccionadas.

2. Autenticación Social:

  • Implementa la autenticación social para permitir a los jugadores iniciar sesión con sus cuentas de redes sociales.

3. Publicación de Logros y Puntuaciones:

  • Integra la capacidad de compartir logros y puntuaciones en las redes sociales.
  • Utiliza las API proporcionadas por las plataformas para realizar publicaciones.

4. Invitaciones y Compartir con Amigos:

  • Permite a los jugadores invitar a amigos a jugar.
  • Implementa funciones de compartir en redes sociales.

5. Acceso a Datos del Perfil:

  • Obtén datos de perfil del jugador desde las redes sociales (nombre, foto, etc.).
  • Asegúrate de cumplir con las políticas de privacidad.

6. Integración con Plataformas en Línea (Opcional):

  • Integra funciones específicas de plataformas en línea como Facebook Instant Games o Google Play Games.

7. Notificaciones y Actualizaciones:

  • Utiliza notificaciones para informar a los jugadores sobre eventos especiales o actualizaciones.
  • Asegúrate de cumplir con las políticas de notificación de cada plataforma.

8. Pruebas en Dispositivos Reales:

  • Realiza pruebas exhaustivas en dispositivos reales para garantizar que la integración con redes sociales funcione correctamente.

9. Manejo de Errores y Excepciones:

  • Implementa manejo de errores y excepciones para problemas relacionados con la conectividad social.
  • Proporciona mensajes de error claros para los usuarios.

10. Cumplimiento Normativo y Políticas de Plataformas:

  • Asegúrate de cumplir con todas las políticas de privacidad y normativas de las plataformas de redes sociales.

11. Documentación:

  • Documenta la implementación de la conectividad con redes sociales para referencia futura y colaboración.

12. Iteración:

  • Realiza iteraciones según los comentarios de los usuarios y las actualizaciones de las plataformas sociales.

Compártelo en tus redes

Share on facebook
Share on twitter
Share on linkedin
Share on pinterest

Valore este curso

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies para asegurar que damos la mejor experiencia al usuario en nuestra web. Si sigues utilizando este sitio asumimos que estás de acuerdo. VER