Решения и байки из практики
Короткие заметки о задачах, на которые я натыкался, и о том, как я их решал. Больше заметок — в моём Telegram-канале Киндексация.
- 2019
Баланс игры, когда предметы нельзя пропатчить
В блокчейн-игре выпущенные ассеты остаются навсегда. Первый сезон завалил экономику предметами — и чинить пришлось новой механикой, а не патчем.
- 2019
Три DDoS-атаки, одно письмо с выкупом в $200 — и почему мы заплатили Cloudflare
Blockchain Cuties атаковали в июне 2019-го, шантажировали в сентябре и снова ударили в 2020-м. Мы ни разу не заплатили — и каждый раз защита становилась сильнее.
- 2018
Дебаг продакшена на скорости 130 км/ч
Прод сломался, команда застряла, а я ехал на машине через Польшу. Ноутбук, туннель через рабочий компьютер — и запрос, который выполнялся слишком много раз.
- 2018
Как мы делили игру между блокчейном и сервером: подписи, «водяная отметка» и плагины
Как в Blockchain Cuties NFT остались в блокчейне, а всё остальное ушло в базу — с одноразовыми подписями, «минимальным sign ID», который не давал памяти контракта расти, и плагинами вместо прокси-апгрейдов.
- 2017
Платформенный риск: когда бесплатный трафик заканчивается за ночь
Наш издатель жил на бесплатном трафике из Google Play. Потом Google поменял правила.
- 2016
От нескольких дней до пары часов: клонирование скина в Unity через замену GUID
Рескин match-3 занимал дни ручной работы и всё равно ломался. Один скрипт редактора, переписывающий GUID в .meta-файлах, превратил это в пару часов.
- 2015
Найм джуниоров через митап и экскурсию по офису
Как группа геймдев-колледжа стала источником людей для нашей контент-команды.
- 2015
Настройка сложности match-3 одним числом: винрейт
Пилообразная кривая сложности, винрейт как единица измерения и данные с прода, которые подсказывали нужное число ходов для каждого уровня — без новых плейтестов.
- 2015
Чек-лист онбординга, где у каждой строки есть ответственный
Двое новичков с одним именем в один день — и чек-лист, после которого приём на работу стал скучным, в хорошем смысле.
- 2014
Редактор уровней, в котором рисуешь, — и спор о том, как «почувствовать» игру
Как купленный префаб превратился в match-3 редактор с палитрой и кнопкой «Играть», и почему геймдизайнеру не нужна финальная графика, чтобы сделать играбельный уровень.
- 2014
Один движок, много игр: как маленькая студия выпустила 160+ игр
Семь жанровых движков, одно общее ядро и новая игра за две недели.
- 2014
Ассет за $100, который мы переписали целиком, — и он окупился
Шаблон match-3 из Unity Asset Store, полная переделка и игра, которая обошла наш флагман за $150k.
- 2013
Конфиги для геймдизайнера: месяц, который превратил тестера в левел-дизайнера
Как я переделал конфиги Steam Defense под геймдизайнера, а сценарии писали настоящим кодом.
- 2013
BotWars: пусть игра тестирует себя сама, пока все спят
Тестовая сцена, где боты всю ночь спавнились и убивали друг друга, — и баги, которые вручную не поймать никогда.
- 2013
Кнопка GG: все пушат в main, а кнопка орёт
Физическая кнопка, которая кричала, когда кто-то ломал сборку, — и что работа в одной ветке давала маленькой команде и чего стоила.
- 2013
Сначала измерь: как Steam Defense заработал на iPhone
Сильнее всего FPS проседал на айфонах. Решение нашлось не в логике игры, а в шейдерах, прозрачности — и иконке гранаты в Full HD.
- 2013
Движок под механику, которая никому не понадобилась
Движок Steam Defense построили вокруг разветвлённых путей ещё до того, как геймдизайн устоялся. Игроки ими не пользовались, а граф остался в ядре и мешал всему.
- 2013
Молча записывай критику
Независимые тестеры разнесли наш туториал. Мы перестали его защищать и переделали.
- 2006
muo.lv: двенадцать лет с игрой, к исходникам которой у меня не было доступа
Частный сервер MuOnline, выросший в полноценный продукт: рынок, экономика, платежи, свой античит, прокси с фильтрацией пакетов, автоматизация серверов и бот, проводивший ивенты.
- 2003
Послушал лекцию чемпиона — и выиграл с битовой маской на 2 МБ
Турнир, где программы играют друг с другом, лекция про минимакс и заранее посчитанная таблица на 16 миллионов позиций.
- 2002
«Лучший алгоритм на свете»: бинарный поиск и золото IOI
Мой тренер настаивал, что один алгоритм — лучший из всех. На IOI 2002 одна задача требовала его снова и снова — по одной оси, по другой — и принесла мне 100 баллов.
- 2001
Doom RF: подарок на день рождения за две недели — и за год
Дефматч на Pascal для четырёх игроков за одним компьютером, трюк с переключением банков против 64-килобайтного окна видеопамяти и причина, по которой я люблю начинать проекты 28 февраля.
- 2000
Space War 2K: один движок — три игры, в 2000 году
Один exe-файл, который становился космической стрелялкой, танчиками с видом сверху или клоном Worms в зависимости от папки, — и видеоплеер на Паскале.
- 1999
Откуда взялся «KindeX»
Ошибка компилятора Pascal, которая стала моим ником на следующие 27 лет.
- 1999
Space War: как два кораблика научили меня тригонометрии
Чужие исходники, синусы и косинусы, до которых я дошёл сам, и первая игра, которая действительно понравилась людям.