Авторская игрушка про дуэль
Всегда поражался тому, как разработчики игр могут вести бложек с новостями разработки! Это сколько же нужно моральных сил!
Но сегодня попробую стать одним из таких ребят.
Для ленивых коротко: https://triprpg.com/engarde/ заходите и играйте, всё бесплатно и без рекламы, там всему научат и объяснят.
А для тех, кому любопытно, продолжаю!
Откуда?
Эта история началась очень давно и совершенно неожиданно для меня самого. Тогда я думал о разработке настолки по "Городу Гоблинов" - книжной вселенной Петра Жгулёва. Мне, старому ролевику, хотелось придумать классные правила для сражений холодным оружием, при этом и интересные/разнообразные, и не слишком перегруженные.
И вот, спустя некоторое время я уже прочитал и просмотрел огромное количество разной информации и... оказался в тг-чате ребят, которые занимаются HEMA, обсуждают фехтовальные трактаты древности и всякое такое.
Как реалистично описать бой так, чтобы это не было слишком сложно?
Вот такой вопрос я задал ребятам и начались многотонные обсуждения того, как же вообще происходит сражение.
В моей ролевицкой юности фехтованием мало кто заморачивался, основная идея схваток на мечах была простой:
Стукай сам, не буть стукнут другим.
А тут вдруг стали выясняться довольно интересные вещи! Оказывается, есть разные приёмы, контроль оружия, позиции, манёвры и всякое прочее!
Как и с любыми другими боевыми искусствами, очень скоро выяснилось, что если уровень снаряжения и подготовки у бойцов примерно равен, то суть сражения сводится... к своего рода шахматам, разве что с более кровавым результатом.
Началась разработка!
Некоторые игры могут быть приятными только потому, что у них обалденная графика, сюжет, живые персонажи, в которых хочется верить...
Мне, по понятным причинам, всё это оказалось совершенно недоступным. А чем может порадовать игра, которая выглядит вот так?
Геймлеем, конечно же! А вот чтобы собрать сбалансированную и интересную систему, пришлось хорошенько заморочиться!
В двух словах о правилах и вообще самой игре:
Вы - мастер длинного меча, в сеттинге чего-то типа флоренции 15 века. "Чего-то типа" - отдельно уточняю, чтобы ко мне не придирались спецы по исторической реконструкции!)
То ли Вас вызвали на дуэль, то ли Вы вызвали - не так важно. Важнее то, что придётся биться и хотелось бы в этой дуэли победить. А как это сделать?
Всё многообразие возможный действий в бою мы с чатом фехтовальщиков свели к семи приёмам:
Атака. Наверное самое простое и понятное - попытка нанести удар по противнику. Сильная, мощная, акцентированная, многие слабые способы защиты она попросту пробивает не заметив.
Блок. Прямо противоположное - жёсткая защита, которую действительно тяжело пробить.
Манёвр. Движение в бою, нужное чтобы занять более выгодную позицию.
Финт. Ложная атака, попытка заставить противника вложить в защиту время и силы, когда настоящего удара мы не планируем. Тоже даёт нам значительное преимущество, если преуспевает.
Парирование. Вот тут уже штука немного похитрее - это защита "айкидо-стайл", с использованием силы и скорости противника против него самого. Против некоторых приёмов срабатывает отлично, а против других - напротив.
Сбив, в оригинале - батман, battamente или что-то такое. Тоже довольно интересная штука - намеренная атака не по телу противника, а куда-то по его оружию. Задача - заставить потерять контроль над мечом на мгновение, чтобы потом этим мгновением выгодно воспользоваться.
наконец, Опережающая Атака, она же Contratempo - не такая мощная и акцентированная как обычная, зато выполняется очень быстро и если противник делает что-то, что требует подготовки (например, Блок), может банально произойти до защиты.
Геймплей всегда требует каких-то условностей, поэтому этот список далёк от идеала и полного реализма. Но товарищи фехтовальщики утверждали, что к тому самому реализму мы приблизились... довольно неплохо.
... А ещё я немного переименовал многие приёмы так, чтобы их можно было однозначно различать по одной первой букве. Так Атака стала просто А, а Contratempo - просто О, от Опережающей Атаки.
Для пущей простоты - все способные нанести противнику урон приёмы определяются гласными буквами, а способные только защититься или дать преимущество - согласными.
Как происходит бой?
Бой двух мастеров - это никогда не о слепом обмене ударами. Он начинается на некоторой дистанции, где игроки готовят приёмы, которые планируют использовать в грядущей схватке.
Это фаза подготовки. У каждого есть по две карточки каждого приёма, и каждый в свой ход выбирает, какие из них подготовить для использования.
Противник это видит...
И пополняет свой арсенал теми приёмами, которые служат хорошей "контрой" к вашим.
Затем и вы подбираете то, что поможет одолеть уже его приёмы.
В реальном мире в этот момент два мастера драматично ходят по арене кругами, перехватывая по разному свои мечи, принимая разные стойки, из которых удобнее выполнять то или иное действие.
Цикл с выкладыванием карточек повторяется до тех пор, пока один из дуэлянтов не сочтёт что "пора"
И тогда начинается бой.
По уверению фехтовальных товарищей, очень часто схватка оказывается достаточно короткой - буквально пара "тактов", пара действий которые каждый боец подготовил как быструю "двоечку".
На этом этапе каждый игрок может использовать только те карты-приёмы, которые подготовил на предыдущем, но какие именно ты используешь, какие именно у тебя остались - уже скрыто.
Можно запоминать, путаться и проигрывать из-за этого, можно угадывать что из подготовленного арсенала первым выложит противник - в этом и есть, собственно, вся суть и весь фан игры.
Разве что добавлю, что на этапе схватки появляется особая карта "Выход", которая всегда доступна, готовить её не нужно, а если её удалось разыграть - то дистанция снова разрывается и игроки снова начинают готовить следующее столкновение.
Задача проста! Нанести противнику 3 единицы урона, оставшись живым самому.
Что может быть проще, правда?
Как это делалось?
Как нередко бывает, то что выглядит очень просто на самом деле прячет за собой довольно много работы. По сути, игра представляет собой усложнённую версию "камень-ножницы-бумага", с особыми дополнительными правилами.
Значительным трудом было отбалансировать всё это так, чтобы в происходящем был хоть какой-то похожий на реализм смысл. Чтобы не было одного универсального всепобеждающего приёма или комбинации приёмов. Легко нарисовать "звёздочку" в стиле камень-ножницы-бумага-ящерица-спок, где все штуки бьют соседей по часовой стрелке и проигрывают соседям с другой стороны!
Да и вообще, вот, допустим, жёсткий Блок выигрывает у совсем прямолинейной Атаки, а всегда ли? Если проходит Атака, она наносит урон, а что даёт преуспевший Блок?
Я делал небольшие простенькие стрелялки и даже стратежки раньше, но с математикой и статистикой столько заморачиваться никогда не приходилось.
Отдельной болью оказалось нарисовать хотя бы примерные ассеты для того, чтобы на карточках было изображено что-то похожее на приём. Я совсем не художник, а привлекать за денежку кого-то в проект, который не обещает её когда-нибудь вернуть - такое себе.
Правда, сейчас, вспоминая, сколько человеко-часов мне пришлось вложить в эти картиночки - уже здорово сомневаюсь в этом решении! В ход шли разные ИИ-генераторы, бесплатные и платные, раскопки по древним фолиантам о фехтовании, относительно современные учебники, ручная перерисовка (с моими то навыками, ага) и много-много всего другого.
Но в результате - картиночки есть и они передают общую суть визуально! Ура! Это, пожалуй, было для меня самым сложным.
Вот вы, например, знали, что в древних фолиантах довольно много внимания посвящено борьбе с портальными магами?
А что стиль Вадима Старова существовал уже тогда?
Остальное в двух словах
Игра исключительно тактическая, в ней нет никакого рандома в определении результатов. Продумывайте хитрую стратегию, обманывайте соперника, побеждайте.
Можно играть в соло, есть боты в сражении с которыми легко изучаешь правила, есть и полноценные бот-противники, которых одолеть реально нелегко.
Интереснее всего играть с товарищем, которого хоть немного знаешь - пытаться угадывать что он станет делать в той или иной ситуации. И подлавливать его на этом!
Простецкая система для приглашения друга в игру - одна ссылка и он на месте.
Всё это в браузере, нормально играется с большого экрана или с телефона.
Всё совершенно бесплатно, без какой-либо рекламы, просто хочу поделиться.
Бережно лепил каждый ассет, вылизывал каждый элемент интерфейса, каждую анимацию, теперь хочу чтобы кто-то поиграл и, дай бог, кайфанул =)
Не без помощи ИИ делал, конечно, но кто назовёт это нейротворчеством, будет катастрофически неправ.
PS, настолка
Совсем забыл! Игра задумывалась как довольно простая настолка - 30 карточек, 5 минутная дуэль где угодно. Веб версия - это для проверки интереса к такой штуке. Что думаете, хотелось бы?
PPS фехтовальщики, отзовитесь!
Увы, когда я стал искать тот самый тг-чат, оказалось, что его больше нет. Когда стал искать ютуб-канал, с которого перешёл в чат - не нашёл =(
Может вы увидите этот пост на Пикабу?
Ссылка на игру, без регистрации и SMS,
Ничего не нужно, просто заходите и играйте.
А ещё комментируйте, хватите, ругайте, жалуйтесь, зовите играть друзей и врагов.
Месяц назад я запустил продукт, код которого написал ИИ: 943 визита, 116 регистраций и проблема с возвратами
Первый месяц "Квартума" в цифрах: откуда пришли пользователи, чем они пользовались, почему почти не возвращаются и что я буду проверять дальше. В конце — чек-лист, по которому я собирал продукт с ИИ. Используя его, можете полностью повторить и мой путь, создать что-то своё
Ровно месяц назад, 29 августа, я открыл для всех "Квартум" — сервис для планирования и управления ремонтом, код которого практически полностью написан с помощью ИИ.
До этого им пользовались только я, тестовые аккаунты и несколько знакомых.
За первый месяц сайт получил 943 визита, зарегистрировались 116 человек, они создали 110 проектов.
А потом я посмотрел, сколько из них вернулось.
На следующий день после регистрации — 4 человека из 103.
Через неделю — ни одного.
Привести человека в бесплатный продукт оказалось значительно проще, чем сделать так, чтобы этот продукт понадобился ему второй раз.
Именно последняя цифра сейчас кажется мне самой важной.
Ниже - результаты первого месяца, что люди действительно делали внутри продукта, сколько стоил первый трафик, что я понял про разработку с ИИ и три гипотезы о том, почему пользователи почти не возвращаются.
Что такое "Квартум"
Идея появилась во время ремонта собственной квартиры.
Информация была разбросана по чатам, таблицам, заметкам и разным сервисам: отдельно бюджет, отдельно задачи, отдельно документы, отдельно план квартиры и договорённости с подрядчиками.
Я не нашёл решения, в котором всё это было бы собрано достаточно просто, поэтому начал делать своё.
Сейчас в "Квартуме" можно:
спланировать квартиру в 2D и 3D;
вести задачи, сроки и ответственных;
учитывать расходы и бюджет;
получить приблизительный расчёт стоимости ремонта;
составить план работ;
подобрать базовую комплектацию помещений;
хранить документы и фотографии по объекту.
Если сильно упростить, "Квартум" — это одно место, где можно сначала спланировать ремонт, а потом вести сам проект.
Пока продукт полностью бесплатный.
Для первого знакомства даже не обязательно регистрироваться: планировщик можно открыть сразу, а аккаунт понадобится, если захотите сохранить результат или вести полноценный проект.
Пример проекта в 3д планировщике
Где деньги, Коваленко?
Пока нигде.
Монетизации в "Квартуме" нет, поэтому целью первого месяца было не заработать, а привести в продукт людей, которых я лично не знаю, и посмотреть, станут ли они вообще им пользоваться.
Сначала я дал продукт нескольким знакомым, которые делали ремонт, и собрал первую обратную связь.
Потом начал заниматься SEO: публичными страницами, статьями и бесплатными инструментами, которые потенциально могут получать трафик из поиска.
Но поисковому продвижению нужно время, поэтому параллельно запустил Яндекс Директ.
У Яндекса есть бонусы для первых рекламных кампаний, поэтому часть бюджета получилась за счёт промосредств.
Суммарный бюджет рекламных кампаний за первый месяц составил около 20 000 ₽.
Реклама для меня была способом быстрее получить первых незнакомых пользователей и посмотреть на их поведение, а не попыткой что-то заработать.
Основные источники трафика за месяц:
реклама — 523 визита;
поиск — 201;
переходы по ссылкам — 87;
прямые заходы — 61;
внутренние переходы — 60.
Больше половины трафика первого месяца пришло из рекламы, и это важно учитывать, когда смотришь на остальные показатели.
Если просто разделить рекламный бюджет на рекламные визиты, получится примерно 38 ₽ за визит.
А если разделить его на все 116 регистраций месяца — около 172 ₽. Но это уже не стоимость регистрации из Директа: часть людей пришла из поиска, ссылок и напрямую, а нормальную атрибуцию регистраций я начал записывать только во второй половине месяца.
Первый месяц в цифрах
За период с 29 августа по 29 сентября:
581 посетитель;
943 визита;
4 282 просмотра страниц;
4 мин. 53 сек. — среднее время визита;
4,54 страницы — средняя глубина;
116 новых пользователей;
110 созданных проектов;
в 62 проектах начали реально что-то делать;
55 проектов получили автоматический план ремонта;
45 проектов использовали комплектацию;
в 35 проектах задали бюджет;
38 раз пользователи экспортировали планы;
только 8 пользователей работали в продукте больше одного дня.
На первый взгляд результаты мне нравятся.
Люди не просто открывают сайт. Они создают проекты, рисуют квартиры, составляют планы ремонта, задают бюджет и пользуются комплектацией.
Но самое интересное начинается, если посмотреть не на регистрации, а на поведение.
Планировщик оказался самым понятным сценарием
С 19 сентября я начал отдельно считать воронку гостевого планировщика для пользователей, согласившихся на аналитику.
Получилось:
161 открыли планировщик
87 действительно что-то начертили или добавили
53 дошли до результата в виде более менее готовой планировки
32 нажали «Сохранить»
А из 53 человек, дошедших до результата, 38 посмотрели квартиру в 3D.
Для меня это один из самых полезных выводов месяца.
Можно добавить в продукт сколько угодно задач, бюджетов и автоматизаций, но сначала человек должен получить что-то, ради чего захочется продолжать.
В планировщике таким моментом оказался переход из нескольких линий на экране в собственную квартиру в 3D.
Яндекс ID выбрали примерно три человека из пяти
19 сентября я добавил вход через Яндекс ID.
После этого 31 из примерно 51 новой регистрации прошли именно таким способом.
Вроде бы очевидная вещь: людям не хочется снова придумывать пароль и подтверждать ещё один аккаунт.
Но особенно приятно видеть очевидную вещь уже не в статье про UX, а в собственных данных.
Готовый результат работает лучше пустого листа
55 проектов использовали автоматически созданный план ремонта — всего получилось 403 этапа.
Ещё 45 проектов воспользовались комплектацией.
Мне здесь нравится очень простой принцип: пустой проект требует придумать всё самому, а заполненный приглашает исправить его под себя.
Для следующих функций хочу чаще использовать такой подход.
Главная проблема — пользователи плохо возвращаются
А теперь неприятная часть.
На следующий день после регистрации вернулись:
4 человека из 103.
Через неделю:
0 из 55.
Всего за месяц только 8 человек работали в продукте больше одного дня.
116 регистраций — это хорошо.
8 человек, которые пришли второй раз, — уже совсем другая история.
Сценарий часто выглядит примерно одинаково:
человек приходит, рисует квартиру, смотрит 3D, получает результат, уходит.
И вот это сейчас главный вопрос "Квартума"
У меня есть три гипотезы.
Гипотеза №1. В продукте недостаточно причин вернуться
Человек попробовал планировщик, получил результат и ушёл.
Тогда проблема непосредственно в продукте.
Нужно лучше связывать планирование квартиры с дальнейшим ведением ремонта, чтобы после планировки естественным следующим шагом становились бюджет, задачи, календарь, комплектация или работа с подрядчиками.
Гипотеза №2. Я привёл пользователей слишком рано
Большая часть рекламы была посвящена именно планировщику.
А будущую квартиру человек может планировать за несколько месяцев до начала ремонта.
Сегодня ему интересно построить стены, разделить пространство на комнаты и посмотреть всё в 3D.
Задачи, подрядчики, чеки и реальные расходы ему пока просто не нужны.
То есть пользователь может быть целевым, но прийти в продукт слишком рано.
Гипотеза №3. Планировщик — вообще отдельный продукт
Есть и такой вариант.
Человек пришёл решить одну конкретную задачу:
нарисовать квартиру, посмотреть результат и сохранить.
Он её решил.
А полноценное управление ремонтом ему вообще не нужно.
Если это правда, то вопрос уже не только в удержании, а в том, как связать между собой несколько разных потребностей.
Пока данных недостаточно, чтобы выбрать одну из этих гипотез.
Почему, на ваш взгляд, пользователи не возвращаются?
ПереголосоватьАнонимный
А где тут ИИ?
Код пишет ИИ.
Я ставлю задачи, определяю, что продукт должен делать, проверяю результат и решаю, куда двигаться дальше.
Основная разработка сейчас идёт с ИИ-агентом в Cursor. ChatGPT использую для анализа, постановки задач и проверки различных решений.
За время работы над продуктом накопилось около 120 итераций, 404 коммитов, примерно 174 тысяч строк TypeScript и 312 файлов с автотестами.
Только за первый месяц публичной работы вышло 10 полноценных релизов.
Но по мере роста проекта выяснилась интересная вещь:
скорость написания кода перестаёт быть главным ограничением.
Большие задачи для ИИ работают всё хуже
На старте можно сказать агенту:
Сделай вот эту функцию.
Через какое-то время получить результат и пойти дальше.
Но чем больше проект, тем хуже работает такой подход.
Теперь большую задачу я стараюсь сначала разбить на небольшие итерации:
определить ожидаемый результат;
составить план изменений;
реализовать небольшую часть;
запустить тесты;
проверить результат;
зафиксировать изменения;
только после этого переходить к следующей части.
Для агента тоже появились правила: не трогать лишнего, сначала составлять план, обязательно запускать проверки.
Пришлось разобраться с GitHub, ветками и историей кода
До "Квартума" GitHub был для меня скорее инструментом, который я понимал в теории.
Здесь пришлось нормально разобраться уже на практике:
с репозиторием;
коммитами;
отдельными ветками разработки;
слиянием изменений;
историей кода;
возвращением к предыдущему рабочему состоянию.
Если ИИ что-то сломал, теперь это не катастрофа.
Есть понятная история изменений и версия, к которой можно вернуться.
Релиз — это уже отдельный процесс
На старте почти не замечаешь инфраструктуру:
написал, проверил, выпустил.
Но чем больше становится продукт, тем важнее уже не только написать новую функцию, но и не сломать десяток старых.
Сейчас каждый релиз проходит примерно один маршрут:
изменение разрабатывается и проверяется локально;
запускаются автотесты и другие проверки;
изменения фиксируются и отправляются в GitHub;
обновляется сервер;
при необходимости выполняются миграции базы;
после релиза ещё раз проверяются основные пользовательские сценарии.
ИИ пишет код быстро. Но управлять изменениями в большом проекте всё равно приходится вполне обычными инженерными способами.
Что буду делать с рекламой
Пока я решил её практически остановить.
За первый месяц рекламные кампании выполнили основную задачу: дали достаточно незнакомых пользователей, чтобы появились первые закономерности в поведении.
Просто увеличить бюджет и привести ещё больше такого же трафика я сейчас смысла не вижу.
Сначала хочется разобраться, почему люди не возвращаются.
Останутся поиск, статьи, прямые заходы, рекомендации и внешние ссылки.
Что останется от продукта, если перестать покупать трафик?
Мне кажется, это хороший следующий эксперимент.
Если органический трафик будет постепенно расти, а пользователи начнут возвращаться — отлично.
Если нет — значит, придётся менять либо сам продукт, либо то, как я его позиционирую.
В какой-то момент это стало техническим хобби
Есть ещё одна неожиданная сторона всей этой истории.
Разработка "Квартума" постепенно превратилась для меня в техническое хобби.
Условно: вечером включаешь музыку, выбираешь какую-нибудь проблему и несколько часов пытаешься её решить.
В итоге получается настоящий работающий продукт, которым потом пользуются незнакомые люди.
При этом постоянно приходится переключаться между совершенно разными областями.
За время разработки я успел поработать с:
ИИ-разработкой — Cursor, ChatGPT и другими инструментами;
дизайном — Figma;
данными — PostgreSQL, SQL, DBeaver, Metabase;
Git и GitHub;
инфраструктурой — Docker, VPS, деплой и миграции;
аналитикой — Яндекс Метрика;
маркетингом — Яндекс Директ, SEO, Яндекс Вебмастер и Google Search Console.
Но сами инструменты здесь вторичны.
Гораздо интереснее, что одному человеку приходится немного побыть продактом, аналитиком, дизайнером, тестировщиком, маркетологом и разработчиком одновременно.
ИИ действительно сильно снизил порог входа именно в написание кода.
Но он не отменил необходимость понимать, что ты создаёшь, для кого и зачем.
Если хотите пройти такой путь сами
Пока делал "Квартум", я собрал всю последовательность разработки в отдельный чек-лист из 20 этапов.
По сути, это тот же маршрут, который прошёл сам продукт:
идея и аналоги;
MVP;
выбор ИИ-инструмента;
правила для агента;
технологический стек;
локальная разработка;
база данных;
GitHub;
тесты;
домен;
VPS;
деплой;
HTTPS;
релизы;
аналитика;
SEO;
первые пользователи;
сбор обратной связи.
Для каждого этапа указано:
что сделать, какой инструмент использовать, какой результат должен получиться, как этот этап реализован в «Квартуме».
Сам чек-лист, промпты и другие практические материалы по разработке с ИИ я складываю в Telegram-канале «Коваленко разбирается»:
Там же периодически выкладываю инструменты и решения, которые использую в своих проектах.
Что получилось через месяц
По итогам первого месяца у меня пока два главных вывода.
Первый: привести человека в бесплатный продукт и убедить его что-то попробовать — вполне реально.
Второй: сделать так, чтобы этот продукт понадобился ему второй, третий и десятый раз, намного сложнее.
Поэтому следующий месяц будет не столько про привлечение новых пользователей, сколько про попытку понять существующих:
зачем они приходят, что пытаются сделать и почему почти не возвращаются.
Через месяц хочу снова посмотреть на цифры: что произошло после сокращения рекламы, сколько осталось органического трафика и удалось ли что-то изменить в удержании.
А пока главный сценарий можно проверить самостоятельно:
планировщик работает без регистрации:https://kvartum.com/planner
Если вы делали ремонт или работаете с продуктами, мне особенно интересен ответ на один вопрос:
почему, на ваш взгляд, человек готов потратить вечер на планирование квартиры, но не возвращается вести сам ремонт?
Напишите в комментариях. Сейчас для меня это главный вопрос продукта.
Мы чуть не забанили собственных клиентов, пока писали защиту от скликивания
Скликивание в Директе — это когда по вашей рекламе кликают не из интереса, а чтобы сжечь бюджет: конкурент, бот или накрутка. Каждый клик стоит денег, а заявок с него нет.
Мы делаем платформу для малого бизнеса (Fluxs) и решили научить её саму защищать рекламу. Идея простая: система смотрит, кто заходит на сайт по объявлению, и если видит, что это робот, закрывает этому адресу показ рекламы, чтобы он больше не тратил чужие деньги.
Самое сложное оказалось не поймать робота, а не поймать по ошибке живого человека.
Сначала мы сделали так: каждому посетителю система ставит баллы подозрительности, набрал пять и больше, блокируем. Перед запуском мы посмотрели, откуда эти баллы берутся на деле, и поняли, что честный клиент их набирает без труда. Обычный просмотр страницы выглядел для системы как много кликов подряд. Семья, у которой три телефона на одном домашнем вайфае, выглядела как один подозрительный адрес, который заходит слишком часто. В итоге человек, который просто хотел заказать услугу, получал те же баллы, что и бот.
Хуже всего, что блокировка была навсегда. Заблокированному человеку переставали открываться форма заявки и чат, то есть он не мог написать в компанию. Мы бы навсегда отрезали от бизнеса именно тех, ради кого реклама и крутится.
Что исправили. Одних баллов теперь недостаточно: система должна по-настоящему распознать, что это робот, иначе никого не трогает. Блокировка временная, по умолчанию на три дня. Адреса самого владельца и его сотрудников защищены, чтобы собственный офис не оказался под запретом.
Заодно нашли ещё одну неприятную ошибку: при сбое система могла стереть список запрещённых адресов, который клиент собирал вручную. Теперь при любом сбое она ничего не трогает и честно говорит об этом, вместо того чтобы изображать успех.
Что в итоге: функционал готов и работает
Защита от скликивания входит в модуль ИИ-агента рекламы: он доработан, протестирован на наших собственных рекламных кампаниях, а сейчас помогает клиентам платформы. Все ошибки, о которых я рассказал выше, мы нашли именно на этих проверках на живых данных, и правила потом переделывали по результатам, а не по догадкам. На всякий случай у системы есть пробный режим, в котором она показывает, кого заблокировала бы, ничего не блокируя, а на уровне всей платформы есть общий выключатель, который одним движением останавливает автоматику у всех. Блокировки временные, о каждой владелец узнаёт сразу в Fluxs мессенджер, через автоматику встроенного бота.
Вывод, который мы из этого сделали: в защите от мошенников ложная тревога обходится дороже пропущенной атаки. Лишний клик стоит несколько десятков рублей, а потерянный клиент стоит целой сделки.
Это часть платформы Fluxs, которую мы делаем, так что формально пост про наш продукт, но история получилась полезной и без него. Если интересно, как это выглядит: подробнее тут
Добавили цифровой мухе машину времени. На какую дату её отправить?
Напомню, кто мы: делаем FLYBRAIN LAB, шуточный симулятор лаборатории с цифровой мухой. Приказать ей нельзя, есть только дофамин и удар током.
Вчера добавили новый эксперимент - "Назад в прошлое". Выбираете любую дату с 1900 года до вчерашнего дня, муха встаёт на платформу, кольцо раскручивается, и она исчезает в прошлом.
На некоторые дни муха реагирует по-особому:
— 12 апреля 1961: Гагарин летит в космос. Муха кричит «Поехали!»
— 9 сентября 1947: в компьютере Harvard Mark II находят мотылька и вклеивают в журнал как «первый настоящий баг». Муха делает вид, что она тут ни при чём
— 15 августа 1986: премьера фильма «Муха». Муха досматривает до конца и долго молчит.
— 21 декабря 2012: по календарю майя конец света. Муха ждёт весь день, но... ничего не происходит
— 28 июля 2010: муха попадает в тесную лабораторию над магазином электроники. Где-то звонит телефон… Что было дальше, не скажем, но за этот день дают скрытое достижение.
El. Psy. Kongroo.
Есть и другие пасхалки: например, любая пятница 13-е.
Сейчас муха узнаёт больше сотни дат, но хочется больше. Какие дни с 1900 года до наших дней добавить? Пишите дату и что муха там должна увидеть или сделать. Только без политики и трагедий. Самые заплюсованные добавим в игру, а авторов впишем в титры.
Игра выходит 13 октября.
World Simulator - живые персонажи
Государство это не только бюджет, армия и карта, но и люди. Министры, губернаторы, генералы, олигархи, лидеры партий, редакторы телеканалов, блогеры, священники и даже семья президента. Около 140 человек, и у каждого есть характер, цели, здоровье и своё мнение о вас.
Характер.
У каждого три черты личности из 16 пар противоположностей: смелый или трусливый, честный или лживый, алчный или щедрый, мстительный или незлопамятный, идейный или циничный.
Черты делают людей разными:
- они решают поступки. Алчный губернатор рано или поздно запустит схему. Мстительный не забудет обиды. Честного не подкупить, а смелого не запугать;
- они сближают и отталкивают. Люди с похожим характером симпатизируют друг другу, с противоположным — конфликтуют. Это касается и вас как президента;
- против характера жить тяжело. Честный, взявший взятку, или сострадательный, ставший свидетелем казни, копят стресс. Однажды наступает срыв: кто-то начинает пить, кто-то уходит в работу, кто-то срывается на подчинённых.
У каждого есть образование и опыт - юрист, экономист, военный, выходец из спецслужб, хозяйственник и другие. Есть врождённые черты — блестящий ум, харизма, крепкое здоровье. Они передаются детям.



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


Встречи
С любым человеком можно встретиться. Но график президента плотный: не больше трёх встреч в неделю.
Собеседник живой - моргает, говорит, меняет выражение лица после ваших слов. Реплики зависят от его характера и отношения к вам. Лживый будет улыбаться и уверять в преданности, пока вы не поставите его под наблюдение.
На встрече можно:
выслушать - узнать его цели;
убедить - работает ваша харизма против его упрямства;
предложить пост - и человек из оппозиции или бизнеса становится вашим министром;
подкупить - честный не просто откажет, а расскажет журналистам;
надавить компроматом - если спецслужбы что-то нашли. Сработает, но человек затаит обиду;
пригрозить - трус уступит, смелый - нет.



Закон и суд
Дело можно возбудить по найденному компромату или сфабриковать - но это ударит по вашей легитимности и напугает элиты. Насколько справедливым будет приговор, зависит от независимости суда.
Смертная казнь это закон страны. В России действует мораторий. Его можно снять, но реакция Европы и США будет жёсткой, а элиты расколются - сострадательные и справедливые отвернутся от вас. Если суд вынес смертный приговор, у президента есть шесть недель, чтобы помиловать осуждённого.
Портреты
Портреты не нарисованы заранее - они рождаются вместе с персонажем. У каждого лица есть свои «гены», поэтому дети похожи на родителей. Персонаж стареет вместе с игрой, хмурится в гневе, бледнеет в болезни. В тюрьме портрет оказывается за решёткой, после смерти становится чёрно-белым, с траурной лентой.
UX, который не причиняет боли
Я открываю новое приложение и уже через минуту хочу его закрыть. Курсор теряется в дебрях меню, а кнопка «Сохранить» прячется в самом нелогичном углу экрана. Цвета выжигают глаза.
Кажется, что качественный UX-интерфейс сегодня — это вымирающий вид, который скоро занесут в Красную книгу. Я, как разработчик, искренне не понимаю, почему так происходит.
Многие коллеги по цеху почему-то забывают, что пользователям плевать на количество функций. Им важно, чтобы всё работало интуитивно и не вызывало желания разбить ноутбук об стену. Удобство давно стало важнее наворотов, но эту простую истину усвоили единицы. Я каждый день вижу продукты, где о юзабилити думали в последнюю очередь.
Иногда мне кажется, что только гиганты вроде Google и Microsoft реально заморачиваются с тестированием интерфейсов. Они тратят миллионы, чтобы пиксель лежал на своём месте и вызывал правильные эмоции. Остальные же будто рисуют дизайн на салфетке за пять минут до релиза. А про доступность для людей с ограниченными возможностями вообще молчу — её просто нет.
Недавно мне нужно было оплатить счёт через банковское приложение. Я потратил десять минут, чтобы найти нужный раздел в этом лабиринте. Контрастность была такой, что текст сливался с фоном. Размеры шрифта и все остальное просто убивало.
Не только банковские приложения. Но и вообще куча всего остального выглядит именно так. Всегда хочется спросить тех, кто делает такие приложения, сайт, софт - вы его хоть раз сами то открывали?
Именно по этому пользуюсь самописным софтом, наверно, с того самого момента, как научился программировать. Но, к сожалению, не все можно так заменить :(
Мне кажется, что найти софт, которым приятно пользоваться, стало настоящим квестом...
Модуль для Foundry VTT "Приспособы фокуса"
Часто играю в настольные ролевые игры через Foundry с разными игроками и мастерами. Во многих играх существует проблема: игроки перебивают друг друга, или же, наоборот, одни игроки играют, а другие сидят в тени других. Давно думал, как бы это дело порешать. Да что греха таить, сам часто то сам забиваю спотлайт, когда играю, то упускаю долго сидящего без заявок игрока в своих играх. Так как худо-бедно умею в программирование, то написал свой модуль.
Модуль «Приспособы фокуса» - набор инструментов для Foundry VTT, не зависящих от игровых систем и предназначенных для контроля фокуса внимания (спотлайта) за игровым столом. Модуль позволяет организовать спотлайт игры без авторитарных методов или выбивающих из колеи или погружения нагромождений.
Модуль можно скачать и использовать бесплатно в официальном хранилище самого Foundry прямо в клиенте игры по названию "Spotlight Tools | Приспособы фокуса", ну или с репозитория на GitHub.
Что имеем в модуле:
игроки могут подать заявку (поднять руку) простым макросом, который ставится в панель быстрого доступа перетаскиванием из настроек;
активные заявки игроков будут видны в чате, специальном окошке мастера и/или ленте заявок, где отображается полезная информация о времени, когда заявка была создана, и порядке их подачи;
можно запустить публичные или приватные таймеры, чтобы отследить время до запланированных мастером событий; тайные таймеры увидит и услышит только мастер, публичные - все игроки; не бойтесь закрывать таймеры - они прозвучат даже, если вы выйдете из игры и вернётесь вновь;
отдельной кнопкой быстро можно создать таймер перерыва, и он любезно поставит игру на паузу, пока вы идёте заваривать чай;
секундомер... он есть; нужен редко, но иногда очень нужен: используйте, чтобы померить скорость чего-нибудь;
проверка готовности: отправьте игрокам запрос "ау! я планирую убивать пачку, готов страдать?", ну или "все вернулись с перерыва?" - полезная маленькая фишка, которая призвана заменить словесную перекличку;
самостоятельные статусы игроков: игрок берёт и меняет статус себе, чтобы показать мастеру "я тут афк - не теряйте: игру слышу, но пока не могу в микрофон сказать", "отошёл, но вернусь"; мастер увидит статус, и игроку не придётся влезать в текущую сцену и портить нарратив сторонней метаинформацией;
ну и сладенькое - аудит спотлайта: простенькая и понятная таблица, которая показывает, кто слишком долго сидит в тени.
Модуль поддерживает множественные настройки и кастомизацию.
Стараюсь поддерживать модуль и активно собирать фитбек. Буду рад конструктивной критике и найденным багам.























