Biblioteca de Python para desarrollar juegos retro.
Inspirado en consolas retro, aplica varias restricciones como una paleta de 16 colores y 4 canales de audio.
En Linux, sería de la siguiente manera:
sudo pip3 install -U pyxel
Necesario el paquete SDL2 (libsdl2-dev en Ubuntu), Python3 (version 3.8 o superior), y python3-pip
En Arch Linux, está disponible mediante el paquete python-pyxel, en AUR.
Ejemplo más sencillo que muestra un texto por pantalla:
import pyxel class App: def __init__(self): pyxel.init(160,120,title="Hello, world") pyxel.run(self.update, self.draw) def update(self): # Se ejecutará 60 veces por segundo (FPS) if pyxel.btnp(pyxel.KEY_Q): pyxel.quit() def draw(self): pyxel.cls(0) pyxel.text(55, 41, "Hello, world!", 5) App()
Si guardamos el fichero como main.py, lo podríamos ejecutar con:
pyxel run main.py
Esta función inicializa el motor de Pyxel y genera la ventana.
pyxel.init(160,120,title="Hello, world")
La anterior instrucción crea una ventana de 160 x 120 pixeles con el título Hello, world.
Firma de la función:
init(width, height, [title], [fps], [quit_key], [display_scale], [capture_scale], [capture_sec])
width: anchura de la pantalla.height: altura de la pantalla.title: título de la ventana.fps: frames por segundo.quit_key: tecla para cerrar la aplicación.display_scale: capture_scalecapture_sec: duración máxima (segundos) de la captura de vídeo.Esta función inicia la aplicación Pyxel. Necesita recibir por parámetro 2 funciones:
update: actualiza los valores del juego (controles, física, etc) en cada frame.draw: dibuja elementos en pantallapyxel.run(self.update, self.draw)
Por defecto, la función update se ejecuta 30 veces por segundo.
Todas las funciones disponibles de la API de Pyxel se pueden consultar en:
Al tratarse de scripts en Python, los juegos hechos con Pyxel se pueden lanzar de la siguiente manera:
python mijuego.py
También puede ejecutarse con el comando pyxel run:
pyxel run mijuego.py
Si queremos que Pyxel esté pendiente de los cambios en un directorio y relance el programa cuando esto suceda:
pyxel watch <DIRECTORIO_CON_APLICACION_PYXEL>
| Tecla | Descripción |
|---|---|
| Esc | Cierra la aplicación |
| Alt + 1 | Guarda una captura de pantalla en el escritorio |
| Alt + 2 | Reinicia el tiempo de inicio de grabación de una captura de vídeo |
| Alt + 3 | Guarda una captura de vídeo en el escritorio (de 10 segundos) |
| Alt + 8 | Alterna el escalado de pantalla |
| Alt + 9 | Cambia entre modos de pantalla (Crisp/Smooth/Retro) |
| Alt + 0 | Alterna el monitor de rendimiento (fps/update time/draw time) |
| Alt + Enter | Alterna pantalla completa |
| Shift + Alt + 1 | Guarda el banco de imágenes 0 al escritorio |
| Shift + Alt + 2 | Guarda el banco de imágenes 1 al escritorio |
| Shift + Alt + 3 | Guarda el banco de imágenes 2 al escritorio |
| Shift + Alt + 0 | Guarda la paleta de colores actual en el escritorio |
Pyxel dispone de un formato propio de distribución multiplataforma. Se crea de la siguiente manera:
pyxel package <DIRECTORIO_APLICACION_PYXEL> <FICHERO_PRINCIPAL>
Tanto los ficheros con el código como los recursos estarán contenidos en un único fichero.
El paquete creado se puede ejecutar con:
pyxel play <fichero.pyxapp>
pyxel app2exe <fichero.pyxapp>
Utiliza PyInstaller para crear el ejecutable
pyxel app2html <fichero.pyxapp>
El fichero .html resultante podremos abrirlo con cualquier navegador y el juego se ejecutará en él.
Pyxel utiliza Pyodide para que código Python se pueda ejecutar en un navegador
Pyxel incluye un editor visual desde el que podremos crear recursos:
Para abrir este editor:
pyxel edit <fichero.pyxres>
Si no indicamos ningún nombre de fichero, se creará uno con el nombre my_resource.pyxres.
El editor tiene 3 bancos de imágenes (0, 1, 2) con lo que podremos guardar hasta 3 imágenes de 256×256.
También se puede arrastrar una imagen (PNG, GIF o JPEG) y se mostrará en un banco de imágenes del editor.
El editor de tilemaps nos permite hacer mosaicos que luego se utilizarán para crear mapas en el juego.
Podemos hacer mapas a partir de los elementos que hay en los bancos de imágenes.
Podemos tener hasta 7 mapas usando los 3 bancos de imágenes.
Permite generar hasta 64 sonidos diferentes.
Los sonidos son MIDI y se pueden añadir efectos sobre los sonidos.
Por defecto, Pyxel soporta 16 colores que están representados por números enteros (del 0 al 15), pero también se pueden usar constantes definidas en este fichero: https://github.com/kitao/pyxel/blob/main/python/pyxel/__init__.pyi
Por ejemplo:
| Color | Número | Uso con Pyxel |
|---|---|---|
| Negro | 0 | pyxel.COLOR_BLACK |
| Blanco | 7 | pyxel.COLOR_WHITE |
Se pueden consultar la definición de las teclas, entre otras cosas, en este fichero: https://github.com/kitao/pyxel/blob/main/python/pyxel/__init__.pyi
Por ejemplo:
| Tecla | Uso con Pyxel |
|---|---|
| Alt | KEY_A |
| Q | KEY_Q |
| → | KEY_RIGHT |
| ← | KEY_LEFT |
Desde Pyxel también se puede usar el ratón y mandos (hasta 4 mandos).
Se pueden consultar la definición de las teclas, entre otras cosas, en este fichero: https://github.com/kitao/pyxel/blob/main/python/pyxel/__init__.pyi
Por ejemplo:
| Tecla | Uso con Pyxel |
|---|---|
| Botón derecho del ratón | pyxel.MOUSE_BUTTON_RIGHT |
| Botón izquierdo del ratón | pyxel.MOUSE_BUTTON_LEFT |
| Botón A del primer mando | pyxel.GAMEPAD1_BUTTON_A |
| Arriba en el mando 2 | pyxel.GAMEPAD2_BUTTON_DPAD_UP |
En el repositorio de Pyxel hay varios scripts con ejemplos de juegos que se pueden hacer con esta biblioteca:
Se recomienda seguir el siguiente orden para aprender Pyxel: 01, 05, 03, 04, 02.
Otros ejemplos en esta wiki: