Принцип случайности
Каждое вращение запускается генератором случайных чисел.
Игрок не может предсказать результат следующего спина.
Практически любой проект проще и дешевле реализовывать, когда с самого начала сразу ответить на вопрос для себя: в чем его смысл. В случае игровых автоматов это крайне важно — без ясной цели несложно уйти в постоянные изменения, апгрейды и обновления, и все это могут длиться вечно.
Именно поэтому прежде чем заказывать детали, подбирать заготовки и подбирать программное обеспечение, я определил лично для себя базовые требования к будущему устройству.
Самое первое с чего я начал — сценарий применения. Не абстрактный «идеальный автомат», а как можно более бытовой вариант:
Мне хотелось автомат формата «собрались люди — нажали кнопку — начали играть». Без рассказов, руководств и подготовки.
Полноразмерные аркадные автоматы кажутся стильно, но для квартиры это далеко не самый подходящий вариант. Из-за этого я отказался от варианта классического корпуса и остановился на компактный вариант.
Главные условия по физическим размерам выглядели так:
Такой подход естественным образом установило пределы по экрану, по корпусу и массу устройства.
Важный следующий ключевой пункт — сами игры. Я сразу для себя решил, что автомат планируется совсем не «для коллекции ромов», а прежде всего для реальной игры.
В результате появились конкретные требования:
Наиболее удачно под эти критерии вписываются игры-файтинги, beat ’em up, аркадные гонки и классические аркадные стрелялки.
Впечатления от устройства в значительной степени зависят от контроллеров. Можно поставить топовый железо и красивый дисплей, но если кнопки «нечеткие», а рычаг болтается — нормальной игры не получится.
Если вы искали как сделать игровой автомат, в этом случае минимальный список требований можно описать следующим образом:
Если говорить о кнопках я выбирал два сценария: 4 либо 6 кнопок на игрока. В конце концов я выбрал на 6 — это гибче и дает возможность удобно играть в файтинги.
В этот момент я пока не понимал финальных размеров корпуса, но уже понимал, на что стоит учитывать:
Все эти вещи трудно рассчитать «визуально», из-за этого я изначально включил фазу прототипа, о нем расскажу дальше.
Даже в случае если автомат используется дома и применяется бережно, он все равно обязан быть простым в обслуживании. Я сразу заложил ряд ключевых требований:
После того как все эти требования были сформулированы, прояснилось, в какую сторону нужно идти. Дальнейшим шагом стало планирование и создание первого прототипа.
После того как общие требования были определены, было ясно, что изготавливать «чистовой» автомат — ошибочное решение. Без предварительной проверки легко ошибиться с размерами, наклонами и размещением деталей. Поэтому следующим шагом стало создание прототипа.
В голове и в голове все почти всегда выглядит идеально. Фактически часто оказывается, что:
Пробный вариант необходим не для красоты, а именно для проверки эргономики. Цель прототипа — ответить на вопрос: удобно ли реально играть.
Самый доступный и бюджетный вариант оценить компоновку — взять бумагу и простые материалы. Я вырезал:
Все это раскладывалось на поверхности в разных вариантах. Я пробовал менять дистанцию между игроками, наклон экрана, ширину панели управления и оценивал, как это ощущается в реальности.
Уже тогда стало ясно, что сразу часть идей из головы оказываются неудобными.
После картонного этапа я перешел подготовить базовый контроллер для тестов. Без полноценного корпуса, без внешнего вида — исключительно чтобы почувствовать чувство от контроллеров.
Для такой проверки нужно было:
Я смонтировал кнопки и джойстики в корпус, соединил их к энкодеру и протестировал пару игр на экране. Этот этап принес гораздо больше понимания, чем любые любые чертежи.
После нескольких вечеров проверок стали очевидны детали, о таких вещах часто не задумываются:
Данный этап сэкономил для меня много времени и денег на следующих этапах. Исправлять картон — почти бесплатно. Исправлять корпус — больно и дорого.
После того как базовое расположение сложилась, я перевел ее в трехмерную модель. Это позволило:
На этой стадии дизайн еще много раз дорабатывался, однако ключевое уже было ясно: устройство будет удобным, небольшим и рассчитанным на игру вдвоем.
Затем можно было перейти к подбору электроники и основного блока устройства.
После того как прояснилось, каким образом автомат должен выглядеть и чувствоваться в реальности, пришло время решить, что именно будет внутри. От выбора «основного блока напрямую зависит уровень сложности, надежность и объем времени, который нужно будет потратить на настройку.
На старте я перебирал пару популярных вариантов:
ПК и ноутбук отпали сразу же: они занимают слишком много места, требуют больше питания и заметно усложняют сборку. Я хотел компактное, простое и предсказуемое подход.
В итоге выбор пал именно Raspberry Pi. Не потому, что это «безальтернативное решение», а за счет того, что он точно подходил под поставленные задачи:
Для классических аркадных и старых консольных игр старых поколений производительности Raspberry Pi более чем достаточно.
С экраном все оказалось неоднозначно. Хотелось поймать баланс между размером, стоимостью и комфортом.
Основные требования сформировались такие:
Я не гнался за сверхвысоким разрешением экрана — для ретро-игр оно избыточно.
В этом вопросе пытаться сэкономить не имеет смысла. Бюджетные кнопки могут работать некорректно, а плохие рычаги — иметь люфт буквально через пару недель.
Я выбирал элементы управления по таким критериям:
Проще сразу взять не самый дешевый вариант, чтобы потом не разбирать автомат по пустякам.
Для того чтобы Raspberry Pi видел кнопки и джойстики как стандартный геймпад либо клавиатуру, используются USB-энкодеры.
Это компактные печатные платы, к которым напрямую подключаются:
Затем вся система через один кабель подсоединяется к Raspberry Pi, после чего система определяет управление без ручной настройки.
Даже при небольших решений возникают особенности:
Перегрев у Raspberry Pi не является критичным при аркадной нагрузке, однако лучше заранее предусмотреть отверстия вентиляции либо тихий вентилятор.
После того как все компоненты была выбрана и закуплена, стало возможно перейти к следующему шагу — к сборке пробной системы и настройке программной части.
Прежде чем устанавливать компоненты в корпус, я принял решение собрать все в максимально упрощенном виде и убедиться, что система работает корректно так, как задумано. Данный этап позволяет поймать основные ошибки без опасности испортить корпус или переделывать заново готовый корпус.
На этом этапе не имеет значения внешний вид. Критична только работа системы.
Я разложил на столе:
Кнопки и джойстики временно были соединены вне корпуса — просто для проверки логики работы и удобства.
Для софта я выбрал готовую сборку с эмуляторами. Этот способ существенно экономит время настройки: не нужно отдельно устанавливать каждый эмулятор и настраивать каждый отдельно.
Процесс сводился к следующему:
После старта система автоматически предлагает назначить кнопки — достаточно нажать кнопки в нужной последовательности.
Этот этап — самый самых важных этапов. Даже когда все подключено правильно, в реальности могут всплыть неприятные мелочи:
Я запускал разные жанры и проверял, удобно ли управлять персонажем, не приходится ли тянуть рука к кнопкам и не задевают ли игроки локтями.
Базовая система поставляется без контента, поэтому игры загружаются вручную. Заранее собрал ограниченный набор:
Критично на этом этапе не стараться добавить «весь каталог». Ограниченный список игр помогает сконцентрироваться на проверке эргономики, и не на переборе из сотен вариантов.
Без проблем, естественно, не обошлось. В процессе тестирования выяснилось:
Все эти моменты было легко решить на этом этапе, поскольку ничто еще не встроено в конструкцию.
Спустя пары вечеров тестов система оказалась стабильной и предсказуемой. Управление функционировало ровно так, как было задумано, игры запускались оперативно, ничто не подвисало и не просило дополнительных настроек.
Это означало, что пора переходить к самому сложному этапу — проектированию и сборке корпусной части.
Корпус автомата — это самая самая трудоемкая и наиболее «физическая» часть всей конструкции. Именно корпус определяет внешний вид устройства, а также его вес, прочность и удобство использования. Ошибки на этой стадии стоят дороже всего, из-за этого к материалам я решил подойти отдельно.
Прежде чем выбирать материал, я определил основные условия к корпусу:
Конструкция должен оставаться практичным, и не выставочным объектом.
Самым первым и логичным выбором стала фанера. Это выбор для аркадных корпусов, и у него имеется ряд понятных плюсов:
Я выбирал фанеру толщиной 10–15 мм. В итоге остановился на среднем варианте — такая толщина дает необходимую прочность, но не превращает корпус слишком тяжелый ящик.
Идея изготовить корпус из массива дерева выглядит привлекательно, но в реальности у нее много недостатков:
Для начального проекта такой вариант неоправданно сложен и затратно.
Я также рассматривал идею частично использовать 3D-печать. Такой подход хорошо работает в случае:
Полностью делать на печати корпус нецелесообразно: это долго, дорого и часто не достаточно жестко.
Форма напрямую зависела от выбранного формата устройства. В данном случае это был компактный формат, поэтому:
Я старался не использовать сложных изогнутых форм — чем проще форма, тем проще изготовление и монтаж.
После того как форма и материалы были определены, я сделал первичные чертежи. Эти чертежи не получились окончательными, и неоднократно корректировались в процессе работы, однако позволяли понять:
С такими схемами стало возможным переходить к производству корпуса и сборке конструкции.
Когда материал были выбраны и чертежи были готовы, стартовала наиболее осязаемая часть всей работы — сборка конструкции. Именно здесь из набора деталей устройство начинает превращаться в реальный объект, а не абстрактную идею.
Все детали конструкции я предварительно распилил по размерам. Это можно разными способами:
Я остановился на способе с ЧПУ-фрезером — в этом случае детали получаются более точными, и отверстия под кнопки и дисплей сразу соответствуют чертежам. Однако это не обязателен, особенно если устройство собирается в одном экземпляре.
Прежде чем что-то фиксировать или закреплять окончательно, я сделал «пробную» сборку деталей — без использования клея и без финального крепежа.
Это позволило:
На этой стадии часто всплывают мелкие ошибки по размерам, и такие ошибки легче поправить сейчас, чем потом после финальной сборки.
По завершении пробной подгонки корпус разбирался и собран уже окончательно.
Для соединения элементов я применял:
Важно не переусердствовать с фиксацией и оставить возможность при необходимости разобрать корпус конструкцию в будущем.
Отдельного внимания требует управляющая панель. На ней:
Я несколько раз примерял панель управления перед финальной фиксацией, чтобы, что пользоваться реально комфортно.
Дисплей крепится внутри корпуса так, чтобы:
В большинстве случаев хватает простых планок или уголков.
Заранее заложил возможность доступа внутрь автомата. Для этого задняя стенка:
Такое решение заметно упрощает обслуживание системы, смену кнопок управления и любые работы с начинкой.
Когда корпус был собран, стало возможно переходить к монтажу всей электроники и внутренней разводке.
К этому моменту автомат уже смотрелся как законченное устройство, но без корректной программной настройки он был просто коробкой с кнопками. Моя цель была простой: подать питание и сразу же оказаться в список игр, без лишних меню и действий.
С самого начала предполагал что автоматом пользуются не только один человек. Значит:
Фактически автомат должен работать как обычное устройство: включил — работает.
После финального монтажа электроники внутри я повторно выполнил конфигурацию управления в ПО. Это важно, так как после разводки часто появляются небольшие нюансы.
Я проверил:
Без этого часть игр может управляться «неправильно» или просто неудобно.
Чем меньше всего пунктов меню видит гость, тем лучше. Я убрал все лишнее:
В результате получился небольшой список проверенных проектов, в которые реально хочется играть вдвоем.
Я сделал настройку ПО таким образом, чтобы:
Это особенно важно, когда автомат используется гостями либо стоит в общем пространстве.
Перед тем как считать проект готовым, я несколько вечеров подряд просто играл на автомате:
Именно в таком режиме проявляются мелочи, которые сложно учесть заранее: в одном месте некомфортно тянуться к кнопке, где-то хочется изменить очередность игр, а иногда — более быстрый выход к списку игр.
На этом этапе устройство стал ровно тем, чем я его задумывал в самом начале. Это уже девайс, которое не требует объяснений и работает стабильно.
Если подытожить всю работу, то как сделать игровой автомат — это в первую очередь не столько про электронику или материалы, сколько грамотно продуманную цепочку шагов: от постановки задачи до финальных проверок в реальной эксплуатации.
Далее я расскажу о практическом использовании, ошибках и выводах, которые возникли в процессе использования автомата на практике, а не в теории.
Каждое вращение запускается генератором случайных чисел.
Игрок не может предсказать результат следующего спина.
Автоматы тестируются на соответствие стандартам честной игры.
Программное обеспечение проверяется аудиторами.
Качество графики отличается в зависимости от типа автомата.
Иногда используются трёхмерные анимации.
Автомат может содержать кнопку справки.
Интерфейс включает шкалу прогресса.
Музыка усиливает атмосферу игры.
Звуки вовлекают игрока в процесс.
Таблица выплат показывает значения комбинаций.
Информация доступна через меню.