Nexa es un juego de estrategia en tiempo real donde dos jugadores compiten por controlar nodos en un grafo. Cada jugador gestiona la distribución de energía entre sus nodos para atacar y defender territorios. El sistema implementa Clean Architecture con TypeScript y Phaser 3, disponible a través de un navegador web moderno.
- Luis Gustavo Sequeiros Condori.
- Ricardo Chambilla
- Paul Cari Lipe
- Jhonathan Arias
- Raquel Quispe
- Node.js 18.x o superior.
- pnpm 8.x o superior (gestor de paquetes recomendado).
- Navegador web moderno con soporte para ES6+.
- TypeScript 5.7.
- Phaser 3.90.
- Vite 6.4 (incluido como dependencia de desarrollo).
- Este proyecto sigue el git workflow tradicional, en donde existe una rama principal (main) en donde se encuentra los releases, una rama dev donde se encuentran los cambios estables y de donde se bifurcan ramas de desarrollo y luego estan las ramas de desarrollo: uno por integrante, a excepcion de Ricardo que ha creado una rama por aumento que le corresponde (siguiendo la forma tradicional del git workflow).
- El estudiante Ricardo Chambilla Perca ha realizado sus features en ramas separadas para seguir el git workflow tradicional.
- Las ramas son: ricardo, ricardoDev, rickDeb, rickViber
- Estas ramas se mergearon con la rama dev, en donde todas las features estables residen.
- Se desea la evalución del juego para el registro de programas de ordenador
- Las tareas del trabajo se han programado en un tablero de la plataforma Trelllo, al cual el docente ya ha sido invitado al correo rescobedoq@unsa.edu.pe. El nombre del tablero es Nexa - TO. No se publica el enlace de invitación a la plataforma ya que el repositorio es público.
- Se realizaron 3 sprints de una semana de duración. En cada sprint se desarrollaron distintas etapas de la contrucción del juego.
- Semana 1: Base, entorno y arquitectura - Se levantó el entorno de desarrollo con herramientas como Vite, Phaser, Eslint y Prettier. Se definió la arquitectura del proyecto siguiendo los principios de Clean Architecture.
- Semana 2: Mecánicas principales - Se implementaron las mecánicas centrales del juego, incluyendo la gestión de nodos, distribución de energía y sistema de ataques y defensas.
- Semana 3: Interfaz e integraciones - Se terminó el desarrollo de la interfaz de usuario, se integraron las distintas capas del proyecto y se realizaron pruebas finales para asegurar la estabilidad del juego.
La demo del juego estable se puede acceder en el siguiente enlace: nexa.gustadev24.me. El video de presentación https://drive.google.com/drive/folders/18rUop8XywARCovCXnuC80tA_Fan4JSOC?usp=sharing
git clone https://github.com/gustadev24/nexa.git
cd nexapnpm installpnpm run devpnpm run buildpnpm run previewpnpm run devpnpm run dev-nologpnpm run buildpnpm run build-nolog- Seleccionar nodo: Click izquierdo en un nodo de tu propiedad
- Asignar energía de ataque: Arrastra desde tu nodo hacia un nodo vecino
- Gestión de defensa: La energía no asignada permanece como defensa automáticamente
- Capturar nodos: Envía energía de ataque suficiente para superar la defensa enemiga
- Básico: Funcionalidad estándar (intervalos normales, multiplicadores 1x)
- Ataque: Duplica energía de ataque (multiplicador 2x en ataques)
- Defensa: Duplica defensa del nodo (multiplicador 2x en defensa)
- Energía: Proporciona 50 unidades de energía adicional al capturarlo
- Energía conservativa: La energía total se distribuye entre nodos y ataques
- Sistema de colisiones: Paquetes enemigos se destruyen según magnitud
- Captura de nodos: Ocurre cuando ataque > defensa
- Fragmentación: Perder un nodo crítico puede desconectar parte de tu grafo
- Victoria por Dominación: Controlar ≥70% de nodos durante 10 segundos continuos
- Victoria por Tiempo: Mayor cantidad de nodos al finalizar los 3 minutos
- Victoria por Eliminación: Capturar el nodo inicial del oponente
nexa/
├── src/
│ ├── core/ # Capa de dominio (entidades, tipos)
│ ├── application/ # Capa de aplicación (servicios, lógica de negocio)
│ ├── infrastructure/ # Capa de infraestructura (adaptadores, controladores)
│ ├── presentation/ # Capa de presentación (escenas de Phaser)
│ ├── game.ts # Configuración de Phaser
│ └── main.ts # Punto de entrada
├── public/ # Assets estáticos
├── vite/ # Configuración de Vite
└── docs/ # DocumentaciónEl proyecto implementa Clean Architecture con cuatro capas:
- Entidades: Node, Edge, Player, Graph, EnergyPacket
- Value Objects: ID, NodeType, Color
- Servicios: TickService, CollisionService, CaptureService, VictoryService
- Interfaces: Contratos para comunicación entre capas
- GameController: Orquestador principal (patrón Facade)
- GameRenderer: Adaptador de Phaser
- GameFactory: Factory de componentes con inyección de dependencias
- Escenas de Phaser: Boot, MainMenu, Game, GameOver
Path Aliases configurados en tsconfig.json:
@/ → src/
@/core → src/core/
@/application → src/application/
@/infrastructure → src/infrastructure/
@/presentation → src/presentation/- TypeScript 5.7 - Lenguaje principal con tipado estricto
- Phaser 3.90 - Motor de juegos HTML5
- Vite 6.4 - Build tool y servidor de desarrollo
- pnpm 8.x - Gestor de paquetes eficiente
- Universidad Nacional de San Agustín de Arequipa
- Facultad: Ingeniería de Producción y Servicios
- Escuela Profesional: Ingeniería de Sistemas
- Curso: Ingeniería de Software
- Año: 2025
Este proyecto está bajo la licencia MIT.





