sungmaster

Пикабушник
поставил 4 плюса и 1 минус
отредактировал 0 постов
проголосовал за 0 редактирований
Награды:
5 лет на Пикабу
3559 рейтинг 2 подписчика 1 подписка 12 постов 3 в горячем

Olaf the Boozer - похмельный пазл. Дневники разработки. Часть 0

Olaf the Boozer - похмельный пазл. Дневники разработки. Часть 0 Gamedev, Indiedev, Викинги, Игры, Мобильные игры, Похмелье, Global game jam, Гифка, Длиннопост

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

Разработка игры началась неделю назад как подача на Global Game Jam, игра использует движок Phaser 3, уровни создаются с помощью Tiled. За один день удалось набросать основу, благо у меня был предыдущий проект, из которого удалось достать полезные части. Потом неделю пришлось перерабатывать хранение данных и навигацию между уровнями, чтобы иметь возможность добавить карту мира и запуск уровней не в  сторогом порядке. Также это должно упростить добавление новых механик.

Сейчас игра работает в демо-режиме, там есть только 4 уровня. Страница игры на itch: https://vmikhav.itch.io/olaf-the-boozer

Olaf the Boozer - похмельный пазл. Дневники разработки. Часть 0 Gamedev, Indiedev, Викинги, Игры, Мобильные игры, Похмелье, Global game jam, Гифка, Длиннопост
Olaf the Boozer - похмельный пазл. Дневники разработки. Часть 0 Gamedev, Indiedev, Викинги, Игры, Мобильные игры, Похмелье, Global game jam, Гифка, Длиннопост
Показать полностью 2

Keep your sheep - когда потерял овец и должен ответить за это

Приближается конец ноября - а значит скоро заканчивается подача проектов на GitHub Game Off. Этот конкурс мне нравится тем, что есть целый месяц, чтобы написать игру и все хорошенько обдумать. Тема в этом году - leaps and bound. Я решил, что тема выпаса овец вполне подходит, хотя идея претерпела несколько трасформаций, чтобы уменьшить количество необходимой графики и сделай геймплей более динамическим. Два года назад я тоже участвовал в этой конкурсе и стал призером. В этом году я решил использовать похожую механику, но переработал распознавание символов, сделав библиотеку более масштабированной. Код теперь доступен здесь.

Сюжет игры таков: вас попросили постеречь овец, но вы уснули, и все овцы разбежались в лесу.  Чтобы собрать их, вам нужно активировать руны, нарисовав изображенные на них символы. Чтобы поиск закончился удачно, нужно активировать все руны. Количество баллов зависит от того, сколько времени ушло на символ, но для любителей адреналина есть уловка - когда таймер в красной зоне, можно получить гораздо больше.


В игре есть три режима, Обычный, Эксперт и Дзэн. В "эксперте" пропуск руны влечет за собой сброс прогресса, а "Дзэн" позволяет расслабиться, предоставляя гораздо больше времени на каждую руну.

Попробовать игру вы можете здесь - https://vmikhav.itch.io/keep-your-sheep

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

Распознавание нарисованных фигур

В 2016 Google опубликовал игру-дудл Magic Cat Academy. Она напомнила мне  игру Гарри Поттер и Философский камень, где для изучения заклинания его нужно было максимально точно нарисовать. Вдохновившись этим геймплеем, я решил разработать собственный распознаватель жестов.


Среди общедоступных вариантов есть весьма неплохая библиотека $1, но она иногда слишком параноидальна и видит правильный жест там, где его нет.


Изначально я сделал распознавание фигуры через приведение ее к прямым и диагональным линиям. Этот способ хорошо работает с фигурами типа V, ^, Z, W, но для распознавания округлых фигур необходимо поддерживать вариативность правил распознавания. На рисунке ниже изображены правила для распознавания фигуры pigtail (хвост свиньи). Секции с вопросительным знаком могут присутствовать или отсутствовать, в остальных блоках должна присутствовать хотя бы одна из указанных секций.

Распознавание нарисованных фигур Программирование, Javascript, Gamedev, Разработка игр, Длиннопост

Для того, чтобы упростить работу с округлыми фигурами, я заменил ламанные линии на кривые Безье.  Это немного снизило скорость распознавания, но позволило распознавать более сложные фигуры.

Распознавание нарисованных фигур Программирование, Javascript, Gamedev, Разработка игр, Длиннопост

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


Вот как теперь выглядят правила для распознавания pigtail:

Распознавание нарисованных фигур Программирование, Javascript, Gamedev, Разработка игр, Длиннопост

Код библиотеки я выложил на github, надеюсь кому-то он пригодится :)

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

Когда ну оочень нужно продвинуть игру

Когда ну оочень нужно продвинуть игру Анонимный чат, Чат, Креативная реклама, Реклама, Gamedev, Игрострой, Игры, Мобильные игры

Собственно, герой рекламы https://play.google.com/store/apps/details?id=io.vmikhav.ant...

Распознавание жестов, или как я стал призером 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-е за общее впечатление.


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

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

Когда приехала ревизия, и ты пытаешься скрыть недостачу

Когда приехала ревизия, и ты пытаешься скрыть недостачу

Когда пытаешься помочь другу, но понимаешь что он идиот

Когда пытаешься помочь другу, но понимаешь что он идиот

Когда пытаешься произвести впечатление на девушку

Когда пытаешься произвести впечатление на девушку
Отличная работа, все прочитано!