Поделиться

Показаны сообщения с ярлыком взаимодействие. Показать все сообщения
Показаны сообщения с ярлыком взаимодействие. Показать все сообщения

воскресенье, 23 декабря 2012 г.

Письма: "Когда будет обзор и гневная критика про Windows 8?" и прочее

Во-первых, большое спасибо за интерес к моему творчеству. Для начала, ответ на вопрос, вынесенный в заглавие: никогда или по крайней мере до тех пор, пока я ее себе не поставлю, а случится последнее, будьте покойны, очень нескоро. Я не могу критиковать и в целом полновесно "обзирать" нечто, с чем я лично не имел дела. Например, когда народ вокруг меня плевался от упоминаний книг Оксаны Робски, я предпочел не поддерживать это явление вслепую, а сначала помучил себя чтением одной из них ("День счастья завтра"), чтобы уже с полным правом утверждать: редкостный мрак. То же самое с Windows 8. Кое-что я все же сказать могу, ибо I) мне довольно много лет, я видел довольно много выпусков Windows и под каждый из них что-то программировал в разных объемах, так что знаю их и как пользователь, и как программист, и II) на то, чтобы я не обзаводился "8-ым" выпуском, есть довольно веские причины (кавычки здесь потому, что я не понимаю, как именно Microsoft нумерует выпуски, и несмотря на наличие уверенности в том, что где-то в Интернете это объясняется, я также уверен, что наличие объяснений далеко не всегда имеет смысл, как корреляция по цифрам далеко не всегда означает наличие причинно-следственной связи).

Когда-то при переходе с Windows 3.11 (Win16) на Windows 95 (Win32) я как программист испытал большую радость. Достаточно хорошо зная, как эта новая система работает внутри (были две замечательные книжки на эту тему: Шульман Э. Неофициальная Windows 95 - К. : Диалектика, 1995 и Питрек М. Секреты системного программирования в Windows 95 - К. : Диалектика, 1996), я был в экстазе от новой модели управления памятью и многозадачности (в частности).


При этом мне было, в общем-то, наплевать на то, как там чего выглядит, то есть на пользовательский интерфейс, который, впрочем, меня тоже вполне устраивал. Теперь же глядя на пресловутый "Start Screen" Windows 8, я вообще не понимаю, на что я смотрю. Точнее нет, понимаю (хотя меня это и не радует)... Когда-то я говорил, что для того, чтобы спрогнозировать, каким будет интерфейс следующей Windows, нужно просто посмотреть, что нового в интерфейсе последнего вышедшего Office. Эта парадигма изменилась. Теперь нужно смотреть, скорее, на XBox Live.

Windows 8 Start Screen

XBox Live

В целом совершенно отчетливо видна ориентировка на "хэндхельды" или, как теперь модно говорить, "гаджеты" - тут я Америки не открою. Но именно в XBox Live впервые появились... даже не знаю, как это назвать, - и не кнопки, вроде... "тыкательные области", расположенные в хрен знает каком порядке и объеме на экране. У меня с этим много проблем:
  • У меня нет touchscreen монитора, и он мне не очень нужен, хотя Microsoft и другие, конечно, сделают все возможное, чтобы он мне понадобился (как Sony в свое время сделала все, чтобы я купил сначала HD-телевизор, о чем я не жалею, а потом и 3D-телевизор, в отсутствии целесообразности которого я теперь уже не сомневаюсь).
  • Что касается гаджетов, то я ими не пользуюсь, за исключением мобильного телефона, к которому даже не подключен Интернет - просто мой "цифровой стиль жизни" сформировался несколько иначе, да и на мобильнике у меня Android, и я им доволен (это первая и на сегодняшний день последняя система, в которой я всегда с первого раза нахожу то, что мне нужно, там, где я и ожидаю это найти).
  • Как программист я лучше понимаю интерфейс на базе файлов, папок и приложений, и тут нужно кое-что пояснить: указанный интерфейс или, точнее, идеология системы машинно-ориентирована, и именно за счет этого программисту проще ее понимать - она абсолютно логична и органично вырастает из самого нижнего уровня работы компьютера. Лет 20-25 уже идут разговоры о том, что для пользователей такая схема организации взаимодействия неудобна, и я готов с этим согласиться, ибо многих обучал работе на компьютере, но давайте смотреть правде в глаза: миллионы и миллиарды пользователей с этим смирились и разобрались за все эти годы, а вот теоретики и производители ПО никак не угомонятся. Тут помимо заботы о человечестве есть еще один аспект: "тыкательно-областная" система организации взаимодействия с компьютером на основе "активностей" или документов, а не папок и файлов в большей мере управляема извне, например, производителем операционной системы. По какому принципу на Start Screen-е располагаются ссылки, в какой последовательности, какие больше, какие меньше, каких вообще нет? Все это определяется производителем операционной системы, и правила могут меняться с каждым новым обновлением по сети. Иными словами, мне всегда могут показать то, что хотят показать, вместо того, чтобы показывать то, что лично мне нужно - получается такой "мерчендайзинг" с доставкой на дом, который, если честно, я в гробу видел. С файлами и папками такой трюк не проходит, ибо они "беспристрастны", если вы понимаете, о чем я. И именно эта причина, как мне кажется, и является основной в желании от них избавиться. А ведь пользователь, работая (подчеркнем это слово) на компьютере, хочет и должен решать свои задачи, а не задачи продавцов цифрового контента по выполнению плана на прибыль. Даже Sony под девизом "все для пользователей" изменила внешний вид и функционал магазина контента для Playstation, так что он теперь выглядит как XBox Live (и грузится в 5 раз медленнее, чем раньше), в результате чего я превратился из пользователя с доминантным серфингом в пользователя с доминантным поиском.


    Раньше все материалы были разложены четко по категориям: "Новые игры", "Новые дополнения" и т. д., а теперь я ничего не вижу. Меня не интересует, что Far Cry подешевел, о чем повествует гигантский плакат в пол-экрана - я не собирался его покупать; мне неинтересно, что Call of Duty можно купить со скидкой в Рождество - я его терпеть не могу, хоть меня и тыкают в него носом который год (вот, кстати, еще одна трактовка для термина "тыкательно-областной интерфейс" - куда тебя захотели ткнуть, туда и ткнули); меня интересуют дополнительные костюмы для бойцов в Dead or Alive 5, потому что с ними веселее играть при большом стечении народа, но найти оные я могу только через поиск (тоже далекий от совершенства).
  • Я уже написал, какие эмоции и по какому поводу я испытывал при выходе Windows 95, также, когда появился .NET-framework я радовался, что это - прекрасная альтернатива OLE с его GUID-ами и замечательная новая технология (даже с философской точки зрения) - это была конструктивная радость специалиста, но все, что я слышу в последние годы - интерфейты и разрешение экранов, и это - может быть, и радость, но только для маркетолога, а я - не он. Поэтому, есть у меня компьютер с 7-ой, она меня устраивает, и на этом точка.
  • И последнее: многолетний опыт показывает, что операционные системы удаются Microsoft через одну. Это даже не проблема кармы - это бизнес-стратегия Microsoft: выдать сырой продукт с кучей непроработанных идей, собрать кучу негативных отзывов, а потом - в следующий раз, сделать что-нибудь нормальное.
Об остальном, то есть про Starcraft и прочее, коротенько. Меня мало волнует Starcraft, потому что в моем понимании, он недалеко ушел от самого первого Warcraft-а. Разумеется, разрабы со мной не согласились бы, разумеется, со мной не согласятся и те, кто играет в него по сетке и на чемпионатах: для первых важны усилия, графика и прочее, для вторых - баланс и различные варианты стратегий победы, но для меня лично, как не относящегося ни к той, ни к другой группе, - тот же Warcraft, та же общая схема, только в другом "сеттинге" с более приятной графикой. Есть юниты, есть их боевая сила и особенности, есть ресурсы, строится база, возможность строительства продвинутых зданий открывается при постройке более примитивных и так далее по той же схеме. Собственно, той же схеме отвечают и все игры из серии Command&Conquer с разницей в темпе и сеттинге. Меня же интересует эволюция игр, новые идеи и их реализация (в Dishonored они есть, в Bulletstorm они есть, и что до последнего, так я считаю, что таким и должен быть шутер), а здесь эволюции игры, как именно игры - нету вовсе (опять-таки, на мой взгляд), есть эволюция с позиции внешней картинки и каких-то формул подсчета чего-то. Блин, да в Diablo 3 по сравнению со 2-ой частью больше изменений и новых механизмов, хотя вот там-то они как раз и не были нужны. И в играх "про лега человечков" (цитата) инноваций больше - в каждой игре что-то принципиально новое добавляется.

суббота, 1 октября 2011 г.

Жизненный путь: О СУБД и мучениях

Довелось тут в очередной раз попотеть над базой данных, а именно - над "Базой данных опасных и неблагоприятных процессов и явлений на территории Красноярского края". Бывает иногда производственная необходимость реализовать что-то не на языке программирования, а в рамках какого-то приложения (в основном это как раз приложения из группы Office - Access, Excel, Outlook, Visio). База была не то, чтобы слишком уж хитрая, но и не простейшая: пять таблиц, связи многие-ко-многим, каскады, целостность и т. д. Еще пришлось карты Google к ней подключать - для визуализации, так сказать, географического положения населенного пункта.

Обматерился. Я недавно высказался в пользу языка C# в таком ключе:

Я работал с C и С++, я работал с VB. Конечно, поскольку я не работаю в области создания ПО постоянно, а только время от времени, я многое забыл. Но того, что я помню, как раз хватает для эффективной работы в C#, поскольку он требует от меня как раз совмещения этих небольших, но системных воспоминаний. Даже удивительно...

С Access-ом ситуация другая. Я бы сказал, прямо противоположная. Кажется, ничто не способно подготовить человека к работе в Access-е: ни опыт разработки в Paradox-е, Clipper-е и FoxPro, ни знания в области теории СУБД и реляционных БД. И, что самое удивительное, опыт работы в нем самом, похоже, тоже не может подготовить к работе с ним самим. Да, с Access-ом я тоже сталкиваюсь на жизненном пути время от времени, и да, я и о нем многое забываю в промежутках, когда не сталкиваюсь, но все же: я читал книги, я имею опыт программерства на VBA, и все такое. Тщетно. На поверку выходит какая-то аномалия: какое бы решение я ни принял, какое бы свойство ни принял за нужное мне, наличие или поведение какой бы функции я ни предполагал - каждый шаг оказывается неверным. Каждый!

Немало способствуют этому и проектировочные и конфигурационные решения, заложенные в сам Access:
  • Кому пришло в голову переводить названия свойств? То есть кто тот человек, который сказал, что в русском Access-е свойства должны называться по-русски? Ё-моё, это же VBA - туда нормальный пользователь и лезть-то не должен.
  • Ладно, нормальному пользователю помимо использования готовых форм и отчетов может понадобиться поднастроить что-то. Но контекстную справку-то можно было выпрямить под это, хотя бы? Она же кривая, как бублик Мёбиуса.
  • В Access-e есть десяток способов сделать что-то одно... а нужен один. Такое впечатление, что сидел себе программист и создавал конструктор форм и отчетов в СУБД. Через плечо ему заглянул кто-то, кому мне очень хочется зла, и сказал: "Конструктор - это, конечно, хорошо, но давай еще сделаем режим макета". Программист согласился и принялся за работу (так толком и не доделав конструктор). Потом через его другое плечо заглянул еще один товарищ, которому я тоже добра не желаю, и заметил: "Слушай, нужны еще мастера - пользователь их любит"! И снова согласился программист, и снова переключился на разработку новых фишек, не доделав режим макета (который вообще лишний, на мой взгляд). Вот в итоге и получилось: создаешь поле со списком в режиме мастера, мастер тебя спрашивает: "У вас будет фиксированный набор значений, набор значений из таблицы или значение в поле будет использоваться для поиска записи в форме"? Да ситуации, когда необходимы сразу второй и третий варианты, встречаются на каждом шагу: например, значения в списке поступают из таблицы, и на основании выбранного значения нужно сделать перезапрос в подчиненную форму. Ну ладно, думаешь, исправлю / доделаю руками. Не тут-то было. Как было сказано выше, в Access-е десяток способов сделать что-то одно (фильтры, запросы, макросы, сценарии - это так для примера, всеми этими способами можно поменять то, что отображается на форме, причем одновременно), и какой из способов выберет тот или иной мастер - неизвестно. Вот и начинаешь плутать. Плутать можно часами.
  • Сообщения об ошибках - это притча во языцых. Представьте: у вас форма с двумя вложенными друг в друга подчиненными. Что-то меняем, сохраняем, открываем в режиме формы, пытаемся что-то изменить в данных... Бац! "У вас где-то в каком-то индексе ошибка!" - радостно заливается Access. Пять таблиц, десятки полей, десятки индексов. Где искать-то? Я когда работал системным аналитиком и техписателем, в нашей системе дистанционного обучения часто выскакивало сообщение "Системная ошибка", после чего ничего не происходило. Ну, кто хорошо знает исключения или знает их не очень хорошо, тот понимает, когда появляются в превеликом множестве и непредсказуемых местах такие вот безликие ошибки. По-моему (я сам исключения ненавижу, они для меня, как парадокс Монти-Холла - я способен их постичь, но через 5 минут уже не могу сказать, почему оно работает, так что, надеюсь, более грамотные коллеги поправят меня, если я ошибаюсь), это происходит чаще всего тогда, когда в один блок try заключается здоровенный кусок кода с вызовами всяческих функций или просто текст функции main(), а в catch(...) прописано отображение вот такого сообщения. Это означает: что бы и где бы ни случилось, результат будет одинаковым и диагностировать такую ошибку с целью исправления можно только одним путем - воспроизвести ситуацию, когда ошибка возникла, что далеко не всегда легко и даже возможно, в особенности если ошибка возникла на стороне клиента. "У нас выскочила ошибка"! "Какая"? "Системная ошибка"! "А что вы делали"? И дальше рассказ о том, что делал сотрудник клиента в момент, когда появилось сообщение, что он делал до этого (с утра), и что делали все остальные сотрудники клиента. Я "в детстве" тоже любил писать код наподобие:

    Public Sub foo()
    On Error GoTo ErrorHandler
       (some action)
    ErrorHandler:
    End Sub

    но уж никак не мог предположить, что такими же вещами занимаются разработчики Microsoft Office-а.
В общем БД, конечно, была реализована, получилось довольно симпатично. Однако я серьезно думаю, какое бы средство с меньшей фунциональностью и заморочками взять в качестве платформы для разработки базы в следующий раз. Больше всего из СУБД мне, в свое время, полюбился Clipper - исключительно теплые воспоминания.

суббота, 20 августа 2011 г.

"ОбАндроидился"

Давно собирался приобрести что-нибудь на платформе Android, чтобы присмотреться к ней. Тут как раз решил сменить телефон. Вообще-то, я обычно отовариваю какие-то жутко дорогие штуки (и потом не понимаю, зачем я себе создал такую головную боль и потратил столько денег). В этот раз в обстоятельствах кризиса, протеста против культа потребления и, прямо скажем, в связи с не слишком большим заработком вкупе с серьезными размышлениями решил купить что-нибудь менее шикарное. Ну, совсем-то нешикарное я покупать не умею, остановил свой выбор на Samsung Galaxy Ace.

Дальше было что-то ужасное: контакты не захотели сразу синхронизироваться с Outlook-ом, более того, контакт при звонке отображался в виде ИОФ, а не ФИО, что в сочетании с крупным шрифтом не давало мне возможности сходу определить, какой из трех Иванов Ивановичей, имеющихся среди моих 620 контактов, решил меня побеспокоить. Началось затяжное бурчание: "Все такое непривычное, где тут настройки, где тут, вообще, что-нибудь"? По доброй традиции я проклял всех создателей этой системы и себя вместе с ними за слабость к новшествам. Это продолжалось половину суток...

Спустя эти 12 часов (6 из которых занял сон) я настроил все. Вспоминая, свои разборки с коммуникатором на базе какой-то из Windows (кстати, большую часть того, с чем я разбирался, я тут же забывал), нельзя было не отметить ощутимую разницу.

Спустя еще 12 часов я уже знал как пользоваться всеми приложениями, которые имелись в наличии, подключил безлимитный Интернет и бодро двигался по направлению к МГГУ им. Шолохова, проверяя попутно эффективность маршрута, предложенного мне картами Google.

И в этот момент я подумал: "В течение суток я настроил все, что можно, синхронизировал все, что нужно, установил все, что хотелось. Я знаю каждую функцию и каждое приложение. При этом я не читал руководств и не сильно напрягал себя поисками информации в Интернете (пару раз что-то подсмотрел, уже и не помню, что именно). Слушайте, да это же крутейшая вещь"!

Мне вспоминается фраза из известного интервью комика Louis-а C. K. (не знаю, как это правильно написать по-русски, поскольку не знаю, что в его имени означает C. K.): "Человек держит свой телефон и.... "Оно не...", "Почему оно не..."... ДА ДАЙ ЖЕ ТЫ ЕМУ СЕКУНДУ!" Действительно, мы многое воспринимаем как данность, но следует иногда удивляться и давать технологии не один шанс, а пару... или хотя бы 24 часа на то, чтобы нас впечатлить.

пятница, 22 апреля 2011 г.

Игры: LEGO раз, LEGO два

Где-то месяца три назад я подсел на LEGO-игры для PS3. Сначала один друг посоветовал, потом другой, потом снова первый, а играть было особо не во что - вот и решил попробовать. Зацепило. Ко всяким современным тенденциям, типа 3D-телевизоров и устройств-манипуляторов, например Playstation Move, я с самого начала и по сей день отношусь резко отрицательно: они забивают эфир, отвлекают разработчиков от создания "настоящих игр", а новизну, азарт и удовольствие приносят лишь казуальным игрокам - core-геймерам такие излишества не сильно нужны. Что касается Move, то раньше я просто не понимал, как и от чего можно ловить кайф, а на днях и вовсе пострадал физически. Вчера все никак не мог понять, почему спина болит справа так, как будто я на ней по асфальту проехался метров 100. Потом понял: в процессе "манипулирования", читай - махов Move-ом, я натер ее посредством взаимодействия мышц руки и самой спины, а также шва на футболке. Вдобавок у меня после пары часов стоячих игр с Move-ом начинают болеть пятки. Если ты отошел, скажем, покурить, то, вернувшись, будь любезен перекалибровать контроллер - ты вряд ли встанешь по отношению к распознающей движения камере точно там же, где был до перерыва. В общем, любую игру с манипулятором я воспринимаю как тяжкую работу, а не как отдых. Отдых для меня - это сесть или прилечь на диванчик, поставить рядом чаек, положить шоколадку и апельсин, взять в руки джойстик и наслаждаться.

Я это все рассказываю потому, что LEGO-игры для PS3 - это как раз инструмент для релаксации. Механизм их вне зависимости от подназвания (LEGO Indiana Jones, LEGO Batman, LEGO Harry Potter и т.д., еще LEGO Pirates of the Caribbean на подходе) примерно одинаков. Штук 20-30 бродильных уровней, примерно следующих хронологии и сюжету оригинальных фильмов, с видеовставками, не сильно претендующими на юмор, напичканных примитивными головоломками и большим или совсем небольшим числом врагов в зависимости от франчайза. Что меня в этих играх всегда некоторое время смущает, так это то, что герои не разговаривают, ограничиваясь применением жестикуляции и мычания.

Чем хороши LEGO-игры? "Вкусняшек" несколько:

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

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

Я часто говорю, что прикладному ПО следовало бы поучиться у игр в плане организации взаимодействия с пользователем, но в последнее время создается впечатление, что обучение (точнее, деградация) распространяется в обратном направлении. Последней вышедшей LEGO игрой была Star Wars III. В том что касается традиционного для LEGO-игр геймплея, ничего не изменилось, но, видимо, разработчики решили, что это все уже как-то некруто - нужны инновации. Еще одна мысль, которую я часто повторяю, заключается в том, что в каждой команде разработчиков ПО имеется человек, который в момент, когда вроде бы все уже готово и целостно, вскакивает с места и призывно вскрикивает: "О! А давайте еще добавим..." или "Слушайте! Вот было бы круто сделать...". На этот случай на каждом совещании, на мой взгляд, должна быть лопата и специально обученный человек с хорошей реакцией, который воспользуется ею, чтобы не дать деятелю, невовремя справившемуся с аутизмом и резко обнаружившиму в себе ораторские и креативные способности, закончить предложение. Он не должен закончить его ни в коем случае! Ужасно, когда таким запоздалым оратором и возмутителем спокойствия оказывается главный человек на проекте. В моей практике такое было: продукт разрабатывался 8 лет, и за это время не появилось ни одной его коробочной версии (8 лет разработки - по его словам, а отсутствие коробочных версий - это уже по моим наблюдениям).

Так вот, у разработчиков LEGO Star Wars III лопаты, видимо, не было! Не поймите меня неправильно: в том что делает LEGO Star Wars III именно LEGO, все прекрасно. Проблемы в инновациях и специфике. Во-первых, если вспомнить Гарри Поттера, то в нем действо происходило, в основном, в замкнутых помещениях: в коридорах Хогвардса или в лесном массиве, сделанном в виде коридора. В Звездных войнах, с другой стороны, много уровней на открытой местности и космических баталий. Догадываетесь, к чему я веду? К камере, а точнее - к фиксированной камере. В замкнутых пространствах с ней проблем не возникает, а вот на открытой местности - еще какие. Вы можете отклонить конус обзора от его направления по умолчанию (на персонаж сзади и чуть сверху) где-то градусов на 20-30 в любом направлении, но этого недостаточно, если персонаж несется в "спидере" на камеру на огромной скорости. "Спидеров" в игре много, как и обрывов, с которых он улетает вниз очень много раз. Это случается до того часто, что реально достает и бесит. Но этого разработчикам показалось мало.

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

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

Вот простой пример: в некоторых врагов нужно стрелять очередью быстро и долго, чтобы уничтожить (они все имеют желтый цвет). Впереди вы видите стайку таких врагов, летите, стреляете... но:

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

Ей богу до этих космических миссий я считал, что две самые жуткие по игровому дизайну вещи, которые я видел за всю жизнь - это Devil May Cry 2 и Ninja Gaiden Sigma 2 (в особенности режим сетевой игры), но LEGO StarWars III меня "покорила" еще больше. Эти космомиссии самое ненужное, наиболее криво сделанное, раздражающее (а раздражение вообще идет вразрез с парадигмой LEGO-игр) из всего, что мне когда-либо попадалось. Даже более, чем низкопробностью, они отдают безнадежной неуместностью.

Есть и более простые, но не менее неприятные ляпсусы, например, навигация по списку уровней. В Поттере все было просто: 4 панели, представляющие 4 первых года обучения в Хогвардсе, на каждой из четырех панелей уровни в виде матрицы со всей статистикой. В Звездных войнах, зачем-то сделана звездная карта с какими-то художественными кривыми путями. Галактика выбирается отдельно, бонусные стратегические миссии - отдельно, космомиссии вообще не выбираются, а стартуются прямо из космоса выстрелами в висящий в пространстве кубик. То есть весь навигационный интерфейс - сплошной салат какой-то, по внешнему виду которого невозможно понять, из чего он сделан.

Хотелось крикнуть: "Ребята, ну как можно было так.... лохануться после такого Поттера?" или схватиться за голову и повторять: "Не надо инноваций, не надо инноваций"!

понедельник, 1 февраля 2010 г.

Игры vs. остальное ПО: интерфейс или чему у чего поучиться?

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

На самом деле, безумной идея кажется только с виду. Вспомним, что компьютерные игры вышли изначально из университетской среды, то есть их делали, в общем, умные люди. За все эти годы игры эволюционировали. Мне еще не доводилось слышать выступлений под лозунгом "игровой интерфейс в текстовые редакторы", зато:
  • уже отовсюду слышатся новости о том, что правительства США и стран Западной Европы выделяют деньги на игры для тренировки своих военных и других специалистов;
  • валом идут статьи о роли интерактивных и, в том числе, компьютерных игр в развитии младших и прочих школьников и студентов;
  • только что проходил тест Are You Certifiable? (Достойны ли Вы сертификации?) от Microsoft, выполненный в виде вариации на тему игры "Кто хочет стать миллионером?" (и многих ей подобных) - довольно забавно.
Замечаете тенденцию? Так что пока "просвещенные" мира сего в области взаимодействия, такие как А.Купер и Д.Раскин говорят о том, что неправильно в современных интерфейсах ПО, и пытаются изобретать новые парадигмы (или реанимировать "забытые общеизвестные", которым, правда, никто и никогда не следовал):
К сожалению, перечень из сотен функций, к которому сводится интерактивный продукт, слабо пригоден для создания тонкой гармонии, которая делает сложную технологию полезной. Добавление в перечень требований фразы "должен быть простым в использовании" никоим образом не улучшает ситуацию. - Купер А., Рейман Р., Кронин Д. Алан Купер об интерфейсе. Основы проектирования взаимодействия. - СПб.: Символ-Плюс, 2009.
В основе разработки хороших интерфейсов лежат некоторые основные принципы, которые на сегодня не являются общеизвестными. И вопрос о необходимости изучения этих принципов не возникает, поскольку кажется, что уже определено, как должны выглядеть и работать интерфейсы: ведь они непрерывно совершенствовались в течение двух десятилетий, основные разработчики программного обеспечения опубликовали руководства по созданию интерфейсов, чтобы обеспечить совместимость между ними, а существующие средства разработки позволяют быстро создавать любые интерфейсы, которые выглядят по современному... - Раскин Д. Интерфейс: новые направления в проектировании компьютерных систем. - Пер. с англ. - СПб.: Символ-Плюс, 2007.
Я возьму на себя смелость утверждать, что изобретать новые подходы не требуется, поскольку они уже давным-давно существуют и успешно реализуются в той части цифровых продуктов, которые называются развлекательными. Оцените иронию или, точнее, сарказм ситуации: в игре, скажем, Dragon Age: Origins я могу повысить характеристики своих персонажей, одеть их в новую броню, дать им новое оружие, предварительно оценив его характеристики, и наложить все нужные заклятья за пару минут... и та же пара минут (в лучшем случае, а в худшем - намного больше) уйдет у меня на то, чтобы в очередной раз найти в справке по Microsoft Word комбинацию действий, позволяющую отменить эти несчастные переносы, или другую комбинацию действий для объединения фигур нужным образом в справке по Corel Draw. Кстати, двумя минутами мои сложности при взаимодействии с этими программными продуктами не ограничиваются, потому что до того, как я полезу в справочную систему, я еще 5-7 минут буду силиться вспомнить, как сделать то, что мне нужно, без залезания в нее. Я столько раз уже проделывал упомянутые для примера действия в упомянутых программных продуктах, что подумать страшно: с Corel-ом и Word-ом я провел времени куда больше, чем, наверное, со всеми играми вместе взятыми за всю жизнь, но это не помогает: интерфейс меняется от версии к версии и пункты меню мигрируют, появляются и исчезают, а справочная система на любой четко поставленный вопрос пытается подсунуть ответ под обнадеживающим заглавием "Новые возможности MS Word XXXX" (или "Corel XXXX") - видимо, она "считает", что это универсальный ответ на все вопросы, который меня в любом случае устроит, или, что в крайнем случае я сдамся. - Нет! Не устроит! Информация о том, что "теперь можно печатать в любом месте", никак не помогает мне в устранении переносов из уже напечатанного. Ей Богу, иногда складывается впечатление, что справочная система не то, чтобы искала и не нашла нужное, а просто и не пыталась (поучиться бы создателям справочных систем у Google что-ли в смысле поиска по заданным словам)! Впрочем, документация вообще и поиск в частности - это отдельная тема. Лично мне кажется, что нужно как-то законодательно установить "Всеобщий мировой стандарт по реализации функции полнотекстового поиска" для любого ПО, включая отдельные веб-сайты и поисковые системы, а потом военной мощью, шантажом и подкупом заставлять всех разработчиков ему следовать. Конечно, я утрирую, но другого выхода нет. Вернемся к играм и "нужному" ПО. Есть несколько фундаментальных различий между этими типами продуктов:
  • Игры не предназначены для тех, кто должен их использовать - они предназначены для тех, кто хочет их использовать, поэтому разработчики обязаны не просто наляпать интерфейс, а сделать его как можно более удобным. Да, в случае игр характеристики "симпатичный", "удобный", "функциональный", "эффективный" и "реализованный" относятся к одному интерфейсу, а не к разным! Если пользователь запутался в интерфейсе игры в первые 3 минуты и не распутался за последующие 10 - следующий ваш продукт он не купит, а если он похож на меня, то успеет еще написать кучку пасквилей о нынешнем продукте, чем отобьет охоту платить вам за него у некоторого количества людей (и будет воспринимать это как справедливую месть)!
  • На некоторых играх стоит маркировка "12+" или даже "7+". С точки зрения содержания игры это означает, что в нее могут играть дети, а вот с точки зрения реализации взаимодействия все интереснее, потому что в нее могут играть не только дети. В таком случае разработчики обязаны (и у них нет другого выхода) обеспечить такой интерфейс, чтобы и детям было не сложно, и взрослым комфортно. Это та еще задача, и без исследований и всестороннего проектирования взаимодействия здесь не обойтись (кстати, это наводит на мысли о том, что и телевизионные программы можно делать такие, чтобы и детям была забава, и взрослые не опасались за свой рассудок - на сегодняшний день телевидение об этом не подозревает, поэтому, чем более программа "детская", тем дальше она от "нормальной" для взрослого восприятия). Успешных примеров реализации такого подхода - масса:
    Little Big Planet на Playstation 3

    Loco Roco 1 и 2 на PSP

    и др.

    В случае с "нужным" ПО такой необходимости нет.
  • При организации взаимодействия в играх разработчики ориентируются на парадигму восприятия игры или жанра, к которому она относится, пользователем. Чтобы надеть на героя броню, вам не нужно последовательно щелкать на командах "Открыть каталог "Герой" -> "Перейти в подкаталог "Инвентарь" -> "Открыть файл "Супердубина.aaa" -> "Сохранить "Супердубина.aaa" в подкаталог "Герой/Торс Героя". Действия в играх связаны и основаны на терминологической базе самой игры, включающей, например в случае с RPG, такие понятия как: "предмет", "одетое", "оружие", "броня", "здоровье", "мана", "сила" и так далее. Здесь "Супердубина" - это не файл "Супердубина.aaa", в котором описана форма и числовые характеристики игрового предмета под названием "Супердубина" - это просто Супердубина (или Супердубина+1), оружие, которым бьют врагов, и вам не нужна электронная таблица или калькулятор, чтобы просчитать, что оно лучше, чем все имеющееся у вашего героя. В случае с "нужным" ПО ситуация кардинально иная: интерфейс строится из готовых элементов управления, они выстраиваются по заранее определенным схемам (иногда автоматически), операции производятся над файлами, пункты меню имеют шаблонные названия (хотя и ведут себя часто по-разному - это вообще маразм). Считается, что если выстроить взаимодействие на основе такой парадигмы, то сами по себе выплывут и будут гарантированы "удобство" и "эффективность" программного продукта вне зависимости от его назначения, чего не происходит, и, если вдуматься, не может происходить. Разница между подходами, применяемыми при проектировании игр и другого ПО здесь - это классическая разница между парадигмой реализации (компьютера, программы, операционной и файловой систем) и парадигмой восприятия (сути и понятийной базы, связанных с тем, что именно вы делаете - уничтожаете демонов или разгадываете головоломки).
Маленькое замечание: когда я говорю об игровом подходе к проектированию приложений, я не имею в виду "раскрасить" традиционные окна и этим ограничиться - указанный подход требует переосмысления самих основ проектирования.

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

Конечно, можно апеллировать к тому, что текстовые процессоры и компьютерные игры - это "ну слишком уж разные вещи", но скажите: если вы будете вдвое быстрее и без ошибок сводить бухгалтерский баланс, управляя процессом с помощью руля и педалей; если вы будете разрабатывать модуль новой программы, создавая классы и функции с помощью манипулирования виртуальным устройством, напоминающим "Кубик Рубика" и получая несравненное удовольствие, а по итогам работы окажется, что модуль выполнен быстрее и с минимальным числом ошибок - разве кто-нибудь огорчится? Не думаю (честно говоря, я знаю нескольких начальников, которые огорчились бы оттого, что сотрудники в принципе получают удовольствие от работы, но это уже не ко мне).