绘制的故事:图像识别是游戏机制的基础



游戏是关于什么的?


简而言之,游戏“ 绘制的故事”可以描述为一项任务,您无需亲自寻找沿图移动所需的对象,而是需要自己绘制这些对象。

这是一张在纸上画的关于世界的游戏。您控制着两个角色:一个生活在这个世界上的矮个子男人,另一个是从上方某处看一张纸的艺术家。在艺术家的角色中,您绘制了可以被这个世界的居民拾取和使用的对象。

例如,您可以画一个锯子并用它切割一棵树以建造木筏。或立即划船,然后对木筏的需求就会消失。您可以画出一个钥匙来打开上锁的门,也可以画出一个斧头来打破一扇门。美妙之处在于,您可以自己扮演艺术家的角色,选择与世界互动的方式。看起来是这样的:




游戏的目的是创建合适的对象,以帮助生活在绘画世界中的人解决他的所有日常问题:到达某个地方,或者相反,逃避,击败敌人或与他们成为朋友,拯救公主或找到宝藏。不一定要成为游戏的真正画家,而物体的粗略草图也可以。最主要的是您的想象力和常识。

一切如何开始


在过去的几年中,我一直在以被动模式开发该游戏,并将其与程序员的主要工作相结合。几个月以来,我辞职了,开始花更多的时间来开发游戏。

创造这种游戏的想法逐渐浮现。一旦我参与了图像的草图搜索服务的创建,我就只处理图像识别问题。这项服务并非成功。但是后来我们注意到,许多用户只是为了体验技术而去该站点-画点东西,看看他们能找到什么。然后想到了使过程的娱乐组成部分变得基本。

我也从迷人的游戏蜡笔物理豪华版中获得灵感从某种意义上说,我的项目是她思想的发展。

小时候,我喜欢画画,经常坐在一张空白纸上,还没有想象出我要描绘的是什么。他沿途想出了一个阴谋:这是一座堡垒,这是它的捍卫者,这是其他冲进它的小矮人。在这里,他们在大门口突破口,在这里,他们将楼梯放到了墙上,防御者需要以某种方式击退所有这些攻击……过了一会儿,看看这张照片并重新整理情节是很有趣的。

渐渐地,所有这些先决条件都形成了关于制作具有非凡机制的绘画游戏的愿望。

技术细节


构架

该游戏使用Qt框架以C ++的主要桌面操作系统(Windows,Mac,Linux)开发。也有一天有可能为平板电脑制作一个版本。也许选择一些专门的游戏引擎(例如Unity)会更加合理,但是当我刚开始开发时,我想了解自己创建游戏的所有细微差别:图形输出,计时器,动画等。另外,我不确定是否可以为非标准游戏机制定制现成的解决方案。因此,我根据个人喜好选择了Qt。尽管没有为创建游戏而锐化,但它是一个经过深思熟虑且完善的框架,具有用于插槽和信号的便捷机制。另外,它允许您几乎透明地使用图形的硬件加速,而无需诉诸直接调用OpenGL库。

影像辨识

为了识别玩家绘制的对象,使用了自写的库和算法。通常,该方案如下。有各种对象(剑,盾,锯,船,钥匙等)的参考图像的基础,对于每个对象,可能有几个不同的图像(例如,可以以完全不同的方式描绘一个盾),以及它们在其下的多个旋转角度将被认可。在早期的原型中,当人们将物体涂成45度角时,物体没有被识别,这使试图将小矮人的剑直接伸到他手中的玩家感到不安。该算法识别图片的某些特征,将其与数据库中的样本进行比较,并找到最佳匹配。因此,可以确定物体的类型以及其旋转方向。然后在游戏中创建绘制对象的物理模型(对于物理,特别感谢库Box2D!)及其行为模型。多亏了后者,才有可能挥舞出被识别为例如剑的物体,并反射出被识别为盾牌的物体的打击。总体而言,在游戏中,您现在可以创建大约40种不同的物品。

当然,识别算法并不完美。目前,根据我的估计,识别精度为83%-这是正确分类的对象的百分比。这不是我会完全满意的数字,因此我会定期返回工作以提高算法的准确性。因此,在最后一次迭代中,由于使用了另一个图像相似度函数,有可能使精度提高大约10%。通常,从玩家的角度来看,标识错误的物体绝不会总是造成挫败感的原因。有时,这只是游戏中其他乐趣的来源。

图形

最初,我计划使游戏中的图形非常原始,以使其与玩家绘制的黑白草图相对应。看起来像这样:


但是我很快意识到它看起来非常糟糕,并且逐渐尝试并改进了结果,我得到了生动的图像,可能被仿制为水粉画:


游戏角色本身也得到了改进。那是:


变成了:


尽管如此,图形的水平仍然非常业余-毕竟,来自我这里的艺术家并不十分。现在,我开始考虑是否要吸引专业设计师参与该项目。

现况


具有5个关卡(还有一个“秘密”)的游戏演示版现已准备就绪。您可以将其下载到游戏的网站上:drawnstory.com/Downloads.html(适用于Windows,Mac,Linux 64位)

。最近,我还在Steam Greenlight上发起了一项活动。如果您喜欢游戏并想为进一步的发展做出贡献,则可以在此页面上投票:steamcommunity.com/sharedfiles/filedetails/?id=568322436

创建游戏引擎的主要工作已经完成,将来的计划会增加新的层次并使现有的层次变得复杂。

Source: https://habr.com/ru/post/zh-CN387821/


All Articles