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

 

Acciones Usuario

Acciones Sistema

1) Selección con el Mouse en una Imagen representativa del Set de Baldosas.

2) Mostrar oscureciendo las baldosas seleccionadas.

3) Click sobre la posición deseada a ubicar el conjunto de baldosas

4) En el mapa aparece el conjunto de Baldosas seleccionado.

 

 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

 

Acciones Usuario

Acciones Sistema

1) Click izquierdo sobre ícono de barra de Tareas

2) Abre una nueva ventana de configuración

3) Click en cada una de las propiedades.

4) Muestra los cambios sugeridos.

5) Click en botón SET

6) Guarda la configuración para la baldosa.

7) Click en propiedades

8) Muestra los cambios sugeridos.

 

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

 

Acciones Usuario

Acciones Sistema

1) Click derecho sobre algún nodo de la lista del proyecto.

2) Desplegar lista con opciones de cargar nuevo mapa o eliminar mapa.

3.1) Click izquierdo sobre opción de cargar nuevo mapa.

4.1) Se despliega un dialogo al usuario solicitando las propiedades del nuevo mapa.

5.1) El usuario ingresa las propiedades y acepta.

6.1) El mapa creado es desplegado en la lista  como hijo del nodo mencionado en 1)

3.2) Click izquierdo sobre opción de eliminar mapa.

4.2) El nodo mencionado en el punto 1) desaparece junto con todos sus hijos.

 

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.

<< -Descargar el programa->>