Muchos conocen la rivalidad que existe entre los aficionados a los juegos on-line, de hecho es bastante común verse envuelto en discusiones como: "El Lol es una copia del Dota", "Axe es mejor héroe que Garen", "En una team fight Master Yi le gana al Vipper en 3 segundos"
Ni lerdos ni perezosos, surgió la idea de hacer una aplicación que resuelva el problema de quien le gana a quien y permita retar a duelo a cualquier personaje conocido contra otro y los que tenemos que desarrollar esa aplicación somos nosotros!
Como todavía no se deciden por una única plataforma, vamos a tener que realizar pruebas de concepto en distintas tecnologías, pero antes debemos entender el dominio de nuestro problema.
Existen personajes que son los que se van a enfrentar durante nuestros duelos. Los personajes ya vienen definidos y los jugadores no pueden agregar nuevos, esto es tarea de los administradores de Duelo entre leyendas.
Los jugadores que ingresan al sistema pueden usar cualquiera de los personajes disponibles.
De cada jugador se van registrando los resultados de los duelos sobre los que va participando, una vez jugado un duelo el jugador pasa a tener más o menos experiencia de juego con ese personaje.
Cuando se selecciona el personaje y la posición con la que se quiere retar a duelo a otro el sistema asigna un contricante contra el cual pelear.
Como política de duelo entre leyendas queremos fomentar la camadería entre nuestros jugares por lo que, una vez finalizada la pelea se tiene que permitir denunciar al contricante por su comportamiento.
De cada jugador se forma un puntaje que tiene en cuenta, entre otras cosas las denuncias recibidas por sus rivales.
Luego de un duelo los jugadores pueden denunciar a su oponente por los siguientes motivos:
Además del motivo de la denuncia debe de darse una descripción de la situación. A partir de esa descripción es que vamos a determinar si una denuncia es válida o fake, en el caso de que una denuncia sea fake se le genera al jugador (denunciante) una Denuncia cuyo motivo es: Abuso del sistema de denuncias y en su descripción el texto es: “El jugador intenta denunciar a: <<nombre del jugador oponente>> por: <<motivo de denuncias>> sin tener una justificación suficiente: <<justificación ingresada>>”.
Por el momento se consideran denuncias fakes las que no superan los 20 caracteres o tienen menos de 3 palabras.
Cada denuncia tiene un peso que depende del motivo:
Un jugador es la persona que participa en el sistema proponiendo duelos.
De cada jugador nos interesa mantener las denuncias que tiene. Estas denuncias nos generarán una calificación general por usuario.
La calificación nos permite ver con que jugador podemos hacer un duelo, solo podremos retar a los jugadores que estén entre +/- 100 puntos de distancia nuestra.
Son los que se pelean en sí, los personajes son limitados y solo los puede editar el administrador del juego (agregar, modificar o desactivar).
Todos los personajes pueden ser manejados por cualquier jugador pero no con la misma efectividad.
Por el uso que le da el Jugador al personaje tiene un desempeño de menor a mayor (entre paréntesis se detalla el valor de las calificaciones):
De cada personaje nos interesa:
NOTA: La nueva calificación del personaje para ese jugador se actualiza al finalizar el duelo
Las estadísticas muestran la experiencia de un jugador con cada personaje.
En detalle, las métricas que nos interesan por personaje son:
El duelo es un desafío para el que se anime y tiene varios pasos que traen consecuencias para los jugadores y afectan a sus estadísticas.
Vamos a detallar cada uno de los pasos del duelo y que es lo que implica
Primero el retador a duelo elige el personaje con el que va a realizar el duelo.
Una vez que fija el personaje elige la posición en la que va a pelear.
Las posiciones de pelea son siempre 4:
Cada personaje tiene facilidad en alguna de las posiciones: la posición ideal del juego. El jugador puede elegir cualquier posición para cualquier personaje.
El rival es cualquier jugador que se encuentre en el mismo escalón del ranking donde está el jugador que inició el reto.
El personaje elegido para competir es cualquiera con el que el jugador haya retado a duelo previamente a algún adversario, si aún no ha realizado ninguna batalla, el personaje es cualquiera (que no sea el elegido por el retador).
Si no hay ningun jugador que pueda competir contra el retador se le informa al jugador que “NO HAY QUIEN SE LE ANIME EN SU ACTUAL RANKING” y el jugador debe poder elegir entre: retar a MR-X para avanzar en el ranking y conseguir un rival a su altura o Considerarse el sabio ganador de la Leyenda del Anciano y descansar en su gloria.
Si elige la primer opción aparece nuestro jugador fantasma MR-X! y se juega contra él, MR-X es un jugador robot, que utiliza el sistema para estos casos.
Si elige la segunda opción se cancela el duelo.
El ganador del duelo es el que tiene mejor poder de ataque * un factor de suerte (un random entre 0 y 1).
El poder de ataque de los personajes dependen de la calificación de ese personaje para el jugador + las estadisticas del usuario y se calcula como:
Valor de la Clasificación + (kills + assists / 2 - deads) * cantidad de veces usado el personaje para iniciar un duelo.
NOTA: Si un jugador nunca había jugado con un personaje tomamos como clasificación la más baja
Tanto el retador como el contrincante del duelo actualizan sus estadísticas una vez finalizado el reto sabiendo el resultado obtenido.
(Ver detalle de estadísticas en la sección Estadísticas)
Las pantallas son sugerencias, pueden modificarlas, pero para este primer trabajo práctico tienen que consultar las modificaciones con alguno de los docentes de la materia.
Las pantallas las presentamos en el orden sugerido para que las programen.
El objetivo de esta pantalla es realizar una denuncia contra un participante.
Para realizar la denuncia es obligatorio indicar el motivo, luego de realizar la denuncia hay dos posibilidades:
Un duelo es entre dos personajes de jugadores, en esta pantalla nos informan de:
En esta pantalla se puede:
Una vez enviada la solicitud de inicio de duelo puede pasar:
El objetivo de este trabajo práctico es familiarizarnos con tecnologías web actuales.
El código del tp2 debe estar en el mismo repositorio que los tps anteriores en otra carpeta.
Vamos a exponer servicios que consumiremos desde una página web.
La tecnología que usaremos para exponer los servicios es XTRest.
Deben de implementarse los servicios que se mencionan a continuación (siendo opcional el de login) y debemos estar en control de los datos que se envían desde nuestra API, es decir que no enviaremos datos de mas.
NOTA: Consideramos que un dato está de más cuando no se muestra en la pantalla ni es usado como input de otro servicio
Es el servicio que usaremos para validar que el par ingresado usuario-contraseña sean válidos. En caso de login correcto responde con el id del usuario.
Características
Es el servicio que usaremos para obtener los datos relacionados con el juego para un usuario.
Características
Es el servicio que usaremos una vez elegido el personaje y posición con el que se va a retar a duelo.
Características
Es el servicio que invocaremos en el caso de que el resultado del reto sea que no hay rival y el jugador decida retar a MR-X
Características
El Frontend lo vamos a programar en Angular.
Te proponemos dos alternativas para la navegación de la aplicación, en el grupo elijan una e implementenla.
Los mockups de pantalla pueden ser modificados a gusto del grupo, lo único que deben respetar es mostrar imágenes junto con el nombre del personaje.
Como su nombre lo indica tendremos una única página.
Desde esta página podremos elegir un personaje y retar a un duelo.
Los resultados de lanzar el reto se ven dentro de la misma página con un cuadro de diálogo que depende del resultado del duelo.
En vez de tener una única pagina, navegaremos entre distintas alternativas, según el resultado de las acciones.
Tambien te proponemos que tenga una página de login (opcional).
Contaremos con:
Desde la tercer vista siempre volveremos a la selección del personaje.
El objetivo de este trabajo práctico es familiarizarnos con tecnologías mobile actuales.
El código del TP3 debe estar en el mismo repositorio que los TPs anteriores en otra carpeta.
Para la aplicación mobile realizaremos la aplicación con Android, cuya información será obtenida del servidor REST creado en el TP2.
Serán 4 pantallas en las que cada una debe sólo consumir un servicio REST.
(en la parte superior esta el search para buscar un personaje - esto es opcional Cuando se selecciona un personaje de la tabla va al detalle del personaje en donde vemos las habilidades sin las estadísticas)
(el cuadrado superior es para agregar la foto del personaje, el botón de Estadísticas va a una pantalla de estadísticas)