Drawn Story: reconocimiento de imágenes como base de la mecánica del juego



¿De qué trata el juego?


Brevemente, el juego Drawn Story puede describirse como una búsqueda en la que, en lugar de buscar los objetos necesarios para moverse a lo largo de la trama, debe dibujar estos objetos usted mismo.

Este es un juego sobre el mundo dibujado en una hoja de papel. Controlas dos personajes: uno de los pequeños hombres que viven en este mundo y un artista que mira una hoja de papel desde algún lugar de arriba. En el papel de un artista, dibujas objetos que luego pueden ser recogidos y utilizados por los habitantes de este mundo.

Por ejemplo, puedes dibujar una sierra y cortar un árbol con ella para construir una balsa. O inmediatamente dibuje un bote, y luego la necesidad de una balsa desaparecerá. Puede dibujar una llave para abrir una puerta cerrada o dibujar un hacha para romper una puerta. La belleza es que, en el papel del artista, usted mismo elige cómo interactuar con el mundo. Así es como se ve:




El objetivo del juego es crear objetos adecuados para ayudar a una persona que vive en el mundo pintado a lidiar con todos sus problemas cotidianos: llegar a algún lugar o, por el contrario, escapar, derrotar a los enemigos o hacer amigos con ellos, salvar a la princesa o encontrar un tesoro. No es necesario ser un verdadero artista para el juego, y los bocetos de objetos serán suficientes. Lo principal es tu imaginación y sentido común.

Como empezó todo


En los últimos años, he estado desarrollando este juego en modo pasivo, combinándolo con el trabajo principal de un programador. Y durante varios meses, renuncié y comencé a dedicar más tiempo al desarrollo del juego.

La idea de crear tal juego surgió gradualmente. Una vez que participé en la creación de un servicio de búsqueda de bocetos para imágenes, me ocupé solo de los problemas de reconocimiento de imágenes. El servicio no fue un éxito desbocado. Pero luego notamos que muchos usuarios van al sitio solo para jugar con la tecnología: dibujar algo y ver qué pueden encontrar. Entonces surgieron pensamientos acerca de hacer que el componente entretenido del proceso sea básico.

También me inspiró el encantador juego Crayon Physics Deluxe. En cierto sentido, mi proyecto es el desarrollo de sus ideas.

Y cuando era niño, me encantaba dibujar y, a menudo, me sentaba en una hoja en blanco, sin imaginar aún lo que iba a retratar. Se le ocurrió una trama en el camino: aquí hay una fortaleza, aquí están sus defensores, aquí hay otros pequeños hombres que la asaltan; aquí hicieron un agujero en la puerta, y aquí pusieron escaleras a la pared, los defensores necesitaban repeler de alguna manera todos estos ataques ... Fue interesante después de un tiempo mirar esa imagen y resolver la trama nuevamente.

Gradualmente, todos estos requisitos previos tomaron forma en el deseo de hacer un juego sobre dibujar con mecánicas inusuales.

Detalles técnicos


Marco

El juego está desarrollado en C ++ utilizando el marco Qt para el sistema operativo de escritorio principal: Windows, Mac, Linux. También existe la posibilidad de algún día hacer una versión para tabletas. Quizás la elección de algún motor de juego especializado (Unity, por ejemplo) sería más racional, pero cuando recién comencé el desarrollo, quería entender todos los matices de crear el juego yo mismo: salida de gráficos, temporizadores, animación, etc. Además, no estaba seguro de las posibilidades de personalizar soluciones listas para la mecánica de juego no estándar. Así que elegí Qt en función de mis preferencias personales. Aunque no está afilado para crear juegos, es un marco bien pensado y bien desarrollado con un mecanismo conveniente para tragamonedas y señales. Además, le permite utilizar la aceleración de gráficos por hardware de forma casi transparente, sin recurrir a llamadas directas a la biblioteca OpenGL.

Reconocimiento de imagen

Para reconocer los objetos que dibuja el jugador, se utiliza una biblioteca y un algoritmo auto-escritos. En general, el esquema es el siguiente. Hay una base de imágenes de referencia de varios objetos (espada, escudo, sierra, bote, llave, etc.), para cada objeto son posibles varias imágenes diferentes (por ejemplo, se puede representar un escudo de formas completamente diferentes) y varios ángulos de rotación bajo los cuales será reconocido En el prototipo inicial, los objetos no se reconocían cuando las personas los pintaban giraban 45 grados, lo que molestaba a los jugadores que intentaban sacar la espada del hombrecito directamente a su mano. El algoritmo identifica ciertas características de la imagen, las compara con muestras de la base de datos y encuentra la mejor coincidencia. Por lo tanto, es posible determinar el tipo de objeto y en qué dirección se gira.Luego, en el juego, se crea un modelo físico del objeto dibujado (para la física, gracias especiales a la bibliotecaBox2D !) Y su modelo de comportamiento. Gracias a esto último, será posible agitar con un objeto identificado, por ejemplo, como una espada, y reflejar los golpes con un objeto identificado como un escudo. En total, en el momento en el juego puedes crear alrededor de 40 elementos diferentes.

Por supuesto, el algoritmo de reconocimiento no es perfecto. Por el momento, según mis estimaciones, la precisión del reconocimiento es del 83%, es decir, el porcentaje de objetos correctamente clasificados. Esta no es una cifra con la que estaría completamente satisfecho, por lo que periódicamente vuelvo a trabajar para mejorar la precisión del algoritmo. Entonces, en la última iteración, fue posible aumentar la precisión en aproximadamente un 10% debido al uso de otra función de similitud de imagen. En general, desde el punto de vista del jugador, un objeto identificado incorrectamente está lejos de ser siempre una fuente de frustración. A veces esto es solo una fuente adicional de diversión en el juego.

Gráficos

Inicialmente, planeé hacer que los gráficos en el juego fueran muy primitivos, de modo que correspondieran a los bocetos en blanco y negro que dibuja el jugador. Parecía algo así:


pero rápidamente me di cuenta de que se veía muy miserable, y gradualmente experimentando y mejorando los resultados, llegué a imágenes vívidas, posiblemente estilizadas como dibujos de gouache: los


personajes del juego también mejoraron. Fue: se


convirtió en:


Sin embargo, el nivel de los gráficos sigue siendo muy aficionado, después de todo, el artista mío no es muy. Ahora comencé a pensar en atraer un diseñador profesional al proyecto.

Estado actual


Ya está lista una versión demo del juego con 5 niveles (y un "secreto" más). Puedes descargarlo en el sitio web del juego: drawnstory.com/Downloads.html (Windows, Mac, Linux de 64 bits)

. También lancé recientemente una campaña en Steam Greenlight. Si le gustó el juego y desea contribuir a un mayor desarrollo, puede votar en esta página: steamcommunity.com/sharedfiles/filedetails/?id=568322436

El trabajo principal en la creación del motor del juego se ha realizado, en los planes futuros se agregarán nuevos niveles y se complicarán los existentes.

Source: https://habr.com/ru/post/es387821/


All Articles