Оглавление:

Беспроводной семейный игровой контроллер для 4 игроков: 3 шага
Беспроводной семейный игровой контроллер для 4 игроков: 3 шага

Видео: Беспроводной семейный игровой контроллер для 4 игроков: 3 шага

Видео: Беспроводной семейный игровой контроллер для 4 игроков: 3 шага
Видео: Беспроводной контроллер 8bitdo Ultimate 2.4. Пользовательский обзор 2024, Ноябрь
Anonim
Беспроводной семейный игровой контроллер для 4 игроков
Беспроводной семейный игровой контроллер для 4 игроков
Беспроводной семейный игровой контроллер для 4 игроков
Беспроводной семейный игровой контроллер для 4 игроков
Беспроводной семейный игровой контроллер для 4 игроков
Беспроводной семейный игровой контроллер для 4 игроков

Это беспроводной контроллер в аркадном стиле, на котором могут играть одновременно 4 человека. Он беспроводной, поэтому вам не нужно привязывать компьютер к контроллеру, которым пользуются пятилетние дети. Они все время падают, и я не хочу, чтобы они разрушали все мои игрушки, когда неизбежно спотыкаются о проволоке. Недавно мы купили новый компьютерный монитор, и он пришел в очень прочной коробке с действительно плотным пенополистиролом внутри. Как что-то из ситкома, я постоянно спорил с женой о том, чтобы сохранить коробку. Мне казалось, что это умолять превратить во что-то, в то время как для нее это было уродливым хламом. Затем, совершенно неожиданно, Instructables провела соревнование на скорость, основанное на картоне. Итак, в полдень спор был улажен, и этот проект родился.

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

Запасы

1. Картонная коробка2. Пенопласт или другой плотный наполнитель 3. Аркадные кнопки от Али Экспресс или Амазон 4. Raspberry Pi 3B + 5. Какой-то другой компьютер + экран. 6. Нож или что-нибудь, чтобы вырезать дырки в картоне 7. Малярная лента 8. Балончик с краской

Шаг 1: Строительство

Постройка
Постройка
Постройка
Постройка
Постройка
Постройка

Мы быстро нарисовали набросок того, как должна выглядеть эта вещь, затем с помощью ножа и пилы по дереву нарезали картон и пенополистирол до нужного размера. Мы разметили картон с хорошим расположением кнопок / джойстика и аккуратно вырезали отверстия ножом. Это было отличным упражнением по основам математики для детей. Когда картон был вырезан, мы раскрашивали его, а затем вставляли все пуговицы на свои места. Главное интересное, что мы сделали - приклеили три слоя картона на верхнюю часть контроллера, чтобы придать ему большую жесткость. Это несколько затрудняло резку, но отлично сработало, чтобы сделать верхнюю часть почти такой же твердой, как дерево.

Raspberry Pi 3B + имеет четыре порта USB. У нас есть семья из четырех и четырех наборов аркадных кнопок! Это было предопределением.

Шаг 2: Программирование

Программирование
Программирование
Программирование
Программирование
Программирование
Программирование
Программирование
Программирование

Код этого проекта простой и содержит ошибки. Все это можно найти здесь:

github.com/melvyniandrag/SuperTuxJunkKart 4 контроллера подключены через USB к Raspberry Pi. На Raspberry pi работает небольшой скрипт python. Я использовал библиотеку входов Python для получения сигналов от кнопок и джойстиков. Затем программа преобразует сигнал в короткий код ASCII и отправляет его через TCP-сокет по Wi-Fi на ПК, на котором запущена игра (я буду называть его игровым сервером). Например, когда игрок 0 перемещает джойстик влево, символы «0XL» отправляются через сокет TCP на игровой сервер. Для тестирования я запустил SuperTuxKart на своем Thinkpad. Небольшое серверное приложение запускается на Thinkpad и прослушивает TCP-сокет. Коды, поступающие от Raspberry Pi по Wi-Fi, переводятся в нажатия кнопок на клавиатуре через библиотеку pyautogui. Итак, когда игрок 0 на картонном контроллере перемещает джойстик влево и контроллер издает «OXL», сервер, на котором запущена игра, думает, что игрок нажал кнопку «1» на клавиатуре. Игра должна быть настроена на распознавание этих нажатий на клавиатуре, как это может быть показано на экране параметров здесь. Эта игра отлично работает с одним или двумя игроками, но когда 4 человека агрессивно играют в SuperTuxKart, сервер начинает терять некоторые данные с контроллера. Я не уверен, что это ошибка: 1. На стороне клиента (контроллера) 2. На стороне сервера (Thinkpad) 3. Встроенная функциональность Linux. Возможно, мой ноутбук с Ubuntu не распознает большое количество одновременных нажатий клавиш. Итак, если игроки 0, 1 и 2 все поворачивают вверх и влево, это означает, что одновременно нажимаются 2 * 3 = 6 кнопок. Я не уверен, что мой компьютер (или любой другой) предназначен для этого. Обычно горячие клавиши - это 3 или меньше кнопок, например. CTRL + ALT + DEL. В будущем я собираюсь попробовать запустить 4 сокета TCP, по одному для каждого контроллера, а затем на стороне сервера создать виртуальную игровую площадку. У меня еще не было времени, чтобы понять, как это сделать, между воспитанием детей, работой и разрезанием картонных коробок.

Шаг 3: будущее

Это было простое доказательство концепции. В будущем код должен быть лучше. Я хотел бы запрограммировать соединение как устройство bluetooth HID, но bluez5 в Linux немного требует времени для работы - поэтому я выбрал сокет TCP + Python. Кроме того, давайте посмотрим правде в глаза - контроллер выглядит черт возьми. Имея больше времени, я бы потратил немного больше энергии на более тщательную резку. Тогда я бы поставил больше опор - стороны коробки начинают немного деформироваться. Для того, что это такое и сколько стоит, выглядит эта штука достаточно хорошо. Буду дальше повозиться, пока вечером будем смотреть фильмы.

Рекомендуемые: