Б@ги в Зазеркалье: как мы дебажили "Там чудеса
Нам на стол упал артефакт — игра "Там чудеса". С виду — сказочная головоломка. Под капотом — четыре независимых модуля, каждый со своим протоколом. И, конечно, каждый со своим набором багов, которые мешали честным геймерам... то есть, нам... получать удовольствие.

Инженерный отдел получил задачу: "не пойму как играть, что нужно делать?". Классика. Пользователь не видит очевидного. Значит, интерфейс — враг. Пришлось вскрывать код и разбираться с каждым модулем по отдельности. Кавалерийский наскок — наш метод.
Модуль 1: "Ведьмин лес" (Протокол swap)
Старый добрый match-3. Здесь все было просто. Нашли два соседних элемента, поменяли местами. Если три в ряд — segmentation fault для них, и они исчезают. Процессор Watcom C/C++ в моей старой рабочей станции 1998 года и то справлялся с таким. Этот модуль был стабилен.
Модуль 2: "Кощеево золото" (Протокол blast)
А вот здесь начались чудеса. Протокол blast предполагал уничтожение групп из 3+ одинаковых фишек. Пользователь жал на них, а они — ноль реакции. Оказалось, обработчик кликов уходил в астрал.
Наш фикс: Мы перехватили управление потоками и направили их в нужное русло. Теперь инструкция для пользователя звучит так: "Нажимайте на группы из 3-х или более одинаковых фишек, чтобы убрать их с поля". Просто, как запуск defrag на диске C:.
Модуль 3: "По щучьему веленью" (Протокол link)
Этот модуль был самым хитрым. Нужно было соединять фишки линией. Пользователь водил пальцем по экрану, а система не регистрировала путь. Input/Output error.
Наш фикс: Пришлось лезть в самый низкоуровневый драйвер тачскрина. Мы пропатчили его, чтобы он корректно строил векторы движения. Теперь пользователь может "провести пальцем или мышкой от одной фишки к другой", и система его поймет. Как будто воткнули сопроцессор от Cray в старый "Электронмаш".
Модуль 4: "Жар-птица" (Протокол bubble)
Классический bubble shooter. Здесь даже пользователь не жаловался, но мы заметили, что стили для пузырьков не прогружались. Графический артефакт. Непорядок. Добавили недостающие CSS. Теперь все красиво.
Итог
Система "Там чудеса" была дестабилизирована. Мы ее стабилизировали. Теперь каждый модуль работает как часы. Играйте, инженеры. И помните: если что-то не работает, скорее всего, это не вы дурак, а просто где-то засел баг, который ждет, чтобы его "отладили".