Среда, 24 Апреля 2024, 02:13

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Память
Память
defGMDefeloperДата: Среда, 28 Февраля 2018, 01:45 | Сообщение # 1
частый гость
Сейчас нет на сайте
Загружаю данные из файла в структуры.У меня карта разбита на регионы,группы и объекты в них,а также доп. инфа о объектах(модель,текстуры и т.д)
Объектов достаточно много,а значит хранить все это в оп не рационально.
Скажем файл с данными о регионах и группах хранит достаточно мало данных,только координаты,а вот объекты лучше подгружать по мере использования.Как это сделать?.
Объекты при этом лучше хранить в 1 файле.В чем-то вроде архива
seamanДата: Среда, 28 Февраля 2018, 09:31 | Сообщение # 2
старожил
Сейчас нет на сайте
AssetBundle если GameObject
ScriptableObject если просто данные


Сообщение отредактировал seaman - Среда, 28 Февраля 2018, 09:32
defGMDefeloperДата: Среда, 28 Февраля 2018, 12:57 | Сообщение # 3
частый гость
Сейчас нет на сайте
Прочитал про ScriptableObject.Вы меня не совсем поняли.Объекты хранят совершенно разную информацию,и таких объектов много.Более того управление происходит из 1 скрипта.И информация о каждом объекте хранится в 1 экземпляре,зачем тогда ScriptableObject?
Объем этой информации может превышать 1 гб(в совокупности).Нужно сделать архив с данными и выгружать их по мере использовании.Эти данные разные и их много.Речь о том как сделать архив с этими данными,и как вытряхивать из него нужны данные.

AssetBundle не подходит ибо хранить информацию о миллионе однотипных объектов,нету смысла.

Цитата
Объекты хранят совершенно разную информацию

Цитата
однотипных объектов

Если кто запутался,поясню.Разные координаты,цвет.
Зачем сохранять объект полностью если они однотипные и можно просто сохранить координаты,имя,цвет(1 цифрой,цвета - неизменный массив).Это инфа о звездах если что.
Но из-за того что таких объектов очень много(в среднем пол миллиона),хранить все это в ОП скажем так напряжно.В добавок есть ещё планеты,а там ой ой ой инфы.Карта высот ,объекты и т.д.Ужс.Гиг данных.Их нужно подгружать только по необходимости.
Следовательно лучше сделать архив и в нем сделать директории.и вот именно к ним и обращятся.

И тут 2 вопроса,на которых я в нете ответа не нашел.
Как сделать архив?.Потому что на практике эти библиотеки не содержат тех классов которые описаны в туториале.

За ранее спасибо =)


Сообщение отредактировал defGMDefeloper - Среда, 28 Февраля 2018, 14:30
drcrackДата: Среда, 28 Февраля 2018, 16:21 | Сообщение # 4
старожил
Сейчас нет на сайте
Ты ж эти планеты не вручную будешь расставлять, а генерировать автоматически
Зачем тогда вообще хранить столько инфы?
Просто вместо Random.Range используй что-то детермированное (шум перлина и т.д.)
Хранить придется только seed и другие настройки генерации

Если это не вариант, тогда хранишь все в бинарных файлах
Можно в одном, можно в 500000, но лучше использовать шардинг и держать число файлов в пределах 500-1000
Плюс один мета файл в котором смещения (т.к. обьекты могут быть разного размера, особенно планеты которые содержат неопределенное число обьектов)
Карты высот проще хранить отдельно, особенно если их немного

Цитата
Как сделать архив?.Потому что на практике эти библиотеки не содержат тех классов которые описаны в туториале.

Тебе не нужно сжатие, у тебя данные несжимаемые
Кроме того, гигабайт на диске это ерунда


Сообщение отредактировал drcrack - Среда, 28 Февраля 2018, 16:24
defGMDefeloperДата: Среда, 28 Февраля 2018, 17:59 | Сообщение # 5
частый гость
Сейчас нет на сайте
Цитата
Тебе не нужно сжатие, у тебя данные несжимаемые
Кроме того, гигабайт на диске это ерунда

Вы не поняли.Что сохранять это понятно.Файлов будет 500-1000 как вы и сказали.Я не об этом.А о том что 500 файлов в 1 папке выглядит как минимум неаккуратно).Как запихнуть это все в архив,без сжатия само собой.Чтоб он работал как директория,но при этом не являлся папкой.
drcrackДата: Среда, 28 Февраля 2018, 18:38 | Сообщение # 6
старожил
Сейчас нет на сайте
Цитата
Как запихнуть это все в архив,без сжатия само собой.Чтоб он работал как директория,но при этом не являлся папкой.

Чем не устраивает просто большой бинарный файл?..
defGMDefeloperДата: Среда, 28 Февраля 2018, 21:08 | Сообщение # 7
частый гость
Сейчас нет на сайте
Я не понимаю как с ним работать.Данные должны загружаются не последовательно,а значит нужны какие-то указатели.Я хотел использовать в качестве них директории внутри архива.Как это можно сделать с помощью бинарного файла?
Storm54Дата: Среда, 28 Февраля 2018, 21:14 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Разбить содержимое файла на заголовок и тело. В заголовке будут перечислены смещения всех кусков данных. В итоге, при поиске необходимого куска, сначала читается его смещение из заголовка, а потом по этому смещению сам кусок.
drcrackДата: Среда, 28 Февраля 2018, 22:33 | Сообщение # 9
старожил
Сейчас нет на сайте
Смещения проще хранить в отдельном файле и держать его в памяти целиком

Добавлено (28 Февраля 2018, 22:33)
---------------------------------------------

Цитата
а значит нужны какие-то указатели

Просто читаешь/пишешь по определенному смещению, в чем проблема-то не понимаю)
defGMDefeloperДата: Пятница, 02 Марта 2018, 15:21 | Сообщение # 10
частый гость
Сейчас нет на сайте
Да есть одна.Начинаю читать файл.Пишу offset++.ПОтом когда доходит до строчки которая содержит кол-во звезд в группе,мозг не хочет работать.Мб я прост уже закодился).
Вот проблема в чем.Сделал такой редактор.Загружаешь картинку галактики - он строить карту пути по этой картинке(заполняет массив областями и регионами где могут распологаться звезды),на основе данных о цвете пикселя.
Кол-во групп в областях - разное.как и кол-во планет вокруг звезды.И вот пока посчитаешь смещение вплоть до самой нижний иерархии мозг дымить начинает =(
Теперь на выбор 2 фигни.Либо записывать кол-во планет рядом со звездами либо перебирать файл полностью.

Добавлено (02 Марта 2018, 15:21)
---------------------------------------------
Сори,но я не понял в чем вообще прикол?Во первых пришлось создавать сериализируемые структуры для вектора цвета и квартертиона.В добавок ко всему бинарный файл будет весить гораздо больше.Ибо он записывает названия сериализируемых структур и ещё много всякой фигни.То что весило 160 кб теперь весит мегабайт.И это я ток самое основное запилил.
Не нужно быть великим математиком чтоб понять что то что весило бы гиг будет весить 6 гиг


Сообщение отредактировал defGMDefeloper - Пятница, 02 Марта 2018, 15:28
drcrackДата: Пятница, 02 Марта 2018, 18:55 | Сообщение # 11
старожил
Сейчас нет на сайте
Цитата
Ибо он записывает названия сериализируемых структур и ещё много всякой фигни.

Так это к тебе вопрос, зачем ты туда названия пишешь? :D Пиши только данные
UPD: А, ты походу используешь встроенную бинарную сериализацию. Забей на нее, это не то что тебе нужно. Пиши свое


Сообщение отредактировал drcrack - Пятница, 02 Марта 2018, 18:56
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Память
  • Страница 1 из 1
  • 1
Поиск:

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