Как можно сделать игровой автомат
Контра, Батлтодс и Мортал Комбат в одной коробке. История о том, как я сделал игровой автомат и поставил его в офисе
Многие дети российских 90-х с теплотой вспоминают часы, проведённые за приставками, — как с друзьями играли в «танчики», Батлтодс, Рокэнролл рэйсинг и кучу других игр. Уверен, что есть среди вас и такие, кто и до сих пор играет и коллекционирует классические приставки и игры для них. Что-то в них есть такое, что связывает с беззаботным детством.
Я и сам этим отчасти болею. Но когда я немного погрузился в мир ретрогейминга, оказалось, что в моем детстве было много такого, что так или иначе обошло меня стороной. Сейчас я говорю об аркадных автоматах — явлении, которое в 80-90-е было фактически двигателем прогресса. Многие знакомые нам игры сначала писались именно под аркадные автоматы, а уже потом портировались на домашние консоли в урезанном виде.
Среди интересующихся ретрогеймингом есть мнение, что играть надо на оригинальном железе, а эмуляция — это не тру. Это означает, что если вы решили вспомнить былые деньки и погонять с друзьями в «Чипа и Дэйла», то будьте добры достать себе приставку (желательно оригинальную NES или Famicom) и пару картриджей к ней. В современном мире это не проблема — можно купить всё это на интернет-аукционах. Вопрос только в том, с какой суммой вы готовы расстаться.
Но что же делать с аркадными играми? Купить оригинальный автомат можно. Но доставка его обойдется в неприлично большую сумму американских денег, да и игра там будет одна.
Тут мы неизбежно приходим к эмуляции. Но ощущения-то от игры хочется получить особенные, как в аркадном зале.
Выход — собрать аркадный автомат самому
Из чего будет собран наш аркадный автомат
Сердце аркадного автомата — аркадный джойстик, именно он наряду с общим антуражем должен помочь нам перенестись в 80-90-е и попытаться уловить атмосферу аркадного зала.
Какой джойстик использовать — не принципиально. На AliExpress уйма предложений разнообразных DIY-наборов. Мой выбор пал на этот.
Как я уже писал, игры мы собираемся запускать на эмуляторе. Значит, мозгом нашего автомата станет вполне обычный ПК. Можно, конечно, сделать всё и на одноплатном компьютере, но:
Что касается монитора: пробежавшись по комиссионкам, максимум, что я смог найти подходящего — это 20-ти дюймовый монитор HP L2035. Главным критерием было соотношение сторон 4:3. Ну а бонусом оказалась удобная конструкция, которая крайне удачно поддается модификации.
Последняя крупная часть автомата — его корпус. Без него это просто ПК. Собрать его я решил из ЛДСП — чтобы надежно.
Сборка корпуса
Кажется, самая сложная задача, которая предстоит решившему сделать игровой автомат, это сборка корпуса для автомата. Звучит несложно — фактически надо просто построить шкаф, в который будет установлен ПК и встроен монитор. На деле всё чуть сложнее — готовые чертежи с размерами найти сложно (или я плохо искал). То, что нашёл, позволило набросать кривую 3D-модельку.
Оценив результат как удовлетворительный, я решил, что проще и удобнее всего заказать распил ЛДСП.
Чтобы это сделать, нужен конкретный список деталей с точными размерами. Поэтому вспоминаем студенчество и «Компас» и рисуем чертёж боковой панели. Отмечаем на ней все внутренние детали. Вот уже с этими артефактами можно идти в любую компанию, которая продаёт ЛДСП и предоставляет услуги резки по ней.
Вот что получилось конкретно у меня: раскрой и чертёж
В принципе, для большинства деталей можно заказать кромление ПВХ-лентой, но, скорее всего, криволинейные детали откажутся кромить в том месте где вы закажете распил. Выхода три:
В конструкциях всех аркадных автоматов 80-90х всегда был козырёк, на котором гордо светился логотип игры, завлекая игроков. Безусловно, здесь он тоже необходим. Сам логотип я сделал из куска оргстекла, обклеенного заранее напечатанной наклейкой с названием автомата.
Чтобы лицевая панель автомата выглядела красиво, нужна деталь из оргстекла толщиной 5 мм, заказать такую по размерам — не проблема. С одной из сторон оргстекло красим чёрной аэрозольной краской, оставив по центру непрокрашенный прямоугольник размером с экран монитора.
Так как внутри автомата в моей версии — ПК, то встаёт вопрос выбора операционной системы. Поставленную задачу можно решить как на Windows, так и на Linux. Последний вариант мне как-то ближе (и покупать систему не надо), поэтому расскажу немного о том, как развернуть всё на Linux. Наиболее подходящий, на мой взгляд, для этой цели дистрибутив — Lubuntu 16.04 LTS.
Важный вопрос — это удобство выбора и запуска игр, хочется управлять автоматом исключительно с помощью установленного джойстика. Для этого нужна своеобразная frontend-оболочка, в удобном виде показывающая список игр и по требованию запускающая эмулятор с выбранной игрой. Благо Open source-сообщество уже давно решило эту задачу. Как говорится: «всё уже написано до нас». Например, у проекта Attract-mode есть версии под все популярные платформы, в том числе интересующую Ubuntu. Оболочка поддерживает темы оформления, которые, кстати говоря, написаны на Squirrel, так что любителям модификаций будет, где развернуться. Ну или можно посетить форум проекта и найти что-нибудь по душе.
Работа с оболочкой предельна проста: после запуска нажимаем tab и попадаем в меню. В первую очередь настраиваем эмуляторы — пути к играм и всяческим красивостям: логотипам, видео-превью, обложкам, постерам. В зависимости от темы могут использоваться разные красивости. Их, кстати, можно попробовать стянуть с помощью встроенной функции scrape artwork. Не надо думать, что найдется всё, но для большинства популярных игр всё приедет автоматом. Для поиска видео-превью игр можно ещё воспользоваться проектом Progettosnaps.net — ребята собрали очень большую коллекцию видео и распространяют её абсолютно бесплатно.
После настройки путей надо обязательно прожать пункт generate romlist — после того как, счётчик дойдет до 100%, автоматически будет добавлен экран (display) данного эмулятора. Выйдя из меню, на этом экране уже можно полистать список игр и попробовать что-нибудь запустить.
Основным эмулятором станет известный MAME — благо, его сборка существует и под Linux. Для меня стало открытием, что ромы для этого эмулятора так же версионированы, как и сам эмулятор, так что не получится на новом эмуляторе запустить ром со старой версии. Но так как версию рома узнать не получится, придётся качать много апдейт-паков и обновлять ромы, которые вы выберете для своего аркадного автомата. Много ромов и апдейтов к ним можно найти на проекте Emuparadise.me.
Для разнообразия можно поставить ещё несколько эмуляторов: nestopia, gens, zsnes и настроить их в attract-mode.
Есть небольшой нюанс — не во всех эмуляторах есть возможность замапить выход из эмулятора на кнопку джойстика. Он решается установкой пакета antimicro, который висит в процессах и мапит кнопки джойстика на кнопки клавиатуры: просто выбираем кнопку на джойстике и мапим её на Esc.
Остается только сделать так чтобы attract-mode и antimicro запускались сразу при логине и всё!
Провода и прочее
Итак, у нас уже есть корпус и настроенный ПК, Всё, что нам осталось, это встроить джойстик, колонки, свет и развести провода внутри корпуса.
Встроить джойстик в автомат, вернее, в панель управления, не составит труда. Фактически надо просто насверлить отверстий необходимого размера. А вот расположить их — процесс творческий и поле для экспериментов. У меня получилось вот так:
Чертежик можно посмотреть тут
Для подсветки лого я использовал метра два LED-ленты 12V (потому как проще всего запитаться от блока питания ПК).
Колонки проще взять с питанием от USB — как-то комфортнее работать с 5V вместо 220V.
Чтобы было удобно включать и выключать автомат, регулировать уровень громкости и включать подсветку, делаем небольшой блок управления на передней панели автомата.
В этот момент остается только дизайнерская работа: если вы можете спроектировать и распечатать красивые сайдарты, чтобы чёрный ящик заиграл новыми красками, то я вам завидую белой завистью. А если вы такой же технарь, как и я, — то приходится искать способы выйти из положения. Например, купить абстрактную виниловую наклейку или заказать на AliExpress неприлично много стикеров и залепить ими весь автомат. Последним вариантом я и воспользовался. На это ушло около 500 стикеров.
Вместо заключения
Я рассказал историю сборки аркадного автомата, но история его жизни с этого только началась. Почти сразу в моей голове возникло желание поделиться радостью и эмоциями со своими коллегами, ведь играть всегда лучше в компании.
В итоге аркадный автомат переехал в офис «2ГИС» на 20 этаж и в данный момент причиняет добро и наносит радость всем желающим. По ощущениям очень много людей пробует играть в автомат. После работы стабильно можно застать кого либо, пытающегося найти именно ту игру из своего детства, даже были заказы что-то добавить. Вечером в пятницу небольшая толпа людей создает ощущение маленького аркадного зала. Мне кажется именно таким оно и было — когда ты ждешь своей очереди поиграть автомат — с интересом наблюдаешь как играют твои друзья и искренне переживаешь с ними особо сложные моменты.
Ну всё, с обязательной программой закончил, теперь произвольная часть.
Как создаются игровые автоматы для казино онлайн?
Для начала кое-что интересное. Это, скорее всего, пример не того, как должны создаваться хорошие слоты, а процесс создания примитивных, скучных, невзрачных, ничем не цепляющих слотов. Но создание таких игр может быть привлекательно простым и быстрым. После этого перейдем к серьезному бизнесу.
Создание онлайн слота за 5 минут без кодирования!
Это не просто громкий заголовок. Обычный смертный может сам создать свой онлайн слот. Конечно, онлайн казино его не допустят на свой сайт, зато для кого-то это может показаться забавным занятием. Для этого используется специальный Slot Builder, например, представленный компанией WeAreCasino.
Ниже представлено видео того, насколько простым может быть процесс создания игрового автомата. Конечно же, вы не получите ничего шедевриального, и даже приближенного к тому, что создают профессиональные студии вроде NetEnt. Зато с набором этих инструментов можно создать довольно сносный слот. Игры такого уровня даже продают некоторые разработчики. После просмотра этого ролика может показаться, что некоторые студии действительно пользуются подобными платформами.
Как создаются стоящие слоты, в которые хочется играть
Играя в онлайн слоты, мы не задумываемся над тем, насколько трудным является процесс производства. Представьте, что на создание одного качественного слота уходит примерно один год. За это время Голливудская киностудия может выпустить один, а то и несколько фильмов. Хотя в производстве слотов задействовано гораздо меньше людей, примерно чуть больше десяти, включая дизайнеров, программистов и тех, кто отвечает за математику слота.
Чтобы ускорить процесс производства, разработчики используют собственные шаблоны и набор функций. Часто можно встретить одинаковые функции и механику слота в разных играх одного разработчика. Quickspin, например, использует свой уникальный Achievements Engine в слотах Sakura Fortune, Volcano Riches и некоторых других.
Игровой автомат Sakura Fortune от компании Quickspin имеет процент отдачи 96.58%, высокую дисперсию, 5 вращающихся барабанов и 40 линий выплат. Бонусной игры нет, есть фриспины, есть символ Wild, есть символ Scatter, и нет множителя. Играть в игровой автомат Sakura Fortune можно в автоматическом режиме, есть режим «Быстрый спин».
Игровой автомат Sakura Fortune от компании Quickspin имеет процент отдачи 96.58%, высокую дисперсию, 5 вращающихся барабанов и 40 линий выплат. Бонусной игры нет, есть фриспины, есть символ Wild, есть символ Scatter, и нет множителя. Играть в игровой автомат Sakura Fortune можно в автоматическом режиме, есть режим «Быстрый спин».
Игровой автомат Volcano Riches от компании Quickspin имеет процент отдачи 96.43%, высокую дисперсию, 5 вращающихся барабанов и 40 линий выплат. Бонусной игры нет, есть фриспины, есть символ Wild, есть символ Scatter, и нет множителя. Играть в игровой автомат Volcano Riches можно в автоматическом режиме, есть режим «Быстрый спин».
Игровой автомат Volcano Riches от компании Quickspin имеет процент отдачи 96.43%, высокую дисперсию, 5 вращающихся барабанов и 40 линий выплат. Бонусной игры нет, есть фриспины, есть символ Wild, есть символ Scatter, и нет множителя. Играть в игровой автомат Volcano Riches можно в автоматическом режиме, есть режим «Быстрый спин».
Играм от ELK Studios характерны Betting Strategies, когда игрок может выбирать автоматические стратегии повышения или понижения ставок. Во многих слотах похожи даже символы. Особенно это касается карточных символов.
Эти заготовки не изобретаются каждый раз заново. Разработку видео слота в какой-то степени можно сравнить со сборкой автомобиля. У многих моделей большинство деталей могут быть одинаковы, хотя вид будет отличаться. Сборщик берет множество существующих деталей, соединяет их, добавляет какие-то индивидуальные для модели части и получается новая машина.
Разработка и утверждение концепции
Первым делом разработчики собираются, чтобы выбрать идею слота. Идею многократно обсуждают, дорабатывают и добавляют конкретику. Игры не должны повторять другие слоты, поэтому на начальном этапе изучаются игровые автоматы аналогичной тематики, и обдумывается то, как можно сделать слот более запоминающимся.
К примеру, есть куча слотов на тему лепреконов. Все они довольно одинаковы: человечек в зеленом костюме, горшочки с золотом и несколько ирландских символов на удачу. В прошлом году Yggdrasil выпустили Rainbow Ryan, который не спутаешь ни с одним слотом про лепреконов. Это яркий, зажигательный слот, совмещающий тему лепрекона с улетным роком. Это и есть та, фишка, с которой разработчик должен определиться.
Игровой автомат Rainbow Ryan от компании Yggdrasil Gaming имеет процент отдачи 96.3%, выше среднего значения дисперсию, 5 вращающихся барабанов и 4096 линий выплат. Бонусной игры нет, есть фриспины, есть символ Wild, есть символ Scatter, и нет множителя. Играть в игровой автомат Rainbow Ryan можно в автоматическом режиме, есть режим «Быстрый спин».
Игровой автомат Rainbow Ryan от компании Yggdrasil Gaming имеет процент отдачи 96.3%, выше среднего значения дисперсию, 5 вращающихся барабанов и 4096 линий выплат. Бонусной игры нет, есть фриспины, есть символ Wild, есть символ Scatter, и нет множителя. Играть в игровой автомат Rainbow Ryan можно в автоматическом режиме, есть режим «Быстрый спин».
Дизайн
Часто первые картинки слота появляются задолго до запланированного запуска игрового автомата. Это объясняется тем, что еще на ранних стадиях команда детально прорабатывает то, как будет выглядеть слот: цвета, символы, персонажи, бонус раунды, и многое другое.
Математика
В процессе разработки определяется математика игрового автомата. Решается, насколько часто выплачиваются выигрыши, размер выигрышей, частота активации бонусов и т.д. Разные игроки предпочитают разный уровень риска, и исходя из того, для какой аудитории разрабатывается слот, будет определяться его математика.
Один из наиболее важных вопросов в процессе создания слота — какой будет дисперсия. Разработчики должны определиться с тем, насколько рискованной будет игра. Их решение должно основываться на том, для какой аудитории они создают онлайн слот.
Генератор случайных чисел (ГСЧ)
Чтобы обеспечить случайность результатов каждого спина, разработчики используют программы ГСЧ, которые работают на основе алгоритмов, подбирающих случайные числа. У надежных разработчиков эти ГСЧ проверяются независимыми организациями, которые подтверждают честность игр (и выдают лицензию).
Разработчики не распространяются о деталях работы их ГСЧ в целях безопасности. Ведь это главный элемент, который обеспечивает случайность выигрышей и проигрышей. Но в общих чертах ГСЧ работают таким образом. Вы нажимаете на старт, программа генерирует случайные числа, которым соответствуют определенные символы слота. Числа расшифровываются и передаются на экран уже в виде картинок.
Успех или провал?
Даже после того, как игровой автомат уже был запущен, разработчик может вносить в него некоторые изменения. Это связано с появлением новых платформ, браузеров, операционных систем, а также для адаптации к требованиям новых юрисдикций.
Насколько успешным окажется онлайн слот, зависит от того, как отреагируют на него игроки. То есть, учитывается, насколько он будет популярен и играют ли в него регулярно. Если игроки проводят за слотом много времени и часто к нему возвращаются, то это, несомненно, успех.
К сожалению, нельзя определенно сказать, какого типа игровые автоматы будут пользоваться спросом, ведь игроков много и вкусы у них разные. Поэтому можно видеть как довольно простые, так и продвинутые слоты, которые пользуются успехом. Это как Sizzling Hot от Novomatic и Finn and the Swirly Spin от NetEnt. Два очень разных слота во всех отношениях, но оба популярны.
Игровой автомат Sizzling Hot Deluxe от компании Novomatic имеет процент отдачи 95.66%, ниже среднего значения дисперсию, 5 вращающихся барабанов и 5 линий выплат. Бонусной игры нет, фриспинов нет, символа Wild нет, есть символ Scatter, и нет множителя. Играть в игровой автомат Sizzling Hot Deluxe можно в автоматическом режиме, есть режим «Быстрый спин».
Игровой автомат Sizzling Hot Deluxe от компании Novomatic имеет процент отдачи 95.66%, ниже среднего значения дисперсию, 5 вращающихся барабанов и 5 линий выплат. Бонусной игры нет, фриспинов нет, символа Wild нет, есть символ Scatter, и нет множителя. Играть в игровой автомат Sizzling Hot Deluxe можно в автоматическом режиме, есть режим «Быстрый спин».
Игровой автомат Finn and the Swirly Spin от компании NetEnt имеет процент отдачи 96.62%, ниже среднего значения дисперсию, 5 вращающихся барабанов и 10 линий выплат. Бонусной игры нет, есть фриспины, есть символ Wild, есть символ Scatter, и нет множителя. Играть в игровой автомат Finn and the Swirly Spin можно в автоматическом режиме, есть режим «Быстрый спин».
Игровой автомат Finn and the Swirly Spin от компании NetEnt имеет процент отдачи 96.62%, ниже среднего значения дисперсию, 5 вращающихся барабанов и 10 линий выплат. Бонусной игры нет, есть фриспины, есть символ Wild, есть символ Scatter, и нет множителя. Играть в игровой автомат Finn and the Swirly Spin можно в автоматическом режиме, есть режим «Быстрый спин».
Игровой аппарат изнутри и снаружи. Обзор от производителя
Котики, куда ж без них
Привет, меня зовут Олег, и я управляю и владею компанией которая занимается разработкой и выпуском игровых автоматов с денежным выигрышем.
Так как данная тематика слабо освещена на Хабре/GT и хотелось бы о многом рассказать, начну я все же с общей вводной статьи. Я долго думал, с какой стороны подойти к данной тематике: стандартная автобиографическая подача «как я открыл казино..» или рассказать о том, как рассчитываются барабаны и бонусы в играх, о аппаратной платформе, которая применяется в нашей индустрии, об архитектуре программ, которые мы разрабатываем, об игромании, и т.д. Но все же пусть вначале это будет мини-обзор обо всем, а я постараюсь его сделать интересным.
Сразу хотелось бы отметить, что хоть я нахожусь в Украине, где игорный бизнес под запретом, но разработка и экспорт вполне легальны. И хоть мы и охватываем полный цикл (разработка ПО, игровых плат, графики, звуков, корпусов, сборка, эксплуатация) – оперировании происходит в странах где этот бизнес легален, хоть и жестко регулируется.
Игровой аппарат с денежным выигрышем (в дальнейшем – игровой аппарат) это как правило видеослот, как на фото ниже.
Игровой аппарат компании Apex
Так же это может быть
Бинго по сути является той же лотереей, нам эта игра знакома по советским бочоночкам в мешке, с карточками, она даже так и называлась – лото. Но тем не менее, эта игра настолько популярна среди латиноамериканских народов, что обычно выносится в отдельный класс.
Игра бинго собственного производства
Мы в этой статье, остановимся на видео слоте, как самом интересном экземпляре игровых аппаратов.
Технически, стандартный игровой аппарат представляет собой металлический корпус, с игровой платой внутри, 2-3 мониторами, с сенсорным экраном, и периферией.
Фото игрового аппарата в открытом виде не нашлось, на данном изображении — игровой терминал собственного производства. Отсек справа с дверцей — для купюроприемника
На главном (нижнем) мониторе специальная программа эмулирует вращение барабанов, на которых изображены игровые символы. Барабанов чаще всего 5, высотой 3 символа каждый, хотя, конечно есть множество вариаций, что б «отличиться». Задача игрока — поймать определенное сочетание символов на соседних барабанах. Чаще всего в линию, чаще всего слева направо, но не всегда.
В данной игровой ситуации выgало 4 символа «10» по линии номер 19. Символ «лев» в данном случае — WILD символ, который заменяет собой любой другой.
Правила игр отличаются, и обычно вынесены, на отдельный дополнительный монитор.
Пример таблицы выплат
Интересно, что дополнительные мониторы, которые ранее были просто рекламным стеклом, с информацией о призах, выросли в размерах настолько, что сейчас превышают по площади главную «рабочую» зону. Общее количество мониторов на одном аппарате, может доходить до пяти – мини-тач панель для управления, монитор с барабанами, 2 монитора с информацией об призах/джекпотами и верхний монитор «топлер» c лого бренда. Стандартный размер диагонали – 24”.
Заглянем внутрь аппарата.
Сердце изделия – игровая плата. Ранее это были сложнейшие модульные многослойные платы собственного производства, которые обходились производителем «в копеечку».
Плата Novomatic Coolfire
У проприетарных плат было только одно преимущество – сложность изготовления как защита от копирования, но Китай и Тайвань это не останавливало. Цена копии была весьма ощутимой, например, стоимость голой копии (без прошивки) игровой платы Novomatic Coolfire доходила до 2500 долларов США.
Конечно, и 10, и 15 лет назад, существовали решения на базе ПК. Однако они не очень подходили по ряду причин.
В первую очередь, они плохо справлялись с контролем огромного числа периферии, и с сохранением мгновенного состояния игры при внезапной пропаже питания. Вдобавок не все органы регулирования и контроля были готовы к метрологии подобных устройств: типичный кейс тех времен – инспектор с программатором требует ПЗУ что бы снять контрольную сумму прошивки.
В итоге многие PC-based изделия глючили, теряли данные, или вообще были построены на десктопной версии Windows. Все это создавало плохую репутацию аппаратов, построенных на ПК, и даже отлично работающее изделие было сложно продать.
Стоит отменить, что существовали, и существуют симбиозы x86 платформы, специально разработанной для игрового аппарата.
Игровая платформа Advantech Innocore
Однако в наши дни, большинство производителей используют PC платформу. Это стало возможно благодаря, как и технологиям – спасибо емким и надежным EEPROM, быстрым шинам, dual-head видеомодулям, так и производителям материнских плат, которые сделали шаг на встречу нашей индустрии. Причем, как в техническом аспекте, так и маркетинге. Например, стоило заказать 200 материнских плат, и к нам на производственный участок, приехал из Германии менеджер по развитию Fujitsu в Европе.
В итоге, сейчас стандартное решение для аппарата – это промышленная материнская плата, плюс интерфейсная игровая плата, которая контролирует периферию, и хранит финансовую и игровую информацию.
Подрубрика «интересный факт»: при использовании ПК, финансовые данные и игровая комбинация как правило хранятся в игровой плате в EEPROM. Поэтому что бы исключить ситуацию «на первых двух барабанах ничего не совпало – выдергиваем из розетки, и по новой», после нажатия на кнопку старт приходится вначале генерировать комбинацию, пересчитывать финансы, сохранять новый дамп состояния аппарата в плату, а только потом крутить барабаны.
Подрубрика «истории из жизни»: в начале двухтысячных один крупный английский производитель выпускавший механические аппараты, прислал нам для теста 5 аппаратов «видеослот» собственной разработки, как новинку. Аппараты были построены на базе ПК, и что насторожило сразу — на базе Windows. Ок, поставили. На третий день – звонок с салона «у нас нереально крупный выигрыш, игрок уже вызвал милицию, что б зафиксировать». Приезжаю: 99999999 гривен на экране. Из нолика единичка как-то вычлась у ребят в программе. Ну, спасибо что BCD формат, а не WORD, а то было бы 4,294,967,294.
Мы используем промышленную плату Fujitsu D3313-S4 в связке с «игровой» платой собственной разработки, на базе STM32. Платы общаются между собой по Ethernet. От USB мы отказались по ряду причин, но т.к. на материнской плате есть 2 ethernet разъёма – то нам так даже удобнее.
Рассмотрим периферию стандартного игрового аппарата.
Кнопки управления
«Просто кнопки» применяемые ранее, сменились кнопками с программируемым TFT-дисплеем внутри. Это один из жирных плюсов нашей индустрии – можно «пощупать» интересные изделия, в рабочих целях.
Клавиатурная панель аппарата компании Williams gaming
Сейчас в тренде – ЖК тач панели, однако они не дают тактильного ощущения нажатия, поэтому чаще применяются в сочетании с механической кнопкой «СТАРТ» по которой можно бить.
Клавиатурная панель аппарата компании IGT
Купюроприемник
Главный элемент в полуавтономных аппаратах (существуют cashless решения, но об них позже). Как правило это сложное электро-механическое устройство, с набором датчиков и электро-механических приводов.
Модель купюроприемника JCM iVision
Принятые купюры укладываются в кассету, стопкой. Стандартная кассета – на 500 купюр.
Подрубрика «интересный факт»: многие задумываются как купюроприемник распознает купюру. В нем нет оптического сканера, подобного компьютерным. Естественно, бывают разработки на основе image processing, но обычно это просто оптические и ультрафиолетовые датчики с призмой, которые накапливают интегральные составляющие цветов, и сравнивают с эталоном.
Эти датчики работают в комплексе с магнитными сенсорами, и сенсорами физического присутствия купюры. Принцип сравнения интегральных параметров позволяет фильтровать дефекты на купюрах, а также справляться с различной степенью износа.
Модуль купюроприемника JCM iVision
Подрубрика «истории из жизни»: в двухтысячных годах, устройства одного крупного производителя, принимали 10 грн, разрезанные ровно поперек, с приклеенным листиком вырезанным из тетради в клеточку, и 5 грн, с приклеенным листиком из тетради в линию. Если приклеить наоборот – не принимало, работало именно в такой конфигурации. Как до этого додумался кто-то – непонятно, но убытки мы понесли немаленькие, пока производитель не выпустил апдейт.
Существуют купюроприемники с механизмом выплаты купюр, но о них мы поговорим в следующий раз (если он будет).
Монетоприемник
Используется редко, обычно актуален в связке с устройством выплаты монет (хоппером).
Монетоприемники бывают тупыми (мы их называем coin comparator), которые определяют размер жетона сравнивая его с эталоном, и умными – которые способны различать различные номиналы монет.
Монетоприемник Azkoyen Modular A
Как распознать монету, которая в отличие от купюры быстро летит вниз через механизмы? Конечно по звуку удара об площадку. Основной датчик монетоприемника – акустический сенсор. Не думаю, что речь идет о диапазоне частот человеческого уха, но нем не менее, меряются параметры вибрации. Так же в процессе детектирования монеты участвует магнитный сенсор.
Для защиты от «рыбалки» всегда применяются антифишинговые механизмы блокировки, монета которая прошла через сенсоры – обратно уже не выйдет.
Подрубрика «интересный факт»: монетоприемники игровых аппаратов теоретически совместимы с машинами для вендинга, но как правило, используются только в сфере гейминга. В вендинг машинах другой принцип хранения и выдачи монет. Диспенсер вендинг аппарата – это пластиковые высокие тубусы, с различными номиналами монет, рассчитанные что б выдать определенное количество сдачи. Это обычно несколько монет, которые можно неспеша насыпать в мелкий лоток.
Устройство выплаты монет (хоппер)
Бывают с ленточным механизмом и с дисковым. Это довольно тупые устройства: мотор крутит диск, оптический сенсор считает количество. Как я писал выше, они отличаются от диспенсеров монет кофе-машин, и прочего оборудования выплаты сдачи.
Ленточный хоппер MK IV
Дисковый хоппер Azkoyen MDP-10
Подобные устройства популярны в странах, где в ходу монеты с высокой деноминацией, например, 2 Евро.
Принтеры чеков
В игровой сфере применяются немного другие принтеры чем в платежных терминалах. Это тоже термо-принтеры, однако печатают они на плотном картоне. Стоимость отпечатка выходит повыше – 0.5 цента.
Принтер Futire Logic GEN2
Зачем в аппарате принтер? Нет, фискальные чеки не приняты, это задача кассы и кассира. Принтер нужен для системы TITO (ticket in, ticket out).
Суть в следующем: игрок имеет желание сменить аппарат, и продолжить игру, на счету аппарата допустим 500 долларов. Он жмет кнопку «выплата», аппарат сообщает серверу, по специальному игровому протоколу «я аппарат id 23, выплата 500 usd».
Сервер генерирует уникальный токен, и отправляет его аппарату. Игровой аппарат печатает этот токен в виде штрих кода, на плотном картоне. Игрок получает напечатанный билет.
Далее, он может пойти в кассу и обналичить его, либо сесть за другой аппарат, и ввести данный билет в купюроприемник. Все купюроприемники умеют читать 1D штрих-код, поэтому игровой аппарат получив данные от купюроприемника «принят билет со штрихкодом ххххххх», передает эту информацию на сервер.
Сервер принимает токен, находит его в базе, и говорит аппарату начислить 500 USD. Игрок продолжает игру.
Данных механизм взаимодействия возможен в залах, оборудованных сервером, который обслуживает аппараты по игровому протоколу IGT SAS (не путать с Serial Attached SCSI), и для нас это боль, потому что протокол старый (RS-232 с дополнительным 9-м wake up битом, который обычно плохо поддерживается 16550 чипами в ПК) и проприетарный (привет IGT). Базовая подписка что бы получить документацию стоит довольно недешево.
Топология — 127 устройств висят на общей шине, wake up бит в байте – признак что следующий байт является адресом устройства, к которому обращаются, а не байтом данных.
Подрубрика «интересный факт»: существует современный свободный протокол общения игровых устройств, на базе TCP/IP: Open G2S, но против лобби гигантов не попрешь, да и в нашей сфере legacy support это не просто звук.
Кард-ридер:
Используется редко. По сути выполняет функции считывания банковских карт для POS операций, а также для идентификации игрока.
Лично мы – не применяем, а если и начнем, то ограничимся бесконтактными считывателями, достаточными для paypass.
Аппарат компании Bally с кард-ридером.
Сенсорный экран:
Все мы помним, как сложно порой нажать на виртуальную кнопку платежного терминала. Причина тому – акустические такчкрины (Сенсорные экраны на поверхностно-акустических волнах — ПАВ). Они очень чувствительны к загрязнениям (посторонний объект полностью блокирует работу устройства). Так же они не любят громкий звук (вернее вибрации).
В игорной индустрии применяются инфракрасные сенсорные экраны и ёмкостные. Инфракрасные экраны чуть дороже чем ПАВ, но более надежны. Они не любят прямые солнечные лучи, но в нашей сфере, этот элемент полностью отсутствует. А вот вибрации от звука — вполне.
Конструктивно, инфракрасный экран – это рамка с светодиодами и фотодатчиками по периметру. Чем их больше – тем точнее. Но палец толстый, так что много и не надо.
noname IR сенсорная рамка
Рамка создает некоторую глубину между внешней поверхностью корпуса и стеклом монитора, поэтому не всегда подходит. Производители, у которых особенности дизайна таковы, что стекло не утоплено, или общее стекло объединяет несколько мониторов, не могут использовать инфракрасные экраны (как и производители смартфонов), поэтому выбирают ёмкостные экраны.
Подрубрика «интересный факт»: в игровых аппаратах, даже при наличии тачскрина, используется как минимум одна механическая кнопка – «Старт» (Play). Игроки настолько привыкли бить по этой кнопке, что панель из нержавеющей стали зачастую прогибается со временем. В итоге, никто не хочет, чтобы эти Мегаджоули гасились экраном монитора, и используется кнопка.
Счетчики
Даже в современном аппарате используются электромеханические счетчики. По сути – это подсистема дублирования целостности финансовой информации.
Данные в электронном виде могут быть повреждены или взломаны, а опломбированный счетчик – повышает надежность. Игровая плата обычно умеет определять факт отсоединения счетчиков, а опломбированные разъемы затрудняют установку «заглушки».
Подрубрика «интересный факт»: В Румынии органы контроля требуют иметь онлайн показания механических счетчиков. Как можно считать со счетчика не имеющего протокола коммуникации данные — сами не знают. Оптическую систему распознавания цифр применить не получается, т.к. счетчики должны смотреть наружу, через прозначное окошко в корпусе.
Экзотика
Некоторые производители применяют 3D мониторы, правда польза от таких решений сомнительна – глаза устают сильно. Но глубина 3D эффекта регулируется, вплоть до нуля.
Аппарат компании IGT с 3D монитором не требующим очков.
Те, у кого достаточно денег – выпускают фирменные кресла с клавиатурой, встроенной акустикой, и вибрацией.
Аппарат компании Novomatic «Novostar V.I.P»
Как правило, современный игровой аппарат построен на базе ОС Linux, на котором работает ПО написанное на С++. Активно используются 3D движки, хотя камера зафиксирована.
Компании, пришедшие в land-based из онлайна, а так же те, кто изначально озаботился мультиплатформенной поддержкой используют Unity или самописные web-движки, и в десктопном варианте просто распахивают Web канвас на весь экран.
Подрубрика «интересный факт»: gambling лицензия на Unity стоит 200 тыс долларов. Пруфов нет, но читал и слышал неоднократно.
На первый взгляд, программа видео слота кажется простой, и может создаться иллюзия «мы тоже так можем, давайте нырнем в эту денежную отрасль». На самом деле, много сложных алгоритмов присутствуют неявно «под капотом», а некоторые законы жанра в дизайне и математике – известны только тем, у кого есть опыт.
Кстати о дизайне – отрасль довольно консервативна, у нас работает принцип «лучшее враг хорошего» и «работает – не трогай». Поэтому некоторые интерфейсы выглядят как привет из девяностых. Тут нет места тонким шрифтам, не говоря уже о material design, и прочих современных трендах. Drop shadow, stroke width = 10, inner bevel, gold color gradient – наше все. Как в «99 франков»: «У нас, небо всегда голубое, а девчонки всегда красивые».
Вернемся к ПО. Мы используем Qt, с самописным движком под OpenGL. Мне нравится, что я могу собрать код под Windows, чтобы поработать с графикой в Photoshop, и вернуться в Linux, что б собрать релиз.
В простых проектах мы используем Qt3D на QML. Библиотека сыровата, но мне нравтся что можно прицепить контроллер анимации к любому свойству объекта.
В релизе мы используем Ubuntu Linux, в которой убрано все лишнее, и установлен Openbox. Естественно заблокированы все хоткеи, контекстное меню, текстовые консоли.
Программа является «мультигеймом», т.е. загружает в память сразу набор игр, и позволяет между ними переключаться. Сжатие текстур помогает умещать графику 25-30 игр в 4 Гб ОЗУ.
С подключаемой периферией мы работаем на уровне протокола команд. Диск с драйверами сразу отправляется в мусорную корзину, пишется письмо производителю, подписывается NDA, и получается все необходимая информация. Сложнее, но надежней. Тем более, что иногда к устройству надо постучаться мелкой платой, без ОС.
Подрубрика «истории из жизни»: одному программисту я поручил доделать стек общения с принтером. Ну и не уследил. Программист увидел, что принтер совместим с ESC/P, который отлично поддерживается в Убунту, и переделал все под растеризацию в QImage и печать системой. Ну работает ведь. В итоге, я по ssh удаленно настраивал клиентам не печатающий CUPS сервер, пытаясь его отучить от адресации к устройству по серийному номеру, который естественно отличается от номера принтера в девелоперском офисе.
Математика
Расчет классической игры, для механического аппарата не представляет собой никакой сложности – есть таблица выигрышей за каждую комбинацию, необходимо посчитать количество всех возможных сочетаний для каждого символа, домножить выигрышные комбинации на значение выигрыша, и получить общую сумму денег, которую аппарат выплатит.
То есть расчет ведется для полной прокрутки всех барабанов по очереди. Если провести аналогию с одометром автомобиля, то анализируется комбинации вращения дисков от 00000 последовательно до 99999. Это намного эффективнее чем вращать барабаны случайно и накапливать статистику выигрышей (брутфорс). Каждая комбинация равновероятна, поэтому достаточно все проанализировать по 1 разу.
С выигрышными линиями тоже все просто (в современном игровом аппарате их больше 1). Вероятность сочетания любой комбинации равновероятна по любой линии, поэтому достаточно проанализировать сочетания для одной линии, и этот расчет будет корректен для любого количества линий, активных одновременно (при некоторых правилах игры это не так, например, если в игре присутствует символ, который «распахивается» затирая собой несколько клеток).
Сложности начинаются с появлением WILD символов (джокеров). Wild символ полиморфен, и заменяет собой любой другой символ. Т.е. комбинация LEMON WILD LEMON учитывается ПО аппарата как LEMON LEMON LEMON.
В итоге надо решить задачу «В шляпе 3 шара двух цветов, и из них можно достать 2 белых или 2 черных». Классическая теория вероятностей разводит руками по поводу полиморфных объектов (поправьте если не так), приходится обрабатывать эту ситуацию – когда общее количество сочетаний, больше чем произведение всех элементов.
Так же очень нескучно рассчитывать игры типа бинго, где боле старшая выигрышная комбинация графически исключает младшую, или игры типа draw poker, где результат зависит от стратегии игрока (какие карты поменял, какие оставил).
Подрубрика «интересный факт»: барабаны в видео слотах, хоть и виртуальные, но крутятся честно — вот список тестов ГСЧ, на которые нас проверяют при сертификации: Meta-testing, Confidence Level, Adjacency Blocks, Adjacency High-Low, Adjacency Max-Min, Count of Counts, Coupon Collector’s Test, DieHard Battery of Tests, Duplicates Test, Interplay Correlation Test, Overlaps Test, Permutation Test, Position Interaction Test, Relative Frequency by Positions Test, Wald-Wolfowitz Runs Test, Serial Correlation Test, 3 Sigma Test, Total Distribution Test, Total Distribution by Position Test, Unequal Probabilities Test.
Все производители рассчитывают барабаны таким образом, что при случайном вращении, мат ожидание суммы выигрышей меньше чем суммы ставок, что обеспечивает доходность.
Лучшая аналогия – диск рулетки. Математика заложена в физике диска и таблице выигрышей – 37 возможных исходов, множитель выигрыша за номер – 36. Итого процент отдачи рулетки с одним зеро: 36*1/37=0.972.
В видео слоте – тоже самое, только количество возможных исходов исчисляется десятками миллионов.
Обычно длина барабанов в видео слоте составляет 25-75 символов. Меньше этого диапазона будет плохо – топовые символы будут часто сочетаться, больше тоже не очень хорошо – слишком долгий выход аппарата на матожидание. Также, барабаны могут быть разной длинны.
Давно небыло картинок — это просто скриншот одной из наших игр
Подрубрика «интересный факт»: в электро-механических аппаратах барабаны слишком коротки, и не подходят для того, что б анонсировать крупные выигрыши, за определенные комбинации. Увеличить длину не позволяют банальные габариты аппарата (барабан круглый).
Как выйти из положения если хочется вращать барабаны честно? В памяти микроконтроллера существуют «virtual reels» — барабаны, составленные из сегментов реальных механических барабанов. Эти виртуальные барабаны имеют необходимую длину, достаточную для того, что б определенные символы выпадали редко.
В итоге, ГСЧ крутит виртуальные сертифицированные барабаны, а шаговый сервопривод останавливает физические барабаны на сегментах эквивалентных виртуальным.
Сборочный цех
Статья выходит за рамки краткого обзора, поэтому просто опубликую несколько фото нашего процесса сборки:
Logic area до применения кабель-канала
Logic area после применения кабель-канала. Тут еще отсутствует левая часть, но смысл думаю понятен.
Упакованный терминал похож на гробик.
Красота
Online казино
За окном 2017-й год, все больше и больше людей имеют банковские карты, и осуществляют платежи в интернет. И что важнее, все большее количество людей научилось доверять онлайн-сервисам. Я имею ввиду не безопасность данных – эта проблема всегда будет актуальной, а уверенность получить услугу, от компании которая «где-то там далеко, а вдруг лохотрон».
Поэтому онлайн казино становятся на ноги все уверенней и уверенней. А значит озвучка сериалов будет страдать все больше и больше.
Немалую роль в популяризации оказывают стримеры (осторожней со ссылкой, много мата), а также работа с клиентом – офлайн казино зачастую не знают своих пользователей даже по имени, а у онлайн заведений – набор персональных данных. Мне, как зарегистрированному пользователю российского казино, не стесняясь звонят в Украину с московского номера, что б рассказать о какой-нибудь текущей акции. Подумаешь, роуминг. Клиент важнее.
Открыть онлайн казино очень просто – достаточно сделать сайт с регистрацией пользователей, и заключить договора с компаниями контент-провайдерами слотов. По-хорошему нужен еще биллинг, но при желании, эту услугу можно так же отдать компании-провайдеру.
Провайдер предоставляет API, и фрейм, в котором отображается видео слот. Онлайн казино передает контент-провайдеру идентификатор игрока, и ставку, и в ответ получает сумму выигрыша (конечно это упрощенное описание процесса взаимодействия с API). Какой интерактив происходит в процессе игры – казино по большому счету не сильно волнует.
В итоге, провайдер игрового контента получает свой небольшой процент, за сервис, а казино – реальные деньги от платежей пользователей.
Обычно онлайн-казино это агрегатор, который взаимодействует с несколькими разработчиками игр. У каждого из разработчиков игр свой API, но суть взаимодействия везде похожа.
Понятно, что лицензия одной страны, не дает право вести деятельность по всему миру – есть страны которые требуют локального лицензирования, или полностью запрещают данный вид деятельности. Но не все страны способны осуществлять мониторинг и блокировать доступ к нелегальным ресурсам.
Подрубрика «интересный факт»: «Проблемы с доступом в joycasino?» (с) У меня – да. Вот что я вижу по адресу joycasino.com и всем зеркалам: «Данный ресурс закрыт для посещений из Украины, Португалии. По всем вопросам, пожалуйста, обращайтесь в службу поддержки support@joycasino.com». Самые назойливые, оказались самыми законопослушными, большинство остальных ресурсов без проблем дают авторизоваться, и даже осуществить финансовые транзакции.
Подрубрика «истории из жизни»: было интересно, как казино выплачивает выигрыш на банковскую карту, с нетерпением ждал перевод, что б посмотреть назначение платежа.
Сумма в 186 долларов пришла по частям, с задержками. 50 долларов которые я внес как депозит пришли как «возврат товара», еще 2 платежа по 50, с такой же формулировкой (видимо чьи-то, т.к. я вносил только 50), и на сутки позже пришло 36 долларов как перевод из Кипра (видимо не нашлось депозита подходящего по значению).
В общем минимизация налогов работает и в этой отрасли.
Хотелось бы пару слов сказать о компаниях-разработчиках онлайн слотов (NetEnt, Microgaming, Endorphina, Yggdrasil).
Раньше мы смотрели на них из офлайна слегка скептически, но за последние годы они поднаторели, поняли законы жанра, и выдают очень качественный и красивый продукт. Ну и финансово себя неплохо чувствуют, например, годовая прибыль Netent Entertament за 2016 год составила 58 миллионов долларов.
Многие игры до сих пор на флеше, но они постепенно портируются на HTML5.
Вид игры «Voodoo» компании Endorphina.
Мифы и факты
Миф №1: операторы игорных заведений обдирают народ, и купаются в золоте
На самом деле, игровой аппарат отдает обратно в виде выигрышей 90%-96% денег. Т.е. мы оставляем себе не более 10% от оборота. Сравните с бутиком модной одежды, где маржа 300%.
Нам помогает тот факт, что выигрыши суммируются в общие кредиты, и на эти деньги осуществляется ставка повторно.
Итого в среднем, деньги прокручиваются 2.5-3 раза (зависит от агрессивности игры), аппарат каждый раз откусывает в среднем 8%, и итого хоть математически мы забираем 8%, практически за счет повторной прокрутки денег заработок доходит до 3*8=24% от оборота (округлим до 25%). Тем не менее, 75% попадает игрокам.
Далее, по поводу 25%. Даже если есть деньги купить землю и построить казино (в реальной жизни приходится оплачивать аренду), всегда есть лицензионные отчисления. Это расходы как на саму лицензию на вид деятельности, так и налог на каждую эксплуатируемую единицу (в Украине это называлось патент).
Например, налог на установку аппарата в Румынии, составляет около 13 евро в день. Таким образом, даже если аппарат достался бесплатно, аренда помещения бесплатно, люди работают бесплатно, если физически в аппарат не будут вносить ежедневно купюр суммой 52 евро – он будет убыточен. Реально порог рентабельности намного выше.
Миф №2: игровой аппарат меняет свою стратегию выплат в зависимости от текущей ситуации
Очень распространено мнение, что процент отдачи регулируется аппаратом «на лету», и после крупной выплаты он будет «есть деньги».
На самом деле, применение подобных алгоритмов очень опасно, т.к. может обернуться против создателя. Если игрок или что хуже, злоумышленник, почувствует некоторый алгоритм поведения, он может его использовать в своих целях.
Даже если алгоритм с виду убыточен для играющей стороны, знание – сила. Только полная непредсказуемость, даже для разработчика, позволяет быть уверенным в результате.
Впрочем, некоторые грязные методы психологического воздействия применяются, если они явно не запрещены в стране, выдающей лицензию.
Например, «near-miss effect», когда невыигрышная комбинация барабанов, подменяется до рендера (на уровни модели) на другую невыигрышную, но выглядящую более привлекательно. Например, 5 дорогих одинаковых символов, разбросанных так, что они не сочетаются ни в одну из линий, определенных правилами.
Этот трюк не влияет на результат (что так, что так — выигрыш ноль), но создают ощущение что «почти совпало, попробую еще».
Мы повышаем яркость, при повышении ставки, используем ритмичные гипнотизирующие звуки при вращении барабанов, расставляем аудио-визуальные акценты если что-то может совпасть, еще до того как совпало. И да, конечно стекла в заведениях всегда заклеены и нет часов, ни на стенах, ни на экранах.
Подрубрика «интересный факт»: один украинский оператор использовал в своих заведениях телефонную будку, в которую можно было зайти, выбрать один из вариантов эмбиент-окружения (пробка, метро, супермаркет) и ответить на звонок на мобильный телефон.
Миф №3: Можно купить набор «секреты игровых аппаратов» и выиграть
Это правда. Ну, отчасти. Методики типа «в такой-то игре, нажмите одновременно эту и эту кнопку» конечно не работают. Но при наличии физического доступа к автомату – можно купить прошивку с закладкой, подменить, прийти через неделю, и активировав закладку специальной комбинацией клавиш и действий – получить выигрыш.
Обычно такое практикуется путем сговора с персоналом заведения. Это работает со старыми моделями аппаратов, и от такого можно защититься только пломбированием, логированием открытия дверей, и контролем за копиями ключей.
Кстати, industrial материнская плата Fujitsu, которую мы применяем, способна контролировать размыкание цепи контактов дверей, даже в выключенном состоянии, и логировать в себе в CMOS память.
В заключение, мини FAQ:
Q: Сколько стоит игровой аппарат?
A: От 4 до 12 тыс евро за типовую модель.
Q: Опасна ли игромания?
A: Очень. Зависимость 100% психологическая, а память не сотрешь. Страдает вначале самооценка – проигрыш денег, которыми можно было распорядиться более умно, развивает ненависть к себе, а это куда хуже, чем ненавидеть правительство, начальство, или соседей. Затем, включаются бытовые факторы – нехватка денег в сочетании с желанием срочно отыграться может включать программы «достать денег любой ценой».
Q: Играл ли я на деньги?
A: Да, когда это было легально, я поиграл на каждом из доступных игровых аппаратов, всех производителей. Это происходило в заведениях конкурентов, и приходилось играть на деньги. «Чтобы понять женщину нужно думать как туфли». Я мог бы написать «это того стоило, т.к. дало бесценный опыт в разработке игр», но в итоге, не смотря на большое количество игр, я выиграл намного больше чем проиграл (хватило на спортивный автомобиль).
Q: Беспокоит ли меня этический аспект моей деятельности?
A: Не больше чем владельца кондитерской фабрики, о том, что покупатели страдают ожирением, и недотягивают до 60-ти. Возможно я плохой человек, но я делаю то, что умею лучше всего. Сегодня несколько тысяч людей перераспределило свои деньги между собой, но это был их выбор не мой.
Q: Были ли ошибки в наших программах, приводящие к незапланированным выигрышам?
A: Да, было пару раз, можно было ввести бонусную игру в бесконечный цикл. Причина была в неправильной синхроницации логики сигналами-слотами, клавиатурный эвент уходил в логику бонуса, который уже был закончен. За 4 года активной разработки и постоянных апдейтов – это нормальный результат, бывает. Обычно благодаря онлайн-мониторингу финансовой статистики такое быстро замечается и исправляется.
Q: Сколько процентов кода покрыто unit-тестами?
A: Ноль. Мы отдаем себе отчет, что законы в странах наших клиентов таковы, что они обязаны выплатить любую сумму, показанную на экране, и не важно откуда она взялась. Но я предпочитаю тратить время на движение вперед, а протестировать свежий релиз могут низкооплачиваемые люди вручную. Возможно это неправильно, но бизнес – это риск.
Q: Знакомые котики на КПДВ.
A: Все права на использование получены 😉
На этом все, если есть желание что б я осветил какою-то из затронутых нем подробнее — пишите в коментариях. Так же мы разрабатываем лоттерейные системы с автоматическим розыгрышем каждые 5 минут, и умные оптические клиент-сервер турникеты для школ.
Спасибо за внимание!
Пафосное фото автора статьи с собственной продукцией, на выставке Romania Arena Expo