Прежде чем читать эту статью, полезно понять, что мы имеем в виду, когда используем слово «оптимизировать». Оптимизировать игру — значит убедиться, что она работает с максимально возможной производительностью. Есть несколько ключевых областей, которые повлияют на это больше, чем другие:
Когда ваша игра запускается, она настроена на работу с постоянной частотой кадров, например 60 кадров в секунду. Это означает, что ваша игра будет пытаться обработать все, что вы ей сказали, 60 раз в секунду. Мы хотим ограничить объем операций, которые компьютер должен выполнять за каждый кадр, за каждую секунду, что, в свою очередь, ускорит вашу игру. В этом руководстве будет рассмотрен этот процесс.
По моему опыту, активные объекты и графика обычно являются основной причиной медленной работы игр Fusion. Создание объектов во время выполнения — сложная задача, требующая много памяти. Чем больше объектов вы создаете одновременно, тем больше памяти вы используете. Чем больше объекты, тем больше памяти вы используете.
Очень хорошее решение — создать пул объектов, которые вы хотите использовать повторно. Например, предположим, что вы хотите создать эффект частиц фейерверка. Вы создаете необходимое количество частиц в начале уровня, а затем, когда вам нужно их использовать, вы перемещаете их положение, чтобы использовать их, вместо того, чтобы создавать новые объекты частиц.
Каждый раз, когда вы создаете объекты или частицы во время выполнения, особенно большое количество объектов, подумайте, не лучше ли предварительно создать их в начале уровня за кадром, чтобы использовать их позже. В какой-то момент может возникнуть компромисс между количеством объектов, находящихся за кадром, поскольку каждый объект использует память. Это будет индивидуальный сценарий, который вам, возможно, придется протестировать.
Помните, что во время запуска игры устройство пытается прочитать и вычислить каждую строку кода 60 раз в секунду. Теперь количество строк кода не обязательно так важно, как то, что делает код. Одна из самых больших затрат на компьютеры — это выполнение вычислений, таких как проверка столкновений, выполнение циклов, расчет физики и т. д. Ограничивая количество вычислений, которые компьютер должен выполнять за кадр в секунду, вам потребуется компьютер. делать меньше, что ускоряет вашу игру. Самый простой способ сделать это — деактивировать группы, которые не нужны в данный конкретный момент времени.
Код внутри неактивных групп не будет читаться во время выполнения, пока они не станут активными, что ускоряет вашу игру. Чем больше кода вы можете деактивировать, когда он не используется, тем меньше вычислений компьютер должен выполнять каждую секунду.
+ Другое условие («Активный ») +Другое условие («Активное») «Если количество {частиц} больше 0 > выполните это» условие. В противном случае Fusion может тратить много времени на проверку памяти, когда в этом нет необходимости.сравнениеNumberOfObjects
Будьте осторожны с использованием события Always. Всегда означает, что Fusion пытается запускать эту строку кода каждый кадр, каждую секунду, поэтому при частоте 50 кадров в секунду эта строка кода выполняется 50 раз в секунду. Если вам нужно его использовать, ничего страшного, просто знайте, как он себя ведет, и убедитесь, что это лучший способ достичь результата.
Избегайте условий перекрытия, поскольку они используют больше памяти, чем обнаружение прямых столкновений.
Чем больше размер файлов ресурсов, например музыкальных файлов, тем медленнее будет работать игра, поскольку ей приходится хранить их в памяти. Чтобы использовать MP3, вам, возможно, придется заплатить лицензионные отчисления, но вы можете преобразовать WAV в файл OGG с помощью бесплатной программы Audacity. OGG бесплатны и намного меньше WAV. Вы сможете использовать их на Android или iOS, а также на ПК.
Fastloops может съедать много памяти и замедлять мобильные или Flash-игры (по крайней мере, так было раньше, сейчас якобы стало лучше). Лучше всего использовать альтернативные решения, где это возможно. Хорошей альтернативой движению платформы движениям fastloop является объект PMO. Одной из альтернатив является цикл «Для каждого». Это намного быстрее, чем fastloops. Если вы не можете использовать цикл «Для каждого», попробуйте вообще не использовать циклы. Будьте изобретательны: почти всегда есть решение.
Именно команда «On Loop» вызывает замедление. Вы можете уменьшить замедление, поместив все условия «В цикле» внутри неактивной группы и активируя группы только при запуске быстрых циклов, а затем деактивируя их, когда они снова не используются. Когда считывается условие «В цикле», Fusion проверит все остальные условия и события «В цикле» в вашей игре, прежде чем запускать цикл или делать что-либо еще. И это происходит для каждой команды «В цикле». Помещая их в неактивные группы, Fusion не будет читать их, пока они не понадобятся, поскольку Fusion не будет ничего читать внутри неактивной группы.
Обычно активные объекты или счетчики размещаются за пределами экрана для хранения переменных. Если вы сделаете их невидимыми, сняв флажок «Видимые при запуске», вы будете использовать меньше памяти.
Текст, как и строки и текстовый объект, может привести к замедлению работы, если он регулярно изменяется или обновляется во время выполнения. Если они не меняются, то с ними все в порядке. Вместо этого используйте растровые счетчики, где это возможно, поскольку они намного быстрее — растровые изображения, как в изображениях, например, стандартный объект-счетчик 0–9.
Эффекты рукописного ввода могут сильно замедлять работу, особенно в мобильных или веб-играх.