Pull to refresh

Кодинг без клавиатуры: создание игры hands-free

Reading time6 min
Views9.3K
Original author: Sam Machkovech
Dig Dog — это забавная маленькая видеоигра. Можно назвать её "Spelunky для детей", и не стоит считать это сомнительным комплиментом. Dig Dog, недавно выпущенная для iOS, Xbox, Windows и Mac, отказалась от некоторых сложных элементов жанра, имеет плавное управление и обладает глубиной. Она похожа на одну из игр современной волны со случайно создаваемыми уровнями, которая как будто пришла с аркадных автоматов начала 80-х.

Мне понравилась Dig Dog, когда я нашёл её на прошлогоднем мероприятии Fantastic Arcade в Остине, штат Техас. Но ещё интереснее мне стала эта игра, когда её автор связался со мной перед её выпуском и рассказал, что ему удалось то, чего не делал ни один разработчик игр до него: он написал всю игру сам… без рук.


Цель каждого этапа Dig Dog проста: перерыть уровень в поисках косточки и избегать врагов.

Скриншоты игры

Как и в Spelunky, уровни каждый раз создаются случайным образом. Эта игра немного легче, чем Spelunky, но её сложность возрастает удивительным и хитрым образом.


Атака рывком делает собаку временно неуязвимой И позволяет копать вбок.


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


Белые значки в земле могут обозначать бомбы и другие опасности.


Чем глубже вы копаете, тем страньше становятся враги.

Примерно пять лет назад живущему в Остине опытному разработчику Расти Мойеру поставили диагноз «травма от постоянного напряжения» (Repetitive Strain Injury, RSI) (травма, вызванная напряжением одной и той же группы мышц). В тот момент Расти как раз находился в очень ограниченном по времени
процессе разработки игры. Он обнаружил, что физическое облегчение возникает только когда он делает полные, стопроцентные перерывы без печати на клавиатуре и пользования мышью. Это его не устраивало. «Я по-прежнему хотел создавать игры», — говорит Мойер. «Сложно представить работу или должность, которая не связана с компьютерами».

Мойер хотел доказать, что его мечту — создание полноценных видеоигр без использования рук — можно исполнить. Единственным верным ответом ему казался выпуск хорошей, работающей игры. Так он показал бы миру, что это возможно, чтобы другие могли пойти его путём.

Сражаемся с RSI вместе с драконом


Диагноз RSI никогда не оказывается приятным, но боли в запястьях и руках Мойера достигли максимума как раз в самый неудобный момент. С двумя его давними коллегами они только что собрали на Kickstarter 60 тысяч долларов на реализацию проекта «шесть игр за шесть месяцев». Сегодня даже чтение описания проекта Retro Game Crunch заставляет запястья Мойера болеть: разработчики должны были получать предложения от бэкеров, а затем превращать их за 72 часа в прототип. За этим должен следовать чётко отточенный процесс, позволявший выпустить готовую игру к концу месяца, после чего сразу же начинался цикл создания и разработки следующей игры.

Из-за проявившегося RSI Мойера команде из трёх человек не удалось уложиться в эти дедлайны. Тем не менее, он продолжал трудиться над этими играми для Kickstarter, одновременно экспериментируя с изменениями рабочего места: эргономические клавиатуры, замена стола ради улучшения осанки, смена мышей. Ничего не помогало, кроме старого доброго бездействия вдали от клавиатуры и мыши (вместе с подкожными инъекциями лекарств).

«Серебряная пуля» нашлась, когда Мойер наткнулся на видеопрезентацию разработчика и кодера Трэвиса Рудда, которая появилась онлайн в 2013 году. Незадолго до этого у Радда диагностировали RSI, и он начал пошагово знакомить зрителей со своим опытом жизни с этой болезнью. В 28-минутном видео Рудд подробно рассказывает о том, как настроил пакет распознавания речи Dragon NaturallySpeaking для написания кода на языке Python исключительно голосом. Это противоречило тому, что Мойер читал в темах на форумах о RSI и кодинге, утверждавших, что польза от Dragon в кодинге сильно ограничена. «Не пытайтесь, это невозможно», — таким, по словам Мойера, был голос здравого смысла.

Но Рудд с помощью применённых к экосистеме Dragon хаков доказывал обратное. Он передал эти знания Мойеру, связавшемуся с ним по почте. Привлекательными ему показались два набора инструментов, Natlink и Dragonfly, потому что в них можно было настроить поддержку определённых ключевых фраз, которыми запускались любые команды — от простейшего ввода текста до имён переменных и макросов. «Команды, фактически произносимые на придуманной языке, должны быть такими, чтобы Dragon мог легко и быстро их распознавать», — говорит Мойер. Он рекомендует «краткие, сжатые слова или фразы, которые можно быстро выполнить».

Слово «slap» означает одно нажатие на Enter; «two slap» — двойное нажатие. Если сказать «camel» перед фразой типа «this is variable», то она спарсится в строку «thisIsVariable». Треугольные скобки можно вводить, произнося «lack» (от <) и «rack» (от >). Мойер любезно согласился записать видео своего обычного процесса кодинга:


Расти Мойер демонстрирует написание кода при помощи голоса.

Некоторые из этих команд уже встроены в инструменты, скачанные и подключенные Мойером к установленному Dragon NaturallySpeaking. Но он признаёт, что по большей части ему приходилось изобретать и тренировать систему, чтобы она понимала новые команды.

Старый добрый техасский two slap


«Мне нужно было создать словарь, который бы подходил мне и к тому, к чему я привык», — говорит Мойер. «Процесс кодинга голосом заключается в том, что мне нужно выполнять обычные программистские задачи, придумывать команды и модифицировать систему. Кроме того, мне приходится запоминать все эти команды. Это может быть очень долгим процессом. Мне пришлось медленно нарабатывать библиотеку привычных мне команд, которые распознаются при произнесении моим голосом и которые я могу запомнить».

Частично потребность в новом словаре была вызвана тем, что Расти использует для кодинга Visual Studio и Xcode, лучше подходящие для разработки игр, а не удобные для Emacs голосовые команды, созданные и используемые Руддом и его единомышленниками. Кроме того, в среде разработки Мойера, как выяснилось, требовалось гораздо больше движений курсора. То есть ему нужно было реализовать то, о чём не думали Рудд и остальные: настоящую замену мыши, работающую без рук.

Вместо того, чтобы собирать на коленке какой-нибудь инфракрасный трекер головы или взгляда, Мойер выбрал самое оптимальное на то время решение: устройство SmartNav 4 за 500 долларов, поставляемое компанией Natural Point, которая создаёт компьютерную технику для людей с особыми потребностями. Перед линией взгляда пользователя располагается один сенсор, а на головной убор надевается маленький отражатель. Построив чувствительность устройства, Мойер добился удовлетворительной работы с достаточно небольшими движениями головы — примерно 5-10 градусов в горизонтальной плоскости и ещё меньше в вертикальной плоскости. Последней частью оборудования является ножная педаль, которой выполняются щелчки мыши.

Расти был единственным кодером, дизайнером и художником Dig Dog, поэтому оборудование для отслеживания положения головы было необходимо для отрисовки элементов игры и кадров анимации. Графика игры с огромными пикселями имеет разрешение примерно 220p и палитру из шести цветов. «Устройство не такое быстрое и точное, как мышь», — признаёт Мойер. «Я выбрал такой графический стиль игры, который проще было реализовать на этой системе».

Изначальной целью Мойера был проект, который можно не только разработать без рук, но и протестировать без рук, но целиком с этой задачей он не справился. Dig Dog начала свою жизнь как попросту недостижимый проект — Расти хотел создать хороший платформер для iOS. Его первые прототипы были более атмосферными и неброскими; в них пикселизированная собака просто блуждала по огромной пустыне. «Потом у меня возникла идея о копании, и с тех пор основным геймплеем стало рытьё в земле». (И на самом деле, рытьё нажатием на экран и перемещение нажатиями на края экрана в условиях ограничений смартфона работает довольно хорошо, однако геймплей интересен и со стандартным игровым контроллером.)

Но Мойер был единственным дизайнером и кодером, поэтому ему всё-таки пришлось терпеть боль в запястьях только для одной цели: тестирования прототипа. «Я хотел проводить плейтест игры с помощью созданных мной инструментов, но пришлось тестировать её руками», — говорит Мойер. «Никаким другим способом мне не удалось бы понять ощущения от игры и тщательно настроить её механику».

Бросить сообществу кость


Частично миссия Мойера по созданию полной игры необходима была ему, чтобы создать собственный словарь преобразования текста в речь для занятий кодингом. Чтобы не повторилась история с проектом для Kickstarter, он не хотел, чтобы кто-нибудь в работе над большим проектом зависел от его скорости или навыков. Сегодня он считает, что заложил основание для того, чтобы стать первым кодером, использующим в первую очередь речь, при работе или в одиночку, или над крупным проектом. («Я почти достиг соотношения „один к одному“», — говорит он, сравнивая скорость набора голосом и обычную печать.) И он уже рассматривает возможность использования более совершенных инструментов, а именно технологий отслеживания взгляда, чтобы проверить, сможет ли он добиться увеличения скорости и точности перемещения курсора движениями головы.

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

«С самого начала я думал, что если мне удастся создать интересную и увлекательную игру, то это будет привлекательным способом продвижения идеи кодинга голосом», — рассказывает Мойер. «Современные инструменты довольно нестабильны. Их легко испортить: нужно установить ПО, настроить его работу в Windows, приобрести различные дополнения и оборудование. Наверно, стоит продвигать саму идею того, что существуют другие способы работы и другие инструменты? Может быть, это улучшит общую ситуацию с голосовым кодингом!»

Мойер прислал нам после интервью несколько, потому что многие его усовершенствования основаны на доступной для широкой публики информации. Начните с этого руководства по DragonFly — дополнения для NaturallySpeaking, предназначенного специально для кодинга, а также с руководства по установке соответствующих дополнений. Подробнее изучить тему можно на handsfreecoding.org.
Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
+32
Comments6

Articles