Большой мир из блоков 2D

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

Большой мир из блоков 2D

Сообщение NAGIBATOR228pacan 23 май 2017, 00:38

Решил сделать большой 2д мир из блоков, но возникла проблема, такой мир даже 1000 x 200 занимает больше одного гигабайта оперативной памяти, как это исправить? И как это сделано в terraria, нужно чтобы как в терарии мир был очень большим но оперативку не загружало.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: Большой мир из блоков 2D

Сообщение Tolking 23 май 2017, 01:15

1000 x 200 блоков, при условии что количество типов блоков будет 255 займет 0.2 мегабайта... (1000 * 200 = 200 000 блоков если типов 255 то для хранения блока достаточно байта, а 200 000 байт = 195.3 Кб )
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Большой мир из блоков 2D

Сообщение NAGIBATOR228pacan 23 май 2017, 10:16

Ну это я знаю, но почему в юнити все занимает так много? Блоки из префабов .
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: Большой мир из блоков 2D

Сообщение Tolking 23 май 2017, 12:31

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

Re: Большой мир из блоков 2D

Сообщение NAGIBATOR228pacan 23 май 2017, 13:52

Есть разница между текстурой и спрайтом? Я создаю через for сразу все Кубы и это занимает 1гб оперативки.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: Большой мир из блоков 2D

Сообщение Tolking 23 май 2017, 14:22

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

Re: Большой мир из блоков 2D

Сообщение NAGIBATOR228pacan 23 май 2017, 14:40

А как заполнять не спрайтом? Через ongui рисовать? Или image создавать?
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: Большой мир из блоков 2D

Сообщение Tolking 23 май 2017, 15:29

Через онгуи не будет память забирать, но будет тормозить, имидж памяти займет аналогично...

Я не считаю что занятые 1Гб памяти проблема. Но если это проблема, то нужно реализовывать чтобы строился тот кусок, который видно в текущий момент...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Большой мир из блоков 2D

Сообщение NAGIBATOR228pacan 23 май 2017, 16:26

Но вроде бы в терарии все происходит одновременно, это на 2000000 блоков это 1 гб, мне побольше надо бы.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: Большой мир из блоков 2D

Сообщение Tolking 23 май 2017, 16:28

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

Re: Большой мир из блоков 2D

Сообщение DbIMok 23 май 2017, 16:48

нужно использовать атлас. вообще, посмотрите в профайлере что у вас столько памяти занимает
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.7k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: Большой мир из блоков 2D

Сообщение NAGIBATOR228pacan 26 май 2017, 19:57

Нашел решение, нужно было запомнить id и координаты блока с помощью двухмерного массива, и ставить блоки только, когда они в зоне камеры, и удалять когда они за ней, но вот только возникла еще одна проблема, не получается нормально удалить, точнее получается, но с микро лагом.
Синтаксис:
Используется csharp
void Clear(){
  GameObject[] blocks = GameObject.FindGameObjectsWithTag("Block");
        foreach (GameObject Object in blocks)
        {
            if (Object.transform.position.x < transform.position.x - 25) { Destroy(Object); }
            if (Object.transform.position.x > transform.position.x + 25) { Destroy(Object); }
        }
        cleartimer = 2f;
}
 

из-за этого каждые 2 секунды, случается микро лаг.
Можете предложить более эффективный метод удаления?
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: Большой мир из блоков 2D

Сообщение Valentinus 26 май 2017, 20:09

судя по cleartimer = 2f; вы каждые две секунды вызываете эту функцию? можете показать как вы это делаете?

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

тут либо сделайте этот период короче, чтобы не успевало накопиться много блоков, т.е. удаляйте чаще, но понемногу.
либо сделайте эту функцию корутиной, в ней можно удалять ненужные блоки небольшими порциями, после чего возвращать управление в основной поток.
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Большой мир из блоков 2D

Сообщение NAGIBATOR228pacan 26 май 2017, 20:10

Ну если задержку меньше делать, 30 fps будет.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

Re: Большой мир из блоков 2D

Сообщение NAGIBATOR228pacan 26 май 2017, 20:28

Только что сбилдил игру на телефон, и с этим удалением там еще хуже. Почему установка блоков не лагает, а удаление да?
Последний раз редактировалось NAGIBATOR228pacan 26 май 2017, 20:30, всего редактировалось 1 раз.
NAGIBATOR228pacan
UNITрон
 
Сообщения: 318
Зарегистрирован: 15 мар 2017, 20:39

След.

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

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

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