Вопросы и проблемы с генерацией мира

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Вопросы и проблемы с генерацией мира

Сообщение Gremrok 20 фев 2019, 11:55

Ребят, нужна помощь. Хочу сделать нормальный генератор мира. Столкнулся со следующими проблемами:

1) При запуске собранной игры ОЗУ со временем забивается под завязку. Мир генерируется и потребляет память, при этом чанки, которые не прогруженны, занимают столько же памяти, сколько и загруженные чанки. Почему так? Я не особо понимаю разницу между включенным объектом и отключенным, то, что он пропадает из игры не особо влияет на оперативную память.
2) На фоне этой проблемы можно ли ограничить потребляемую игрой память ОЗУ?
3) Нормально ли, что у меня 3.5млн трисов и 7 млн вертсов? (скрин прилагается) Собранная игра даже при 95% забитой ОЗУ идёт в 60 фпс, при загрузке новых чанков падает до 50 фпс на пол секунды.
4) Можно ли поставить на генерируемую карту Occlusion Culling? В гугле нашёл только то, как запекать в самом редакторе(мб просто плохо искал).
5) Можно ли изменить меш, чтобы часть меша была твёрдой(земля) и часть через которую можно проходить (вода)?

Грузятся только те стороны блоков, которые может увидеть игрок(скрин есть).

Генерацию стараюсь сделать как в Minecraft в плане оптимизации, но разрушать или ставить блоки нельзя(если это важно)

Сильно ли влияют объекты в самом чанке на производительность? Я сделал недопул из 8 объектов, которые можно подбирать. И что лучше, засунуть нужное кол-во объектов в чанк и генерировать его с объектами или сначала создавать чанк, а уже поверх него создавать подбираемые объекты?

Вопрос чисто из интереса. Как называются пиксельные стили у интерфейса и моделей? Я читал только про лоу-поли модели, но они не совсем кубические

Как определить сколько памяти занимает тот или иной объект?

Работает ли сборщик мусора в уже собранной игре? В самом Unity память освобождается, а в собранной игре нет.

И такой вопрос. Есть люди которым можно было бы задать пару-тройку тупых вопросов? Хотелось бы пообщаться с более опытными людьми, которые могли бы простыми словами объяснить в чём я ошибаюсь.ИзображениеИзображение
Gremrok
UNец
 
Сообщения: 4
Зарегистрирован: 28 окт 2018, 01:24

Re: Вопросы и проблемы с генерацией мира

Сообщение Tolking 20 фев 2019, 15:03

Gremrok писал(а):Ребят, нужна помощь. Хочу сделать нормальный генератор мира. Столкнулся со следующими проблемами:

1) При запуске собранной игры ОЗУ со временем забивается под завязку. Мир генерируется и потребляет память, при этом чанки, которые не прогруженны, занимают столько же памяти, сколько и загруженные чанки. Почему так? Я не особо понимаю разницу между включенным объектом и отключенным, то, что он пропадает из игры не особо влияет на оперативную память.

Отключенный объект не пропадает из игры из игры пропадают удаленные объекты, из памяти пропадают объекты ка которые нет ссылок. Изучать уборку мусора в С#.

Gremrok писал(а):2) На фоне этой проблемы можно ли ограничить потребляемую игрой память ОЗУ?

Конечно можно! А зачем? Чтобы игра падала прям на старте?

Gremrok писал(а):3) Нормально ли, что у меня 3.5млн трисов и 7 млн вертсов? (скрин прилагается) Собранная игра даже при 95% забитой ОЗУ идёт в 60 фпс, при загрузке новых чанков падает до 50 фпс на пол секунды.

Ну на 1 треугольник нужно 3 вертекса... На 3.5 млн в максимум нужно 10.5 млн вертексов... так что это нормально.
Соболезную. Видеть падение с 60 фпс до 50 на 0.5 секунды это не очень приятно, на мой взгляд...

Gremrok писал(а):4) Можно ли поставить на генерируемую карту Occlusion Culling? В гугле нашёл только то, как запекать в самом редакторе(мб просто плохо искал).

Конечно можно! Изучи вопрос сделай(если нет готового решения) и ставь что хочешь с блекджеком и блудницами.

Gremrok писал(а):5) Можно ли изменить меш, чтобы часть меша была твёрдой(земля) и часть через которую можно проходить (вода)?

Странный вопрос. Сделать чтобы меш был твердым - нужно приложить усилия... Меш земли твердым сделал, а как не делать твердым меш воды не сообразишь?

Gremrok писал(а):Сильно ли влияют объекты в самом чанке на производительность?

Напрямую влияют зависит от объектов. Кубик и персонаж уровня ААА проекта по-разному влияют.

Gremrok писал(а): Я сделал недопул из 8 объектов, которые можно подбирать. И что лучше, засунуть нужное кол-во объектов в чанк и генерировать его с объектами или сначала создавать чанк, а уже поверх него создавать подбираемые объекты?

Работает? Не трогай!

Gremrok писал(а):Как определить сколько памяти занимает тот или иной объект?

Сложить размер структур в развернутом виде, входящие в состав объекта.

Gremrok писал(а):Работает ли сборщик мусора в уже собранной игре? В самом Unity память освобождается, а в собранной игре нет.

Конечно работает.

Gremrok писал(а):И такой вопрос. Есть люди которым можно было бы задать пару-тройку тупых вопросов? Хотелось бы пообщаться с более опытными людьми, которые могли бы простыми словами объяснить в чём я ошибаюсь.

Ты ошибаешься в том что тебе можно объяснить что-то по теме генерации мира простыми словами... Вернее можно простыми просто их там будут десятки страниц... В гугле много написано по теме, есть даже готовые проекты даже на юнити и даже бесплатно. Изучай.
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2714
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Вопросы и проблемы с генерацией мира

Сообщение Gremrok 20 фев 2019, 16:37

Tolking писал(а):
Gremrok писал(а):2) На фоне этой проблемы можно ли ограничить потребляемую игрой память ОЗУ?

Конечно можно! А зачем? Чтобы игра падала прям на старте?

Чтобы игра не занимала всю память ОЗУ. Я хочу сделать почти бесконечную генерацию мира (зачем и для чего пока вопрос, возможно изменю своё решение). Хранить и сжимать файлы и данные пока, увы, не умею, поэтому каждый чанк занимает +-10 мб (уже проанализировал свои ошибки, некоторые смогу исправить). Я понимаю, что до этого всё, что создавалось в мире я выключал, из-за этого сборщик мусора не освобождал память. Теперь я буду удалять все неактивные чанки и создавать их по новой, но тут же опять вопрос. Чтобы не генерировать каждый раз одни и те же значения, не будет ли большой нагрузкой на ОЗУ то, что я буду сохранять данные в массиве byte[,,]? А потом просто генерировать меш по данным из массива. Мне кажется это будет быстрее, чем заново проводить цикл и вычислять значения.

Tolking писал(а):
Gremrok писал(а):3) Нормально ли, что у меня 3.5млн трисов и 7 млн вертсов? (скрин прилагается) Собранная игра даже при 95% забитой ОЗУ идёт в 60 фпс, при загрузке новых чанков падает до 50 фпс на пол секунды.

Ну на 1 треугольник нужно 3 вертекса... На 3.5 млн в максимум нужно 10.5 млн вертексов... так что это нормально.
Соболезную. Видеть падение с 60 фпс до 50 на 0.5 секунды это не очень приятно, на мой взгляд...

Это не особо заметно когда играешь, но даже от такой потери я стараюсь избавиться, поэтому и задаю вопросы)

Tolking писал(а):
Gremrok писал(а):5) Можно ли изменить меш, чтобы часть меша была твёрдой(земля) и часть через которую можно проходить (вода)?

Странный вопрос. Сделать чтобы меш был твердым - нужно приложить усилия... Меш земли твердым сделал, а как не делать твердым меш воды не сообразишь?

В этом и проблема. Я не могу сделать один и тот же меш и твёрдым, и не твёрдым одновременно. Если такое вообще возможно, то я буду искать больше информации, а если нет, то просто сделаю 2-ой объект, который и будет водой без коллайдера

Tolking писал(а):
Gremrok писал(а):Сильно ли влияют объекты в самом чанке на производительность?

Напрямую влияют зависит от объектов. Кубик и персонаж уровня ААА проекта по-разному влияют.

Объекты будут далеко не ААА. Скорее убер-лоуполи модели, но я всё равно очень волнуюсь за производительность.

Tolking писал(а):
Gremrok писал(а): Я сделал недопул из 8 объектов, которые можно подбирать. И что лучше, засунуть нужное кол-во объектов в чанк и генерировать его с объектами или сначала создавать чанк, а уже поверх него создавать подбираемые объекты?

Работает? Не трогай!

Хотелось бы как можно лучше и корректней всё сделать)

Tolking писал(а):
Gremrok писал(а):И такой вопрос. Есть люди которым можно было бы задать пару-тройку тупых вопросов? Хотелось бы пообщаться с более опытными людьми, которые могли бы простыми словами объяснить в чём я ошибаюсь.

Ты ошибаешься в том что тебе можно объяснить что-то по теме генерации мира простыми словами... Вернее можно простыми просто их там будут десятки страниц... В гугле много написано по теме, есть даже готовые проекты даже на юнити и даже бесплатно. Изучай.

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

Спасибо за ответы. Советы очень помогли мне. Буду искать более подробную информацию.
Gremrok
UNец
 
Сообщения: 4
Зарегистрирован: 28 окт 2018, 01:24

Re: Вопросы и проблемы с генерацией мира

Сообщение seaman 20 фев 2019, 21:07

Ну на 1 треугольник нужно 3 вертекса... На 3.5 млн в максимум нужно 10.5 млн вертексов

Второе утверждение неверно. Есть еще группы сглаживания и разрывы на развертках. Так что может быть гораздо больше.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Вопросы и проблемы с генерацией мира

Сообщение Gremrok 20 фев 2019, 22:12

seaman писал(а):
Ну на 1 треугольник нужно 3 вертекса... На 3.5 млн в максимум нужно 10.5 млн вертексов

Второе утверждение неверно. Есть еще группы сглаживания и разрывы на развертках. Так что может быть гораздо больше.

Спасибо большое, даже не слышал ранее о таком. Надеюсь в гугле информация об этих тонкостях найдётся.
P.S. Спасибо, всё нашёл, но не думаю, что такая проблема коснётся моих моделей)
Gremrok
UNец
 
Сообщения: 4
Зарегистрирован: 28 окт 2018, 01:24


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 24