xblx

xblx

Пикабушник
755 рейтинг 2 подписчика 41 подписка 3 поста 1 в горячем
Награды:
10 лет на Пикабу
41

Квест в реальности или партия raspberry pi + arduino.

День добрый! Меня занесло строить квест румы, хоть я до этого arduino в глаза ни разу не видел, меня это не остановило. Хочу рассказать о моих решениях принятых при проектировании и о реализации задуманного.


Для начала сочтёмся на том, что же такое квест в реальности или "эскейп рум", по словам вики:

- " это интеллектуальная игра, в которой игроков запирают в помещении, из которого они должны выбраться за вре..." бла-бла-бла.

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

Что такое квест для инженера:

* Помещение;

* Много проводов, очень много (освещение, звук, камеры и сами загадки);

* Горстка различных датчиков (щелевые, шумовые, магнитные и т.п.);

* Электромеханические и магнитные замки;

* ПК\raspberry\arduino и т.п.;

* Загадки.



Всё начинается с ТЗ, в идеальном мире.

Квест обязан быть антивандальным. Дети уничтожают любые загадки грубой физической силой, подростки под действием весны забывают о правилах и суют всё подряд туда куда не стоит, взрослые не видя очевидное делают не очевидное. В правилах конечно описывают знаки "СТОП" обозначающие неиграбельность в задачах антуражные предметы - но согласитесь, это не красиво и выбивает из ритма игры.


+ Позаботитесь о том, что бы камеры и колонки стояли как можно дальше друг от друга во избежание "глухоты" камеры. Нам ведь важно слышать игроков, а не саундтрек;

+ Камеры не должны быть рядом с освещением, или светильник не должен быть направлен на камеру;

+ Камеры должны охватывать возможный максимум помещения, т.е. минимум слепых зон. Оператор должен видеть всё что делают игроки в квесте - что бы квест не сломали, или что бы квест не сломал игроков;

+ Прячьте всю проводку, будь то 220 или звук. Всю прятать в ноль по максимуму, где нельзя спрятать - в гофру!;

+ Ведите кабель с запасом: если надо 1 кабель 5 метров, ведите 2-3 кабеля 7 метров. ТЗ в квестах часто бывает динамичным;


Решите до прокладки кабелей будите ли управлять квестом и каким методом: тумблеры в операторской, веб панель, приложение для смартфона. И каким образом будут работать все механизмы: будут ли они независимы друг от друга, или будет единый центр.


Передо мной стала задача в независимых механизмах на arduino. RaspberryPi использовал как центральный мост между всеми ардуинами и операторами. На деле если raspberry вдруг перестанет отвечать - квест будет играть дальше и без неё, но пропадёт возможность из браузера управлять квестом.



Поэтому все элементы заводились в один ящик, получилась дикая каша :) Главное всё подписывать!

Все задачки (arduino) в квесте независимы друг от друга, но все они связаны с raspberry по шине I2C для того что бы сообщать центру о решении задачи. Или же raspberry может сообщить адруинке о том, что задачку считать "решенной" и активировать последствия. На raspberry поднят веб сервер apache для управление квестом через веб панель.



Общение raspberry и веб панели происходит за счёт файла JSON. В качестве общения малины и ардуин я использовал библиотеку WiringPi. Весь код писал на C++, подружил плюсы и JSON с помощью библиотеки JSON for Modern C++. Панель для управления квестом написана на PHP с использованием bootstrap для кроссплатформенной верстки и скорости разрабокти.

Решение не дешёвое и запутанное - зато адская выживаемость. Сломается элемент квеста - не беда, можно выкрутиться и не выводить игроков для ремонта механизма. А поломки в квестах - "это норма".


За время постройки удивительные свойства показали ардуины - настоящие бронетранспортёры! Вот к примеру если подключить df player неправильно, высокий шанс не услышать с него больше музыки :). А вот сама ардуина после плевком в меня сизым дымом работала дальше :D


С++ был выбран т.к. с python или bash я знаком еще хуже, на самом деле ведь совершенно не важно на чём написано.


Пример куска кода С++ для малинки. Для квестов код очень прост, ничего вычурного, справиться и второкурсник.

Буду очень рад критике и вопросам.

Первый пост - судите строго!

Показать полностью 5
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества