Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 04.10.2011, 23:11   #1
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Создание больших массивов.

Не могу создать большой массив. Мне выдает Memory acces violation
Большой это: 1000х1000х1000
Если беру 1000х1000х300 то все делается ок, только оч долго прога грузится. Ну в принципе я понимаю что это 300 млн. значений.
Это какое то ограничение в блитсе или природа сей ошибки неизвестна?
(Offline)
 
Ответить с цитированием
Старый 04.10.2011, 23:20   #2
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Создание больших массивов.

даж если бы у тебя 1 ячейка занимала 1 байт, то это выходит 1000*1000*1000 = 1000000000 = 976562.5kb = 953.67mb.
но ячейки скорее всего больше 1 байта.
у тебя просто оперативки не хватает.
(Offline)
 
Ответить с цитированием
Старый 04.10.2011, 23:43   #3
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Создание больших массивов.

А каг тогда хранить информацию? Оо
Полюбому должен быть способ. Много игрушек есть похожих с подобных построением ландшафта.
(Offline)
 
Ответить с цитированием
Старый 04.10.2011, 23:47   #4
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Создание больших массивов.

нотч не настолько ещё говнокодер чтобы такие массивы создавать.
у него мир из чанков 256х16х16
пруф: http://www.minecraftwiki.net/wiki/Chunks

в кадре чанков тоже не тысяча, к тому же даже нет резона хранить уникальные свойства всех кубиков всех чанков в кадре, это нужно только рядом с игроками и редстоун механизмами, остальное можно просто рендерить цельными мешами и не задаваться другими вопросами.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
HolyDel (05.10.2011), Hulk-DS (05.10.2011), Nex (05.10.2011)
Старый 04.10.2011, 23:56   #5
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создание больших массивов.

Почитай эти статьи: Дерево (структура данных) и Октодерево
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Hulk-DS (05.10.2011)
Старый 04.10.2011, 23:58   #6
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Создание больших массивов.

деревья уже для поиска элементов нужны, проблему количества данных они не решают.
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
Colossus (05.10.2011), HolyDel (05.10.2011), RBK (05.10.2011)
Старый 05.10.2011, 00:13   #7
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создание больших массивов.

Согласен, элементы будут храниться на диске, в память будет загружен небольшой фрагмент. Октодерево поможет этим правильно управлять.
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо RBK за это полезное сообщение:
Hulk-DS (05.10.2011), Mr_F_ (05.10.2011)
Старый 05.10.2011, 01:43   #8
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Создание больших массивов.

Сообщение от Mr_F_ Посмотреть сообщение
нотч не настолько ещё говнокодер
Некрасива говнокодером обзиватся
Я просто спросил что не знал.
Спасибо за подсказки. Уже есть вопросы, но сначала прочитаю ссылки.
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 02:24   #9
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Создание больших массивов.

RBK я понял что ты хотел сказать что то важное, но прости, я этого не понял. Понял только то что мне нужно хранить инфу в виде октодерева. То есть ячейки с 8 чилдами. Но я даже не представляю как это сделать без массива. (была идейка как то использовать для этого типы, но походу бред)

Насчет чанков:
Если создать файл с информацией о ландшафте. И пусть он даже бесконечно большой, но одновременно загружено чанков в память будет припустим 441 как у Нотча(это кстате 14,5млн ячеек в массиве). Во время перехода с одного чанка на другой мне придется часть чанков что за областью зрения выгружать, а другую часть подгружать. Что сделают большие рывки во время игры. Я конечно знаю что в мморпг есть какой то отдельный буфер в котором подгружаются все текстуры и меши во время игры не влияя на фпс(на норм машинах), но помойму в блитсе еще такого нету...

Как же хранить и подгружать инфу о больших ландшафтах вроде того как это делал нотч но на блитсе? Очень помогло б без кода описать сам принцип словами и примерами. Заранее сенк
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 02:36   #10
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Создание больших массивов.

Что сделают большие рывки во время игры.
кстати в майне они заметны

Как же хранить и подгружать инфу о больших ландшафтах вроде того как это делал нотч но на блитсе?
либо в фоновом потоке (незя в блице), либо по маленьким порциям за кадр.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Hulk-DS (05.10.2011)
Старый 05.10.2011, 03:01   #11
Halk-DS
Разработчик
 
Аватар для Halk-DS
 
Регистрация: 09.08.2006
Адрес: Украина
Сообщений: 431
Написано 65 полезных сообщений
(для 53 пользователей)
Ответ: Создание больших массивов.

Спасибо. Теперь ясно. Но походу геморно ппц.
(Offline)
 
Ответить с цитированием
Старый 05.10.2011, 16:03   #12
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Создание больших массивов.

Сообщение от Halk-DS Посмотреть сообщение
RBK я понял что ты хотел сказать что то важное, но прости, я этого не понял. Понял только то что мне нужно хранить инфу в виде октодерева. То есть ячейки с 8 чилдами. Но я даже не представляю как это сделать без массива. (была идейка как то использовать для этого типы, но походу бред)
Можно и в типах, например:
Type material

field mesh ;сетка загружаемого мира, работать лучше с поверхностями.
field surface ;собственно поверхность
field p1, p2, p3, p4 ;вершины квада поверхности

field brush ;кисть которой закрасим поверхность

;другие переменные 
End Type

Type node

field x,y,z ;координаты узла

field FrontNode.node ;соседние узлы
field BackNode.node
field LeftNode.node
field RightNode.node
field TopNode.node
field BottomNode.node

field FrontMaterial.material ;поверхности этого узла
field BackMaterial.material
field LeftMaterial.material
field RightMaterial.material
field TopMaterial.material
field BottomMaterial.material

;другие переменные
End Type
Но мне больше нравится вариант с использованием банков. ReadBytes позволяет загружать блок информации любого размера прямо из файла.

Сообщение от Mr_F_ Посмотреть сообщение
либо в фоновом потоке (незя в блице), либо по маленьким порциям за кадр.
Не совсем точно, фоновый поток нельзя сделать командами блица, но можно загрузить DLL библиотеку, которая загрузит всё хоть в десять потоков.

Как создать dll библиотеку для блица в PureBasic(спасибо MadMedic за статью)

P.S. для тех кто хочет повозражать, "бдиц устарел(другие варианты)", вопрос был:
Сообщение от Halk-DS Посмотреть сообщение
Как же хранить и подгружать инфу о больших ландшафтах вроде того как это делал нотч но на блитсе?
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Hulk-DS (05.10.2011)
Старый 06.10.2011, 01:03   #13
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: Создание больших массивов.

Вроде в майне чанки хранятся в сжатом виде в папочке игры. А вообще, имхо, разумнее сделать алгоритм генерации зависящим от координат чанка, и если его никто не меняет - то и не сохранять. (тогда не будет проблем с ушедшими на 100500 далеко игроком)
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
LLI.T.A.L.K.E.R. (06.10.2011)
Старый 06.10.2011, 15:50   #14
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Создание больших массивов.

Но тогда скорее всего мир будет меняющимся..
Допустим игрок ушёл далеко - нашёл что-то особое в этом месте. Но ему нужно возвратиться (чтобы освободить инвентарь), а потом опять идти к тому месту.
Но мир уже перегенерировался..
(Offline)
 
Ответить с цитированием
Старый 06.10.2011, 22:22   #15
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,218
Написано 438 полезных сообщений
(для 790 пользователей)
Ответ: Создание больших массивов.

Но мир уже перегенерировался..
нужна функция, которая имеет входные данные - координаты чанка и зерно карты. Результат (собственно чанк) зависит только от них, и при новой генерации мир останется таким же.
А если игрок начнёт что-то строить, уже ничего не поделать - сохранять изменённый чанк и тратить память
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:24.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com