An open API service indexing awesome lists of open source software.

https://github.com/dam-dad/mundoria

Juego de rol generativo usando una IA (GPT-4) como Game Master
https://github.com/dam-dad/mundoria

Last synced: 3 months ago
JSON representation

Juego de rol generativo usando una IA (GPT-4) como Game Master

Awesome Lists containing this project

README

        

# mundoria
Juego de rol generativo usando una IA (GPT-4) como Game Master

```markdown
# Mundoria

**Mundoria** es un juego de rol generativo que utiliza la IA (GPT-4) como Game Master. Combina elementos de combate por turnos, narrativa generada dinámicamente y un sistema de efectos y habilidades, todo ello orquestado con JavaFX para la interfaz gráfica.

---

## Índice

1. [Descripción](#descripción)
2. [Características Principales](#características-principales)
3. [Requisitos](#requisitos)
4. [Estructura del Proyecto](#estructura-del-proyecto)
5. [Instalación y Ejecución](#instalación-y-ejecución)
6. [Uso del Sistema de Combate](#uso-del-sistema-de-combate)
7. [Contribuyendo](#contribuyendo)
8. [Licencia](#licencia)
9. [Contacto](#contacto)

---

## Descripción

**Mundoria** se desarrolla en un vasto mundo de fantasía, donde el jugador controla personajes de diferentes razas y clases para enfrentarse a enemigos, completar misiones y progresar en un entorno narrativo generado por la IA (GPT-4). El proyecto busca:

- Combinar la generación de contenido (misiones, diálogos) a través de la API de OpenAI.
- Implementar un sistema de combate por turnos con **JavaFX** como interfaz gráfica.
- Manejar estadísticas, habilidades, efectos temporales y loot de manera extensible.

---

## Características Principales

- **IA como Game Master**: Se conecta a GPT-4 para generar misiones, descripciones y eventos narrativos.
- **Combate por Turnos**:
- Slots para personajes y enemigos (hasta 4 cada uno).
- Sistema de acciones (habilidades, inventario, huida) y tiradas de dados.
- **Sistema de Efectos** (en progreso):
- Efectos inmediatos (daño directo, curación).
- Efectos temporales (veneno, protección, aturdimiento) que duran varios turnos.
- **Interfaz Gráfica con JavaFX**:
- Vistas de Menú Principal y Combate.
- Controles para seleccionar personajes, enemigos y habilidades.
- Barras de progreso de salud y stamina.
- **Diseño Modular**:
- `SistemaDeCombate` maneja la lógica central del combate y notifica al controlador cuándo es turno del jugador.
- `CombateController` actualiza la interfaz y gestiona la interacción del usuario.
- **Datos Predefinidos**:
- Clases, razas, habilidades y efectos definidos en `DatosPredefinidos` para prototipos rápidos.
- Posible carga dinámica de datos en el futuro.

---

## Requisitos

- **Java 11+** (se recomienda Java 17 o superior).
- **JavaFX** (en algunos entornos es necesario incluir las librerías de JavaFX manualmente).
- **Maven** Para gestionar dependencias.
- (Opcional) **OpenAI API Key** si deseas probar la integración con GPT-4.

---

## Estructura del Proyecto

```plaintext
mundoria/

├── README.md
├── config.xml
├── mundoria.exe
├── mysetup.iss
├── pom.xml
├── setup.exe

├── src/main/
│ ├── java/dad/mundoria/
│ │ ├── Main.java (Punto de entrada)
│ │ ├── MundorIApp.java
│ │ │
│ │ ├── controller/
│ │ │ ├── CombateController.java
│ │ │ ├── MenuController.java
│ │ │
│ │ ├── model/
│ │ │ ├── Clase.java
│ │ │ ├── ControlDeTurnos.java
│ │ │ ├── Dado.java
│ │ │ ├── Efecto.java
│ │ │ ├── Enemigo.java
│ │ │ ├── Entidad.java
│ │ │ ├── Habilidad.java
│ │ │ ├── Inventario.java
│ │ │ ├── Item.java
│ │ │ ├── Personaje.java
│ │ │ ├── Raza.java
│ │ │ ├── SistemaDeCombate.java
│ │ │ ├── TurnoListener.java
│ │ │ │
│ │ │ ├── data/
│ │ │ ├── DatosPredefinidos.java
│ │ │
│ ├── resources/
│ │ ├── audio/ (Carpeta donde se guardan los audios)
│ │ ├── fxml/ (Para archivos FXML)
│ │ ├── images/ (Recursos en imagen)
│ │ ├── styles/ (Estilos CSS)
```

- **controller/**: Clases de controlador para JavaFX (MenuController, CombateController).
- **model/**: Lógica de negocio (Personaje, Enemigo, SistemaDeCombate, Efecto, etc.).
- **app/**: Clase principal (`Main`) que inicia JavaFX.
- **fxml/**: Archivos de interfaz para SceneBuilder.
- **audio/**: Archivos de audio para la app.
- **images/**: Recursos de imagen.
- **styles/**: Estilos CSS

---

## Instalación y Ejecución

1. **Clonar el repositorio**:
```bash
git clone https://github.com/usuario/mundoria.git
cd mundoria
```
2. **Importar el proyecto** en tu IDE favorito (IntelliJ, Eclipse, VSCode con extensiones de Java).
3. **Ejecutar** el proyecto:
- Con Maven:
```bash
mvn javafx:run
```
- O directamente desde la clase `Main` en tu IDE.

4. **(Opcional)** Configurar la API Key de OpenAI para la IA:
- Podrías definir una variable de entorno `OPENAI_API_KEY` o un archivo de configuración. (Aun no funcional

---

## Uso del Sistema de Combate

- **Menu Principal**: El usuario selecciona “Nueva Partida” para iniciar un combate de prueba.
- **Combate**:
- Seleccionar personaje (click en el slot de personaje).
- Seleccionar enemigo (click en el slot de enemigo).
- Elegir una habilidad (botones de habilidades).
- El `SistemaDeCombate` procesará la acción y notificará si es turno del enemigo o del jugador.
- Repetir hasta que un equipo sea derrotado.

- **Efectos Temporales**:
- Actualmente, el sistema permite aplicar efectos con duración (pendiente de completar).
- Cada turno, se llama a `actualizarEfectos()` en Personaje/Enemigo para aplicar daño/curación continua o remover efectos expirados.

---

## Contribuyendo

1. **Fork** este repositorio.
2. **Crea una rama** para tu característica o bugfix (`git checkout -b feature/efectos-temporales`).
3. **Realiza tus cambios** y **haz commits** descriptivos.
4. **Envía un Pull Request** a la rama principal (main o master).

**Buenas prácticas**:
- Seguir el estilo de codificación existente.
- Documentar los métodos clave con JavaDoc.
- Asegurarte de que los tests pasan (en caso de haberlos).
- Incluir ejemplos o capturas si la contribución es visual.

---

## Licencia

*Es un proyecto con fines educativos.*

---

## Contacto

- **Autores**: NIVELZ69 (Jarod Miguel Peña Castro) y madc79 (Joel Gómez Salgado)
- **Email**: [email protected] y [email protected]

Si tienes preguntas, abre un Issue en GitHub o contáctame por email.

Enlace a Manual de Uso: https://docs.google.com/document/d/1jJ9nNeHItiWp_FU_jHvTL2FGiRG94vLwjcw_mKcbL7Y/edit?usp=sharing
---

¡Disfruta de **Mundoria** y contribuye con tus ideas!