Понедельник, 25 Ноября 2024, 15:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Цветные полоски в режиме отладки.
AHTOXA82Дата: Пятница, 01 Ноября 2013, 20:47 | Сообщение # 1
частый гость
Сейчас нет на сайте
Здравствуйте. Хотел спросить, что означают цветные линии в верхнем левом углу режима отладки в GMS? В справке прочитал, что вроде как красная - это время на обработку шага, желтая - время на отрисовку всего в комнату, а белая как-то связана с видеокартой. Т.е. основная идея понятна, чем длиннее полоски, тем сильнее загружен комп. Но хотелось бы поподробней узнать. Если можно, приведите по 2-3 примера, которые будут сильно нагружать каждый цвет.
OverbotexДата: Суббота, 02 Ноября 2013, 06:56 | Сообщение # 2
был не раз
Сейчас нет на сайте
Цитата
Green - Input / Output
Red - Update (i.e. Step)
Yellow - Draw
Orange - Scrolling and Debug update
White - GPU left over time
Cyan - text rendering
Grey - Clear screen
Dark Red - GPU Flush


Зеленый: длительность обработки команд с устройств взаимодействия с пользователем. Клавитура, мышь, тачскрин итд. Чем больше "Keyboard" и "Mouse" эвентов вы используете одновременно в разных инстансах, тем больше нагрузка.

Красный: длительность обработки операций в "Step", "Begin Step", "End Step" эвентах. Чем больше операций и сложнее вычисления, тем больше нагрузка.

Желтый: длительность прорисовки спрайтов на виртуальном полотне в "Draw" эвенте. Чем больше спрайтов по количеству, размеру и наличию альфа-канала прорисовывается каждый шаг, тем больше нагрузка.

Оранжевый: длительность обработки и передачи отладочных данных в консоль отладки. Чем больше активных инстансов и переменных тем больше нагрузка.

Белый: неиспользованная производительность цпу. Показатель того, сколько вы еще можете нагружать "остальные полоски" на данном устройстве, и при этом не испытывать подтормаживаний и потерь кадров в секунду.

Синий: длительность отрисовки текста на виртуальном полотне. Чем больше вы используете "Draw Text", "Draw Variable" и их производные в виде кода, тем больше нагрузка.

Серый: дословный перевод - "очистка экрана". Мне доподлинно неизвестно, что ЙоЙо этим хотели представить. Могу предположить, что это показатель частоты полного изменения всех регионов виртульного полотна.

Темно Красный: длительность вывода графической информации с виртуального полотна в область видеопамяти отвечающую за рендеринг (по сути вывод на дисплей). Чем больше регионов полотна было изменено по сравнению с предыдущим кадром, тем больше нагрузка. Но это скорее актуально для мобильных устройств.


Разработчик игр "OverXDev" для Андроид. Смотрите наши проекты на Google Play.

Сообщение отредактировал Overbotex - Суббота, 02 Ноября 2013, 09:32
AHTOXA82Дата: Суббота, 02 Ноября 2013, 21:08 | Сообщение # 3
частый гость
Сейчас нет на сайте
Благодарю за ответ. Только вот эти цвета работают на студии 1.2? Просто я видел описание отладчика в справке, так там только про три цвета говориться.
Еще вопрос - что означают цифры в скобках после значения фпс? см.
Ну и логичный вопрос - если у меня в игре, например событие клавиатуры очень загружено, а событие шага нет, сэкономлю ли я на нагрузке процессора, если закину событие клавиатуры в событие шага? По логике нет, но мало ли. Не просто же так создатели гмс сделали столько много разных цветов. У меня например в программах часто событие нажатия кнопки стоит в шаге, может не стоит этого делать, а выводить отдельно в событие клавиатуры?
OverbotexДата: Суббота, 02 Ноября 2013, 23:17 | Сообщение # 4
был не раз
Сейчас нет на сайте
Да я смотрел справку на сайте ЙоЙо, там было про Студио 1.2 да и у меня в наличии только студия.

Насчет цифр:
Цитата
... and then beneath that you have the Num Tex Swaps, which shows how many times your game is swapping textures per game tick (the time it takes GameMaker:Studio to run all events is a game tick, and the number of game ticks per second is set by the room speed), and to the right of that you have the Num Vertex Batches which is how many times the game is sending off texture batches to the GPU per game tick.

Полагаю первая цифра означает, сколько было обращений к текстурным пакетам в течение одного степа. А вторая сколько собранных полотен (или регионов) было отправлено в видеопамять.

По поводу событий. ГМ поочередно выполняет однотипные события для всех инстансов. т.е все create потом все alarm0 потом все alarm1 и т.д. и в конце draw полотна. 1 игровой шаг (1 step) это полная отработка Всех эвентов. Без разницы какие эвенты нагружены, а какие нет, они все должны быть выполнены в течение шага. Но для оптимального расходования ресурсов, лучше если использовать эвенты по их прямому назначению.

Пример 1: Степ эвент...вычисляем...вычисляем...вычисляем... Клава эвент... запрашиваем...запрашиваем...запрашиваем...

Пример 2: Степ эвент...вычисляем...запрашиваем...вычисляем... Клава эвент... запрашиваем...вычисляем...запрашиваем...

Все это не слишком критично, но свои проценты дает.


Разработчик игр "OverXDev" для Андроид. Смотрите наши проекты на Google Play.
AHTOXA82Дата: Воскресенье, 03 Ноября 2013, 04:15 | Сообщение # 5
частый гость
Сейчас нет на сайте
Цитата Overbotex ()
Полагаю первая цифра означает, сколько было обращений к текстурным пакетам в течение одного степа. А вторая сколько собранных полотен (или регионов) было отправлено в видеопамять.

Тут не совсем понятно, что такое текстурные пакеты и что такое полотна? Не могли бы вы привести примеры, которые увеличивали бы первую цифру и вторую.

И еще вопрос, если можно. На моем скриншоте видно, что там отсутствует белая полоса (которая означает сколько памяти еще можно задействовать, чтобы фпс не просел). Я сейчас вспоминаю, что эту полосы я видел всего раз или два. Причем не на компьютере, а на планшете, который гораздо слабее. Почему так происходит, почему на достаточно мощном компе нет белой полосы? Вариант что он загружен по максимуму не подходит. В моем примере (тот, что на картинке во втором посте) скорость комнаты была 60, значит шаг длится ровно до белой отметки. Там еще куча свободного места.
OverbotexДата: Воскресенье, 03 Ноября 2013, 04:57 | Сообщение # 6
был не раз
Сейчас нет на сайте
Текстурные пакеты:

Графику (спрайты), которую вы используете в ГМ, в откомпилированном виде храниться не в том виде, в котором ее создавали в графическом редакторе. ГМ создает стрипы (TexturePages) размером от 256*256 до 2048*2048 (как укажите в настройках). Там будут расположены ваши спрайты от одного до... сколько уместится. Обращение к ним происходит по координатам. Например spr_hero расположен в TexturePage1 размером 2048*2048 по координатам 236*712 с шириной 128 и высотой 128.

Нагрузка: Допустим вы используете в конкретной комнате 10 спрайтов, которые расположены на разных текстурных пакетах, таким образом, ГМ нужно обратиться к каждому из них (и цифра увеличится). Или как вариант спрайты использующиеся в одной комнате расположить вместе в одном пакете. Это будет оптимальнее.

Полотна:

Полотно - это изображение размером необходимым для вывода на дисплей. Оно создается во время выполнения Draw и DrawGUI эвентов. Ваши спрайты и текст, в порядке очереди и глубины, с учетом альфа-канала накладываются друг на друга (как объединение слоев в графическом редакторе). В результате получается готовое изображение, которое отправляется в видеопамять для рендеринга.

Нагрузка: Рендеринг происходит не сразу всего изображения, по крайней мере это актуально для мобильных устройств, а по частям. Допустим изображение размером 1280*720 разбивается на 4 части размерами 640*360 и поочереди выводиться на дисплей в течение 1к/с. Увеличение этой цифры кодом невозможно, тут все зависит скорее от видео-процессора.

------------------------------------------

Насчет белой полоски, да Вы правы, я что-то напутал. Это похоже длительность простоя видео-процессора. Когда вычисления идут, а прорисовывать нечего, т.е. нет активных инстансов использующих спрайты никаких Draw и Draw GUI эвентов.


Разработчик игр "OverXDev" для Андроид. Смотрите наши проекты на Google Play.
AHTOXA82Дата: Воскресенье, 03 Ноября 2013, 07:39 | Сообщение # 7
частый гость
Сейчас нет на сайте
Ого! Сколько важнейшей информации я сейчас узнал, это важнее даже чем цвета отладчика. Поставил бы сто плюсов, если бы мог.
Однако, вопросов стало еще больше.

1) В моем примере после фпс две цифры (4) и (6). Я правильно понимаю, что 4 -то значит с четырех страниц (текстурных пакетов) считываются спрайты, а 6 - это значит, что 6 предметов (назовем их так) отрисовываются с событии драв (это могут быть фигуры, спрайты, сурфейсы)?

2) Если у меня 10 текстурных пакетов, а задействовано в данный момент 3 (т.е. спрайты, находящиеся на остальных 7 пакетах не используются в данный момент в комнате), то первая цифра будет 3?

3) Почему в пустой комнате эти цифры не равны нулям (они обе равны единицам). Я еще с грехом пополам могу понять почему первая не равна нулю (ну, вроде как текстурные страницы все равно загружаются в видеопамять, даже если они пустые), но вот что там отрисовывается в пустой-то комнате, непонятно.

4) Возникает логичный вопрос. Предположим в глобальных настройках игры мы поставили размер текстурного пакета 256x256, разместили все наши спрайты на 4-х пакетах, и у нас во время игры задействовано все 4 таких пакета. В другом случае мы поставили размер пакета 512x512, что по площади (а значит и по количеству пикселей) в 4 раза больше чем в предыдущем примере. Мы разместили все наши спрайты на одном пакете и во время игры задействован он один. Одинакова ли будет загрузка процессора?

5) В справке гмс написано, что студия нерационально использует текстурные пакеты и их надо самому создавать. А как вручную разместить спрайты на текстурных пакетах? И еще тут же. Когда я нажимаю глобальные настройки игры -> виндовс -> графика -> текстурные пакеты (посмотреть) у меня вылезает ОДИН текстурный пакет (или это не текстурный пакет?) со всеми моими спрайтами. Почему тогда в режиме отладки первая цифра равна 4?

6) И последний вопрос. В справке написано, что текстурные пакеты загружаются фонами, тайлами и спрайтами. Но вот я проверил, если выключить отрисовку сурфейса, то почему-то количество пакетов уменьшается. В справке забыли написать что сурфейсы тоже отрисовываются на пакетах или я что-то путаю? Интересно, что при попытке увеличить размер сурфейса (я его сильно увеличил) количество задействованных пакетов не поменялось.
OverbotexДата: Воскресенье, 03 Ноября 2013, 10:23 | Сообщение # 8
был не раз
Сейчас нет на сайте
1) Вообщем да. Только немного уточню второе, что если два объекта отрисовывают один и тот же спрайт цифра не изменится.

2) Вообщем да.

3) Неуверен, что именно в видеопамять, возможно и в оперативной. Кажется в настройках комнаты в разделе бекграунд, есть очистка каким-то цветом, может быть из-за этого. Или какой-то сервисный пакет с иконками и логотипами, который невозможно открыть и просмотреть.

4) Тут вот в чем дело, если ресурсы игры превышают ресурсы (например ОЗУ) устройства воспроизведения, то ГМ может и выгрузить текстурные пакеты из памяти. Так что или память или процессор. Много памяти и не очень сильный проц ставим больше размер пакета. Мало памяти и мощный проц ставим меньше размер пакета.

5)Глобальные настройки -> Группы текстур (Texture Groups), у меня это вторая вкладка. Создаем пакеты, переименовываем их по желанию, ставим галочки для каких ОС разрешать пакеты. Затем открываем спрайты, шрифты, бекграунды и там внизу в выпадающем списке выбираем имя пакета к которому нужно привязаться. По умолчанию Вы могли видеть как (Default). Так же стоит учесть, что если вы привяжете скажем 10 спрайтов в одной группе, это не значит что будет одна страница, что не уместится, перенесется на вторую и т.д., но спрайты разных групп, никогда не будут на одной странице вместе.

6) Наверное уместилось.

В большинстве своем все логично и правильно, но я не могу поручиться за 100% верность данной информации. Точно знает что есть что только YoYo Games. ГМ ведь все время обновляется, а справка потихоньку догоняет. Может они уже что-то поменяли. Некоторых возможностей, которыми я пользуюсь вообще нет в справке, нашел на их форуме.


Разработчик игр "OverXDev" для Андроид. Смотрите наши проекты на Google Play.

Сообщение отредактировал Overbotex - Воскресенье, 03 Ноября 2013, 11:12
AHTOXA82Дата: Понедельник, 04 Ноября 2013, 22:00 | Сообщение # 9
частый гость
Сейчас нет на сайте
Благодарствую за столь подробный ответ. Более-менее разобрался.
Последний вопрос. Какой размер пакета посоветуете выставить для оптимального проигрывания на андроиде? Я так понимаю, и очень маленький плохо и очень большой плохо.
OverbotexДата: Вторник, 05 Ноября 2013, 04:01 | Сообщение # 10
был не раз
Сейчас нет на сайте
Возьмите самое большое изображение, которое Вы используете в игре. И установите размер текстур следующего за ним размером.

Например самое большое изображение в Вашей игре - это бекграунд размером 854*480. Значит стоит поставить 1024*1024.

Без специального подбора и проверки каждого решения на практике, это будет самый оптимальный вариант.


Разработчик игр "OverXDev" для Андроид. Смотрите наши проекты на Google Play.
AHTOXA82Дата: Вторник, 05 Ноября 2013, 06:52 | Сообщение # 11
частый гость
Сейчас нет на сайте
А если беграунд очень большой, ну скажем 4000x4000 имеет смысл его разрезать на части?
И вот еще. В вашем примере беграунд был 854*480. Допустим мы выставили пакет 1024*1024, т.е. больший по размерам чем беграунд. Это нам гарантирует, что беграунд не будет уменьшен? Не получится ли так, что например на текстурном пакете студия разместит несколько спрайтов, а потом вздумает туда же запихнуть наш беграунд, и поскольку места для него уже не останется, ей придется его сжать в 2 или более раз?
OverbotexДата: Вторник, 05 Ноября 2013, 08:02 | Сообщение # 12
был не раз
Сейчас нет на сайте
- Ипользование таких огромных бекграундов... Не уверен как ГМ поведет себя для Windows, по крайней мере игра успешно запустилась, но при компиляции под Android он сжимает и сохраняет его в пакете как 2000*2000, только что проверил. В подобных случаях куда актуальнее использовать тайлы. Скорее всего будет лучше разрезать на части умещающиеся в пакет и использовать в комнате несколько бекграундов, смещенных по х и y.

- Да, гарантирует, если изображение умещается в пакете.

- Нет, ГМ ничего не будет сжимать. Если изображение не помещается в пакет из-за наличия других изображений в нем, тогда ГМ просто разместит его в другом пакете.


Разработчик игр "OverXDev" для Андроид. Смотрите наши проекты на Google Play.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг