Решения и байки из практики
Короткие заметки о задачах, на которые я натыкался, и о том, как я их решал. Больше заметок — в моём Telegram-канале Киндексация.
- 2025–2026
Как я начал делать TaleCheck
Десять лет пишу книгу, не нашёл редактора и бета-ридеров — и попросил Claude быть злым полицейским. Из этого вырос линтер для прозы.
- 2023
Таракан, который устаёт: биология гонки
АТФ, кислород и лактат вместо параметра «скорость» — и админка-симулятор для баланса.
- 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, полная переделка и игра, которая обошла наш флагман за малую долю его стоимости.
- 2013
BotWars: пусть игра тестирует себя сама, пока все спят
Тестовая сцена, где боты всю ночь спавнились и убивали друг друга, — и баги, которые вручную не поймать никогда.
- 2013
Конфиги для геймдизайнера: месяц, который превратил тестера в левел-дизайнера
Как я переделал конфиги Steam Defense под геймдизайнера, а сценарии писали настоящим кодом.
- 2013
Кнопка GG: все пушат в main, а кнопка орёт
Физическая кнопка, которая кричала, когда кто-то ломал сборку, — и что работа в одной ветке давала маленькой команде и чего стоила.
- 2013
Сначала измерь: как Steam Defense заработал на iPhone
Сильнее всего FPS проседал на айфонах. Решение нашлось не в логике игры, а в шейдерах, прозрачности — и иконке гранаты в Full HD.
- 2013
Движок под механику, которая никому не понадобилась
Движок Steam Defense построили вокруг разветвлённых путей ещё до того, как геймдизайн устоялся. Игроки ими не пользовались, а граф остался в ядре и мешал всему.
- 2013
Молча записывай критику
Независимые тестеры разнесли наш туториал. Мы перестали его защищать и переделали.
- 2011–2021
Сначала то, что можно потрогать
Карточная игра, где партнёры начали с регистрации, Spell Defense, MVP Steam Defense за десять дней и Roach Racing, где вместо ролика для инвесторов получился настоящий прототип, который дорос до продакшена.
- 2006
muo.lv: двенадцать лет с игрой, к исходникам которой у меня не было доступа
Частный сервер MuOnline, выросший в полноценный продукт: рынок, экономика, платежи, свой античит, прокси с фильтрацией пакетов, автоматизация серверов и бот, проводивший ивенты.
- 2004
15 компьютеров за ночь: диски вместо Norton Ghost
Нужно было склонировать одну машину на 15, а Ghost по сети не успевал. Мы стали переставлять жёсткие диски руками — и в 9 утра нового семестра всё ещё их меняли.
- 2003
Послушал лекцию чемпиона — и выиграл с битовой маской на 2 МБ
Турнир, где программы играют друг с другом, лекция про минимакс и заранее посчитанная таблица на 16 миллионов позиций.
- 2002
Задача про скобки: зачем доделывать тренировки до конца
На Латвийской олимпиаде 2002 года я единственный решил две задачи на 100 баллов. Одну из них мы почти в том же виде разбирали на тренировке — а до конца её довёл только я.
- 2002
«Лучший алгоритм на свете»: бинарный поиск и золото IOI
Мой тренер настаивал, что один алгоритм — лучший из всех. На IOI 2002 одна задача требовала его снова и снова — по одной оси, по другой — и принесла мне 100 баллов.
- 2002
Меня не брали на олимпиады — а потом я выиграл золото IOI
От попыток пробраться в школьный компьютерный класс до 18-го места на Международной олимпиаде по информатике — после весны, проведённой дома за олимпиадами прошлых лет.
- 2002
Сначала проблема, потом инструмент: как я учил программированию
Первое занятие: материал на 60 минут за 40. Потом — метод, проверка понимания поднятыми руками и ночные LAN-party, где встречались олимпиадники, студенты, преподаватели и музыканты.
- 2002
«Золотая ручка» Рижской думы: 14 лучших предметов
Условие премии было «120 баллов по 14 предметам плюс олимпиады». Я посчитал свой табель и нашёл в правилах то, чего никто не заметил. А ручку, которую вручают любимому учителю, отдал не школе.
- 2001
Doom RF: подарок на день рождения за две недели — и за год
Дефматч на Pascal для четырёх игроков за одним компьютером, трюк с переключением банков против 64-килобайтного окна видеопамяти и причина, по которой я люблю начинать проекты 28 февраля.
- 2001
Как учитель не смог закрыть мою игру
Учитель сгоняет меня с компьютера и не может выйти из игры: не работают ни Escape, ни Ctrl+Alt+Del. А мы с другом просто поменяли клавиатуры местами.
- 2000–2002
Как мы узнали новый пароль на интернет
Один преподаватель назвал старый пароль, другой сказал, что новый — это старый с символами в конце.
- 2000
Как я попал в Progmeistars: списки, которые врали
Друг сказал, что меня нет в списках, а через неделю мне позвонили и спросили, почему я не пришёл на второй тур. Потом были for вместо while, пятый семестр вместо второго и «элитная» олимпиадная группа.
- 2000
Space War 2K: один движок — три игры, в 2000 году
Один exe-файл, который становился космической стрелялкой, танчиками с видом сверху или клоном Worms в зависимости от папки, — и видеоплеер на Паскале.
- 1999
Откуда взялся «KindeX»
Ошибка компилятора Pascal, которая стала моим ником на следующие 27 лет.
- 1999
Space War: как два кораблика научили меня тригонометрии
Чужие исходники, синусы и косинусы, до которых я дошёл сам, и первая игра, которая действительно понравилась людям.
- 1998–2002
Пачка дискет и жёсткий диск под мышкой
Как мы носили друг другу игры и фильмы: сначала на дискетах, архивами ровно под размер дискеты, потом прямо на жёстких дисках. И как Half-Life на компьютерных курсах лишил всех дара речи.
- 1998–2002
Школьная информатика: корзина, папки с точкой и шестнадцатый компьютер
Экзамен «по Windows», где восстановить файл надо было только через корзину, игры в папках с точкой и командная олимпиада в Угале, после которой у школы стало 16 компьютеров.
- 1998–2002
Stirting MS-DOS: мои компьютерные шутки
Мышь, которая раз в десять секунд сдвигается на пиксель, «Stirting MS-DOS» при загрузке и Windows, которая сразу после включения сообщает, что компьютер можно выключить.