Кстати, а почему в играх постоянно держат все предметы под сценой, а не спавнят их на ходу? Неужели держать все под сценой дешевле чем спавнить на ходу, или спавн вызывает кратковременные микрофризы?
Это pooling. Создается все заранее и запихивается в память/видеопамять. В т.ч. чтобы уменьшить возможные обращения к жесткому диску.Микрофризы из-за этого и возможны, да.
Также очень часто обьекты реюзабельны. Не удаляются-создаются заново. А "прячутся" и "достаются заново"
Все это в целом очень способствует а)уменьшению утечки памяти
Очевидно, потому, что игры давно не пишутся с нуля, а используют готовые движки. С точки зрения картины в целом это алогично. С точки зрения разработки в рамках конкретного движка это самый простой способ. Один из многих слоёв абстракции, за которую приходится платить.
про Unity не знаю, а в случае с GameMaker удаление может вызвать неожиданные ошибки. порой игра крашится, когда вылезает непредусмотренное обращение к параметрам удаленного обекта, даже если есть проверки на его существование.
Кстати, а почему в играх постоянно держат все предметы под сценой, а не спавнят их на ходу? Неужели держать все под сценой дешевле чем спавнить на ходу, или спавн вызывает кратковременные микрофризы?
Проще подгрузить всё сразу, нежели по частям во время самого геймплея
часто да. Спавн объекта может быть связан с подгрузкой моделей и текстур с диска, а это долго по меркам фрейма
Комментарий недоступен
Комментарий недоступен
Это pooling. Создается все заранее и запихивается в память/видеопамять. В т.ч. чтобы уменьшить возможные обращения к жесткому диску.Микрофризы из-за этого и возможны, да.
Также очень часто обьекты реюзабельны. Не удаляются-создаются заново. А "прячутся" и "достаются заново"
Все это в целом очень способствует а)уменьшению утечки памяти
б)контролю общего обьема памяти.
Касательно текстовухи - тут вероятно внизу отдельная камера которая рендерит поверх основной то что внизу расположено.
или спавн вызывает кратковременные микрофризы
YEP!
для чего и существуют загрузочные экраны, где и происходят все самые жирные процессы для подготовки игрового мира
После спауна нужно удаление, а оно засоряет память. Поэтому по возможности лучше что бы предмет телепортировался по сцене.
В данном конкретном случае программист криворукий. Можно было их просто скрыть чтобы понизить нагрузку на проц и видео.
Очевидно, потому, что игры давно не пишутся с нуля, а используют готовые движки. С точки зрения картины в целом это алогично. С точки зрения разработки в рамках конкретного движка это самый простой способ. Один из многих слоёв абстракции, за которую приходится платить.
про Unity не знаю, а в случае с GameMaker удаление может вызвать неожиданные ошибки. порой игра крашится, когда вылезает непредусмотренное обращение к параметрам удаленного обекта, даже если есть проверки на его существование.
Комментарий недоступен