Распознавание жестов, или как я стал призером GitHubGameOff

Для желающих сразу пощупать игру своими пальцами ее можно:
1. скачать на Google Play
2. поиграть на itch

3. посмотреть на GitHub

Распознавание жестов, или как я стал призером GitHubGameOff Gamedev, Распознавание, Жесты, Pac-man, Разработка, Разработка игр, Инди-разработка, Длиннопост, Гифка

На разработку собственной системы распознавания жестов меня натолкнул doodle от google на хеллоуин 2016. Достать код распознавания жестов оттуда не получилось, поэтому я решил притворится веломастером и сделать свой велосипед.


Для распознавания жеста нужно решить две задачи:

1. отбросить избыточные данные пользовательского ввода

2. на основе полученных данных угадать, что же хотел нарисовать пользователь


Для решения первой задачи я сначала хотел использовать библиотеку paper.js. Она умеет превращать набор точек в ломанаю линию или кривую Безье. Но она требует для своей работы дополнительный canvas и возвращает результат в крайне замысловатой структуре, поэтому от нее пришлось отказатся. К счастью, добрые люди давно выложили код функции для отбрасывания "ненужных" элементов с массива точек (установка погрешности около 10 позволяет получить вполне приличные результаты).


Следующий шаг - определить, на какую фигуру похожи наши точки. Умные люди с Вашингтонского университета разработали для этого библиотеки $1 и $p (для фигур с одной и нескольких линий соответсвенно), используя метод "тучи точек". Но, как показали опыты, библиотека оказалась слишком безотказной - она не умеет определять, что жест не похож ни на один из шаблонов.


Я решил использовать более простой, но весьма эффективный метод. Программа абстрагируется от реальных координат точек и запоминает только направление движения (-1, 0, 1 по вертикали и горизонтали); если два соседних направления одинаковы, то второе отбрасывается. Уже на основании этих направлений и подготовленных шаблонов программа решает, что за жест был нарисован.

Распознавание жестов, или как я стал призером GitHubGameOff Gamedev, Распознавание, Жесты, Pac-man, Разработка, Разработка игр, Инди-разработка, Длиннопост, Гифка

Увидев пост о начале GitHubGameOff, я решил попытать судьбу и принять участие. Т.к. тема соревнования - throwback, я решил пересмотреть геймплей PAC-MAN и адаптировать его под распознавание жестов. Единственным рабочим вариантом было следующее размещение персонажей - протагонист стоит в центре, а враги приближаются от краев экрана. Но у Пакмана нет анимации спокойствия, поэтому было принято решение перевернуть игру с ног на голову - Блинки стал протагонистом, а Пакман - антагонистом.


Игру оценили вполне положительно: среди 209 игр она заняла 3-е место в категории Геймплей, 10-е в категории Инновационность и 20-е за общее впечатление.


Спасибо за внимание) Буду рад услышать отзывы и предложения

Лига Разработчиков Видеоигр

6.6K постов22.1K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Автор поста оценил этот комментарий

Идея и реализация отличные, главное, что интуитивно всё понятно сразу же становится.

Понятно, что это забава на 5 минут, но залипательно весьма :)

Иллюстрация к комментарию
раскрыть ветку
1
Автор поста оценил этот комментарий

Без гифки ваще непонятно о чём речь

раскрыть ветку
Автор поста оценил этот комментарий

а где ссылочка на гитхаб ?)

раскрыть ветку