dimonikys

dimonikys

На Пикабу
поставил 18 плюсов и 4 минуса
Награды:
10 лет на Пикабу
173 рейтинг 0 подписчиков 0 подписок 6 постов 1 в горячем

Как я разрабатывал игру «Угадай рисунок» для Twitch

Еще с появления первых Twitch Plays стримов я очень полюбил подобный жанр трансляций. Появляется уникальная возможность понаблюдать за чатом, как за единым разумом, который находит способ пройти игру до конца. Как в основном выглядят стримы Twitch Plays: есть игра, управление в которой привязано к чату определенными командами в зависимости от контроллера, которым эта игра управляется:


UP – Идти вверх

DOWN – Идти вниз

A – Выполнить действие под кнопкой А

И так далее…


Одним из самых популярных Twitch plays стримов было прохождение Dark Souls и Pokémon.

Еще в феврале прошлого года у меня появилась идея сделать игру крокодил специально для Twitch, где пользователи сами бы могли загадывать свои слова, просто загружая изображение, которое бы потом постепенно вырисовывалось для зрителей. Тогда я стал разрабатывать алгоритм, который составляет маршруты рисования по изображению.


И так, как же оно работает?

Как я разрабатывал игру «Угадай рисунок» для Twitch Twitchtv, Python, Веб-разработка, Разработка, Трансляция, Видео, Длиннопост

Возьмем к примеру изображение наполеона. Как мы видим одна из первых проблем преобразования изображения в маршруты заключается разности толщины линий. Для этого нам нужно получить скелет данных линий:

Как я разрабатывал игру «Угадай рисунок» для Twitch Twitchtv, Python, Веб-разработка, Разработка, Трансляция, Видео, Длиннопост

Белые точки на изображении мы можем преобразовать в массив, перебором которого находим соседей каждой точки с учетом вектора движения. На выходе получаем индивидуальные маршруты, имеющие начало и конец.

Как я разрабатывал игру «Угадай рисунок» для Twitch Twitchtv, Python, Веб-разработка, Разработка, Трансляция, Видео, Длиннопост

Далее мы соединяем линии друг с другом для реалистичности рисования и добавляем им толщину как раз за счет сравнения скелета линий и оригинального изображения. Вуаля! Мы получаем отсортированный массив точек с толщиной, который можно легко нарисовать в Canvas. Вот такие чудеса творят Numpy и Scikit-image.

А теперь делаем из этого игру

Итак, я рассказал вам об идее и ее реализации у которой была одна главная проблема - скорость обработки. Из за ленивости и совмещения работы с очным обучением я смог продолжить развитие данного проекта ровно через год, добавив к алгоритму еще и параллельное вычисление. Набравшись решимости и опыта в разработке сайтов было решено создать сам сервис для трансляции.


Основным орудием труда был выбран фреймворк Polymer, сильно полюбившийся мной за этот год. Он прекрасно позволял разделить сайт на компоненты, что очень помогло не запутаться в будущем. Серверная часть сайта разрабатывалась на Django.

Как я разрабатывал игру «Угадай рисунок» для Twitch Twitchtv, Python, Веб-разработка, Разработка, Трансляция, Видео, Длиннопост

Страница трансляции

Как я разрабатывал игру «Угадай рисунок» для Twitch Twitchtv, Python, Веб-разработка, Разработка, Трансляция, Видео, Длиннопост

Страница для отправления своего изображения

После 2-х месяцев упорного кодинга в свободное время, мы все таки смогли воплотить в жизнь мою долгожданную мечту - собственную трансляцию Twitch plays, где игроки не только могут поучаствовать в отгадывании слова, но и загадать свои собственные варианты.


Twitch: https://www.twitch.tv/awsvinci (подпишитесь, чтобы не пропустить трансляцию)

Сайт: https://awsvinci.com/

AwsVinci_love_Pikabu1

AwsVinci_love_Pikabu2

AwsVinci_love_Pikabu3

AwsVinci_love_Pikabu4

AwsVinci_love_Pikabu5

AwsVinci_love_Pikabu6

AwsVinci_love_Pikabu7

AwsVinci_love_Pikabu8

AwsVinci_love_Pikabu9

AwsVinci_love_Pikabu10

Показать полностью 5 3

Зов....

Зов....

Дреддакот, версия 2

Дреддакот, версия 2

Так от кого кошка такая суровая!

Так от кого кошка такая суровая!

GMan знает...

GMan знает...

За мной на протяжении часа наблюдает какой то паренек в доме напротив :D

Мне уже стремно ребят, советую увеличить яркость монитора, чтобы рассмотреть :D
За мной на протяжении часа наблюдает какой то паренек в доме напротив :D Мне уже стремно ребят, советую увеличить яркость монитора, чтобы рассмотреть :D
Отличная работа, все прочитано!