Herramienta para desarrollo de juegos 2D topview |
|
Descripción del Problema |
Datos |
Con el paso de los años y el desarrollo de las tecnologías, la barrera de entrada para que una empresa o grupo de personas independiente desarrolle un juego ha disminuido de manera considerable. A su vez los gamers siempre buscan nuevas experiencias y formas de entretenerse dentro de un juego. Normalmente los juegos tienen características esenciales y comunes, que se pueden aprovechar para generalizar y acotar la futura programación de juegos que funcionan bajo una misma lógica. Se busca realizar una herramienta que permita concentrar los esfuerzos de los programadores en tareas de mayor importancia utilizando estas características esenciales. |
Undertale es un juego 2D con gráficos muy básicos que ha vendido más de 2 millones de copias a 10 dólares cada una en un año a través de la plataforma STEAM. Esto es un claro ejemplo de que la parte gráfica de los juegos no es la importante si no la temática de los juegos. Sin embargo, tener un buen ambiente de desarrollo para el desarrollo de estas aplicaciones hace que el trabajo sea mucho más rápido, eficiente y a la vez permita darle un plus.
|
Herramienta
para desarrollo de juegos 2D topview
“una
plataforma sencilla y fácil de utilizar para el usuario”
ANTES DE CONTINUAR: El desarrollo de esta herramienta se
trabajó bajo la asignatura de Programación Orientada a Objetos dictada por el
Prof. Agustín González en el año 2017. Si bien la meta propuesta es muy alta
comparado con el resultado, los esfuerzos se enfocaron a algunos problemas y
desafíos para lograr una base con la cual construir cosas mejores. Se pretende
que alumnos de los años venideros puedan tomar el trabajo realizado, mejorarlo
y construir sobre él.
El trabajo se enfocó principalmente en poder
configurar el ambiente del juego: los mapas y sus propiedades. Para comprender
la manera en que se decide construir esta plataforma, primero tendremos que
definir algunos elementos y características esenciales sobre los cuales se
trabajan estos juegos:
· Estos juegos se configuran
normalmente pensando en que la imagen presentada (mapa) se encuentra dividida
en pequeñas sub-imágenes normalmente escaladas dependiendo de la estructura del
computador. En este caso se utilizó una base de baldosas (cada una de las
sub-imágenes) de 32x32 pixeles.
· Cada una de estas baldosas tiene
propiedades distintas que son reglas básicas de estos juegos, logrando por
ejemplo el control del paso de los actores (personajes del juego). Ya sea de
ser posible pasar o no, de ser posible pasar solo en alguna dirección o la
prioridad que tiene esta baldosa por sobre otras baldosas que se encuentran en
otras capas.
· Se pueden configurar distintas capas
de tal manera de crear la ilusión de profundidad y que el juego sea más
vistoso. Esto crea un problema de que las distintas baldosas de las distintas
capas pueden tener propiedades distintas para el control del movimiento de los
personajes. Esto se soluciona mediante la configuración de la prioridad, esto
quiere decir que para decidir que propiedad se cumple, se tiene una
característica de cada baldosa que las hace competir para ver con cual
propiedad se quedará ese trozo del mapa.
· Los juegos pueden tener varios mapas
e ir cambiando incluso sus dimensiones, por lo cual es necesario realizar
gestión sobre estos y poder agruparlos bajo un único proyecto. Los mapas
creados por el usuario siguen una estructura de árbol visible al usuario, que
le permite organizar estos según el contexto que le quiera dar.
Casos
de Uso y Resultados
Dado el contexto dado anteriormente se
ejemplifican 3 casos de uso de la plataforma para comprender de mejor manera
como funciona:
Nombre: Ubicar Baldosas en el Mapa Propósito: Ubicar las baldosas seleccionadas por el usuario en la posición especificada en el mapa Actores: El usuario Precondiciones: Ejecución del Software, debe tener un proyecto abierto con un mapa seleccionado. Tipo: Manual
Pruebas y
Resultados · Ubicar baldosas en el mapa o Se seleccionan las baldosas a colocar.
o Se hace click en la posición deseada del mapa para ubicar las baldosas.
Resultado: Existoso. |
Nombre: Configurar Baldosas Propósito: Entregar las propiedades a cada baldosa del set para posteriormente generar un output. Precondiciones: Ejecución del Software Tipo: Manual
Resultado Al hacer click en el ícono de configuración (Último botón hacia la derecha de la barra de herramientas) se abre una nueva ventana que muestra el conjunto de Baldosas a la izquierda y en el panel de la derecha la configuración.
|
Nombre: Agregar o Eliminar Mapa Propósito: Agregar un mapa “hijo” al seleccionado en la jerarquía desplegada al usuario o eliminar el mapa seleccionado de la jerarquía. Actores: El usuario Precondiciones: Ejecución del Software, debe tener un proyecto abierto. Tipo: Manual
Pruebas y Resultados · Agregar Mapa o Se hace click derecho sobre un nodo del proyecto.
o Se ingresan las propiedades del nuevo mapa.
o Se puede ver el nuevo mapa generado en la lista.
Resultado: Exitoso. · Eliminar mapa o Se hace click derecho sobre un nodo del proyecto.
o Ese nodo y sus hijos son eliminados. Resultado: Exitoso. |
||||||||||||||||||||||||||
|
|
|
Diagrama
de Clases
La solución fue programada en el Lenguaje Java
a través de la Plataforma NetBeans. Como se puede observar en el siguiente
diagrama de la solución planteada la mayoría de las clases se encuentran
relacionadas por agregación o por subtipo. Las únicas relaciones de herencia se
encuentran en cada una de estas clases pertinentes pues a la vez heredan de los
componentes gráficos de la librería Swing de Java.
Diagrama
de secuencia
A continuación se presenta el diagrama de
secuencia para el caso de uso de “Eliminar un mapa”:
Dificultades
encontradas y Bugs
· Una de las principales dificultades
fue acotar de manera imprecisa el problema a desarrollar. Debido a esto no se
logró completar varias de las funcionalidades para lograr un resultado básico
que fuese útil sin embargo sigue siendo una buena base para trabajar sobre
ella.
· Para el desarrollo de la Herramienta
se utilizó el GUI Builder de NetBeans (GB)para hacer las vistas de varios
componentes. Sin embargo, es complicado trabajar con la GUI y con componentes
diseñados de forma propia a través de código. Se tuvo que modificar el código
fuente generado por la GB quedando inutilizable por la GUI luego de esto.
· Los principales BUGS que tiene el
programa son:
o No implementación de Abrir Proyecto y Nuevo Proyecto.
o No hay una representación muy descriptiva de las imágenes en las
distintas capas.
o No hay indicación de la capa sobre la cual se está trabajando.
o No se puede volver atrás.
o No se genera ningún output con la información.