в моей игре есть очень большие уровни и при нажатии на "старт" игра просто зависает и не понятно что происходит с игрой. как сделать индикатор который покажет загружается уровень или нет? Активно пользуюсь Godot Engine
Увы никак, существуют только декоративные примеры загрузчиков. Любой дурак может написать программу, которую поймёт компилятор. Хорошие программисты пишут программы, которые смогут понять другие программисты.
Дай исходник, че он там долго загружается, или это ты прикинул?) Опаснай быдло девочкалар Ийэм маҥан сирэйи төрөппүтүгэр махтанабын ^O^ мин сахабын! Отныне и поныне сейчас я няша и буду хорошим ^_^
Советы по оптимизации В данной статье вы найдете несколько советов, чтобы повысить FPS в вашей игре. Включение FPS in caption (FPS в заголовке) в свойствах поместит текущее значение FPS в заголовок окна – для полноэкранных игр придется писать свой счетчик (его описание и объяснение можно прочитать в статье про тики (ticks)). Понятие оптимизации Игры должны использовать режим V-synced(вертикальная синхронизация) в свойствах приложения. Это предотвращает разрыв, повышает качество отображения. В этом режиме, когда дисплей заканчивает рендеринг, система ждет до следующей вертикальной синхронизации монитора. Общие темпы обновления в диапазоне от 60 Гц до 85 Гц. Настройка игры в режиме Unlimited (безлимитный) позволит вам увидеть насколько быстро ваша игра может запускаться - система не ждет загрузок, работает на полную 100% мощность. Часто FPS очень высок, до нескольких сотен в секунду. В идеале ваша игра будет достигать примерно 100 fps - это означает, что она работает достаточно быстро для достижения V-Sync (верт. синхронизации) на всех мониторах. Если количество кадров падает ниже V-sync, игра начнет прерываться - разрывов не будет, но просто некоторые кадры будут пропускаться, потому что система будет еще занята проработкой последнего кадра. С хорошо сделанной игрой, геймлей будет иметь одинаковую скорость, как в режиме V-Sync(верт. синхронизация), так и в Unlimited(безлимитный). Если какие-то части вашей игры очень быстро загружаются в безлимитном режиме, прочитайте статью о таймдельта (TimeDelta), чтобы решить данную проблему, т.к. это важная часть профессионально сделанной игры. Параллельность CPU и GPU В Construct события и другие общие задачи выполняются CPU (центральным процессором) вашего компьютера. Аппаратное ускорение отображения DirectX 9 посылает команды к GPU (графическому движку), отдельному, специально созданному процессору для рендеринга. В Construct, GPU занят рендерингом предыдущего кадраб в то время как CPU запускает события и генерирует список команд для отображения следующего кадра. Важный момент, что CPU и GPU всегда работают в одно и то же время. Это означает, что время, необходимое для выполнения того или иного кадра это то, что выполняется дольше – рисование или выполнение событий. 90% игр требуется больше времени, чтобы прорисовать картинку, нежели обработать события, поэтому, как правило, сами игровые события не влияют на производительность. Частое заблуждение состоит в том, что можно улучшить FPS путем устранения лишних событий или использования разных комбинаций событий, чтобы сделать то же, но быстрее. Пока практика показывает, что это зачастую никак не влияет на увеличение FPS. Полное описание, как CPU и GPU параллельно работают и как определить, что из них быстрее, читайте статью про тики (ticks). Оптимизация рендеринга Как мы установили выше, очень важно оптимизировать рендеринг в вашей игре. Этот раздел содержит советы о том, как этого добиться. Текстуры Общее правило, говорит о том, что GPU является гораздо более эффективным в рендеринге, если рендерит одну и ту же вещь несколько раз, чем рисует разные объекты. Например, спрайты с одной и той же текстурой рисуются более быстро, если между ними нет объектов по оси Z. Construct рендерит все объекты от конца к началу. 500 объектов с одной текстурой в прилежащем Z- порядке будут рисоваться очень эффективно, но если еще 500 объектов будут чередоваться с различной текстурой (т.е. отрисовка объекта A, объекта B, объекта А, объекта B. ..) , то рендеринг окажется менее быстрым и эффективным. Это важно для эффектов частиц, особенно для частиц, которые используют разные текстуры. Самый простой способ обеспечить надлежащий Z порядок в том, чтобы поставить все объекты с одной и той же текстурой на один, их собственный слой. Текстуры и VRAM Большинство (по факту, почти все) видеокарты помещают текстуры на поверхность в памяти размером кратную двум (т.е. 32x32, 64x64, 128x128 и т.д.). Это означает, что изображения размером 257x257 запросят память под поверхность 512x512. Если текстура уменьшена до 256x256, то она сможет занять такую же ячейку 256х256, и будет использовать в 4 раза меньше памяти (512x512 = 262144 пикселей, 256x256 = 65536 пикселей). Имейте в виду, однако, что это оптимизации важна в крайних обстоятельствах, как, например, при очень больших текстурах с размером чуть выше границы, или с большим количеством текстур. Пиксельные шейдеры Использование эффектов шейдеров 2.0 Шейдеры часто нагружают GPU. Любые пиксельные шейдеры с пометкой PS 0.0 не требуют и не нуждаются в дополнительном «железе» и очень быстро обрабатываются. Использование эффектов PS 0.0 вместо PS 1.1 может улучшить быстродействие во многих случаях. Избегайте излишних эффектов Шейдеры часто влияют на эффективность, и использование шейдеров на кнопки, фон, декорации и все остальное, что является статическим, - трата времени рендеринга – потому что Construct перерисовывает весь дисплей каждый кадр независимо от того, двигалось что-либо или нет. Используйте дополнительное программное обеспечение для обработки изображений, например GIMP или Photoshop, чтобы сделать нужное изображение и поместить его в игру, не применяя какие-либо эффекты в Construct. Конечный результат будет выглядеть идентично, а проработается гораздо быстрей. В дополнение. Многие эффекты могут быть особенно интенсивными и нагруженными, особенно смазывание (blur). Постарайтесь делать его (когда возможно) не в программе. Использование слоев, чтобы оптимизировать большое количество объектов Иногда применение пиксельных шейдеров ко многим объектам может быть более эффективно, если использовать слои. Если вы применяете эффект к слою и помещаете на него все объекты, то шейдеры прорабатывают только одну большую область. Это может существенно повысить производительность: рендеринг полноэкранного блюра на 500 объектах может быть значительно быстрее, чем рендеринг 500 индивидуальных размытий по каждому на объект. Bumpmapping vs. Heightmapping Шейдер Bump mapping(рельефное текстурирование) (который использует обычные Maps) быстрее, чем шейдер Height mapping, потому что Height mapping сначала конвертирует их в нормальные карты (maps), а потом перерабатывает их (bump maps). Никакой конвертации не делается при Bump mapping, поэтому он быстрей. Однако нормальные карты не могут быть повернуты, так что вы можете предпочесть Height mapping в некоторых случаях. Более подробная информация находится в статье Bumpmapping. Tiled Backgrounds (фон из кусочков) Плагин tiled background быстрей рендерит текстуры размером кратные двум, т.е. 16x16, 32x32, 64x64, 128x128 и т.д. Использование текстур данного размера также приводит к более гладкому скроллингу, в то время как текстуры других размеров могут выдавать видимые артефакты, особенно на границе текстур. Экспериментируйте! Поиграйте с параметрами и посмотрите, что лучше. Вы можете использовать слои или техники, аналогичные перечисленным здесь, чтобы достигнуть того же результата, но с большей производительностью. Зачастую это является удовлетворительным результатом.
Подсказки в ААА играх: Чтобы убить - стреляйте Чтобы не убить - не стреляйте Подсказки в Инди играх: ыаа ыбб беб ыб
я не буду выкладывать исходник, потому что я знаю из-за чего уровень так долго грузится. и вообще меня интересовало это "как сделать индикатор который покажет загружается уровень или нет?" Активно пользуюсь Godot Engine