Advertisement
  1. Game Development

Cómo Aprender Pygame

Scroll to top
Read Time: 10 min

() translation by (you can also view the original English article)

Pygame es un conjunto multiplataforma de módulos Python diseñado para crear juegos. Los módulos están diseñados para ser sencillos, fáciles de usar, y divertidos-una parte clave de la ideología de Pygame. En éste artículo, te mostraré cómo usar Pygame, y compartiré consejos y recursos para aprenderlo.

Ésta guía asume que ya sabes cómo codificar en Python. Si no, consulta La Mejor Manera de Aprender Python, Aprender Python, El Tutorial de Python, Codecademy, o Aprende Python de Manera Práctica para empezar.

¿Por qué Pygame?

Es sencillo

Python con frecuencia es considerado como el mejor "primer lenguaje para aprender", y ha sido elogiado por su sintaxis fácil de aprender y su gradual curva de aprendizaje. Por ésta razón, muchos nuevos programadores comienzan por aprender Python.

Pygame extiende de Python, adopta la filosofía de Python, y tiene como objetivo ser fácil de usar. Además, los aspirantes a desarrolladores de juegos sin experiencia en programación pueden usar Pygame, mientras ellos aprenden Python primero rápidamente.

Tiene una vasta Comunidad.

Pygame ha estado disponible desde el 2000 y, desde entonces, se ha conformado una enorme comunidad alrededor de él. La comunidad afirma que "Pygame ha sido descargado millones de veces, y ha tenido millones de visitas a su sitio web". Como resultado de la vasta comunidad, errores reportados son solucionados rápidamente, la ayuda está disponible al instante, y un gran número de características adicionales han sido agregadas. Es más, la comunidad asegura que el desarrollo de Pygame es divertido; por ejemplo, una competencia de juegos en Python se celebra semestralmente para promover la plataforma. El tamaño de la comunidad es lo que separa a Pygame de los otros frameworks de juegos en Python.

Es de Código Abierto

El hecho que Pygame sea de código abierto significa que los errores son generalmente solucionados muy rápidamente por la comunidad. También significa que puedes extender Pygame para satisfacer tus necesidades y quizá aún regresar a la comunidad.

Pygame está escrito en C, y tomar una muestra del código es una gran forma de entender mejor cómo funcionan Python y Pygame.

Es altamente portable

Pygame es altamente portable, pues soporta Windows, Linux, Mac OS X, BeOS, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, y QNX. Además de éstas plataformas, existe un subconjunto de Pygame para Android. Es más, Pygame no requiere OpenGL y puede usar DirectX, WinDIB, X11, framebuffer de Linux y muchas otras APIs para renderizar gráficos. Ésto asegura que un gran número de usuarios pueden jugar tu juego.

Iniciar

Instalación

Antes de instalar Pygame, asegúrate que has instalado Python. Notarás que hay dos versiones de Python: Python 2 y Phyton 3. Personalmente, recomiendo que uses Python 2 junto con Pygame, pues Python 2 es más frecuente y hay módulos Pygame que no soportan Python 3. Sin embargo, aún podrías crear juegos magníficos usando Python 3.

Después de asegurar que una versión de Python está ejecutándose en tu máquina, puedes obtener Pygame desde su sitio web de descargas.

IDEs

Además de instalar los módulos de Pygame, recomiendo que instales un IDE para Python, que te facilitará crear y compilar juegos.

Nota que un entorno de desarrollo integrado, conocido como IDLE, ya viene empaquetado con Python. Sin embargo, IDLE frecuentemente ha sido criticado por problemas de usabilidad y personalmente no puedo recomendarlo.

Mi preferencia personal es PyScripter, pero PyCharm, Wing IDE, Python Tools for Visual Studio y Netbeans son todas opciones viables. Como siempre, la elección de un IDE viene de acuerdo a preferencias personales, así que te sugiero que las pruebes y veas cuál te gusta más.

Recursos

Aquí están algunos recursos que te ayudarán a iniciarte en Pygame.

Universidad de Colorado

La Universidad de Colorado proporciona una gran introducción a Pygame. Las diapositivas adjuntadas asegurarán que sepas sobre y cómo usar los componentes clave de Pygame. Después de que hayas leído éste documento, deberías entender los conceptos clave de Pygame.

Tutoriales

Existen multitud de tutoriales disponibles que te enseñarán Pygame poco a poco. He seleccionado tres de mis favoritos:

Series en Video

Desarrollo de Juegos en Python 3 con Pygme es una serie de videotutoriales disponible en una lista de reproducción en Youtube.  La serie contiene 29 videos, empezando con imágenes desplegadas y texto renderizado, y continúa con la enseñanza de animaciones e interacción del usuario. Si prefieres videotutoriales a tutoriales basados en texto, no te pierdas ésta serie.

Libros

Si eres principiante tanto de Python como de Pygame, recomiendo echar un vistazo a Inventa tus propios juegos de computadora con Python. Éste libro comienza enseñándote las bases de Python y soporta ésta instrucción mostrándote cómo elaborar sencillos juegos en la línea de comandos. Después de asegurar haber entendido las bases de Python, el libro te enseña Pygame.

Por otro lado, si estás ansioso de ir  directamente a Pygame, Creando Juegos con Python & Pygame es el libro para tí. Después de leer éste libro, habrás creado 11 juegos y estarás listo para proseguir tu solo.

Todos éstos libros son gratuitos y estás online, así que ¡puedes comenzar inmediatamente!

Próximos pasos

Lee la Documentación y Wiki

Leer la documentación es un paso importante en tu camino a lograr dominar Pygame. Aquí, encontrarás documentos, tutoriales y referencias que cubren todas las características de Pygame. La documentación te permitirá obtener conocimiento de todos los aspectos de Pygame, ir más allá de lo que habrías aprendido a través de recursos previos.

The Pygame Wiki también ayudará a responder cualquier pregunta que tengas sobre la plataforma, así que no dudes en leerlo.

Observa el Código

Observar el código te ayudará a entender que partes de Pygame interactúan para crear un juego completo. Más aún, ejemplos te mostrarán las mejores prácticas, y puedes aprender algunos trucos a lo largo del camino.

Checa los ejemplos oficiales de Pygame, para detalles sobre cómo usar módulos individuales, o revisar los Proyectos públicos de Pygame en Github para ver una completa serie de código.

Participa en la Comunidad

Pygame tiene un canal IRC activo y una lista de correo. (La lista de correo está también disponible en una interfaz parecida a un foro.) Miembros de la comunidad están deseosos de ayudar a principiantes, así que no tengas miedo de formular preguntas.

Una vez que te conviertas en experto de Pygame, contribuye en la comunidad y ayuda a otros. Enseñar a otros te ayudará a aprender, y solidificará los conceptos que ya conoces.

Crea Tu Propio Juego

Los recursos proporcionados arriba serán más que suficientes para obtener un sólido entendimiento de Pygame. Es más, si trabajas a tu manera a través de recursos, habrás realizado múltiples juegos. Sin embargo, te exhorto a elaborar tu propia creación; haz más que elaborar Tic-Tac-Toe o Concentration. Cualquiera puede seguir un tutorial para crear un juego. Deja fluir tu creatividad y pon a prueba tus habilidades creando un juego original.

Consejos de Desarrollo

Usa Grupos

Pygame viene con una característica realmente poderosa conocida como grupos a través de la clase pygame.sprite.Group. Un grupo es esencialmente un contenedor para objetos sprite.

Por ejemplo, si estoy creando múltiples sprites Bullet, puedo agregarlos a un grupo llamado bullets:

1
bullets = pygame.sprite.Group()
2
3
for i in range (10):
4
    bullets.add(Bullet())

Trabajar con grupos es mucho más rápido que trabajar con sprites individuales. Sencillamente puedes llamar a Group.update() para actualizar todos los sprites dentro de un grupo, o Group.draw() para copiar rápidamente el contenido del Group a tu Surface. Es más, grupos realizan la detección de colisión más fácil, porque Pygame tiene un método para comprobar colisiones entre dos grupos: pygam.sprite.groupcollide().

Convierte tus Surfaces (Superficies)

Asegúrate de convertir una Surface cuando estás creando una al llamar al método convert(). Éste método cambia el formato de pixel de una Surface para coincidir con la de desplegar Surface. Si éste método no es llamado, una conversión de pixeles tendrá que hacerse cada vez que copies algo a tu Surface-una operación muy lenta.

Por ejemplo, en lugar de:

1
ballPicture = pygame.image.load('ball.png')

llama:

1
ballPicture = pygame.image.load('ball.png').convert()

o si necesitas establecer el alfa:

1
ballPicture = pygame.image.load('ball.png').convert_alpha()

Nota que convert_alpha() no resultará en el mismo incremento del rendimiento que convert(), ya que el formato pixel no será una coincidencia exacta para la ventana Surface. Sin embargo, resulta en una velocidad de copia mejorada.

Update vs. Flip

Tanto pygame.display.update() y pygame.display.flip() actualizan el contenido de la ventana del juego. Sin embargo, simplemente llamar a éstos métodos actualiza la pantalla entera, ralentizando tremendamente el número de cuadros por segundo. En cambio, considera solo actualizar una parte específica de la pantalla (donde se efectuarán los cambios) llamando a pygame.display.update() y pasando un rect que representa el área a ser actualizada en el método. Al hacer ésto, verás una vasta mejora en el desempeño.

Nota que, a veces, toda la pantalla necesitará actualizarse, y en éstas instancias ambos métodos funcionarán bien.

Módulos Adicionales

Recuerda que mencioné la vasta y útil comunidad de Pygame previamente en el artículo. Te recomiendo que aproveches ésta comunidad descargando módulos adicionales realizados por sus miembros. Éstos módulos ayudarán a facilitar el rápido desarrollo de tu juego y simplemente el proceso de creación de juegos.

Mis favoritos incluyen:

  • Pyganim: facilita agregar animaciones de sprites a tus juegos
  • input.py: Simplifica el manejo del control en Pygame cuando se usan múltiples controladores de métodos

Puedes encontrar más librerías en el sitio web de Pygame.

Juegos Ejecutables

Si quieres que tu juego sea verdaderamente multiplataforma, debes considerar el escenario en el que tus usuarios no tengan instalados Python y Pygame en sus máquinas.

Considera la extensión py2exe para crear ejecutables Windows, y la extensión py2app para crear aplicaciones para Mac OS X.

Presentación

Pygame no ha sido usado comercialmente con mucha frecuencia, pues Python no es conocido por sus capacidades de desarrollo de juegos. No obstante, Pygame ha sido usado para crear muchos juegos independientes exitosos:

Galcon

Galcon es un juego galáctico de estrategia multi-jugador, y pudiera ser el juego más prominente desarrollado con Pygame. Recibió un reconocimiento como uno de los 10 Mejores Juegos del Año en el 2007 por parte de GameTunnel, uno de los primeros sitios que analizan juegos indie.

Frets on Fire

Frets on Fire, un clon de código abierto de Guitar Hero fue creado en Pygame, como participante en la Competencia de la Asamblea de Desarrollo de Juegos de 2006 por Unreal Voodoo.

¡Estudiantes de Secundaria Peligrosas en Problemas!

El multipremiado juego, ¡Estudiantes de Secundaria Peligrosas en Problemas!, del desarrollador independiente Mousechief, fue un finalista en IndieCade 2008.

PyWeek

PyWeek es un desafío semestral de programación de juegos  que sólo acepta juegos creados en Python. Así, muchos juegos participantes son creados usando Pygame. Una lista de ganadores previos está disponible en el sitio web PyWeek.

Conclusión

En éste artículo, te he ofrecido una introducción al desarrollo de juegos con Python y Pygame. Espero que haya tenido exitoso en interesarte en Pygame y en enseñarte más de él. No dudes en formular preguntas aquí o en los varios foros de Pygame. Ahora estás listo para comenzar tu viaje al mundo de Pygame. ¡La mejor de las suertes!

¡Sé el primero en conocer las nuevas traducciones–sigue @tutsplus_es en Twitter!

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Game Development tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.