Позднее Ctrl + ↑

Разбор дизайна шахматного гейминга Ворлд Чесс: лобби и сама игра

Ещё прошлым летом мы опубликовали рассказ о том, как задизайнили гейминг Ворлд Чессу. А теперь я снял видеорассказ о том же самом:

00:00 Интро и слова про любовь и шахматы
01:35 Лобби: выбор тайм-контроля и подбор оппонента. Регулятор рейтинга и цвета фигур. Идея необязательной настройки.
03:38 Интерфейс игры: доска, фигуры, нотация. Неформальный стиль. Отображение сделанных и возможных ходов. Предложение ничьей и сдача. Рокировка. Перетаскивание фигур на мобиле, когда закрываешь их сам себе пальцем. Шах.
05:44 Официальный стиль для игр ФИДЕ. Фирменная доска. Отображение очерёдности хода. Подсветка полей. Почему здесь не показаны допустимые ходы и шах в официальной игре. Восприятие доски профессионалом: комментарий Владимира Крамника
09:47 Интерфейсные дела: почему всё же показываем допустимые ходы их в неформальном стиле, как работает меню игры, как работает камера видеонаблюдения. Завершение игры. Переворот доски (особый режим). Настройка стиля оформления
13:39 Шахматные фигуры бюро. Шрифт «Авербах». Режим разбора партии, «шагалка».
14:48 Как конвертируем пользователя в зарегистрированного и далее в подписчика. В конце игры, в Лобби. Превращения кнопки Quick Game
17:09 Начало работы над игрой. Изучаем контрастный стиль Ворлд Чесса. Ищем новый стиль палитру для интерфейса: контраст против спокойствия, блики
19:34 Дизайн экранных фигур Ворлд Чесса и фигуры бюро. Примеряем и то, и то, и ещё 3Д-фигуры из официального набора. Показываем клиенту первый подход
25:22 Ищем второй стиль доски для официальных игр. Упихиваем всё в мобилу. Увеличиваем часы. Сначала предложение ничьей и сдача сначала жили в меню игры (так нельзя). Весёлое завершение игры
28:07 Начало работы над Лобби. Интерфейс прямо в доске. Интерфейс слева от доски. Мобильная версия Лобби. Выбиралка и график распределения игроков по рейтингу.
30:38 Любимая картинка: тексты и состояния главной кнопки в зависимости от предпочтений по рейтинговости игры и статуса пользователя. Задротское объяснение с диаграммами для разработчиков
35:02 Придумываем мотивационные карточки в конце игры. Парочки взятых фигур. Превращение пешки в ферзя или не ферзя: нормальный интерфейс выбора.
37:03 Игровое меню и меню сайта: как это всё мобилизовать? Объяснение работы сайта на широких и высоких окнах, диаграммы скелета и распорок.

Задача: реализовать ленивую загрузку в Эгее

Это задание на разработку фичи в Эгее. Если вы хотите реализовать эту задачу, напишите мне.

Задача

Задача: снизить нагрузку на сервер и на браузер пользователя, реализовав умную ленивую загрузку изображений и видосов в Эгее.

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

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

Эгея должна уметь предзагружать картинки заранее, оценивая, как человек читает. Если он просто постепенно прокручивает, то надо, чтобы было загружено на несколько картинок и видосов вперёд. Если он взялся за полосу прокрутки и быстро крутит, периодически задерживаясь где-то, значит он что-то ищет — надо скорее загрузить все картинки, а видосы можно и не грузить. Если человек резко домотал страницу до низа, а потом сразу до верха, скорее всего он пытается добиться от загружалки, чтобы всё заранее скачалось — значит, всё должно скачаться. Это всё мои соображения, возможно, вы их чем-то дополните.

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

Если так или иначе оказалось, что пользователь докрутил до картинки, которая пока не скачалась, было бы хорошо дать какую-то индикацию того, что идёт загрузка.

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

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

Ссылки по теме:

Результат

Во-первых, вариант минимум. Результатом должен стать скрипт управляемой загрузки, который можно будет добавить в набор скриптов Эгеи, и всё заработает. Не должно быть никакого кода, который нужно вызывать, чтобы скрипт «сработал»: он должен сам вызываться, когда страница к этому готова, просто потому что он к ней подключен, и действовать на все картинки и видосы, которые помечены соответствующим образом. У меня там есть Вебпак.

Во-вторых, вариант максимум. Вообще, у меня есть скрипт управляемой загрузки Эмёрдж. Он отвечает именно за порядок отображения и анимацию появления картинок, но не за управление их скачиванием с сервера. Идеально было бы вообще сделать Эмёрдж 2: переписать на чистом современном Джаваскрипте; добавить нужную Эгее логику; встроить в Эгею.

Ссылки по теме:

Условия участия

Если вам интересно такое сделать, напишите мне письмо. Какие у вас есть вопросы? Что в моём описании вызывает сомнения? Возможно, нормальные ребята делают не так, как я хочу, и вы мне всё объясните? Важно: я не смогу оплатить вашу работу, но смогу использовать её результаты в Эгее, в том числе в её платной версии. О вашем участии я, разумеется, напишу. Если вы выберете вариант максимум с докруткой Эмёрджа, условия обсудим отдельно.

Разрешить «бессмысленные» действия в интерфейсе

В одном из недавних видосов я говорил:

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

Я там привёл несколько примеров.

Как не надо

В Файндере несколько лет назад появилась команда New Folder with Selection (⌃⌘N). Если выделить несколько файлов или папок и вызвать её, она создавала новую папку, перемещала в неё всё выделенное и давала назвать папку. Похоже на функцию «Сгруппировать» в графических программах. Когда эта функция появилась, она работала только если изначально было выделено хотя бы два файла. Если просто курсор стоит на файле, «завернуть» его в папку этой командой было нельзя. Видимо, программист решил, что группировать один файл «нет смысла».

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

В Фотошопе есть команда Copy Merged (⇧⌘C). Обычное Copy копирует выделенное изображение из текущего слоя, а Copy Merged копирует область выделения целиком, как если бы картинка была плоской, без слоёв. По загадочным причинам эта функция перестаёт работать, если картинка и так плоская, из одного слоя. Видимо, программист решил, что раз в этом случае обычное Copy делает то же самое, то делать Copy Merged «нет смысла».

А у меня как у пользователя руки привыкли жать ⇧⌘C независимо от количества слоёв в документе. Я вообще не осознаю, сколько там слоёв, я же их постоянно добавляю или склеиваю. То есть снова, для меня это просто выглядит так, будто функция иногда не срабатывает. Тут проблема усугубляется тем, что при копировании нет никакой обратной связи, поэтому ты даже не знаешь, что команда не сработала. Копируешь, идёшь в телеграм кому-то отправить, вставляешь — а там вставляется что-то, что у тебя до того в буфере обмена было.

В Гитхабе нельзя сделать ревью своего собственного пулреквеста. Про это я ничего не знаю, это мне рассказали.

И вот я вспомнил про ещё одно такое псевдобессмысленное действие.

На Маке есть сочетание клавиш ⌘H, которое означает скрыть текущее приложение. Я им пользуюсь постоянно: приложение остаётся в списке ⌘Tab, и если в него переключиться, то оно снова появится. Для сравнения, вызволять из Дока свёрнутое через ⌘M окно приходится с помощью мыши, да и анимация там утомляет. Так вот, Мак не даёт скрыть приложение, если оно последнее не скрытое. Видимо, программист решил, что в ситуации, когда не видно ни одного приложения, «нет смысла».

А у меня как у пользователя руки привыкли жать ⌘H независимо от того, сколько в данный момент в системе скрыто приложений, а сколько нет. Я вообще понятия не имею об этом! Вот передо мной последнее окно Файндера, я жму ⌘H, ожидая увидеть рабочий стол, а окно не пропадает! Можно было бы подумать, что это потому что рабочий стол сам является Файндером, но нет: если нажать ⌘H в Файндере, когда есть другие видимые приложения, окна Файндера без проблем исчезают.

Как надо

Если вы разработчик, и вы считаете какое-то действие в вашем интерфейсе бессмысленным, просто сэкономьте себе время, не пишите код, который его запрещает! Этот код не приносит никакой пользы. В лучшем случае эффект этого кода никто не заметит, а в худшем он будет мешать работать. А дальше если действие, которое вы считает бессмысленным, используют люди, самое время задаться вопросом: почему? Что вы упустили? Какой сценарий не приходил вам в голову? Возможно, люди видят в этом действии какой-то другой смысл, который вы сами в него даже не вкладывали.

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

В Телеграме сообщения самому себе не только не запрещены, а логично называются Saved Messages и имеют собственное сочетание клавиш ⌘0. Более того, продуман сценарий сохранения: если нажать ⌘0 в окне пересылки сообщения, оно мгновенно перешлётся в сохранённые без перехода в сами сохранённые.

Директ

Когда мы заимствуем слова с перекошенным ударением, обычно мы его сдвигаем куда-то в середину. Был фу́тбол, стал футбо́л; был ма́ркетинг, стал марке́тинг.

Так что вообще непонятно, с какого перепугу люди вдруг говорят «ди́рект», когда имеют в виду дире́кт в Инстаграме.

Внесение асимметрии, чёрно-белые вставки, Фрам и Йоа

Рассказываю, как помогает внесение асимметрии в дизайне, показываю корабли. Обзор недели 25 апреля — 2 мая 2021 года:

00:00 Интро. Внесение асимметрии. Самолёты, ряды, светофор
03:45 Инстаграмчик
05:18 У меня новый трек! Give Me a Window
07:20 Чёрно-белые вставки в моих видео. Don’t blame the player, blame the game
08:48 Музей Фрама в Осло

Привожу примеры асимметрии в дизайне симметричных вещей: взлёт и посадка, ряды встречных направление, переключение светофора. Защищаю свои чёрно-белые вставки, напоминающие поставить лайк. Показываю фотки из музея Фрама в Осло.

Научить Нгинкс обслуживать по ХТТПС сразу много доменов

Вопрос спецам по Нгинксу.

В конфигурации Нгинкса прописаны такие заклинания про ССЛ:

ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/nginx/ssl/letsencrypt-chain.pem;

Только на месте example.com настоящий домен.

Сервер обслуживает много доменов, которые добавляются и удаляются. Каждому домену соответствует своя папка, в которой лежат эти файлы, нужные для ССЛа. Соответственно при добавлении домена приходится создавать очередной конфиг, прописывать туда пути к папкам, перезапускать Нгинкс.

Хочется этого избежать и просто прописать единый конфиг, который сразу покроет все домены, условно говоря, вот так:

ssl_certificate /etc/letsencrypt/live/$HTTP_HOST/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/$HTTP_HOST/privkey.pem;
ssl_trusted_certificate /etc/nginx/ssl/letsencrypt-chain.pem;

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

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

Ilya Birman: Give Me a Window

Спустя два с половиной года после прошлого трека я, наконец, написал новый:

Ilya Birman: Give Me a Window

Или на Саундклауде.

Невероятно, но я преодолел Эйблтон и написал в нём трек! Раньше я всё делал в ФЛ-cтудии. При этом последние лет десять, или сколько там у меня Мак, я мечтал с неё слезть. Наконец-то критическая масса знаний про Эйблтон набралась. В целом после ФЛ-студии в каких-то местах я просто прусь от того насколько легко и приятно всё в Эйблтоне; а в каких-то просто бешусь от того, насколько через жопу сделаны простые вещи.

Ещё техно:

Внесение асимметрии

Если какие-то вещи симметричны, логично и обозначать их симметрично.

А вот несколько примеров того, что иногда полезно внести асимметрию.

На знаках вылета и прилёта самолёт взлетает и приземляется:

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

Твой ряд и встречные ряды:

Из поездки Артемия Лебедева

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

Промежуточный сигнал светофора при переключении на зелёный и на красный:

Картинка Пиксабай

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

Математические знаки «плюс» и «минус», кстати, тоже несимметричны.

А у вас какие примеры есть?

Музей Фрама в Осло

В Осло есть несколько музеев на морскую тему рядом, там валяются разные якоря вокруг:

Я пошёл в музей Фрама. Фрам — это шхуна, на которой Руаль Амундсен с командой покорял Южный полюс в начале 20 века. Вот музей. Сразу ясно, что внутри большая лодка:

О, и точно лодка! Свет внутри совершенно дикий, такое ощущение, что специально сделали, чтобы сдать фотки было невозможно. По второму этажу проходит балкончик:

Там такое контрольное бревно:

Я смог перешагнуть, поэтому вступил на палубу. С палубы можно залезть внутрь, но там тесно и не особо что есть:

Вообще, лодка не такая уж и большая.

Ну, короче. Это оказался не Фрам, а —

Йоа! Это другая лодка Амундсена, на которой он ещё до Южного полюса покорял Северо-западный проход (путь севернее Канады).

Конечно, заходя в музей Фрама, ожидаешь увидеть Фрам. Но он в соседнем треугольном здании, к которому надо перейти под землёй. Там то же самое, вход на палубу с балкончика, но только всё намного больше:

А самое крутое, что на стены вокруг проецируют видео южных океанских льдов, так что появляется очень правдоподобное ощущение движения:

Вас когда-нибудь укачивало на корабле, который не движется?

Здесь уже намного интереснее спуститься внутрь. Кают-компания:

Коридорчик к каютам:

Ящики с пледами и книжками:

В каютах прям уют-уют (если не думать о контексте антарктической экспедиции):

Каюта Амундсена. Горизонт не завален:

Неужели они реально не поленились их там подписать? Все же и так знали, где чья каюта!

Кухня. Всякие банки. Красно-синяя — крутая:

Пиво стоит:

Сундук какой-то:

Санузел:

Можно было спуститься ещё ниже в трюм. Там тоже свет как на пситрансовой вечеринке:

Есть крутейший электрошкаф:

Фотографии из поездки в сентябре 2019 года. Во всех заметках про путешествия снизу есть поиск дешёвых авиабилетов. Слетайте в Осло! (Когда дадут)

Ранее Ctrl + ↓