Sitio Web para Agencia de Turismo
Sitio Web para Agencia de Turismo
Grupo 4
Integrantes Código
Barra Juli Julio Harold
Quispe Lopez Jhojan Roy
Valdez Huanacuni Vı́ctor Raúl
Vilca Uturunco Pedro Joel 195015
4 IDENTIFICACIÓN DE REQUISITOS 8
4.1 Estudio de los Procesos del Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
4.2 Catalogación de Requisitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Pac-Man es un videojuego que fue lanzado al mercado en 1980. El juego consiste en guiar a un personaje
amarillo a través de un laberinto mientras se trata de evitar a cuatro fantasmas que intentan atraparlo.
El objetivo es comer los pequeños puntos llamados Pacdot que hay repartidos por todo el laberinto para
ası́ transcurrir al siguiente nivel. Este fue uno de los primeros videojuegos en hacer uso de la inteligencia
artificial.
Al ser un videojuego bastante antiguo, la inteligencia artificial de los fantasmas es bastante limitada y su
estrategia consiste en la mayorı́a de los casos en ir hacia el lugar donde se encuentra Pac-Man. Por lo
tanto, estos agentes son conscientes en todo momento del lugar donde se encuentra su presa, a diferencia
de en juegos más modernos. En este proyecto se ha querido cambiar este aspecto del juego, creando para
ello una versión modificada del videojuego que se explicará más adelante.
En el Perú el desarrollo de videojuegos como el Pac-Man es muy importante balancear apropiadamente los
parámetros del juego. Este debe adecuarse a cada usuario de acuerdo a sus habilidades y sus expectativas
de entretenimiento. En este documento se propone el uso de técnicas de aprendizaje por refuerzo para el
ajuste de los parámetros del juego con el objetivo de aumentar el entretenimiento recibido por el usuario.
Se desarrolló un videojuego sencillo de plataforma móvil con diferentes parámetros configurables y un
estimador del entretenimiento recibido por el usuario de acuerdo a su rendimiento y comportamiento en el
juego. El valor estimado se utiliza como recompensa en un algoritmo de aprendizaje por refuerzo que a
partir de experiencias previas propone nuevos valores a los parámetros del juego. Usando este sistema se
encontraron resultados favorables, con un incremente en la diversión percibida por los usuarios.
Para la realización de este proyecto colaboramos todos los compañeros del grupo, y también tratamos
el tema de la inteligencia artificial centrándonos en la inteligencia de los fantasmas. Para esto hemos
colaborado para modificar la versión original de David Reilly, separando el código en diferentes archivos y
añadiendo nuevas caracterı́sticas. Después, hemos creado diferentes versiones de inteligencia artificial para
nuestros agentes de manera individual, haciendo que compitan entre ellas. Por último, hemos cooperado
para diseñar y realizar las pruebas de las diferentes versiones.
Obtener este balance en un juego es un gran reto para los desarrolladores, pues los usuarios son con-
siderablemente diversos en sus habilidades, su concentración y su noción de entretenimiento. Algunos
jugadores buscan experiencias difı́ciles y retadoras, lo cual puede ser frustrante para otros usuarios que
prefieren jugar casualmente como una manera para relajarse. Lograr el balance es aún más complicado
para pequeños desarrolladores que no tienen los recursos necesarios para realizar las grandes pruebas de
usuario que requiere balancear todos los parámetros de un juego.
Página 1
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
1.3 | Objetivos
1.3.1 | Objetivo General
■ Desarrollar el juego para ampliar nuestros conocimientos y de esta manera los usuarios puedan tener
una forma divertida de entretenerse y demostrar ciertas habilidades.
■ Una parte importante del proyecto consiste en aprender técnicas usadas en inteligencia artificial.
SCRUM emplea un enfoque lean (ligero) iterativo e incremental con un control de procesos empı́rico, y es
el método ágil para gestión de proyectos más usado en el mundo, el desarrollo se organiza en ciclos, en
SCRUM estos ciclos se llaman sprints.
[Link]
Página 2
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
SCRUM
Product Owner Vı́ctor Raúl Valdez Huanacuni
Asesor del Software Ing. Aldo Hernán Zanabria Galvez
Scrum Master Pedro Joel Vilca Uturunco
SCRUM Team
Diseñador Julio Harold Barra Juli
Programadores Vı́ctor Raúl Valdez Huanacuni
Pedro Joel Vilca Uturunco
Analista de Sistemas Jhojan Roy Quispe Lopez
Página 3
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
El objetivo principal de los videojuegos es generar experiencias atractivas y/o entretenidas para los
usuarios, para lo que el alcance se hace internacional gracias a la WEB. Nuestro juego estará disponible
en diversas plataformas de la Red, para ası́ de esta manera ser una forma de entretenimiento dando una
experiencia agradable al usuario.
Nuestra decisión por hacer este proyecto fue debido al inevitable estado de pandemia que se decreto a
nivel mundial con la llegada de la COVID-19, de esto nació la idea den recrear el juego más popular de la
década de los 80, para de esta forma brindar una nueva manera de diversión, relajación y conocimiento de
los primeros juegos que llevaron a desarrollar los actuales con más personajes y gráficos que los llevan a la
realidad virtual e incluso a la misma realidad.
Misión: Brindar una alternativa de diversión, entretenimiento, estimular los reflejos y de esta manera in-
centivar a que los programadores jóvenes sientan interés por este mundo que es el desarrollo de videojuegos.
Visión: Asegurar a futuro nuestra participación en el mercado de los videojuegos, teniendo como primera
meta ser una de las grandes plataformas de videojuegos para ası́ posteriormente llegar a participar de los
deportes electrónicos ESPORTS.
Página 4
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Participantes
Asesor del Software Ing. Aldo Hernán Zanabria Galvez
Responsable de la dirección del proyecto Pedro Joel Vilca Uturunco
SCRUM Team
Diseñadores Julio Harold Barra Juli
Jhojan Roy Quispe Lopez
Programadores Vı́ctor Raúl Valdez Huanacuni
Mediante los roles asignados realizaremos la planificaci´on con respecto al tiempo. El proyecto comienza
a aplicar la metodolog´ıa ´agil SCRUM desde la fase n´umero 2 (Desarrollo del Proyecto), a partir de la
cual se contar´a con Sprint Dailies cada d´ıa y Sprint Reviews al finalizar el respectivo Sprint.
La duraci´on de cada Sprint ser´a de una semana al tratarse de un proyecto de desarrollo que no es
excesivamente grande, se procede a dar una breve definici´on de los Sprints con los que se contar´a.
■
Se amplia más en la Defunción of Done de los sprints en la sección Definición de Los Proyectos a Realizar
Página 5
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Los fantasmas hacen el juego más entretenido gracias a sus movimientos, exponen en el juego una
inteligencia artificial más complicada en niveles superiores debido que además de ser mas rápidos, se
vuelven más inteligente para capturar al Pac-Man.
Página 6
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 7
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
4 | IDENTIFICACIÓN DE REQUISITOS
4.1 | Estudio de los Procesos del Software
4.2 | Catalogación de Requisitos
Página 8
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 9
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
■ Se viene realizando la elaboración del documento de planeamiento para la mejora del producto
Debido a la temprana etapa en la que se encuentra el proyecto, es pues de vital importancia el presente
documento para la llegada exitosa a las siguientes etapas de desarrollo.
ELEMENTO DESCRIPCIÓN
Pantalla de Para poder mostrar una presentación del software y contener un
inicio botón de inicio o ingreso
Formulario Pantalla donde se muestra un formulario para que los usuarios
de Registro puedan registrarse con sus datos de facebook
Una ventaja practica de los niveles es que dividen el juego en
secciones manejables, dando a los jugadores la oportunidad de
Lista de Nive-
descansar en intervalos periódicos. Los juegos pueden guardarse
les
automáticamente en esos en esos intervalos y además que ayudan
a crear un ambiente de suspenso.
■ Variables
□ Up - [0..1]
□ Down - [0..1]
□ Left - [0..1]
□ Right - [0..4]
Los valores del dominio corresponden a los valores que pueden tomar las variables. Se asignará 1 si
esta en movimiento. PacMan tenga que moverse en esa dirección y 0 en caso de lo contrario.
■ Constantes
□ CurrentX
□ CurrentY
□ mv
□ moviment
□ cont
■ Restricciones
□ Restricción 1: Esta restricción aplica si PacMan tiene pı́ldoras, pı́ldoras de poder o no pı́ldoras
en los 3 casilleros siguientes a la derecha, puede avanzar a la derecha.
□ Restricción 2: Esta restricción aplica si PacMan tiene pı́ldoras, pı́ldoras de poder o no pı́ldoras
situadas en los 3 casilleros siguientes en forma de ”L” hacia la derecha y abajo, puede moverse
a la derecha.
Página 10
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
□ Restricción 3: Esta restricción aplica si PacMan tiene pı́ldoras, pı́ldoras de poder o no pı́ldoras
situadas en los 3 casilleros siguientes en forma de ”L” hacia la derecha y arriba, puede moverse
a la derecha.
□ Restricción 4: Esta restricción aplica si PacMan tiene pı́ldoras, pı́ldoras de poder o no pı́ldoras
en las 2 posiciones siguientes y muro en la tercera posición a la derecha, puede moverse hacia
esa dirección.
□ Restricción 5: Esta restricción aplica si PacMan tiene un casillero con pı́ldora, pı́ldora de poder
o no pı́ldora y los 2 siguientes con muro hacia la derecha, puede avanzar hacia esa dirección.
□ Restricción 6: Esta restricción aplica si PacMan tiene pı́ldoras, pı́ldoras de poder o no pı́ldoras
y fantasma situados en los 3 casilleros siguientes en forma de ”L”hacia la izquierda y abajo, no
puede avanzar y debe moverse en la dirección contraria.
□ Restricción 7: Esta restricción aplica si PacMan tiene pı́ldoras, pı́ldoras de poder o no pı́ldoras
y fantasma situados en los 3 casilleros siguientes en forma de ”L” hacia la izquierda y arriba,
no puede avanzar y debe moverse en la dirección contraria.
□ Restricción 8: Esta restricción aplica si PacMan tiene fantasmas en alguna de las siguientes
posiciones hacia la izquierda, no puede avanzar y debe moverse en la dirección contr
Página 11
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 12
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Ya que se planea realizar una página web para el juego de PAC-MAN, necesitaremos los lenguajes de
programación con los que éstas se elaboran. Es también común en la era moderna del desarrollo web,
para este propósito también es popular la utilización de una tecnologı́a que nos permita juntar nuestros
módulos de modo que funcionen en los navegadores, también conocidos como bundlers.
Necesitaremos además, un servidor web que actúe como Backend y que nos permita comunicarnos con la
base de datos, ası́ como exponer una API que el Frontend pueda consumir. Para esto, por el lado del
Backend necesitaremos una forma de crear la API y por el lado del Frontend necesitaremos una manera
de conectarlos a ella y utilizarla.
Necesitaremos un Sistema de Gestión de Base de datos que nos permita almacenar información tal como
los usuarios, para los cuales necesitaremos escoger un método de almacenamiento de información. También
debemos de definir el paradigma de base de datos que utilizaremos.
Para el desarrollo eficaz del proyecto necesitaremos contar con un Editor de Código o IDE con el cual
modificaremos el código fuente, además necesitaremos de un Sistema de Control de Versiones que nos
permita una interacción sencilla. Ya que el proyecto no es individual o personal, se debe de tener una
manera de compartir el código que se integre con el Sistema de Control de Versiones para mantener un
control sobre estas.
Deberemos, además de contratar servicios para el despliegue de la aplicación web, tales como el hosting
de la página web(HostGator) y la compra de un nombre de dominio, y que también tenga Cpanel para la
gestión de base de datos y la compra del peso computacional que esta conlleva.
Ası́, las necesidades tecnológicas de nuestro Sistema de Información para la página web del juego de
Pac-Man se pueden dividir en las siguientes categorı́as:
■ Frontend: Necesidades para la implementación de la página por el lado del usuario y con el cual el
usuario interactuará.
■ Backend: Necesidades para el servidor web que se conectará a la base de datos y será consumido
por el frontend.
■ Base de Datos: El sistema para el almacenamiento de datos.
■ Herramientas: Utilidades que son principalmente usadas por los desarrolladores del Sistema de
Información.
■ Despliegue: Servicios que nos permitirán tener el sistema funcionando globalmente y no solo en la
máquina local.
Se procederá a definir las necesidades especı́ficas para cada una de las categorı́as anterior mente mencionadas,
ası́ como las alternativas actualmente disponibles en el mercado:
■ Frontend:
□ Lenguajes de programación, como estándar se utilizan HTML, CSS y Javascript y es muy raro
encontrar una página construida con otros lenguajes. usualmente más rápidos en la mayor
parte de casos.
□ Framework, como alternativas se pueden utilizar: React, Angular y Vue; siendo estas las
alternativas m´as populares del mercado. También se puede utilizar opciones más recientes y
novedosas como SolidJS o Svelte.
Página 13
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
□ Bundler, podemos escoger principalmente entre Webpack, Parcel, Snowpack y Vite. Siendo
Webpack la alternativa más popular para react, Parcel conocido por su simplicidad y Vite
conocido por ser veloz gracias al hot module replacement.
□ Conexión al Backend, la librerı́a más popular es Axios, pero se puede lograr conexiones HTTP
con la API Fetch nativa de Javascript o con otras librerı́as como Jquery y AJAX.
■ Backend:
□ Lenguaje de programación, existen muchas opciones para escoger. Es posible utilizar Javascript/Typescript,
Python, PHP, Java, Go, Rust, entre otros. La opción habitual es Js/Ts; sin embargo, lenguajes
como Go y Rust son conocidos por ser usualmente ms rápidos en la mayor parte de casos.
□ Elección de API, las opciones actualmente disponibles son la API REST, GraphQL entre otros
menos usados; alternativamente podemos ir por una arquitectura Serverless utilizando servicios
como AWS, Firebase o Supabase.
□ Construcción del API, para la API más utilizada que es REST, tenemos como opciones Express
para Js/Ts, Django para Python, gorilla/mux para Go, Rocket para Rust, Spring Boot para
Java.
■ Base de Datos:
□ Paradigma de Base de Datos, por lo general tenemos como elección a las bases de datos
relacionales, y no relacionales.
□ Base de datos especı́fica, podemos utilizar MySQL, OracleDB, PosgtreSQL, SQL Server.
Mientras que para las no relacionales tenemos a NoSQL, MongoDB, Redis , como opciones
populares.
■ Herramientas:
□ Editor de código/IDE, podemos escoger entre Visual Studio Code, Sublime Text, PHPStorm,
Atom entre otros.
□ Sistema de Gestión de Versiones, Git es la opción más popular.
□ Hosting de Código Fuente, se puede escoger entre Github o Gitlab.
■ Despliegue:
□ Para Frontend, tenemos opciones como Vercel y Netlify o servicios pagados como en Solo10.
□ Para Backend y BD, podemos usar Heroku, AWS, Firebase, etc.
□ Nombre de dominio: Tenemos a Solo10, GoDaddy, [Link] entre otros.
Página 14
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Los servicios, herramientas y servicios escogidos para suplir las necesidades tecnológicas son los previamente
mencionados, se procederá a detallar el motivo de la elección que cubre cada necesidad definida en la tarea
Página 15
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 16
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 17
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
7.3 | Prototipado
Página 18
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 19
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 20
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 21
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 22
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 23
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Los encargados de mantener el proyecto actualizado serán todos los participantes del desarrollo del proyecto
de la página web para la agencia. En caso de surgir algún cambio de requisitos a lo largo del proyecto, se
actualizará el documento. Se informará con la misma periodicidad con que se actualiza el documento a
los participantes del proyecto acerca de los avances y cambios en el desarrollo.
Además, durante el desarrollo del proyecto de software, se realizarán Sprint Reviews al final de cada
Sprint, en las cuales se revisará la Definición de Hecho del sprint y se realizarán cambios para el Sprint
próximo en caso de ser necesario.
Página 24
Universidad Nacional del Altiplano Proyecto de Software - Videojuego Pac-Man
Página 25