Многочлен: UI/UX приколы

Про то, как форма прогрессбара может существенно повлиять на игровой процесс. И прочие особенности национального проектирования UI/UX в этом проекте.

UI и UX проектирование никогда не делается в отрыве от геймдизайна. Хотя может быть и делается, но тогда точно получается какая-то хрень. Так что прежде чем разбирать UI/UX решения, поймём какие задачи нужно было ими решать. А для этого, НАКОНЕЦ-ТО погрузимся немного в будущий игровой процесс Многочлена.

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

UI/UX добавления в друзьяшки

Это вам не соцсеть, где кнопку прожал и готово. Здесь нужна тактика, двухлетняя военная подготовка, интеллект, и умение мыслить наперёд =)

Для того, чтобы подружиться с NPC игроку следует просто двигаться рядом с ним, чтобы получилось практически параллельное движение.

Звучит как простая мини-игра, а как делать то?

Ок, для начала попытаемся понять что такое параллельное движение. Я принял для этого выполнение двух условий:

  • Игрок должен двигаться рядом с NPC - ограничение на дистанцию между игроком и этим NPC.
  • След игрока должен идти параллельно следу NPC. Понятное дело, что идеальной параллельности не достичь так что с учётом первого пункта достаточно только чтобы игрок не пересекал след NPC.

За пересечение следа NPC игрок будет получать штраф. Какой именно, я пока умолчу, чтобы не травмировать нежные умы будущих игроков =)

А теперь самое время напомнить для тех, кто знает... Или время шок-контента для тех, кто не знает:

Самая главная задача проектировщика UI/UX - это наладить взаимосвязь игры и игрока. Для этого игра должна давать игроку регулярный и понятный фидбек. Здесь на помощь приходят best practices, шаблоны мышления и восприятия...

И интуиция, куда же без неё.

При решении своей задачи я выбрал следующие инструменты для отображения фидбека игроку:

  • Отображение следа для того, чтобы игрок видел и не пересекал траекторию движения NPC
  • Ограничительный круг, в котором игра засчитывает присутствие игрока рядом с NPC
  • Таймер-прогрессбар, который показывает игроку сколько он ещё должен продержаться в ограничительном круге.

Разбираемся по порядку, т.е. начнём со следа. Я довольно много времени экспериментировал с его отображением - делал и тёмными пятнами и точками (типа от ног). Здесь важно сделать так, чтобы след не сильно бросался в глаза, но был достаточно заметным, чтобы игрок без проблем избегал пересечение с ним. В итоге я пришёл к такому варианту:

Очень долго подбирал то, как след будет исчезать - сделал отдельную анимацию. Для NPC пришлось увеличить след, т.к. иначе он смотрится очень куцо.

У следа есть статичная фаза и фаза угасания. Для статичной фазы выбирается случайный из первых шести кадров спрайта.
У следа есть статичная фаза и фаза угасания. Для статичной фазы выбирается случайный из первых шести кадров спрайта.

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

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

Отображение ограничительного круга я прикрепил к NPC, сделал пунктиром и поместил "на пол", то есть над землёй, но под объекты, для которых считается динамическая сортировка. Размер круга подбирал так, чтобы у игрока был небольшой челлендж при вербовке компаньонов. Возможно я этот круг увеличу, когда сделаю более сложные траектории движения NPC, а возможно, он будет регулироваться выбором сложности игры.

Из всего арсенала моего оружия массового фидбека наибольшие проблемы возникли со шкалой прогресса. Я сходу сделал её прямоугольной - это самое привычное для восприятия отображение прогресса. Те самые best practices, и шаблоны восприятия, ага =)

Но вот беда - игрок может заползать под эту шкалу, что перекрывает обзор. Пришлось сделать динамическое положение шкалы, из-за чего она начала раздражающе прыгать. В итоге получилось примерно вот такое:

Можно заметить, как внизу заполняется кусок шкалы внимания - сколько его съест этот компаньон в выбранных отношениях.

Довольно долго(полгода) я смотрел на этот прогрессбар с немым упрёком, пока в один прекрасный день, неделю назад, меня не посетила мысль сделать прогресс-бар вокруг ограничительного круга, простите за тавтологию.

Это была моя самая гениальная мысль в этом месяце!

В ходе экспериментов я понял, что его достаточно отображать так же "на полу", и перекрытие игроком, другими персонажами или окружением не страшно. И вышло вот что:

Кардинальное изменение ощущений.

Сам прогрессбар стал выполнять важную геймплейную роль - он окружает игрока и NPC, отделяя их от основного мира, подчёркивая устанавливаемую между ними взаимосвязь. И когда прогрессбар замыкается - игрок как бы остаётся тет-а-тет с NPC и единственное что остаётся сделать - "дружески хлопнуть его по плечу".

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

Зачем вообще заставлять игрока жать кнопку чтобы "подружиться"? Ведь можно автоматически вербовать NPC.

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

Возможно, я фигню написал и у вас своё мнение насчёт формы. Выскажите его прямо сейчас, ответив на вопрос, какой прогрессбар лучше?
Прямоугольный
Круглый
Оба варианта отстой, я бы сделал... (напишу в комментах)

Есть ещё один важный момент.

Остановка NPC - вроде бы малозначительная, но тоже очень важная деталь при проектировании опыта игрока. Чтобы понять разницу предлагаю посмотреть как это выглядит без остановки:

А выглядит это так, как будто NPC на самом деле насрать на игрока - он продолжает двигаться дальше, не обращая на потуши зелёной сопли наладить контакт. И раздражает это знатно, т.к. требуется дополнительное когнитивное усилие, чтобы отловить момент заполнения шкалы и вовремя нажать на кнопку до вылета ГГ из ограничительного круга.

Вот с такими вещами приходится иметь дело, когда хочешь сделать что-то хорошее для игрока. Казалось бы, всего лишь форма прогрессбара и какая-то остановка NPC =)

UI/UX компаньонов

Теперь более детально посмотрим на игровой интерфейс.

Многочлен: UI/UX приколы

Я всегда стремлюсь к минимализму и стараюсь избавляться от лишних сущностей. Но при этом сущности должны быть понятны.

О чём примерно подумает игрок, глядя на этот UI?

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

А ещё я ценю, когда интерфейс понятен без текстов и всячески стремлюсь к этому. В идеале игра вообще должна быть без текстов как по мне. Существует довольно много жестов и символов обихода, которыми можно донести информацию до любого игрока. Общение между персонажами я хочу сделать в виде эмоциональных баблов. И экономия на локализациях =)

Далее хочу обратить внимание на композицию.

Из всего множества игр что я играл - никогда не понимал почему UI элементы забивают в какой-то угол, или размазывают по углам/сторонам.

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

Поэтому я расположил интерфейс по центру, выкинув всё лишнее, что можно показывать по ходу дела. А это информация о компаньонах. За что отвечает как раз нижняя шкала, которая является шкалой внимания.

Каждый компаньон потребляет внимание. Причём в разных взаимоотношениях разное количество.

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

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

На видео выше вы могли обратить внимание как эта шкала заполняется по мере установления отношений с NPC. Это важно, но вернёмся к этому чуть позже.

Когда игрок обзаводится компаньоном, над шкалой внимания появляется пиктограмка.

Многочлен: UI/UX приколы

Для каждого вида компаньона эта пиктограмка имеет разную форму, и окрашена в цвет отношений. Синий - приятель. Жёлтый - друг. Красный - любовник. Зелёный - партнёр. Под иконкой показывается здоровье компаньона сердечками. Да, оно показывается и на игровом поле, но опять же, чтобы не захламлять интерфейс - только во время того как кто-то получает урон. Внизу экрана мелкими сердечками это нужно чисто для справки в мирное время чтобы оценить жизнеспособность своего "войска".

Посмотрим на прогрессию интерфейса на практике в этом довольно длинном видео:

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

В видео можно заметить, когда первый NPC начинает плакать. Это механика френдзоны. Отношения действуют внутри незримого круга, который становится зримым когда кто-то покидает его пределы. Если кто-то из компаньонов достаточно долго пробудет вне этого круга - он становится потерявшимся. Остаётся на месте, ничего не делает и освобождает шкалу внимания. Но его можно повторно завербовать в том же виде отношений просто постояв рядом.

Вид отношения (приятель, друг, любовник, партнёр) игрок может выбирать только вне ограничительного круга. Если вступил - иди до конца!

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

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

Ещё один момент, на который хочется обратить внимание - это отработка граничных случаев.

  • Как будет выглядеть интерфейс без компаньонов?
  • А как он будет выглядеть с максимальным количеством компаньонов?
  • Как игрок будет начинать взаимоотношения если ему априори не хватит внимания?

Чем больше вопросов вы зададите на этапе проектирования - тем меньше их всплывёт на этапе тестирования.

А некоторые такие вопросы для решения могут потребовать больших переделок!

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

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

Заключение

Конечно, ещё много работы впереди даже по компаньонам и их интерфейсам. Блок над шкалой внимания будет использоваться для выдачи команд конкретным компаньонам при получении способностей. А ещё будут трибуны, на которых игрок сможет расформировывать свою команду, выгоняя "лишних" по стратегическому замыслу.

  • Следить за ходом разработки и читать новости по проекту более оперативно можно на моей странице в ВК (охотно добавлю в друзьяшки)
  • А ещё можно поддержать этот проект и любое мое творчество на страничке бусти как финансовно так и репостом.

Спасибо за внимание, пойду дальше многочленить свой Многочлен =)

106106
47 комментариев

Стилистика очень понравилась. Если б это была какая-то серьезная классная игра я б даже поиграл, хотя и не мой жанр

3

Спасибо.
Даже бесплатно не поиграли бы?
Про жанр я тут вроде ничего не писал. Но это процедурно генерируемая адвенчура с упором на исследование мира.

Комментарий недоступен

2

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

Согласен, да. Надо бы реализовать активацию монеток при наличии.

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

А это вопрос из серии "наименьшего зла". Да, сейчас можно подумать, что NPC особенный. Но если не давать возможность вербовки NPC с заведомо неподходящим для него уровнем внимания - эффект тот же самый. Даже ещё хуже, т.к. это может восприниматься как баг - с чего это даже не начинается уже привычная индикация вербовки?

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

Выглядит занятно!
Только немного странно ощущается мерцающая часть шкалы нижнего прогресс-бара внимания (в предложение хотел бы ожидать её понижения скорости мерцания минимум)
Круглый прогресс-бар вокруг мобов выглядит действительно лучше, это да; А не было мыслей насчёт прогресс-бара внутри мобов? NPC с игроком вроде не шибко могли бы перекрывать друг друга во время знакомства, как я оценил по видео, и места меньше занимает, хотя и видно слабее, чем кольцо-бар
А что если след пересекает не игрок, а сам NPC?

1

Только немного странно ощущается мерцающая часть шкалы нижнего прогресс-бара внимания (в предложение хотел бы ожидать её понижения скорости мерцания минимум)

Там вообще мерцание не нужно, в идеале. Часть заполняемой шкалы нужно переделать на другой вид индикации, например пустой квадратик. А то что не хватает внимания - показывать дополнительной индикацией и в шкале UI и на самом компаньоне. В общем, это всё в todo

А не было мыслей насчёт прогресс-бара внутри мобов? NPC с игроком вроде не шибко могли бы перекрывать друг друга во время знакомства, как я оценил по видео, и места меньше занимает, хотя и видно слабее, чем кольцо-бар

Что значит "внутри моба"? Подробнее?
Круговой прогрессбар идеально вписался по тем причинам, которые я обозначил в посте, так что очень сомневаюсь что я буду его менять.

А что если след пересекает не игрок, а сам NPC?Это хороший вопрос, но на данный момент он не прорабатывался. Вообще взаимодействия NPC между собой пока что под вопросом. У NPC есть несколько состояний: нейтрал, друг, враг. Нейтральные не умеют атаковать, а у врагов и друзей нет френдлифаера. Пересекая след нейтрального NPC игрок его агрит, так что этот NPC становится враждебным. Если мобы друг друга агрят то по идее они станут союзниками ибо оба станут врагами. Или же нужно ввоодить доп-состояние берсерк, чтобы обозначить агрессора против всех и рандомизировать метку на атаки, чтобы они повреждали всех. Надо думать ещё.

1

В последнем примере ("не хватило") я бы добавил звук, что лимит превышен.
Ну и опять же "любовник и партнёр" это мало связано с "приятелем и другом". Хорошо, когда брак не по расчёту, но всё же.