Metadata-Version: 2.4
Name: pygame-videogame-maker
Version: 1.0.7
Summary: A simple videogame maker using Pygame.
Author-email: Daiego <daiego@email.com>
License: Copyright 2025 Diego Delgado Chaves
        
        Permission is hereby granted, free of charge, to any person obtaining a copy of this software
        and associated documentation files (the “Software”), to deal in the Software without
        restriction, including without limitation the rights to use, copy, modify, merge, publish,
        distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
        Software is furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all copies
        or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
        THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
        OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
        ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
        OTHER DEALINGS IN THE SOFTWARE.
Project-URL: Homepage, https://github.com/daiego/PygameVideogameMaker
Project-URL: Issues, https://github.com/daiego/PygameVideogameMaker/issues
Keywords: pygame,game,editor
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy>=2.0.2
Requires-Dist: pygame>=2.5.2
Requires-Dist: rich>=14.2.0
Requires-Dist: tomli>=2.3.0
Dynamic: license-file

# Pygame Videogame Maker

Un creador de juegos de plataformas 2D con un editor visual, construido con Pygame.

Este proyecto te permite diseñar y construir niveles utilizando un editor incorporado y luego jugar inmediatamente.

[SCREENSHOT: Gameplay mostrando al personaje jugador, plataformas y el fondo.]

## Características

*   **Editor Visual**: Crea y modifica niveles en tiempo real. Coloca plataformas, enemigos y otros elementos del juego visualmente.
*   **Modelo Entidad-Entorno (EEI)**: Una arquitectura flexible para definir objetos del juego y sus interacciones.
*   **Soporte para Mandos**: Perfiles de mando configurables para una experiencia de juego plug-and-play.
*   **Listo para Despliegue**: Incluye scripts para empaquetar y desplegar el juego en consolas retro compatibles.

## Primeros Pasos

### 1. Instalación

Para instalar las dependencias del proyecto, ejecuta el siguiente comando:

```bash
uv sync
```

### 2. Ejecutar el Editor

El proyecto incluye un editor visual que se ejecuta por defecto. Para lanzarlo, usa este comando:

```bash
uv run pygame-editor
```

Esto abrirá la ventana principal, cargando la escena del editor.

### 3. Jugar al Juego

Dentro de la aplicación, puedes cambiar entre diferentes escenas (Editor, Juego, Test de Input) usando las siguientes teclas:

*   **F2 / Tab**: Cambiar a la siguiente escena.
*   **F1 / Shift+Tab**: Cambiar a la escena anterior.

La escena principal del juego (`MainScene`) es típicamente la primera en el ciclo, permitiéndote jugar los niveles que has creado.

## El Editor Visual

El editor es la herramienta central para construir tu juego. Te permite:

*   **Componer Escenas**: Añade, selecciona y mueve entidades directamente en el espacio del juego.
*   **Configurar Propiedades**: Ajusta las propiedades de cada entidad, como su sprite, comportamiento y atributos físicos.
*   **Exportar Niveles**: Guarda tus creaciones en un archivo de composición (`.eei.json`) que el juego puede cargar.

[SCREENSHOT: La interfaz del editor visual, mostrando la colocación de entidades y el editor de propiedades.]

## El Modelo Entidad-Entorno (EEI)

El proyecto utiliza un modelo de diseño donde el juego se construye a partir de dos componentes principales:

*   **Entornos (`Environment`)**: Representan espacios o zonas que aplican reglas a los objetos dentro de ellos. Por ejemplo, un entorno de "gravedad" aplica una fuerza hacia abajo a todas las entidades que contiene. Los entornos se pueden anidar y sus efectos se combinan.
*   **Entidades (`Entity`)**: Son los objetos interactivos del juego, como el jugador, los enemigos, las plataformas o los ítems. Las entidades viven dentro de los entornos y son afectadas por sus reglas.

Este modelo permite una forma flexible y componible de construir lógicas de juego complejas.

## Configuración

### Ventana y Rendimiento

Puedes ajustar la resolución de la pantalla, los FPS y otros ajustes generales en `configs/settings.toml`.

```toml
title = "Pygame Videogame Maker"
width = 1280
height = 720
fps = 60
```

### Controles y Mandos

Los mapeos de los mandos se definen en `configs/controllers/generic.toml`. Puedes editar este archivo para adaptar el juego a diferentes gamepads sin cambiar el código.

```toml
# Ejemplo de mapeo de un botón
a = { type = "button", index = 0, label = "A" }
```

## Despliegue en Consola

Si estás trabajando con una consola retro o un dispositivo similar, puedes usar el script de despliegue para empaquetar y transferir tu juego:

```bash
bash deploy_to_console.sh
```

El script se encarga de empaquetar las dependencias y los assets necesarios.

## Scripts de Utilidad

### Optimizar Imágenes PNG

El proyecto incluye un script para recortar el espacio transparente sobrante en tus sprites, optimizando su tamaño en memoria.

```bash
# Recorta todas las imágenes en la carpeta de plataformas
uv run python scripts/prune_pngs.py assets/images/platforms/grass_platforms
```
