Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
articles_optimisation_howtooptimise [2024/05/11 13:00] – admin | articles_optimisation_howtooptimise [2024/05/11 17:24] (текущий) – admin |
---|
====== Как оптимизировать вашу игру? Основные способы. ====== | ====== Как оптимизировать вашу игру Clickteam Fusion 2.5? Основные способы. ====== |
| |
===== Понимание оптимизации ===== | ===== Понимание оптимизации ===== |
Каждый раз, когда вы создаете объекты или частицы во время выполнения, особенно большое количество объектов, подумайте, не лучше ли предварительно создать их в начале уровня за кадром, чтобы использовать их позже. В какой-то момент может возникнуть компромисс между количеством объектов, находящихся за кадром, поскольку каждый объект использует память. Это будет индивидуальный сценарий, который вам, возможно, придется протестировать. | Каждый раз, когда вы создаете объекты или частицы во время выполнения, особенно большое количество объектов, подумайте, не лучше ли предварительно создать их в начале уровня за кадром, чтобы использовать их позже. В какой-то момент может возникнуть компромисс между количеством объектов, находящихся за кадром, поскольку каждый объект использует память. Это будет индивидуальный сценарий, который вам, возможно, придется протестировать. |
| |
| ===== Активные объекты ===== |
| |
| * Одновременно на экране может быть не более 20 000 объектов. |
| * Каждый объект использует память. Чем больше у вас объектов, тем больше памяти потребуется. |
| * Легко забыть, сколько объектов создается с помощью события, например. Если значение A = 1, создайте объект. Если вы не сообщите событию, чтобы оно прекратило создавать новые объекты после создания первого, оно может очень легко начать создавать 60 объектов каждую секунду. Проверьте наличие подобных мелочей. |
| * Не забудьте удалить неиспользуемые объекты, если только они не будут использоваться повторно. |
| |
| ===== Разрешение ===== |
| |
| * Лучше всего сделать игру с минимально возможным разрешением и позволить Fusion масштабировать игру во время выполнения. |
| * Если вы разработали графику с разрешением 270 x 480, но хотите, чтобы игра работала в формате Full HD, создайте игру с разрешением 270 x 480 и позвольте Fusion масштабировать ее во время выполнения. |
| * Мои игры значительно масштабируются во время выполнения без потери качества. |
| |
| ===== Изображения ===== |
| |
| * Обрезайте изображения ненужного прозрачного пространства. Прозрачные области используют память, даже если в них нет графики. |
| * Используйте изображения с размерами в степени 2 , например, 2, 4, 8, 16 и т. д. Программа рисует невидимые рамки вокруг объектов в степени, кратной 2 – если изображение имеет размер 9 пикселей, будет рамка размером 16 пикселей. , трата памяти |
| * Если изображение большое, сплошного цвета, вы можете оптимизировать его, создав минимально возможный размер в соответствии с правилом степени двойки, а затем увеличить его во время выполнения в редакторе событий. Это может сэкономить много памяти |
| * Чем больше объект (в пикселях), тем больше памяти (ОЗУ) он использует. |
| * Если вы загружаете изображение меньшего размера и масштабируете его во время выполнения, оно использует объем памяти как меньший размер (по крайней мере, мне так сказали). Таким образом, изображение размером 100×100, масштабированное до 400×400, по-прежнему будет использовать тот же объем оперативной памяти, что и изображение размером 100×100 пикселей. |
| * Если изображение действительно большое, подумайте, можно ли его разбить на более мелкие части. Например, если у вас длинное фоновое изображение, можете ли вы разрезать его на несколько частей, соответствующих лучшим степеням 2? Это сэкономит много памяти |
| * Альфа-каналы истощают память, как вампир. Используйте прозрачность в редакторе спрайта. |
| |
| ===== Оптимизация вашего кода с помощью активных/неактивных групп ===== |
| |
| Помните, что во время запуска игры устройство пытается прочитать и вычислить каждую строку кода 60 раз в секунду. Теперь количество строк кода не обязательно так важно, как то, что делает код. Одна из самых больших затрат на компьютеры — это выполнение вычислений, таких как проверка столкновений, выполнение циклов, расчет физики и т. д. Ограничивая количество вычислений, которые компьютер должен выполнять за кадр в секунду, вам потребуется компьютер. делать меньше, что ускоряет вашу игру. Самый простой способ сделать это — деактивировать группы, которые не нужны в данный конкретный момент времени. |
| |
| Код внутри неактивных групп не будет читаться во время выполнения, пока они не станут активными, что ускоряет вашу игру. Чем больше кода вы можете деактивировать, когда он не используется, тем меньше вычислений компьютер должен выполнять каждую секунду. |
| |
| * Подумайте, какое событие должно активировать группу, например, нажатие клавиши – часто чем больше событий вы можете поместить в неактивную группу, тем лучше. |
| * Деактивация группы моментов игрока до тех пор, пока вы не нажмете клавишу, является хорошим способом ограничения кода. Поскольку игрок не будет двигаться, если вы не нажимаете клавишу, компьютеру не нужно проверять эти строки кода, что ускоряет вашу игру теперь, когда в этом нет необходимости. |
| * Деактивируйте группу, как только она не используется. Большую часть времени я помещаю событие внизу группы с надписью «При активации группы > Деактивировать эту группу», но в группе движений клавиатуры я деактивировал ее при отпускании клавиши. |
| * Посмотрите на свой код и спросите себя, могу ли я оптимизировать его еще больше, разделив код на более неактивные группы? Например, вы можете объединить все движения клавиатуры в одну группу, которая активируется при нажатии любой клавиши, но было бы лучше, если бы у вас была одна основная группа для движений клавиатуры, которая активируется при нажатии клавиши, а затем несколько подгрупп, которые активируются отдельно для каждое отдельное нажатие клавиши, например, влево, вправо, вверх, вниз |
| |
| ===== Контроль событий ===== |
| |
| * Используйте условия, чтобы ограничить область действия. например, проверив, что «количество объектов больше 0» при определении области действия, это останавливает проверку других условий, если этот конкретный объект отсутствует: « Количество («Активных»)>0″ |
| + Другое условие («Активный ») |
| +Другое условие («Активное») «Если количество {частиц} больше 0 > выполните это» условие. В противном случае Fusion может тратить много времени на проверку памяти, когда в этом нет необходимости.сравнениеNumberOfObjects |
| * По возможности избегайте таймера. Если игра лагает, таймеры усугубляют проблему. Вместо этого создайте собственные таймеры с переменными. |
| |
| ===== Событие «Всегда» ===== |
| |
| Будьте осторожны с использованием события Always. Всегда означает, что Fusion пытается запускать эту строку кода каждый кадр, каждую секунду, поэтому при частоте 50 кадров в секунду эта строка кода выполняется 50 раз в секунду. Если вам нужно его использовать, ничего страшного, просто знайте, как он себя ведет, и убедитесь, что это лучший способ достичь результата. |
| |
| ===== Столкновения ===== |
| |
| Избегайте условий перекрытия, поскольку они используют больше памяти, чем обнаружение прямых столкновений. |
| |
| ===== Звуки ===== |
| |
| Чем больше размер файлов ресурсов, например музыкальных файлов, тем медленнее будет работать игра, поскольку ей приходится хранить их в памяти. Чтобы использовать MP3, вам, возможно, придется заплатить лицензионные отчисления, но вы можете преобразовать WAV в файл OGG с помощью бесплатной программы Audacity. OGG бесплатны и намного меньше WAV. Вы сможете использовать их на Android или iOS, а также на ПК. |
| |
| ===== Альтернативы Fastloops ===== |
| |
| Fastloops может съедать много памяти и замедлять мобильные или Flash-игры (по крайней мере, так было раньше, сейчас якобы стало лучше). Лучше всего использовать альтернативные решения, где это возможно. |
| Хорошей альтернативой движению платформы движениям fastloop является объект PMO. |
| Одной из альтернатив является цикл «Для каждого». Это намного быстрее, чем fastloops. |
| Если вы не можете использовать цикл «Для каждого», попробуйте вообще не использовать циклы. Будьте изобретательны: почти всегда есть решение. |
| |
| ===== Оптимизация быстрых циклов ===== |
| |
| Именно команда «On Loop» вызывает замедление. Вы можете уменьшить замедление, поместив все условия «В цикле» внутри неактивной группы и активируя группы только при запуске быстрых циклов, а затем деактивируя их, когда они снова не используются. Когда считывается условие «В цикле», Fusion проверит все остальные условия и события «В цикле» в вашей игре, прежде чем запускать цикл или делать что-либо еще. И это происходит для каждой команды «В цикле». Помещая их в неактивные группы, Fusion не будет читать их, пока они не понадобятся, поскольку Fusion не будет ничего читать внутри неактивной группы. |
| |
| ===== Использование объектов или счетчиков для хранения переменных ===== |
| |
| Обычно активные объекты или счетчики размещаются за пределами экрана для хранения переменных. Если вы сделаете их невидимыми, сняв флажок «Видимые при запуске», вы будете использовать меньше памяти. |
| |
| ===== Текст ===== |
| |
| Текст, как и строки и текстовый объект, может привести к замедлению работы, если он регулярно изменяется или обновляется во время выполнения. Если они не меняются, то с ними все в порядке. |
| Вместо этого используйте растровые счетчики, где это возможно, поскольку они намного быстрее — растровые изображения, как в изображениях, например, стандартный объект-счетчик 0–9. |
| |
| ===== Рукописный ввод ===== |
| |
| Эффекты рукописного ввода могут сильно замедлять работу, особенно в мобильных или веб-играх. |