História desenhada: reconhecimento de imagem como base da mecânica do jogo



Sobre o que é o jogo?


Resumidamente, o jogo Drawn Story pode ser descrito como uma missão em que, em vez de procurar os objetos necessários para se mover ao longo da trama, você precisa desenhar esses objetos.

Este é um jogo sobre o mundo desenhado em um pedaço de papel. Você controla dois personagens: um dos homenzinhos que vivem neste mundo e um artista que olha para uma folha de papel de algum lugar acima. No papel de um artista, você desenha objetos que podem ser apanhados e usados ​​pelos habitantes deste mundo.

Por exemplo, você pode desenhar uma serra e cortar uma árvore com ela para construir uma balsa. Ou puxe imediatamente um barco e a necessidade de uma jangada desaparecerá. Você pode desenhar uma chave para abrir uma porta trancada ou um machado para quebrar uma porta. A beleza é que, no papel do artista, você escolhe como interagir com o mundo. Aqui está o que parece:




O objetivo do jogo é criar objetos adequados para ajudar uma pessoa que vive no mundo pintado a lidar com todos os seus problemas cotidianos: chegar a algum lugar ou, inversamente, escapar, derrotar inimigos ou fazer amizade com eles, salvar a princesa ou encontrar um tesouro. Não é necessário ser um verdadeiro artista para o jogo, e esboços aproximados de objetos servirão. O principal é a sua imaginação e bom senso.

Como tudo começou


Nos últimos anos, desenvolvi este jogo de forma passiva, combinando-o com o trabalho principal de um programador. E há vários meses, parei e comecei a dedicar mais tempo ao desenvolvimento do jogo.

A ideia de criar esse jogo surgiu gradualmente. Depois que participei da criação de um serviço de pesquisa de esboços para imagens, lidei apenas com as questões de reconhecimento de imagens. O serviço não foi um grande sucesso. Mas então percebemos que muitos usuários acessam o site apenas para brincar com a tecnologia - desenhar algo e ver o que podem encontrar. Então surgiram pensamentos sobre como tornar básico o componente divertido do processo.

Também fui inspirado pelo charmoso jogo Crayon Physics Deluxe. Em certo sentido, meu projeto é o desenvolvimento de suas idéias.

E quando criança, adorava desenhar e costumava me sentar em uma folha em branco, ainda não imaginando o que iria retratar. Ele inventou uma trama ao longo do caminho: aqui está uma fortaleza, aqui estão seus defensores, aqui estão outros homenzinhos invadindo-a; aqui eles fizeram uma brecha no portão, e aqui eles colocaram escadas na parede, os defensores precisavam de alguma forma repelir todos esses ataques ... Foi interessante, depois de um tempo, olhar para uma foto assim e resolver o enredo novamente.

Gradualmente, todos esses pré-requisitos se formaram no desejo de fazer um jogo sobre desenho com mecânica incomum.

Detalhes técnicos


Enquadramento

O jogo é desenvolvido em C ++ usando a estrutura Qt para o sistema operacional principal da área de trabalho: Windows, Mac, Linux. Há também a possibilidade de um dia fazer uma versão para tablets. Talvez a escolha de algum mecanismo de jogo especializado (Unity, por exemplo) seja mais racional, mas quando eu comecei o desenvolvimento, eu queria entender todas as nuances da criação do jogo: saída de gráficos, temporizadores, animação etc. Além disso, eu não tinha certeza das possibilidades de personalizar soluções prontas para mecânica de jogo não padrão. Então, eu escolhi o Qt com base nas minhas preferências pessoais. Embora não seja aprimorado para a criação de jogos, é uma estrutura bem pensada e bem desenvolvida, com um mecanismo conveniente para slots e sinais. Além disso, permite que você use a aceleração gráfica de hardware de forma quase transparente, sem recorrer a chamadas diretas para a biblioteca OpenGL.

Reconhecimento de imagem

Para reconhecer objetos que o jogador desenha, uma biblioteca e um algoritmo auto-escritos são usados. Em geral, o esquema é o seguinte. Há uma base de imagens de referência de vários objetos (espada, escudo, serra, barco, chave etc.), para cada objeto são possíveis várias imagens diferentes (por exemplo, um escudo pode ser representado de maneiras completamente diferentes) e vários ângulos de rotação sob os quais eles será reconhecido. No protótipo inicial, os objetos não eram reconhecidos quando as pessoas os pintavam girando 45 graus, o que incomodava os jogadores que tentavam puxar a espada do homenzinho diretamente em sua mão. O algoritmo identifica certas características da imagem, as compara com amostras do banco de dados e encontra a melhor correspondência. Assim, é possível determinar o tipo de objeto e em qual direção ele é girado.Em seguida, no jogo é criado um modelo físico do objeto desenhado (para física, agradecimentos especiais à bibliotecaBox2D !) E seu modelo de comportamento. Graças a este último, será possível acenar com um objeto identificado, por exemplo, como uma espada, e refletir golpes com um objeto identificado como um escudo. No total, no momento do jogo você pode criar cerca de 40 itens diferentes.

Obviamente, o algoritmo de reconhecimento não é perfeito. No momento, de acordo com minhas estimativas, a precisão do reconhecimento é de 83% - esta é a porcentagem de objetos classificados corretamente. Esta não é uma figura com a qual eu ficaria completamente satisfeito; portanto, volto periodicamente ao trabalho para melhorar a precisão do algoritmo. Portanto, na última iteração, foi possível aumentar a precisão em cerca de 10% devido ao uso de outra função de similaridade de imagem. Em geral, do ponto de vista do jogador, um objeto identificado incorretamente está longe de ser sempre uma fonte de frustração. Às vezes, isso é apenas uma fonte adicional de diversão no jogo.

Gráficos

Inicialmente, planejei tornar os gráficos do jogo muito primitivos, para que correspondessem aos esboços em preto e branco que o jogador desenha. Parecia algo assim:


Mas rapidamente percebi que parecia muito miserável e, gradualmente, experimentando e melhorando os resultados, cheguei a imagens vívidas, possivelmente estilizadas como desenhos em guache:


os próprios personagens do jogo também sofreram melhorias. Foi:


Tornou-se:


No entanto, o nível dos gráficos permanece muito amador - afinal, o artista meu não é muito. Agora comecei a pensar em atrair um designer profissional para o projeto.

Status atual


Uma versão demo do jogo com 5 níveis (e mais um "segredo") está pronta. Você pode fazer o download no site do jogo: drawnstory.com/Downloads.html (Windows, Mac, Linux de 64 bits)

Também recentemente lancei uma campanha no Steam Greenlight. Se você gostou do jogo e deseja contribuir para o desenvolvimento futuro, pode votar nesta página: steamcommunity.com/sharedfiles/filedetails/?id=568322436

O principal trabalho de criação do mecanismo de jogo foi realizado. No futuro, os planos adicionarão novos níveis e complicarão os existentes.

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


All Articles