Философия интерфейсов. Часть 1, удобство.
О, интерфейс, как много в этом слове для сердца кодера слилось! Как много в нем отозвалось!
Об интерфейсах ходит огромное количество статей, разговоров и книг. Но чем больше их читаешь, тем больше понимаешь, что в мире цифровом нет для этих вещей стандартов и каждый «лепит» так, как у него получается и как ему нравится. Разумеется, я не берусь писать новые стандарты, придумывать что-то новое и тем более, разрази меня Байт, изобретать велосипед. Тем не менее хотел бы рассказать несколько вещей, призванных сделать ваш интерфейс более удобным, понятным и читабельным.
В любом интерфейсе доминируют удобство и лёгкость восприятия. Визуальный эффект отходит на третий план и крайне редко способен покрыть недостатки первых двух. Согласитесь, красивый интерфейс вызывает «Вау!»-эффект, который очень быстро умирает, как только вашей программой (игрой) начинают пользоваться, если он неудобен и тяжелый в восприятии.
Что же нужно сделать чтобы интерфейс был удобным?
- Для начала надо сделать его таким, чтобы вам самим было удобно его использовать.
- Используйте привычные клавиши, комбинации для управления интерфейсом.
- Не забывайте про «горячие кнопки».
- Старайтесь дублировать любое действие.
- Не заставляйте пользователя ждать там, где это не нужно.
- Выводите только необходимую информацию, не забывая при том о пояснениях.
- Не делайте непонятных, неудобных и неочевидных элементов.
Рассмотрим пункты по отдельности:
Для начала надо сделать его таким, чтобы вам самим было удобно его использовать.
Хорошо, довольно простой пункт, я думаю. Если каждый раз рука сама тянется нажать Esc, чтобы выйти на один уровень меню повыше, но при нажатии на Esc ничего не происходит, это тот самый случай. Если список узкий и его приходится проматывать по горизонтали, это тоже он. Пользуйтесь своим интерфейсом и обращайте внимание на то, что вызывает малейший дискомфорт — первые цели для исправления. Не заставляйте пользователя делать одни и те же действия по многу раз, если можете сократить последовательность, или вовсе исключить её. Например запомните имя игрока при первом запросе в таблицу рекордов, и подставляйте дальше его автоматом. Если игрок захочет, он сменит имя, хотя куда чаще, он будет просто давить Enter.
Используйте привычные клавиши, комбинации для управления интерфейсом.
Да, как бы это странно не звучало, но этим пунктом пренебрегают очень часто. Сделали поле для ввода логина и пароля, а Enter или Tab не перебрасывает между полями ввода. Enter не заставляет кнопку Submit нажаться. Колсёсико мыши, не прокручивает список. Разумеется, есть и более сложные случаи, например выбора элементов выпадающего списка по стрелочкам курсора.
В целом этот пункт частично можно отнести к первому, но не всегда это удобно Вам, так что — отдельный пункт.
Не забывайте про «горячие кнопки».
и
Старайтесь дублировать любое действие.
Эти два пункта взаимодополняющие. Любое действие (например кнопку) всегда можно продублировать «горячей клавишей» или действием мышкой. Вспомним стратегии: можно поднести мышь к краю экрана, зажать правую кнопку и двигать мышь, нажимать курсорные стрелочки, или кликать по миникарте. И любое из этих действий делает одно и то же! Перемещает камеру. Если мы постараемся вспомнить, то найдем еще множество подобных действий. Атака. Щелчком правой кнопкой мыши на враге, нажатием кнопки «Атака» на панели управления юнитом, нажатием кнопки «А» или зажатием Ctrl.
Будь то UI для игры, или всего лишь меню. Да даже если это простенькое меню настройки для вашей игры — не забывайте дублировать действия.
Не заставляйте пользователя ждать там, где это не нужно.
О да, это знакомо всем. Не скидывается заставка или ролик? Кнопка играет анимацию, прежде чем сработать? Красиво, и первый раз нравится, но чем дальше, тем больше вызывает ярости. «Ядрёны биты, я уже всё это видел миллион раз! Хватит!» — не надо мучать пользователя и он останется благодарен вам за это. Не надо ставить простой в загрузке программы только для того, чтобы показать насколько красивая у вас панель со статусом загрузки, дайте программе грузиться столько времени, сколько ей нужно.
Выводите только необходимую информацию, не забывая при том о пояснениях.
Охохо. Этот пункт сопровождает любое сообщение об ошибке, или запросе каких-либо данных от пользователя. Пример «Ошибка по адресу 0х00FF0F31» — Что это сказало пользователю? А разработчику? Ничего, абсолютно, по крайней мере пользователю. Даже если эта ошибка неизвестна и Вы не знаете что писать, все равно не забудьте приписать чем она грозит пользователю и что ему делать при возникновении (повторном) этой ошибки. «Неизвестная ошибка. Перезапустите приложение. Возможно будут потеряны данные за последнюю сессию.» Правда понятнее? :)
Не делайте непонятных, неудобных и неочевидных элементов.
Не очевидно? Объясню. Бывает, что кнопочки располагают ну совсем не на своих местах. Например кнопку с крестиком, закрывающую окошко или программу, втыкают вниз, в левую часть окна... Короче, у кого на что хватит фантазии. Подобные ходы очень сильно путают пользователя, он тратит значительное время на поиск этого элемента, при том не только в первый раз, но и в последующие. Сюда также входит странный выбор надписей и пиктограмм. Пиктограмма, особенно без текста, должна однозначно ассоциироваться с действием. Если уж совсем туго с обозначением, всегда можно вывести подсказку (Hint).
Во всех этих пунктах можно руководствоваться опытом уже давно использующихся продуктов, таких как Windows. Если Вы пишете программу (игру) для Windows, пользователь уже приучен к элементам интерфейса этой ОС, горячим клавишам и пиктограммам. Старайтесь не изобретать малопонятных интерфейсов.
На этом я закончу свой небольшой ликбез на тему интерфейсов. Читайте, оценивайте, пишите комментарии, и я постараюсь осветить интересующие вас вопросы в будущем. Прошу прощение за отсуствие картинок, они уместны будут во второй статье про легкость восприятия.
Всем спасибо за внимание, Илья aka Darthman.
- 15 февраля 2012, 18:10
- 08
Мне кажется, надо сделать статью применительно к играм.
Игры тоже программы - тут статья про общие принципы.
Присоединяюсь к yeo.
Сам по себе текст интересный, написан хорошо, оформлен приятно, но это же сайт об инди-играх, а как раз игры к тексту откровенно притянуты за уши. Имхо, такое можно публиковать в личном блоге, а здесь в микроблоге ссылку оставлять.
А ещё я искренне удивляюсь тенденции делить посты на части.
За кат прошу прощения, не доглядел.
Давайте на секунду допустим что Вы правы и пост не применим к играм и притянут за уши. В этом случае возникает вопрос: а каким же местом он притянут за уши? Что из того, что Вы прочли вы не можете применить к играм? Честно говоря очень любопытно. Так как необоснованные мнения не особо люблю.
Кроме того, пост состоит из, в принципе, достаточно очевидных вещей и общих рекомендаций, а игры там исключительно в качестве примеров — можно вполне безболезненно заменить их там на графические программы, музыкальные проигрыватели или текстовые редакторы, и смысл поста не изменится.
Если бы в посте содержались примеры конкретный решений из игр, подкреплённые скриншотами, какая-нибудь подборка часто используемых общепринятых решений интерфейса в играх (типа «здоровье красное, мана синяя» и подобные вещи) — было бы круто и про игры.
Ээээ не, вы не путайте.
Игры, как и любая другая программа, также обременены и меню и всякими настройками. Что же это, если не интерфейс? Разумеется, оно применимо и к программа.
Это раз.
Имею право говорить авторитетно, как разработчик и не одной игры, сайта, программы. Я работал и в коммерческих и в любительских проектах. И в играх и не в играх, интерфейс он суть есть везде один. Меняется только специфика.И интерфейсу уделяют крайне мало времени и сил, не с точки зрения задизайнить и нарисовать, а с точки зрения реализации.
Это два.
Интерфейс это не только кнопочки и хелзбары. А также и мышка с клавиатурой.
Это три.
Я бы, может, и согласился бы что это не подходит к играм, но опять таки аргументов не вижу :)
А то, что рекомендации носят характер "очевидных вещей". Ну, давайте, удивите меня. Покажите мне свою игру, и мы посмотрим сколько из этих очевидных вещей там упущено :)
Не вижу аргументов с вашей стороны, кроме «говорю как разработчик» и «сперва добейся».
Я, конечно, не разработчик и не участвовал во множестве проектов, но вещи вроде «Esc должен выходить в меню» или там «колёсико должно крутить списки» кажутся мне достаточно очевидными, а более глубоких мыслей в посте я, извините, не вижу.
После вот этого:
я ожидал, что Чальмерзит ответит агрессивно. Но он спокойненько объяснил, что имел в виду.
Ну и зачем провоцировать его дальше?
Вы yeo послушайте, он на этом вопросе собаку съел ;)
Поверьте, если человек захочет, он найдет провокацию в любом слове, и даже в полном отсуствии слов.
Мы же не ругаемся, а ведем диалог.
Если не хотите верить мне, ну так не верьте. Вы пишете про то что оно притянуто за уши, при этом совершенно не аргументируя своё мнение, что вы этим от меня хотите тогда добиться? Прочитать мысли и сделать так чтобы угодить всем я точно не могу.
А минусовать... Система с плюсами и минусами, возможно и не лишена смысла, но мне очень странно наблюдать то, как два человека, которые не могут аргументировать свое мнение заканчивают железным аргументом - ставят посту минус. Что-то вроде "ты - мудак", когда уже аргументы кончились, точнее их и не было.
Извините, но это печально. Никто не мешал пройти мимо и промолчать, если статья показалась для вас лично неинформативной.
Если вам не нравятся мои аргументы, это не значит, что их нет.
С вашей стороны я вижу только обвинения в неаргументированности, ваши аргументы при этом ограничиваются заявлениями об авторитетности своего мнения и количестве проектов, в которых вы учавствовали. По делу вам, видимо, сказать нечего.Голоса существуют для того, чтобы выразить своё мнение к посту или комментарию. Минусов вашему посту я, кстати, не ставил, объяснил выше, почему.
Комментарии существуют примерно для того же. Вам точно так же никто не мешал пройти мимо и промолчать, если моё мнение показалось вам неаргументированным :)
Я бы с удовольствим поверил, насчет минусов, но их хорошо очень видно в табличке и там написано где и кто их поставил. Ваш Ник там есть и уже дважды. Давайте проще, уж сделаем, уберем пост и делов. Раз уж он бесполезный.
Придётся поверить :)
Продолжайте ставить минусы мне в комментарии, Вас это делает бОльшим джентельменом с каждым минусом :)
Интересно, если я напишу еще 10 комментариев в этой теме, Вы их все минусами покроете?
Давайте шансы уровняем, я тоже Вам минусов поставлю. Подождем модератора, пока он не придет и не грохнет весь топик.
Я смотрю, вы и друзей минусовать привлекли, похвальное упорство.
Обязательно, если они будут такими же «конструктивными».По теме я выше всё уже высказал, отписываться тут, пожалуй, прекращу.
Их и приводить не надо, они сами в состоянии зайти, обвиняйте и минусуйте дальше.
Длинные комменты сложно оценивать - в первой части по делу написал, а во второй свалился похвальбу да в "покажите свою игру". Оставил плюс, но в целом какая-то грязная дискуссия с обоих сторон получилась.
Я бы на твоем месте ее потер :)
Тут не принято удалять комментарии :) Пусть висит будущим поколениям в назидание.
Я не модератор. :) Давайте просто не будем дальше развивать бесперспективный диалог.
Лучше напиши что ты в планах имеешь на другие части и о чём в них хотел написать. Не хочешь всё собрать в кучу и одним куском оформить?
К ним применимо понятие интерфейса. А пост имхо просто раскрывает это понятие и содержит совершенно очевидные рекомендации. Фразу «Рассмотрим пункты по отдельности» и всё, что после неё, можно безболезненно удалить. Я чуть выше написал, что было бы крутой статьёй про интерфейсы в играх. Автора частично (но не сильно) оправдывает «Часть 1» в заголовке.
Пост вполне последовательно раскрывает собственные тезисы, которые обозначает во вступлении. Если тебе они кажутся и так понятными и ты им обычно следуешь, то не факт, что это понятно всем остальным. Лично мне было интересно почитать конкретно раскрытие каждого.
Оно можно и в этот же пост дописывать, суть не в этом. Часть потому что частей я описал три. Удобство, простота восприятия и визуальный эффект. Части логически разделены.
Если кто-то не заметил, это не совсем урок, в названии поста нет слова "урок" и не будет.
Свою позицию я объяснял, я просто не хочу бессмысленных разговоров ни о чем. Есть конкретные замечания - ради Бога. Нету, так собственно чего полемику разводить?
Пример Chalmersite отлично показывает пример неблагодарной публики, которую хлебом не корми, дай какашками покидаться. Честно говоря не вижу смысла писать.
Давайте уже заминусовывайте полностью, удаляйте аккаунт, что вы там делаете обычно?
Никто не кидался в вас какашками. И слово «урок» до этого не звучало. Перечитайте ещё раз ветку.
Что касается неблагодарности публики — эта тема тут поднималась неоднократно, не вижу смысла к ней возвращаться.
Вы тоже будьте проще, я пишу не за плюсы и восклики "как охрененно, ты просто супер", тьфу. Увольте. Но и ваши выходки с минусованием мне тоже настроение не поднимают. Лучше писать в личный блог НЕ на этом сайте. Там народ читает и молчит, за редким исключением, когда есть реальные вопросы и темы для обсуждения. Пишешь не для никого.
Позвольте, какие выходки?) Мне не понравился ваш комментарий — я это выразил тем способом, который предоставляет мне сайт.
Что касается поста — он будет очень ценным, если вы доведёте его до ума. Пока это похоже на стаб из Виикпедии.
Действительно, я видимо придумал статью из википедии, или скопипастил сюда? Так чтоли? Что еще?
Вы меню Spelunky видели?:) А в рогалики играли? А, например, в LudumDare много игр с меню, или там тоже все не труЪ разработчики? :)
Ваши домыслы. Я такого не говорил.
Интерфейс, это не только меню. Это весь комплекс человеко-машинного взаимодействия. На LudumDare времени так мало, что там не до полировки интерфейса, там идею бы показать хоть как-то.
Так можно сказать, что и управление тоже интерфейс
Кстати, так и есть :)
Ну тут то речь о графическом интерфейсе идет
Вы заблуждаетесь. Горячие клавиши это графический интерфейс?
Что могу сказать плохого(пока буду говорить как читатель, опыт то в этом деле приличный):
- Хотелось бы скриншотов. Сухой текст - "не идет". Да и при наличии скриншотов не пришлось в спорах ссылаться на "опыт в работе".
- Нет никаких примеров.(даже названий игр, где приемы используются).
- Сумбурно.
ЗЫ Рука не ставит минус из-за одной простой надежды: автор примет критику(закончит истерику), и в следующий раз напишет отличную статью, чтобы доказать что мы все ошибались.
Не хочу никого обидеть, но тред отлично показывает, как автор принимает критику и каким образом предпочитает доказывать правоту.
Пост на очень актуальную и важную тему! Немного конкретики не хватает, поэтому изложенные советы могут понять только те, кто уже сам мозолей натёр по аналогичным случаям. А остальным они бесполезны в силу того, что они ещё не понимают зачем это всё нужно. Поэтому в целом что-то типа мудрых афоризмов получилось - кто понял кивнул и остался с чем был, кто не понял пошел дальше и тоже умнее не стал. :)
Многочастность не поддерживаю, лучше написать одну хорошую отточенную статью, чем пять рыхлых, а шестую так и не написать.
Вот плюс миллион, нездоровая тенденция. Скоро обзоры начнут по частям писать (если кто-то вообще будет писать обзоры :)
Безусловно.
Но к примеру я, начинающий разработчик, если я хотя бы представляю, как реализовать игровую механику.(куча уроков пройдено, статей прочитано и кой какой игровой опыт есть). А вот интерфейс...мысль про интерфейс приходит неожиданно(где-то в пылу работы) и ведь самое главное, на интерфейсы других игр ты не обращаешь никакого внимания(просто они так сделаны, что поставляют тебе информацию не отвлекая внимания от изничтожения толп врагов и постройки города мечты)...
Вот автор к примеру активно нас отсылает к Windows. Опираться на ее традиции. Но я бы пошел к старшим собратьям, а именно играм более популярным, так как игровые интерфейсы уже прилично отошли в развитии, а иногда наблюдается обратная ситуация: многие программы(вру все больше сайты) уже берут приемы у игровых интерфейсов)
Ну да, всё завязано. :)
Кстати, ещё такой есть нюанс. Каждая операционная система навязывает систему правил работы с интерфейсом. После винды работать с маком очень странно - у них разные интерфейсные концепции. Что должно делать окно по двойному клику? Где должна располагаться кнопка закрытия окна? Какие комбинации горячих клавиш использовать? - решение этих вопросов зависит от контекста, а не только от Всеобщей Естественности. В играх кроме ОС контекстом ещё является жанр и более крупные предшественники. Присоединяюсь к твоему комментарию.
- не могу припомнить ни одной.
Я тоже до недавнего времени не замечал...
Я не знаю можно ли давать ссылки на другие сайты, а в общем вы конкурентами быть не можете:
http://habrahabr.ru/blogs/web_design/125862/
Ну да, это сайты.
Про программы там вроде как ничего не говорилось :)
Ну, я ж признал, что вру.)))
Хотя в свою защиту могу привести Windows Media Center, которым, как мне кажется, никто особо и не пользуется.(Там меню очень игровую напоминает, хотя как иначе).
Да и браузер Safari(там очень красиво история листается)
Макинтошевский софт, в принципе, отличается отличным интерфейсом. Хотя и не всегда интуитивно всё понятно, но на голову выше виндоуса. Факт.
Мог бы поспорить, но не имею желания :-)
Скажем так, в последних виндоусах МС исправляется очень старательно :)
Дело не в виндоусе как таковом, а в принципе управления теми или иными элементами. Вы же согласитесь, что для программ (и игр тоже) нетипично делать кнопки по примеру гиперссылок. Кнопки реагируют визуально на нажатие, а логически срабатывают только при отжатии. Если не думать о таких больших аналогиях как виндоус, то Ваши кнопки, работающие по первом нажатию будут крайне бесить пользователей, уверяю Вас.
Отлично, появились конкретные примеры)
(посидел покликал и о ужас. даже гиперссылка срабатывает по отпускаю кнопки. (эксперементы проводил). Думаю "фишка" чиста техническая и связана с обработкой событий:
"Клавиша нажата" событие которое может происходить сколько угодно времени(что может привести к многократному срабатыванию). В общем очень тяжело определить конкретные условие и время запуска, что для большого проекта вкинет приличную кучку "багов".
"Клавиша отпущена" происходит единожды.
Да и Drag'And'Drop свою лепту внес)
А в играх(в super meat boy, Shank2, а так же в Skyrim - событие срабатывает по нажатии, а не по отпускаю клавиши)
Нет, клавиша была нажата тоже единожды. Все остальное это уже удерживание.
Почему же загрузка страницы пошла только когда я отпустил ее?
В этих играх меню срабатывало сразу по моему нажатию и не обращало больше внимания на зажатую клавишу.
Ээээ. Дурной тон. Кнопки должны срабатывать на отпускание, на случай если пользователь случайно нажал - можно увести курсор мыши в сторону и там уже отпустить.
Не сочтите за дурной тон.
Однако в части игр портируемых с консолей(или туда портируемых, а это приличный пласт) никто не смотрит на отсутствие огреха и он никого не раздражает. (а мне даже кажется что меню "шустра откликаются" на мои действия, ведь нажатие клавиши, происходит на долю секунды раньше чем ее отпускает, эфект такой психологический.
вот тут и начинаются нюансы(разберем пример):
Скайрим обычно задает вопросы перед каким-либо действием, которое повлечет долгое ожидание(и по умолчанию выбрано "Нет").
Так же меню помнят выбор, на случай если я ошибся и случайно проделав длинный путь выпадающих менюшек выбрал не то оружие или квест.
ЗЫ: Виндовс версии сохраняют такое поведение, в основном.
Дурной тон не у Вас, а у разработчиков, которые ставят срабатывание кнопки на нажатие клавиши мыши, а не на отпускание. И геймпад всё-таки от мышки довольно сильно отличается.
Меня от этих срачей, взаимного возмущения рыгать тянет. Ещё пару недель назад выписал бы пиздюлей обоим Генштабам, но, к счастью, уже не тяну эту лямку :)
Если вы, Chalmersite и Darthman, думаете, что людям интересно ваше выяснение отношений, то я вас разочарую.
Я так не думаю, и отношений-то, в общем, нету.
Иди сюда, я тебя поцалую :D
Кстати, про дублирование управления.
Раньше я тоже думал, что это хорошая идея: кто привык жать на x, будет на него и жать, а кто хочет, это же действие продублировано на пробеле (клавиши только к примеру).
Так и сделал. И тут же получаю жалобы игроков: я привык прыгать пробелом, почему у вас прыжок на иксе? Стал разбираться, и выясняется.
Как игрок узнаёт управление в игре? Есть два основных пути: либо читает подсказку, либо пропускает её и тыкает наугад в клавиши сам. Так вот, многие из тех, кто тыкал сам, не отыскали своего, удобного варианта! Поэтому, найдя прыжок на иксе они плевались, ругали меня, но так дальше и играли.
Поэтому я сделал для себя вывод: дублировать управление это плохая мысль.
Ну, и в довершение всего дублированное управление сложнее объяснить игроку. Текст объяснялки получается длиннее, картинок больше, а, значит, объяснение с большей вероятностью пропустят, не читая. =)
П.С. Всё написанное сейчас это спорный личный опыт, конечно. В вашем случае может оказаться всё по другому.
Занятно. :) Удивительные люди ж бывают!