Drawn Story: la reconnaissance d'image comme base de la mécanique du jeu



De quoi parle le jeu?


En bref, le jeu Drawn Story peut être décrit comme une quête dans laquelle, au lieu de chercher les objets nécessaires pour se déplacer le long de l'intrigue, vous devez dessiner ces objets vous-même.

Il s'agit d'un jeu sur le monde dessiné sur un morceau de papier. Vous contrôlez deux personnages: l'un des petits hommes vivant dans ce monde et un artiste qui regarde une feuille de papier quelque part au-dessus. Dans le rôle d'un artiste, vous dessinez des objets qui peuvent ensuite être récupérés et utilisés par les habitants de ce monde.

Par exemple, vous pouvez dessiner une scie et couper un arbre avec elle pour construire un radeau. Ou dessinez immédiatement un bateau, puis le besoin d'un radeau disparaîtra. Vous pouvez dessiner une clé pour ouvrir une porte verrouillée, ou dessiner une hache pour briser une porte. La beauté est que dans le rôle de l'artiste, vous choisissez vous-même comment interagir avec le monde. Voici à quoi ça ressemble:




Le but du jeu est de créer des objets adaptés pour aider une personne vivant dans le monde peint à faire face à tous ses problèmes quotidiens: aller quelque part ou, inversement, s'échapper, vaincre des ennemis ou se faire des amis avec eux, sauver la princesse ou trouver un trésor. Il n'est pas nécessaire d'être un véritable artiste pour le jeu, et des croquis d'objets rudimentaires suffiront. L'essentiel est votre imagination et votre bon sens.

Comment tout a commencé


Au cours des dernières années, j'ai développé ce jeu en mode passif, en le combinant avec le travail principal d'un programmeur. Et depuis plusieurs mois maintenant, j'ai arrêté et j'ai commencé à consacrer plus de temps au développement du jeu.

L'idée de créer un tel jeu se dessinait progressivement. Une fois que j'ai participé à la création d'un service de recherche de croquis d'images, je n'ai traité que les problèmes de reconnaissance d'images. Le service n'a pas été un succès fou. Mais ensuite, nous avons remarqué que de nombreux utilisateurs se rendent sur le site uniquement pour jouer avec la technologie - dessiner quelque chose et voir ce qu'ils peuvent trouver. Ensuite, des réflexions ont été faites sur la base de la composante divertissante du processus.

J'ai également été inspiré par le charmant jeu Crayon Physics Deluxe. Dans un sens, mon projet est le développement de ses idées.

Et enfant, j'adorais dessiner et m'assoyais souvent sur une feuille vierge, sans imaginer ce que j'allais représenter. Il a inventé un complot en cours de route: voici une forteresse, voici ses défenseurs, voici d'autres petits hommes qui la prennent d'assaut; ici, ils ont fait un trou dans la porte, et ici ils ont mis des escaliers au mur, les défenseurs devaient en quelque sorte repousser toutes ces attaques ... C'était intéressant après un certain temps pour regarder une telle image et trier à nouveau l'intrigue.

Petit à petit, tous ces prérequis ont pris forme dans l'envie de faire un jeu de dessin avec une mécanique insolite.

Détails techniques


Cadre

Le jeu est développé en C ++ en utilisant le framework Qt pour l'OS de bureau principal: Windows, Mac, Linux. Il y a aussi la perspective de faire un jour une version pour tablettes. Peut-être que le choix d'un moteur de jeu spécialisé (Unity, par exemple) serait plus rationnel, mais quand je viens de commencer le développement, je voulais comprendre toutes les nuances de la création du jeu moi-même: sortie graphique, minuteries, animation, etc. De plus, je n'étais pas sûr des possibilités de personnalisation de solutions prêtes à l'emploi pour des mécaniques de jeu non standard. J'ai donc choisi Qt en fonction de mes préférences personnelles. Bien qu'il ne soit pas affiné pour créer des jeux, il s'agit d'un cadre réfléchi et bien développé avec un mécanisme pratique pour les machines à sous et les signaux. De plus, il vous permet d'utiliser l'accélération matérielle des graphiques de manière presque transparente, sans recourir à des appels directs à la bibliothèque OpenGL.

Reconnaissance d'image

Pour reconnaître les objets que le joueur dessine, une bibliothèque et un algorithme auto-écrits sont utilisés. En général, le schéma est le suivant. Il existe une base d'images de référence de divers objets (épée, bouclier, scie, bateau, clé, etc.), pour chaque objet plusieurs images différentes sont possibles (par exemple, un bouclier peut être représenté de manières complètement différentes) et plusieurs angles de rotation sous lesquels ils sera reconnu. Dans le premier prototype, les objets n'étaient pas reconnus lorsque les gens les peignaient à 45 degrés, ce qui dérangeait les joueurs qui tentaient de tirer l'épée du petit homme directement dans sa main. L'algorithme identifie certaines caractéristiques de l'image, les compare avec des échantillons de la base de données et trouve la meilleure correspondance. Ainsi, il est possible de déterminer le type d'objet et dans quelle direction il est tourné.Ensuite, dans le jeu, un modèle physique de l'objet dessiné est créé (pour la physique, merci à la bibliothèqueBox2D !) Et son modèle de comportement. Grâce à ce dernier, il sera possible de faire signe avec un objet identifié, par exemple, comme une épée, et de réfléchir des coups avec un objet identifié comme un bouclier. Au total, à l'heure actuelle dans le jeu, vous pouvez créer environ 40 éléments différents.

Bien sûr, l'algorithme de reconnaissance n'est pas parfait. À l'heure actuelle, selon mes estimations, la précision de reconnaissance est de 83% - c'est le pourcentage d'objets correctement classés. Ce n'est pas un chiffre dont je serais complètement satisfait, donc je retourne périodiquement au travail pour améliorer la précision de l'algorithme. Ainsi, lors de la dernière itération, il a été possible d'augmenter la précision d'environ 10% grâce à l'utilisation d'une autre fonction de similitude d'image. En général, du point de vue du joueur, un objet mal identifié est loin d’être toujours une source de frustration. Parfois, ce n'est qu'une source supplémentaire de plaisir dans le jeu.

Graphisme

Au départ, j'avais prévu de rendre les graphismes du jeu très primitifs, afin qu'ils correspondent aux croquis en noir et blanc que le joueur dessine. Cela ressemblait à quelque chose comme ça:


Mais je me suis vite rendu compte que ça avait l'air très misérable, et progressivement j'expérimentais et améliorais les résultats, je suis arrivé à des images vives, éventuellement stylisées comme des dessins à la gouache:


les personnages du jeu eux-mêmes ont également été améliorés. C'était:


C'est devenu:


Néanmoins, le niveau des graphismes reste très amateur - après tout, l'artiste de moi n'est pas très. Maintenant, j'ai commencé à réfléchir à l'opportunité d'attirer un designer professionnel dans le projet.

Statut actuel


Une version démo du jeu avec 5 niveaux (et un autre "secret") est maintenant prête. Vous pouvez le télécharger sur le site Web du jeu: Drawstory.com/Downloads.html (Windows, Mac, Linux 64 bits)

. J'ai également récemment lancé une campagne sur Steam Greenlight. Si vous avez aimé le jeu et que vous souhaitez contribuer à son développement, vous pouvez voter sur cette page: steamcommunity.com/sharedfiles/filedetails/?id=568322436

Le principal travail de création du moteur de jeu a été effectué, à l'avenir, ajoutez de nouveaux niveaux et compliquez les niveaux existants.

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


All Articles