Привет, Пикабу. В прошлых сериях я рассказывал о системе онлайн-записи, о парсерах для сбора информации и о нейроассистенте для менеджеров. Сегодня хочу рассказать о новой разработке, которая связана со всеми этими системами.
В любом автосервисе есть слабое место — это приемка и выдача автомобиля. Проблема знакома каждому владельцу. Менеджеры плохо разбираются в технике, а мастера-приемщики не умеют общаться с клиентами. Даже если у вас работают хорошие специалисты, один из этих навыков всегда хромает. Данная серия также напоминает, это сугубо мое убеждение- не люди обучают и строят автоматизированные системы а автоматизированные системы обучают и строят (структурируют) людей!
Я столкнулся с этой проблемой лично. Клиенты жаловались, что их не слушают, что они не понимают, за что платят. Мастера теряли время на лишние вопросы. А я как руководитель не всегда мог проконтролировать качество приемки.
Тогда я решил создать автоматизированную систему приема и выдачи автомобиля. Я взял за основу уже существующие модули: систему онлайн-записи, нейроассистента и систему парсеров. И объединил их в один большой модуль.
Как работает эта система в общих чертах. Когда клиент приезжает в сервис, камеры на въезде распознают номер его автомобиля. Система находит информацию о записи, создаёт заказ-наряд и оповещает всех сотрудников. Мастер-приемщик получает инструкции по осмотру. После осмотра он подтверждает приемку, и система автоматически подбирает информацию о типичных поломках для этой модели авто. Мастеру приходят рекомендации, что именно нужно проверить и как это сделать.
Если ремонт мы делаем сами, система создаёт задание для мастера. Если не делаем — отправляет заявку на аутсорс. Весь процесс фиксируется в системе, все документы и финансы формируются автоматически.
Напомню- я не программист, я владелец автосервиса, и я собрал эту систему из написанных в дипсике программ и скриптов!
В следующем посте расскажу о камерах распознавания номеров и о том, как система встречает клиента.
В первом посте я рассказывал, как делаю GeoConquest — GPS-стратегию про захват реальной карты.
Сегодня расскажу про менее фундаментальную, но неожиданно разросшуюся часть проекта: темы интерфейса.
С самого начала я представлял игру то в духе бандитских районов, то в духе фентези с замками, оно как-то не имела единой темы. И в какой-то момент я подумал - а почему бы не натянуть на одну и ту же механику разные темы? И каждый игрок сам сможет выбирать то, что ему по вкусу!
Потом к оформлению добавилась собственная терминология. А когда игра получила русский и английский языки, получилось пять визуальных миров и десять комбинаций локализации.
Всё началось с попытки оживить интерфейс
Первая версия GeoConquest выглядела как обычная серая веб-страница поверх карты. Она работала, но совсем не ощущалась мобильной игрой.
Я начал перебирать разные направления: светлый современный интерфейс, фантастику, киберпанк, научную фантастику и несколько более экспериментальных вариантов.
Один из ранних дизайн-листов. Не все показанные варианты дошли до работающей игры.
Некоторое время существовала ещё тема Arcade, но я её удалил: она плохо отличалась от остальных и не давала игре достаточно самостоятельного характера.
В результате осталось четыре темы: Modern, Cyberpunk, Fantasy и Sci-Fi.
Пятая появилась позже. Один из моих первых плейтестеров попросил: "Мне бы хотелось играть в игру чисто семьёй, жену позвать, дочку, без всяких левых людей в клане". И я подумал - "семья? отлично!" И 31 мая сделал тему Mafia «по запросу одного Дона».
Пять вариантов одной игры
Сейчас тему можно в любой момент поменять в настройках. Механика и состояние аккаунта при этом остаются прежними.
Ниже один и тот же актуальный экран во всех пяти вариантах.
Modern, Cyberpunk, Fantasy, Sci-Fi и Mafia. Один экран, одинаковые настройки и разные визуальные правила.
Modern получилась светлой и нейтральной. Cyberpunk использует неоновые акценты и фиолетовые панели. Fantasy — более тёплые цвета и шрифты с засечками. Sci-Fi строится вокруг холодных сине-зелёных оттенков. Mafia получила почти чёрный фон, тонкие золотые линии, красные акценты и собственную типографику.
Но довольно быстро выяснилось, что одной перекраски недостаточно.
Клан, гильдия, альянс, банда и семья
Слово «клан» нормально работает в нейтральном интерфейсе. В Fantasy оно уже звучит не так естественно, а Mafia вообще родилась из другого названия для клана.
Поэтому темы начали менять не только внешний вид, но и язык игры.
В Modern всё называется буквально: клан, лидер, влияние, магазин и жетоны.
В Sci-Fi:
клан становится Альянсом;
лидер — Командором;
влияние — Авторитетом;
чат — Связью;
магазин — Снабжением;
жетоны — кредитами;
характеристики превращаются в Огневую мощь, Щиты, Терраформинг, Импульс и Добычу.
В Fantasy:
игрок вступает в Гильдию;
руководит ей Глава гильдии;
влияние становится Славой;
чат превращается в Зал гильдии;
магазин — в Лавку;
жетоны — в кроны;
первое обучение называется Первым квестом.
В Cyberpunk:
клан становится Бандой;
лидер — Боссом;
влияние — Репутацией;
чат — Закрытым каналом;
магазин — Чёрным рынком;
жетоны — эдди;
характеристики называются Взлом, Фаервол, Экспансия, Оверклок и Кредпоток.
Mafia ушла в тематическую лексику дальше остальных:
клан — Семья;
лидер — Дон;
влияние — Уважение;
участники — подручные;
чат — Задняя комната;
магазин — Подполье;
жетоны — наличка;
характеристики — Нажим, Омерта, Захват, Хватка и Жила;
стартовое обучение — Первое дело.
Даже сообщение о плохом GPS зависит от выбранного мира. Обычная игра временно останавливает движение, Sci-Fi — операцию, Fantasy — поход, Cyberpunk — рейд, а Mafia — дело.
Один экран недостаточно просто перекрасить
Некоторые интерфейсы содержат много текста, таблицы, награды, таймеры и длинные названия. Для них тема влияет не только на атмосферу, но и на читаемость.
Один и тот же клановый рейтинг в Modern и Cyberpunk.
Один и тот же клановый рейтинг в Modern и Cyberpunk.
Приходилось отдельно проверять контраст, активные вкладки, таблицы, медали, выделение собственного клана и состояние кнопок.
А ещё слова имеют разную длину. «Дон» легко помещается почти куда угодно, а «Глава гильдии» или «Терраформинг» уже способны сломать компактную строку на мобильном экране. Английские версии добавляют ещё один набор длинных и коротких вариантов.
Поэтому новая функция теперь проверяется не только на русском и английском, но и на тематических словарях.
Технически я не храню десять полных независимых переводов. Есть базовая русская и английская локализация, а каждая тема переопределяет только нужные ей термины. Если специального варианта нет, игра берёт нейтральный текст.
Иначе любое исправление опечатки пришлось бы повторять десять раз.
Mafia началась с шутки, а стала отдельным миром
Когда я добавлял Mafia, быстро стало понятно, что заменить слово «клан» на «семью» недостаточно.
Появились Дон, Советник, Капо и Подручный. Профиль клана превратился в досье, внутреннее сообщение — в слово для своих, а системные события стали делами семьи.
Клановый чат в Mafia называется Задней комнатой.
Магазин тоже пришлось переписать. Усиление атаки стало Нажимом, защита — Омертой, дополнительный шанс при нападении — Своим человеком, защита от него — Алиби, а косметическое украшение ника — Визиткой.
Подполье с тематическими названиями предметов.
В итоге тема, появившаяся за счёт идеи одного игрока, потребовала отдельной лексики для кланов, ролей, магазина, характеристик, заданий, обучения, событий, FAQ и системных сообщений.
А тёмная карта — это ещё одна настройка
Позже игроки попросили тёмную карту. Я не стал делать её отдельной шестой темой.
Карта и интерфейс переключаются независимо: можно оставить Modern и затемнить саму карту или включить светлые тайлы вместе с Cyberpunk, Sci-Fi либо Mafia.
Не все сочетания выглядят одинаково хорошо, зато игрок сам выбирает между атмосферой и удобством.
Что получилось
Темы не дают игровых преимуществ и не меняют механику. Это пять способов воспринимать один и тот же мир.
Кому-то ближе нейтральная стратегия. Кто-то хочет командовать Альянсом, собирать Гильдию, возглавлять Банду или стать Доном Семьи.
Для меня же это постепенно превратилось в отдельную дизайнерскую задачу: сохранить одинаково понятную игру, когда интерфейс разговаривает с игроком на пяти разных жанровых языках.
Какая тема выглядит лучше всего? И какой сеттинг сюда ещё мог бы подойти, не дублируя существующие?
Впереди тёплые выходные без дождей, наконец-то! Присоединяйтесь к захвату территорий ;)
На фоне творящегося ужаса со всякими сайтами, приложениями, яндексами, вконтактами, майлами и банками, хочется выразить огромную благодарность платформе Steam. Которой идет уже третий десяток, но она так и не обросла висячими рекламами, "эффективными" дизайнерскими решениями, "удобными" новомодными интерфейсами.
Проходят года и каждый раз когда ты заходишь туда, видишь всё ту же библиотеку, магазин, профиль все на своем месте. Всякие карточки, игровые шмотки, гифты также лежат как и десять лет назад. Никому и в голову не пришло их обнулить или обновить. Как у коллекционера, все фигурки лежат на своих полочках и никто без твоего ведома не меняет местами стеллаж с унитазом. Прям островок стабильности в интернете сегодня. Долгих лет Гейбу!
Steam впервые был представлен на Game Developers Conference 22 марта 2002 года
Сделал за пару дней бесплатный симулятор восприятия для дизайнеров, чтобы смотреть какие компоненты на странице самые акцентные, а что может не заметить пользователь.
Для чего? - посмотреть как видят ваш UI люди с дальтонизмом, катарактой - проверить, какие компоненты самые акцентные на вашем сайте - бонусный режим: CRT монитор, чтобы почувствовать запах 90х и 00х
Хочу поделиться опытом разработки проекта, который я ковырял последние несколько месяцев чисто ради интереса. Мне дико надоела рутина при работе за компьютером, а обычные веб-интерфейсы нейросетей казались слишком скучными и бездушными. Захотелось сделать что-то визуально живое, ламповое и в стиле старого доброго Тамагочи, но с реальным системным функционалом.
В итоге написал десктопное фоновое приложение — назвал систему IronOS. Это небольшой ассистент, у которого есть свое анимированное «лицо» прямо на экране (назвал его Iron Face).
Как устроена визуальная часть (0% нагрузки на видеокарту): Чтобы интерфейс не отжирал ресурсы у рабочих задач и игр, я полностью отказался от тяжелой 3D-графики и WebGL. Все отрисовано на чистом HTML5 Canvas 2D API с математическим сглаживанием:
В режиме ожидания: Смайлик просто парит в углу чата, лениво покачивается и периодически случайно моргает, создавая эффект естественного живого взгляда.
В режиме размышления: Когда ставишь ему сложную задачу (например, написать скрипт или разобрать лог), он сурово прищуривается к центру, выражая максимальную концентрацию, а под лицом разворачивается моноширинная консоль с бегущими строчками его мыслей.
В режиме речи: Когда он отвечает голосом, активируется плавный Lip-Sync — его рот превращается в динамическую волну, которая открывается и сжимается в реальном времени строго в такт человеческой речи. Переходы геометрии сглаживаются математически, без рывков.
Что он умеет делать в операционной системе: По сути, это автопилот интерфейса. Через низкоуровневые системные сообщения Win32 API (PostMessage / SendMessage) он умеет выполнять «призрачные клики» и вводить текст в дескрипторы (HWND) фоновых или свернутых окон программ. Мышка при этом остается полностью в руках пользователя, ИИ её не перехватывает и не двигает курсор.
Программа может по команде сама зайти в браузер, открыть нужный сайт, заполнить форму или, например, перехватить и исправить Traceback-ошибку, которую я скопировал в буфер обмена во время программирования.
Техническая внутрянка, безопасность и оптимизация:
Экономия ресурсов: Приложение написано на Python и скомпилировано в независимый C++ бинарник. Вес получился приличный — около 315 МБ, так как внутрь пришлось зашить рантайм Chromium для интерфейса, библиотеки шумоподавления и ONNX-модели распознавания голоса. Зато в фоне программа ест всего около 80 МБ оперативной памяти. Когда окно теряет фокус, все анимации полностью замораживаются.
Безопасность данных (Режим паранойи): Так как ИИ умеет анализировать экран, я зашил туда локальный модуль OpenCV для маскирования приватных зон. Перед отправкой скриншота в облако скрипт считывает заголовки окон. Если активен Telegram, банковская вкладка или менеджер паролей — система наглухо замазывает эту зону черным квадратом прямо в оперативной памяти компьютера.
Режим прерывания: Встроен фоновый шумодав на CPU и датчик голоса. Если ИИ говорит, но вы перебиваете его голосом — он мгновенно останавливает аудиопоток и очищает буфер звука, закрывая рот.
Проект делался исключительно для себя, чтобы разгрузить руки во время работы и добавить немного футуризма на рабочий стол. Было дико интересно скрестить системные вызовы Windows, физику звука и анимацию мимики в одном легковесном интерфейсе.
Интересно послушать мнение практикующих разработчиков и инженеров — какие еще системные фичи или типы эмоций можно зашить такому фоновому питомцу для удобства?
С каждым годом ВК все меньше похож на социальную сеть и все больше на перегруженный сервис, который пытается навязать пользователю десятки ненужных сервисов.
Интерфейс усложняют, привычные функции портят, ленту забивают рекламой и рекомендациями, а мнение аудитории будто давно никого не интересует.
Кстати, до оператора фиг допишешься. У них там в Авито даже нет(!) варианта в меню обращений "ошибки / баги с сайтом" или "жалоба на пользовательский опыт (Ux)" или типа того.
Такого в природе просто не может быть — чтобы в Авито что-то было неидеально или не работало.