OpenWebinars

Lenguajes de Programación

Desarrollo de juegos con Python, Pygame y Unity: Tutorial

¿Sabías que Python, junto con Pygame y Unity, permite desarrollar juegos impresionantes incluso para quienes están dando sus primeros pasos en programación? Descubre cómo estas herramientas facilitan el desarrollo de videojuegos para todos y sigue nuestro tutorial para crear tus primeros videojuegos completos.

Raul Iglesias Julios

Raul Iglesias Julios

Lectura 7 minutos

Publicado el 12 de noviembre de 2024

Compartir

Introducción

El desarrollo de juegos es una disciplina apasionante que combina programación, arte y diseño para crear experiencias interactivas. En los últimos años, la industria del juego ha crecido exponencialmente, convirtiéndose en una de las más lucrativas del mundo del entretenimiento.

Crear un juego puede ser una tarea compleja que requiere un buen equilibrio entre creatividad y habilidades técnicas. Antes de sumergirse en el desarrollo de juegos, es esencial considerar varios aspectos importantes:

  • Concepto y diseño: Definir la idea del juego, su mecánica, historia y estilo visual es fundamental. Un buen diseño debe ser atractivo y proporcionar una experiencia de usuario inmersiva.
  • Plataforma y herramientas: Elegir las herramientas y plataformas adecuadas según las capacidades técnicas y objetivos del proyecto es crucial. La elección entre herramientas como Pygame y Unity depende de factores como la complejidad del juego, el equipo de desarrollo y el público objetivo.
  • Programación: Implementar la lógica del juego utilizando lenguajes de programación y bibliotecas adecuadas. Esto incluye la creación de algoritmos, gestión de recursos y optimización del rendimiento.
  • Arte y sonido: Crear o integrar gráficos y sonidos que complementen la experiencia de juego. Los elementos visuales y sonoros juegan un papel vital en la inmersión del jugador.
  • Pruebas y ajustes: Probar el juego extensivamente para encontrar y corregir errores, así como ajustar la jugabilidad y el balance. Las pruebas aseguran que el juego funcione correctamente en diferentes dispositivos y condiciones.

Python en el desarrollo de videojuegos

Python es un lenguaje de programación interpretado, conocido por su simplicidad y legibilidad, lo que lo hace ideal para principiantes. Pygame es una biblioteca diseñada específicamente para el desarrollo de juegos 2D en Python. Ofrece módulos para manejar gráficos, sonidos y eventos de entrada, proporcionando una base sólida para la creación de juegos sencillos y complejos.

Es un lenguaje de programación versátil y accesible, lo que lo convierte en una opción atractiva para los desarrolladores de juegos, especialmente aquellos que están comenzando. Aunque no es el lenguaje más famoso en la industria de los videojuegos, Python ofrece simplicidad y facilidad de uso, lo que permite a los desarrolladores centrarse en la lógica del juego en lugar de lidiar con la complejidad del código.

Python combina la potencia de las bibliotecas de C/C++ con una curva de aprendizaje menos empinada, lo que facilita la creación de prototipos y la experimentación en el desarrollo de juegos.

Pygame para videojuegos

Pygame es una de las bibliotecas más populares de Python para el desarrollo de juegos, que es ideal para desarrolladores novatos porque permite crear juegos básicos rápidamente, mientras que su flexibilidad y extensibilidad la hacen adecuada también para proyectos más complejos.

Qué es Pygame

Pygame es una biblioteca de Python diseñada específicamente para el desarrollo de juegos en 2D. Se basa en la biblioteca SDL (Simple DirectMedia Layer) y ofrece una amplia gama de funciones para gestionar gráficos, sonidos y otros aspectos clave del desarrollo de juegos. Es guna biblioteca gratuita, de código abierto y puede ejecutarse en múltiples plataformas, lo que la hace accesible tanto para desarrolladores independientes como para aquellos que desean aprender sobre programación de juegos.

Por qué Usar Pygame en el desarrollo de juegos

Pygame es una excelente opción para el desarrollo de juegos debido a su simplicidad y robustez. Al ser fácil de aprender, los principiantes pueden crear sus primeros juegos en poco tiempo, mientras que los desarrolladores más experimentados pueden aprovechar su flexibilidad para proyectos más avanzados.

Permite desarrollar desde simples juegos retro hasta proyectos educativos y prototipos rápidos, todo dentro del ecosistema de Python, que es conocido por su sintaxis limpia y legible.

Juegos desarrollados con Pygame

Pygame es una biblioteca popular entre desarrolladores independientes y aficionados debido a su simplicidad y flexibilidad. Aquí hay algunos ejemplos notables de juegos desarrollados con Pygame:

  • Frets on Fire: Un juego de música similar a Guitar Hero, donde los jugadores tocan notas en sincronía con la música utilizando un teclado.
  • SolarWolf: Un juego de acción inspirado en el clásico arcade “Solar Fox”, donde el jugador debe recolectar cajas mientras evita enemigos.
  • Brotato: Bs un videojuego roguelite de disparos de topdown de 2023 desarrollado en GODOT. Se lanzó inicialmente en acceso anticipado en Steam en 2022, durante el cual vendió más de un millón de copias.
  • Flappy Bird: Una versión clon del popular juego móvil, donde el jugador controla un pájaro que debe volar entre tubos sin chocar.
  • Ren’Py: Aunque Ren’Py es un motor para novelas visuales, está basado en Pygame y permite la creación de juegos narrativos interactivos.

Unity con Python para videojuegos

Unity es uno de los motores de juego más populares del mundo, conocido por su capacidad para crear experiencias en 2D y 3D de alta calidad. Aunque Unity está diseñado para trabajar principalmente con C#, algunos desarrolladores prefieren utilizar Python debido a su simplicidad y versatilidad. A través de varias herramientas y plugins, es posible integrar Python en proyectos de Unity para aprovechar sus características en scripts y automatizaciones específicas.

Qué es Unity

Unity es un motor de juego multiplataforma que permite a los desarrolladores crear videojuegos y simulaciones interactivas. Su facilidad de uso, junto con su potente conjunto de herramientas para gráficos (shaders), físicas, interactividad, sonidos, optimización, partículas, multiplataforma, y multijugador lo ha convertido en una opción favorita tanto para principiantes como para desarrolladores profesionales.

Es ampliamente utilizado en la industria del entretenimiento, pero también se aplica en campos como la realidad aumentada (AR), la realidad virtual (VR), y simulaciones industriales.

Juegos desarrollados con Unity

Unity es una herramienta extremadamente versátil y ha sido utilizada para desarrollar algunos de los juegos más exitosos y visualmente impresionantes de los últimos años. Algunos ejemplos destacados son:

  • Monument Valley: Un juego de puzzle visualmente impresionante con mecánicas únicas basadas en ilusiones ópticas. Monument Valley ha ganado múltiples premios por su diseño artístico y jugabilidad innovadora.
  • Hollow Knight: Este es un juego de plataformas y acción que ha sido aclamado por su diseño de niveles, mecánicas de combate y arte detallado. Hollow Knight demuestra la capacidad de Unity para manejar juegos 2D complejos con animaciones fluidas y entornos intrincados.
  • Cuphead: Con su estilo artístico único inspirado en los dibujos animados de los años 30, Cuphead es un juego de plataformas y disparos que ha sido aclamado tanto por su diseño visual como por su desafiante jugabilidad. Unity permitió a los desarrolladores crear animaciones y efectos visuales que capturan perfectamente el estilo de la época.
  • Ori and the Blind Forest: Un juego de plataformas de acción-aventura que es conocido por su arte deslumbrante, historia emotiva y mecánicas de juego pulidas. Ori and the Blind Forest ha sido alabado por críticos y jugadores, y muestra cómo Unity puede ser utilizado para crear experiencias de juego profundamente inmersivas y visualmente impactantes.

Comparación de Pygame y Unity

  • Unity: Ofrece herramientas avanzadas y soporte para VR y AR, es ideal para juegos complejos y multiplataforma desde 2D a 3D. Unity tiene costos asociados si los ingresos del juego superan ciertos límites y ofrece soporte técnico con la versión Pro.
  • Pygame: Es simple y adecuado para juegos 2D y educación, con menor requerimiento de recursos, sin costos adicionales después de superar ciertos ingresos, y es completamente de código abierto, lo que lo hace ideal para proyectos pequeños e independientes.
 
Aspecto Unity Pygame
Gratuito ✓ (Gratis con limitaciones en ingresos) ✓ (Sin limitaciones)
Versión de Pago ✓ (Tiene versiones de pago)
Soporte Técnico ✓ (Con versión Pro)
Sin Fees para Altos Ingresos
DOTS (Data-Oriented Technology Stack)
Prefabs
Plugins y Marketplace
Optimización para Móviles
Librerías de Meta para VR
Amplio Soporte Multiplataforma
Comunidad y Recursos
Motor de Física y Gráficos
Facilidad de Uso
Desarrollo Multijugador
Calidad Visual y Gráfica
Desarrollo 2D y 3D
Realidad Virtual y Aumentada
Depuración Intuitiva
Asset Store
Tutoriales Online
Código Abierto
Soporte para Juegos Retro y Pixel Art
Portabilidad de Código

Ventajas y desventajas de Unity con Python

Ventajas:

  • Simplicidad del Código: Python ofrece una sintaxis clara y fácil de leer, facilitando el desarrollo, especialmente para quienes no están familiarizados con C#.
  • Automatización y Scripts: Ideal para automatizar tareas dentro de Unity, como la generación de contenido y la manipulación de datos.
  • Versatilidad: Soporta el desarrollo 2D, 3D, VR y AR, proporcionando herramientas avanzadas para cada tipo de proyecto.
  • Amplio Soporte Multiplataforma: Permite exportar juegos a múltiples plataformas, incluidas consolas, móviles y web.
  • Motor de Física y Gráficos Avanzado: Permite crear gráficos y físicas realistas, aprovechando las capacidades avanzadas de Unity.
  • Plugins y Marketplace: Acceso a una amplia variedad de recursos en Unity Asset Store que aceleran el desarrollo.
  • Desarrollo Multijugador: Herramientas robustas para crear juegos multijugador con capacidades avanzadas.

Desventajas:

  • Rendimiento: Python no iguala la eficiencia de C# en Unity, lo que puede ser un problema en juegos gráficamente intensivos.
  • Compatibilidad Limitada: La integración de Python en Unity requiere plugins adicionales, lo que aumenta la complejidad del proyecto.
  • Menor Soporte Nativo: Python no cuenta con el mismo nivel de soporte ni documentación que C# en Unity, lo que puede dificultar el desarrollo.
  • Curva de Aprendizaje: A pesar de su potencia, Unity puede ser más complejo de aprender y dominar en comparación con herramientas más simples.
  • Costos: Unity tiene versiones gratuitas y de pago, pero pueden surgir costos adicionales si se superan ciertos ingresos o para obtener soporte Pro.

Ventajas y desventajas de Pygame

Ventajas:

  • Gratuito y de código abierto: Sin costos adicionales, ideal para cualquier nivel de ingresos.
  • Facilidad de uso: Excelente para principiantes, con una curva de aprendizaje suave y adecuada para proyectos educativos.
  • Comunidad y recursos: Abundantes tutoriales y ejemplos disponibles para guiar a los desarrolladores.
  • Pequeña huella de memoria: Pygame puede ejecutarse en sistemas con recursos limitados, haciéndolo accesible para desarrolladores con hardware menos potente.
  • Portabilidad: Al ser basado en Python, Pygame es altamente portable entre diferentes sistemas operativos.

Desventajas:

  • Limitado a 2D: No es adecuado para juegos avanzados en 3D, limitando su uso en proyectos más complejos.
  • Rendimiento: Menos eficiente en tareas gráficamente intensivas comparado con motores más robustos como Unity.
  • Sin soporte nativo para VR/AR: Carece de capacidades para desarrollar experiencias en realidad virtual y aumentada.
  • Falta de recursos avanzados: No cuenta con un marketplace ni una variedad de plugins tan amplia como Unity, lo que puede limitar la expansión del proyecto.
  • Menor comunidad y soporte: Aunque tiene una buena comunidad, es mucho más pequeña en comparación con Unity, lo que puede dificultar encontrar soluciones a problemas específicos.

Polémica reciente de Unity: Runtime fee

Recientemente (Enero 2024), Unity estuvo en el centro de una polémica debido a su política de costos por instalación en tiempo de ejecución. Esta política generó preocupación en la comunidad de desarrolladores, ya que muchos temían un aumento significativo en los costos de desarrollo y publicación de juegos, especialmente para desarrolladores independientes y estudios pequeños.

Aunque los términos fueron acotados y se ofrecieron herramientas para predecir los costos, la controversia dejó a muchos desarrolladores considerando migrar a motores alternativos como Godot o Unreal Engine, debido a la pérdida de confianza en la transparencia y estabilidad futura de Unity.

Sin embargo, después de consultas extensas con la comunidad, Unity ha decidido cancelar la tarifa de ejecución (Runtime Fee) para clientes de juegos, con efecto inmediato. Esta decisión marca un retorno al modelo basado en suscripciones por asiento, con algunos ajustes importantes:

  • Unity Personal: Seguirá siendo gratuito y aumentará su umbral de ingresos de $100,000 a $200,000 USD. La pantalla de inicio “Made with Unity” será opcional para juegos hechos con Unity 6, que se lanzará este año.
  • Unity Pro: Habrá un aumento del 8% en el precio de suscripción anual, a $2,200 USD por asiento, y será necesario para aquellos con más de $200,000 USD en ingresos anuales.
  • Unity Enterprise: Aumentará un 25% el precio de suscripción, con nuevos umbrales y paquetes personalizados para clientes que superen los $25 millones USD en ingresos anuales.

Unity ha reafirmado su compromiso de no introducir cambios en los términos del software sin permitir que los usuarios continúen con las condiciones previas si deciden no actualizar. Esto brinda una mayor tranquilidad a los desarrolladores que buscan estabilidad a largo plazo.

A pesar de la cancelación de la tarifa de ejecución, el daño a la confianza ya ha sido significativo, y muchos desarrolladores siguen evaluando otras opciones. Motores como Godot y Pygame ofrecen seguridad al ser de código abierto, proporcionando un entorno estable y predecible.

Tutorial para crear un videojuegojuego de plataformas con Pygame

1. Configura tu entorno de desarrollo

  • Instala Python:

    • Descarga e instala la última versión de Python desde python.org.
    • Asegúrate de marcar la opción “Add Python to PATH” durante la instalación.
  • Instala Visual Studio Code:

    • Descarga e instala Visual Studio Code desde code.visualstudio.com.
    • Instala la extensión “Python” de Microsoft desde la pestaña de extensiones en Visual Studio Code.
  • Instala Pygame:

    • Abre una terminal en Visual Studio Code (menú View > Terminal).
    • Escribe el siguiente comando y presiona Enter para instalar Pygame:
pip install pygame

2. Configura tu proyecto en Visual Studio Code

  • Crea una carpeta para tu proyecto.
  • Dentro de esta carpeta, crea un archivo llamado main.py.
  • Abre la carpeta en Visual Studio Code:
  • Ve a File > Open Folder y selecciona tu carpeta del proyecto.

3. Crea el juego en Pygame

  • Crea main.py y escribe el código básico:

4. Ejecuta el juego

  • Abre la terminal en Visual Studio Code.
  • Escribe el siguiente comando y presiona Enter:
python main.py
  • Deberías ver una ventana con el juego.
  • Para transformar el juego final en un .exe requerirás de más conocimientos y pasos que los vistos hasta aquí.

Guía para crear un videojuego en Unity con mejoras

Esta guía te llevará paso a paso a través del proceso de creación de un juego de oleadas en Unity, similar al que has desarrollado con Pygame.

Cubriremos desde la configuración inicial hasta la implementación de mejoras utilizando un solo Canvas.

Nota: Los scripts de C# se mencionarán pero no se incluirán en esta guía.

1. Configuración del entorno de desarrollo

  • Instala Unity Hub y Unity Editor:

    • Descarga Unity Hub desde Unity.
    • Abre Unity Hub y navega a la pestaña “Installs”.
    • Haz clic en “Add” y selecciona la versión recomendada de Unity (por ejemplo, Unity 2023.1 LTS).
    • Durante la instalación, asegúrate de incluir Visual Studio con las herramientas de desarrollo de Unity.
  • Instala Visual Studio:

    • Si no lo hiciste durante la instalación de Unity, descarga e instala Visual Studio y asegúrate de incluir el “Desarrollo de juegos con Unity” en los componentes.

2. Creación del proyecto en Unity

  • Inicia Unity Hub y selecciona la pestaña “Projects”.
  • Haz clic en “New Project”.
  • Selecciona la plantilla “2D” para este proyecto.
  • Nombra tu proyecto, por ejemplo, “JuegoDeOleadasUnity”.
  • Elige una ubicación en tu computadora donde se guardará el proyecto.
  • Haz clic en “Create” para crear el proyecto.

3. Creación de prefabs

En esta sección, crearás los prefabs necesarios para tu juego: Player, Enemy y Bullet. Cada prefab tendrá componentes específicos configurados para asegurar un funcionamiento correcto en el juego.

Prefab del jugador

  • Crear el objeto del jugador:

    • En la ventana Hierarchy, haz clic derecho > 2D Object > Sprite.
    • Nombra el objeto “Player”.
    • En el Inspector, bajo la sección Sprite Renderer, cambia el Sprite a un círculo o cualquier gráfico que desees para representar al jugador.
  • Agregar Componentes al Jugador:

    • Rigidbody2D:

      • En el Inspector, haz clic en “Add Component”.
      • Busca y selecciona “Rigidbody2D”.
      • Configura las siguientes propiedades:
        • Body Type: Dynamic
        • Gravity Scale: 0 (para que el jugador no sea afectado por la gravedad)
        • Constraints: Marca Freeze Rotation Z para evitar que el jugador rote al colisionar.
    • Collider2D:

      • En el Inspector, haz clic en “Add Component”.
      • Busca y selecciona “CircleCollider2D”.
      • Configura las siguientes propiedades:
        • Is Trigger: Desactivado (para detectar colisiones físicas)
        • Radius: Ajusta el radio según el tamaño de tu sprite para una detección precisa.
  • Asignar el tag “Player”:

    • Con el objeto “Player” seleccionado en la Hierarchy, en el Inspector, haz clic en el menú desplegable Tag.
    • Selecciona “Player”. Si no existe, crea un nuevo tag llamado “Player”:
      • Haz clic en “Add Tag…”.
      • En la lista de tags, haz clic en el símbolo “+” para añadir un nuevo tag.
      • Nombra el nuevo tag como “Player” y asígnalo al objeto “Player”.
  • Crear el prefab del jugador:

    • Arrastra el objeto “Player” desde la Hierarchy a la carpeta “Assets/Prefabs”. Si no existe la carpeta “Prefabs”, créala dentro de “Assets”.
    • Esto creará un prefab reutilizable del jugador.

Prefab del enemigo

  • Crear el objeto del enemigo:

    • En la Hierarchy, haz clic derecho > 2D Object > Sprite.
    • Nombra el objeto “Enemy”.
    • En el Inspector, bajo la sección Sprite Renderer, cambia el Sprite a un cuadrado rojo o cualquier gráfico que desees para representar al enemigo.
  • Agregar componentes al enemigo:

    • Rigidbody2D:

      • En el Inspector, haz clic en “Add Component”.
      • Busca y selecciona “Rigidbody2D”.
      • Configura las siguientes propiedades:
        • Body Type: Dynamic
        • Gravity Scale: 0 (para que el enemigo no sea afectado por la gravedad)
        • Constraints: Marca Freeze Rotation Z para evitar que el enemigo rote al moverse.
    • Collider2D:

      • En el Inspector, haz clic en “Add Component”.
      • Busca y selecciona “BoxCollider2D”.
      • Configura las siguientes propiedades:
        • Is Trigger: Desactivado (para detectar colisiones físicas)
        • Size: Ajusta el tamaño según el sprite para una detección precisa.
  • Asignar el tag “Enemy”:

    • Con el objeto “Enemy” seleccionado en la Hierarchy, en el Inspector, haz clic en el menú desplegable Tag.
    • Selecciona “Enemy”. Si no existe, crea un nuevo tag llamado “Enemy”:
      • Haz clic en “Add Tag…”.
      • En la lista de tags, haz clic en el símbolo “+” para añadir un nuevo tag.
      • Nombra el nuevo tag como “Enemy” y asígnalo al objeto “Enemy”.
  • Crear el prefab del enemigo:

    • Arrastra el objeto “Enemy” desde la Hierarchy a la carpeta “Assets/Prefabs”.
    • Esto creará un prefab reutilizable del enemigo.

Prefab de la bala

  • Crear el objeto de la bala:

    • En la Hierarchy, haz clic derecho > 2D Object > Sprite.
    • Nombra el objeto “Bullet”.
    • En el Inspector, bajo la sección Sprite Renderer, cambia el Sprite a un pequeño rectángulo blanco o cualquier gráfico que desees para representar la bala.
  • Agregar componentes a la bala:

    • Rigidbody2D:

      • En el Inspector, haz clic en “Add Component”.
      • Busca y selecciona “Rigidbody2D”.
      • Configura las siguientes propiedades:
        • Body Type: Dynamic
        • Gravity Scale: 0 (para que la bala no sea afectada por la gravedad)
        • Constraints: Marca Freeze Rotation Z para evitar que la bala rote al moverse.
    • Collider2D:

      • En el Inspector, haz clic en “Add Component”.
      • Busca y selecciona “BoxCollider2D”.
      • Configura las siguientes propiedades:
        • Is Trigger: Activado (para detectar colisiones sin interferir con la física del enemigo)
        • Size: Ajusta el tamaño según el sprite para una detección precisa.
  • Asignar el tag “Bullet”:

    • Con el objeto “Bullet” seleccionado en la Hierarchy, en el Inspector, haz clic en el menú desplegable Tag.
    • Selecciona “Bullet”. Si no existe, crea un nuevo tag llamado “Bullet”:
      • Haz clic en “Add Tag…”.
      • En la lista de tags, haz clic en el símbolo “+” para añadir un nuevo tag.
      • Nombra el nuevo tag como “Bullet” y asígnalo al objeto “Bullet”.
  • Crear el prefab de la bala:

    • Arrastra el objeto “Bullet” desde la Hierarchy a la carpeta “Assets/Prefabs”.
    • Esto creará un prefab reutilizable de la bala.

Notas Adicionales:

¡Ahora tus prefabs están correctamente configurados para interactuar de manera efectiva en el juego!

Asegúrate de seguir estos pasos detallados para evitar problemas de colisión y comportamiento inesperado durante el desarrollo de tu juego.

4. Configuración del canvas de mejoras

  • Crear el canvas:

    • En la Hierarchy, haz clic derecho > UI > Canvas.
    • Nombra el Canvas como “UpgradeCanvas”.
    • En el Inspector, asegúrate de que el Render Mode esté en “Screen Space - Overlay”.
  • Añadir un panel al canvas:

    • Haz clic derecho en “UpgradeCanvas” > UI > Panel.
    • Nombra el Panel como “UpgradePanel”.
    • Ajusta el tamaño y color del Panel:
      • En el Inspector, modifica el Color para que sea ligeramente transparente (por ejemplo, con una alpha de 0.8).
  • Añadir títulos e instrucciones:

    • Título:
      • Haz clic derecho en “UpgradePanel” > UI > Text - TextMeshPro.
      • Si no tienes TextMeshPro instalado, Unity te pedirá instalarlo; acepta.
      • Nombra el texto “Title”.
      • En el Inspector, establece el texto a “Mejoras de Oleada”.
      • Ajusta la fuente, tamaño y alineación según prefieras.
    • Instrucciones:
      • Repite el proceso para añadir otro texto llamado “Instructions”.
      • Establece el texto a “Selecciona una mejora”.
  • Añadir botones para las mejoras:

    • Botón 1:
      • Haz clic derecho en “UpgradePanel” > UI > Button - TextMeshPro.
      • Nombra el botón “ButtonDamage”.
      • Cambia el texto a “Aumentar Daño de Bala”.
    • Botón 2:
      • Repite el proceso y nombra el botón “ButtonFireRate”.
      • Cambia el texto a “Aumentar Frecuencia de Disparo”.
    • Botón 3:
      • Repite el proceso y nombra el botón “ButtonHealth”.
      • Cambia el texto a “Aumentar Salud Máxima”.
    • Ajusta la disposición de los botones dentro del Panel para que estén distribuidos verticalmente y sean accesibles.
  • Desactivar el canvas al inicio:

    • En el Inspector de “UpgradeCanvas”, desmarca la casilla “Active” para que el Canvas esté oculto al inicio del juego.

5. Creación de Scripts en C

Nota: Los scripts son esenciales para la funcionalidad del juego.

Script PlayerController

  • Descripción: Maneja el movimiento del jugador, el disparo de balas y la regeneración de salud.
  • Asignación: Asigna este script al prefab “Player”.
  • Componentes Clave:
    • Movimiento basado en entradas de teclado.
    • Disparo de balas hacia la posición del ratón.
    • Gestión de salud y regeneración.

Script Enemy

  • Descripción: Controla el movimiento de los enemigos hacia el jugador y la detección de colisiones con balas.
  • Asignación: Asigna este script al prefab “Enemy”.
  • Componentes Clave:
    • Movimiento hacia la posición del jugador.
    • Reducción de salud al ser golpeado por una bala.
    • Daño al jugador al colisionar.

Script Bullet

  • Descripción: Gestiona el movimiento de las balas hacia el punto de clic y su destrucción al colisionar.
  • Asignación: Asigna este script al prefab “Bullet”.
  • Componentes Clave:
    • Movimiento en la dirección del objetivo.
    • Destrucción tras colisión o después de cierto tiempo.

Script GameController

  • Descripción: Controla las oleadas de enemigos, el puntaje y la lógica general del juego, incluyendo el spawn automático de enemigos desde los bordes de la pantalla.
  • Asignación: Crea un objeto vacío llamado “GameController” en la Hierarchy y asigna este script.
  • Componentes Clave:
    • Spawneo automático de enemigos desde los bordes de la pantalla por oleada.
    • Incremento de dificultad en cada oleada.
    • Gestión del puntaje y estado del juego.

Script UpgradeSystem

  • Descripción: Gestiona las mejoras seleccionadas por el jugador al final de cada oleada.
  • Asignación: Asigna este script al “UpgradeCanvas”.
  • Componentes Clave:
    • Incremento de atributos del jugador según las mejoras seleccionadas.
    • Cierre del Canvas de mejoras y reinicio del juego tras aplicar mejoras.

6. Configuración de la escena y asignación de componentes

  • Configurar la escena principal:

    • En la Hierarchy, crea un objeto vacío llamado “GameController”.
    • Arrastra el script “GameController” al objeto “GameController”.
    • En el Inspector de “GameController”, asigna el prefab:

      • Enemy Prefab: Arrastra el prefab “Enemy” desde Assets/Prefabs.

      Nota: Ya no es necesario crear y asignar puntos de spawn, ya que los enemigos se generarán automáticamente desde los bordes de la pantalla.

  • Asignar referencias del canvas de mejoras:

    • Selecciona el objeto “UpgradeCanvas” en la Hierarchy.
    • En el Inspector, arrastra el script “UpgradeSystem” al “UpgradeCanvas”.
    • Asigna las referencias en el script:
      • PlayerController: Arrastra el prefab “Player” desde la Hierarchy.
      • Botones de Mejoras: Arrastra cada botón correspondiente (“ButtonDamage”, “ButtonFireRate”, “ButtonHealth”).
      • GameController: Arrastra el objeto “GameController”.
  • Configurar el jugador:

    • Selecciona el prefab “Player” en Assets/Prefabs.
    • Arrastra el script “PlayerController” al prefab “Player”.
    • En el Inspector de “Player”:
      • Bullet Prefab: Arrastra el prefab “Bullet”.
      • Bullet Spawn: Crea un objeto hijo del jugador llamado “BulletSpawn” y posicionarlo donde se dispararán las balas. Arrastra este objeto al campo correspondiente en el script.
  • Configurar el enemigo:

    • Selecciona el prefab “Enemy” en Assets/Prefabs.
    • Arrastra el script “Enemy” al prefab “Enemy”.
  • Configurar la bala:

    • Selecciona el prefab “Bullet” en Assets/Prefabs.
    • Arrastra el script “Bullet” al prefab “Bullet”.
    • Asigna el tag “Bullet” al prefab:
      • En el Inspector, haz clic en el menú desplegable Tag > Add Tag….
      • Añade “Bullet” y asígnalo al prefab.
  • Asignar tags:

    • Selecciona el objeto “Player” en la Hierarchy.
    • En el Inspector, asigna el tag “Player”.
    • Selecciona el prefab “Enemy” y asígnale el tag “Enemy”.

7. Finalización y prueba del juego

  • Configurar el orden de las escenas:

    • Ve a File > Build Settings.
    • Asegúrate de que tu escena actual esté añadida en la lista de Scenes In Build.
  • Probar el juego:

    • Haz clic en el botón “Play” en la parte superior de Unity.
    • Controla al jugador con las teclas de flecha o WASD.
    • Dispara balas con el clic izquierdo del ratón.
    • Observa cómo aparecen los enemigos y manejan las oleadas.
    • Al finalizar una oleada, verifica que el UpgradeCanvas aparezca y que las mejoras funcionen correctamente.
  • Depurar y ajustar:

    • Si encuentras errores, revisa la consola de Unity (Window > General > Console).
    • Asegúrate de que todas las referencias estén correctamente asignadas en el Inspector.
    • Ajusta parámetros como velocidad, salud, daño y frecuencia de disparo según sea necesario para equilibrar el juego.

¡Felicidades! Has completado la guía para crear tu juego de oleadas en Unity y en Pygame. Sigue explorando y personalizando tu juego para añadir más funcionalidades y mejorar la experiencia del jugador. ¡Buena suerte y diviértete desarrollando!

Aquí puedes testear el juego:


🎮 Jugar a “Waves of Shape”

Conclusiones

Cuando se trata de elegir entre Pygame y Unity, la decisión depende principalmente de tus necesidades y nivel de experiencia.

  • Pygame es una herramienta fantástica para principiantes, especialmente si quieres aprender los fundamentos de la programación de juegos de manera sencilla y sin complicaciones. La comunidad valora su simplicidad y el hecho de que es una excelente forma de practicar la lógica del juego sin preocuparse demasiado por los gráficos avanzados o las físicas complejas. Sin embargo, Pygame tiene sus límites: carece de soporte para proyectos más ambiciosos en 3D, o experiencias de realidad aumentada/virtual.

  • Unity, en cambio, es el estándar en la industria, preferido por estudios tanto independientes como grandes estudios. Ofrece herramientas robustas para crear juegos inmersivos en 2D y 3D, y permite exportar a múltiples plataformas. Aunque aprender Unity implica una curva de aprendizaje más lenta, hay cientos de miles de tutoriales en internet para aprender.

    La controversia sobre sus tarifas de instalación afectó la confianza a futuro para muchos, pero su flexibilidad y el acceso a recursos como el Asset Store continúan siendo un gran atractivo.

En resumen, si estás empezando o buscas hacer juegos simples por diversión, Pygame es ideal. Pero si tu meta es crear juegos avanzados o trabajar en la industria, Unity es la opción más completa, aunque requiere un mayor compromiso de tiempo y aprendizaje.

Bombilla

Lo que deberías recordar del desarrollo de videojuegos con Python, Pygame y Unity

  • El desarrollo de juegos combina programación, arte y diseño para experiencias interactivas.
  • Pygame: Ideal para juegos 2D, fácil de usar, gratuito, 3D posible pero limitado en rendimiento y sin soporte para VR/AR.
  • Unity: Potente para juegos 2D y 3D, con herramientas avanzadas y soporte multiplataforma, pero más complejo y con posibles costes adicionales.
  • Controversia Unity: La propuesta de tarifas generó desconfianza, aunque fue revertida.
Compartir este post

También te puede interesar