![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Feb 2014
Сообщений: 25
|
Здравствуйте. При скроллинге уровня в игре (эскиз игры) режит глаза, рывки, при быстром перемещении не планое отображение спрайтов. С чем это связано? С фоном, цветами, частотой кадров, не оптимизированным кодом? И как можно это исправить?
При тесте Scout CC AS - 1-3ms DisplayList Rendering - 15ms и больше Other - 1-2 ms Прикреплено 2 варианта, с жестким скроллингом и и более "слабым" ну и разница ощутима BoyV1.swf BoyV2.swf |
|
|||||
|
По поводу кода сказать ничего не могу, НО на мой взгляд лагает (да, именно от этого такой жесткий скроллинг) по следующим причинам:
1) Низкий фпс самой флешки, возможно он вообще выставлен 12 или 24 кадра, ставь 32. 2) Векторная графика - лажа жутка. Используй casheAsBitmap у мувиков. Ещё могу сказать, что я в последнее время делаю так: Пишу редактор уровней для игры. Беру готовый(обычно) тайлсет с блоками для уровня. И отрисовываю весь уровень в битмапки, так и лагов меньше и уровни красивее. Выглядит у меня всё это дело примерно так: Сам тайлсет (либо рисую сам, либо беру готовый). ![]() Нарисованный мною уровень, на основе тайлсета. ![]() |
|
|||||
|
Регистрация: Feb 2014
Сообщений: 25
|
Флешка 24 кадра.
Где можно почитать про тайлсет с нуля с примером? так как слышу впервые |
|
|||||
|
Где конкретно взять инфу не знаю, т.к. сам всё можно сказать придумал. Никакой информации сам нигде не брал, могу лишь рассказать то, что знаю сам. То как я сам вижу эту можно сказать технологию, возможно моё видение ситуации расходится с другими. Итак:
1) Тайлсет - это обычно цельная .PNG картинка на которой нарисованы все графические элементы уровня. 2) Каждый блок это квадрат обычно размером 32х32, следовательно тайлсет это просто сетка из таких квадратов. 3) Никаких сторонних фреймворков я не использовал и поэтому написал свой велосипед, который работает по следующему принципу - загружает готовый тайлсет(.PNG картинка) в битмапку. Далее мы выделяем нужную область из этой битматки и через copyPixels() копируем эту область в битмапку кисти. Затем русуем т.е. копируем данную битмапку кисти в битмап уровня. 4) Естественно, такой уровень должен сохраняться в особом формате, я назвал его .CMP(Caesar MaP, название движка + map), и записал туда данные уровня. Сам уровень хранится в виде двухмерного массива, в котором записаны числа - порядковый номер блока в тайлсете. Ну как-то так, не уверен что сейчас это будет всё понятно, т.к. такой способ создания уровней не из легких, но я считаю его наиболее эффективным. |
|
|||||
|
Регистрация: Mar 2007
Сообщений: 319
|
почему фпс 24 или 32, у тебя что вместо монитора аналоговый телевизор, у тебя монитор с частотой кадровой развёртки 60Гц, ну вот и ставь фреймрейт кратный 60: 120, 60, 30, 15
|
|
|||||
|
Регистрация: Feb 2014
Сообщений: 25
|
Поменял частоту кадров на 30. Также закэшировал мувики
Измерения происходили в Adobe Scout CC, первый результат флешки без кэширования, второй результат для флешки с закешироваными неанемироваными мувиками(мувики с статичной землей) За 25 сек флеша. Средний FPS: 30 с 30 / 30.1 c 30 Average Frame Time: 33ms / 33ms Active: 13 = 39% of budget 33 / 10 = 31% of budget 33 ActionScript: 1ms / 3 ms DisplayList Rendering: 10ms / 6ms Other: 2ms / 2ms Used Memory 19 233KB / 21861KB ActionScript Object: 2647KB / 4360KB Bitmap: 3164KB / 3443 KB SWF Files: 31 KB / 31 KB Other: 13391 KB / 14027KB CPU Usage: 62% (peak 148%) / 38%(peak 93%) По результатам теста могу сказать, что нагрузка на процессор действительно существенно уменьшилась, при 24 кадрах эта разница еще больше...Картинка стала легче восприниматься глазами, но все равно есть толи подергивания, не плавность или хз что. Что скажите и как еще можно это исправить? Ресурсов компа по тестах вродь с запасом |
|
|||||
|
Есть как вариант сделать камеру которая будет отрисовывать игровой мир в битмапку, а не просто карту двигать. Ещё вроде если двигать root вместо спрайта с уровнем, то тоже будет тормозов меньше, но я настоятельно НЕ рекомендую двигать root.
Добавлено через 2 часа 50 минут Ну и просто ещё как вариант колоссальной оптимизации, которым ты уж точно не захочешь заниматься - это: 1) Создание своего собственно движка или взятие готового (nape, box2d), где физические тела представлены лишь "набором чисел" и не имеют изначально какого-либо графического представления. 2) Отрисовывание статического мира в битмапку, эту битмапку режем на сектора и кидаем каждый сектор в массив. 3) Показываем только те сектора которые находят в поле зрения камеры, при этом перебираем не весь массив, а формируем уже готовые индексы на основе координат камеры. Достоинства: [+] Можно создать большой мир с минимальными лагами. Отстоинства: [-] Что бы создать анимированные объекты заднего фона придется повозиться. |
|
|||||
|
.
|
Я потратил очень много времени на выяснение этого вопроса. Безрезультатно. То есть мне не удалось добиться плавного скроллинга фона. Сейчас занимаюсь исключительно Stage3D, в нем таких проблем нет. У него есть другие проблемы. Но скроллит на ура.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 14:05. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|