Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
articles_optimisation_howtooptimise [2024/05/11 16:58] – admin | articles_optimisation_howtooptimise [2024/05/11 17:24] (текущий) – admin |
---|
* Если вы загружаете изображение меньшего размера и масштабируете его во время выполнения, оно использует объем памяти как меньший размер (по крайней мере, мне так сказали). Таким образом, изображение размером 100×100, масштабированное до 400×400, по-прежнему будет использовать тот же объем оперативной памяти, что и изображение размером 100×100 пикселей. | * Если вы загружаете изображение меньшего размера и масштабируете его во время выполнения, оно использует объем памяти как меньший размер (по крайней мере, мне так сказали). Таким образом, изображение размером 100×100, масштабированное до 400×400, по-прежнему будет использовать тот же объем оперативной памяти, что и изображение размером 100×100 пикселей. |
* Если изображение действительно большое, подумайте, можно ли его разбить на более мелкие части. Например, если у вас длинное фоновое изображение, можете ли вы разрезать его на несколько частей, соответствующих лучшим степеням 2? Это сэкономит много памяти | * Если изображение действительно большое, подумайте, можно ли его разбить на более мелкие части. Например, если у вас длинное фоновое изображение, можете ли вы разрезать его на несколько частей, соответствующих лучшим степеням 2? Это сэкономит много памяти |
* Альфа-каналы истощают память, как вампир. Используйте трансп. Цвет в редакторе анимации. | * Альфа-каналы истощают память, как вампир. Используйте прозрачность в редакторе спрайта. |
| |
===== Оптимизация вашего кода с помощью активных/неактивных групп ===== | ===== Оптимизация вашего кода с помощью активных/неактивных групп ===== |
* Посмотрите на свой код и спросите себя, могу ли я оптимизировать его еще больше, разделив код на более неактивные группы? Например, вы можете объединить все движения клавиатуры в одну группу, которая активируется при нажатии любой клавиши, но было бы лучше, если бы у вас была одна основная группа для движений клавиатуры, которая активируется при нажатии клавиши, а затем несколько подгрупп, которые активируются отдельно для каждое отдельное нажатие клавиши, например, влево, вправо, вверх, вниз | * Посмотрите на свой код и спросите себя, могу ли я оптимизировать его еще больше, разделив код на более неактивные группы? Например, вы можете объединить все движения клавиатуры в одну группу, которая активируется при нажатии любой клавиши, но было бы лучше, если бы у вас была одна основная группа для движений клавиатуры, которая активируется при нажатии клавиши, а затем несколько подгрупп, которые активируются отдельно для каждое отдельное нажатие клавиши, например, влево, вправо, вверх, вниз |
| |
| ===== Контроль событий ===== |
| |
| * Используйте условия, чтобы ограничить область действия. например, проверив, что «количество объектов больше 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. |
| |
| ===== Рукописный ввод ===== |
| |
| Эффекты рукописного ввода могут сильно замедлять работу, особенно в мобильных или веб-играх. |