Советы по увеличению производительности для мобильных игр

Сообщение Советы по увеличению производительности для мобильных игр
» 10 апр 2013, 13:44

Оригинал:
https://www.scirra.com/tutorials/298/performance-tips-for-mobile-games

Итак, вы установили Construct 2 ??и, работая в нём, создали простую игру с 5-ю спрайтами и фоном, экспортировали ее в PhoneGap или appMobi, и далее вы такой:"она выдаёт 5 кадров в секунду, что за херня, С2?». У самого такое было, сам такое наблюдал, и как довольно успешный разработчик мобильных на C2, я хотел бы хотел пролить свет на это, и как заставить его работать.

Успокойтесь
(небольшое отступление - я не знаю как правильно перевести Canvas(Холст, изображение, экран?). Оставлю как есть)
С2 экспортирует игры как HTML5 Canvas. Почти каждый браузер ПК поддерживает аппаратное ускорение именуемое WebGL, который на мобильных телефонах, наоборот - не поддерживаются так широко( по сути, единственный известный мне телефон, поддерживающий WebGL - это Xperia). Разумеется, мобильные браузеры как Опера и Firefox, кажется, поддерживают WebGL, но PhoneGap приложения не используют их, они используют встроенный браузер.Так что, пока встроенные браузеры не поддерживают WebGL, Canvas на мобильных телефонах будет обрабатываться крайне медленно. Теперь давайте к этому добавим систему событий (eventing system) которую использует С2,экспортируемая как javascript. Система событий, созданная Вами на С2, обрабатывается на процессорах мобильных телефонов за секунду с такой скоростью, с которой только может, поэтому, чем больше событий, там медленнее игра будет работать. В этом легко запутаться...

Что же делать?
1)ВСЕГДА ставьте следующие параметры: Pixel rounding to On, WebGL to On, Sampling to Point, Clear Background to No и каждый слой каждого вашего уровня - transparent to Yes (за исключением особых случаев)
Pixel rounding даёт возможность процессору избегать сложных вычислений, связанных с плавающими точками, point sampling изменяет размер и вращает спрайты быстрее (только со включенным WebGL, что позволит ускорить ваше приложение в будущем), clear background выключает заполнение Canvas'а белым фоном на каждом кадре.

2)ИЗБЕГАЙТЕ большого количества спрайтов на экране
Вот вам! Более 20 спрайтов, вероятно, замедлят систему. Та же история и с большими спрайтами.

3)ИЗБЕГАЙТЕ изменения размера спрайтов и их вращение.
Такие события как: Set (width/size/scale/angle/rotate) ширина / размер / масштаб / угол / вращение (Да-да - поведение Rotate) - являются убийцами производительности.

4)ИЗБЕГАЙТЕ полупрозрачности и эффектов
Такие события как: установить прозрачность, эффект и поведение Fade (+Sine с функцией opacity) будут снижать FPS.

5)НИКОГДА не используйте force own texture на слоях
Каждый слой имеет свою собственную текстуру, которую будет отображать отдельно. Это плохо - иметь в наличии два Canvas'а(слоя?), когда один уже работает медленно.

6)НИКОГДА не используйте text object
Обрабатывание текста является крайне не эффективным. Лучше использовать spritefont plugin или textbox.

7) ИЗБЕГАЙТЕ частиц(particles)
Частицы создают большое количество спрайтов (см. 2)

8) ИЗБЕГАЙТЕ быструю анимацию
Да, необходимо уменьшить скорость анимации и не превышать скорость 10. Кроме того, имейте в виду, некоторые мобильные браузеры имеют предел загружаемых изображений, поэтому следует избегать спрайты с большим количеством кадров в анимации. Если спрайты имеют менее 100 кадров анимации - это хорошо.

9)ИЗБЕГАЙТЕ For each циклов в событиях
Для 20 спрайтов "For each" вызовет тормоза.

10) Scroll to эффективнее, чем двигать всё
Редкая ситуация, но это случилось со мной. Не нужно двигать каждый объект, если можно прокручивать ваш экран.

Изучайте кОды
Не бойтесь этого, это весело

1) Изучить немного HTML, CSS и JavaScript
По крайней мере, столько, чтобы сделать следующее изменение в вашем экспортированном HTML файе:
<style>
...
canvas, canvas * {image-rendering: optimizeSpeed}
</style>

Это будет работать на некоторых встроенных мобильных браузерах и заставит программу отметить изменение размера и вращение.

2)Наконец, не используйте PhoneGap и appMobi
Вы поплатитесь за это позже, поверьте. Экспортируйте игру как phonegap app, но тестируйте в Eclipse, Xcode, и т.д. Прежде всего, это поможет вам лучше настроить ваше приложение - добавлять иконки, непосредственно изменять приложение. Во-вторых, это позволит вам использовать PhoneGap плагины, в основном это LowLatencyAudio плагин, который является встроенным способом воспроизведения звука, в отличие от HTML звуковых элементов, которые используются в С2а. Есть много учебников по Web о том, как это сделать, я лично рекомендую учебник по PhoneGap.

Терпение, мой ученик
HTML5 игр является совершенно новой технологией, но как можно заметить, она развивается очень быстро, что подталкивает разработчиков к WebGL'у. Представьте себе, если бы в WebGL'е было мало нужды, вероятно, он был бы доступен только в бета-версии Chrome, как это было некоторое время назад. Теперь он есть в Firefox (также Firefox Mobile) и на Mobile Opera. Я считаю, что это только вопрос времени, он будет поддерживаться на большинстве (если не на всех) мобильных системах.

Веселитесь и тестируйте
Больше нечего добавить. Чем скорее вы начнёте тестировать Ваши игры, тем лучше!
Аватара пользователя

Игродел
Сообщений: 373
Я тут с 24 ноя 2012, 23:50