← Все истории
2013

Сначала измерь: как Steam Defense заработал на iPhone

Когда Steam Defense начал тормозить, первым подозреваемым был AI — десятки юнитов, каждый принимает решения. Прежде чем трогать код, я сделал бенчмарк. Сильнее всего FPS проседал на айфонах, и узким местом оказался вовсе не AI, а то, сколько пикселей видеокарте приходилось рисовать снова и снова сквозь полупрозрачные объекты.

Была и забавная сторона: моя игра вешала мой же телефон, и только через месяц я нашёл причину — слишком много полупрозрачных полигонов.

Ранняя сборка Steam Defense со счётчиком FPS

Ранняя сборка Steam Defense со счётчиком FPS на экране (у правого края).

Шейдеры. Я перебрал их и пришёл к тому, что для обычных объектов нам хватает простого Unlit-шейдера, а для полупрозрачных — Cutout: пиксель либо полностью прозрачный, либо нет. Стандартный диффузный шейдер Unity с настоящей прозрачностью нам был не нужен. Геймдизайнеру я сказал жёстко ограничивать даже Cutout: это всё равно лишние вычисления на каждый пиксель.

Размер сборки. Параллельно я посмотрел топ самых тяжёлых картинок в билде. На первом месте была граната: иконка в инвентаре, которая показывается размером 30–50 пикселей, лежала в Full HD. Я всё пережал и объяснил команде, как готовить графику. А потом мы сделали докачку: в сборке только то, что нужно для первых двух уровней, остальное приходит пакетами.

Урок: сначала измерь, потом оптимизируй. Тормозит обычно не то, за что вы переживаете, — а самые большие выигрыши часто скучные: правильный шейдер и правильный размер картинки.