Инди Сергей Юркин
3 324

Внедрение Tobii Eye Tracking в инди-инди игру

Инди-инди, потому что до инди (в общепринятом понятии) ещё далеко.

В закладки
Этот скриншот многим нравится, поэтому решил сделать его обложкой

Речь пойдет об интеграции Tobii Eye Tracking в игру, разрабатываемую на Unity. Здесь уже был кейс использования устройства со стороны игрока, поэтому в этой статье, я хотел бы показать опыт работы с ним со стороны разработчика.

Прежде всего, расскажу немного о проекте, над которым работаю и в котором балуюсь подобными экспериментами. Начну с трейлера.

Трейлер к недавно прошедшему DevGamm. Писал о его создании здесь, если интересно

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

Активация разговора с жителем с помощью взгляда

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

Эксперимент, с которого начался проект. Главное здание, кстати, осталось такое же. И в этом же твиттере, можно следить за ходом работы.

Прежде всего, перед интеграцией нужно четко понимать, что Tobii Eye Tracking не заменяет стандартные устройства управления, а дополняет их. Например, не стоит вешать на него управление, заменяющее действия, выполняемые с помощью мыши (выбор зданий, например). Это увеличивает мисклики — иногда выделяется не до здание, да и мышью это делается быстрее.

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

Есть одна немало важная вещь, про которую в прошлой статье не написали. Устройство захватывает не только положение глаз, но и положение головы и угол её поворота по всем трём координатам.

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

Описанный выше эксперимент

Как можно заметить, все немного дергаётся, поэтому лучше (и нужно) использовать скрипты из примеров, которые идут в SDK. Там и настройка гибкая, и нет различных неприятных шероховатостей.

Очень круто этот скрипт работает с RTS-камерой, расположенной на высоте птичьего полёта, и с видом от третьего лица. Всё это очень сильно добавляет атмосферности и погружения в геймплей.

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

Заключение

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

Если вы тоже разрабатываете игры, то можете написать сюда: https://tobiigaming.com/developer/ Компания нацелена на сотрудничество со студиями любых размеров, могут бесплатно выслать устройство, помочь с интеграцией и предлагают помощь в продвижении.

Если вам понравился проект, представленный в статье, либо вы любите следить за разработкой, добро пожаловать в группу: https://vk.com/public12578915

SYA :)

#опыт #gamedev #лонг

Материал дополнен редакцией
{ "author_name": "Сергей Юркин", "author_type": "self", "tags": ["\u043e\u043f\u044b\u0442","gamedev","\u043b\u043e\u043d\u0433"], "comments": 16, "likes": 79, "favorites": 28, "is_advertisement": false, "subsite_label": "indie", "id": 21556, "is_wide": false }
{ "id": 21556, "author_id": 14431, "diff_limit": 1000, "urls": {"diff":"\/comments\/21556\/get","add":"\/comments\/21556\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/21556"}, "attach_limit": 2, "max_comment_text_length": 5000 }

16 комментариев 16 комм.

Популярные

По порядку

Написать комментарий...

Сарджъ Мадовски

9

Очень хороший инструмент, позволяющий играть людям с парализованными\отсутствующими конечностями. Сейчас им приходится использовать специальный девайс для управления с помощью подбородка. Надеюсь подобное будут чаще внедрять в игры.

Ответить

Morris

Сарджъ
0

Я думаю, они плюс-минус станут внедряться в один момент с нормальными протезами рук. Тут интереснее больше для VR

Ответить

Svyatoslav Torick

3

Как давний пользователь Tobii, хочу отметить, что в стратегиях мне больше всего нравятся функции типа hint on view - достаточно секунду посмотреть на здание или объект, чтобы получить всплывающую подсказку по нему. А всякие крутилки головой - это лишнее, даже в FPS я кроме выбора точки переката (The Division, Deus Ex: Mankind Divided) ничем особо не пользовался.

Ответить

Сергей Юркин

Svyatoslav
5

Лучше сделать отключение какой либо функции в настройках, чем вообще ее не добавлять)

Ответить

Марат Сафин

Сергей
1

Лучше для кого?

Ответить

Александр Отрубянников

Марат
9

Для кого угодно - лучше больше выбора, чем меньше выбора.

Ответить

Сергей Юркин

Марат
4

Если я, как разработчик вижу, что так лучше для проекта, то я ее добавляю. Но так же, если игроку это не нужно, то должна быть функция это отключить. Пытаюсь учитывать много вариантов.

Ответить

Олег Козлов

2

О, хайтек! Я помню в Sir, You Are Being Hunted что-то подобное ребята встраивали: https://www.youtube.com/watch?time_continue=23&v=KTZT-EA8L2E

Ответить

Сергей Любимов

1

Выглядит хорошо.
Сам пользуюсь тоби уже с год, отличная приблуда. Жаль интнграция не везде на одном уровне.

Ответить

ЖирныйМинус

1

Графон стильный

Ответить

Raymond

1

Спасибо за интересный материал!
Наконец-то можно без стыда наклонить голову перед монитором, чтобы в игре выглянуть за угол, лол! (в смысле, кто не подшучивал над друзьями, когда они инстинктивно наклоняли голову, вместо того, чтобы управлять игровой камерой? Мм никто? Ладно...)

Трекер я видел только на ютубе и слабо представляю, как он на практике работает. Но, мне кажется, было бы круто сделать курсор мыши продолжением курсора трекера. Если трекером навёлся на какой-то объект и вплыло окно, можно нажать и удерживать, допустим, кнопку мыши, и курсор переместиться в это всплывшее окно, где уже можно будет жестом дать какую-нибудь команду. А когда отпускаешь кнопку, курсор мыши возвращается в прежнее место вне всплывающего окно.

Ответить

Kostya Bashmakov

0

Блин, хорошая приблуда, но пока не поиграешься с трекером, не поймешь, стоит ли он покупки
Еще в видосах по играм юбисофт видел и очень хотелось

Ответить

Сергей Юркин

Kostya
0

Согласен. Ребятам нужно шоукейс проводить где-нибудь)

Ответить

Михаил Лапин

0

Выглядит четенько

Ответить

Вадим Елистратов

0

Привет, немного подправил пост, чтобы поставить его в наше геймдев-сообщество.

Ответить
0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]