forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   GeoData (http://forum.boolean.name/showthread.php?t=19746)

Izunad 19.03.2015 00:32

GeoData
 
Пока писал редактор карт, наткнулся на такую проблему:
Создал массив Maps(512,512)- игровое поле, в массив можно было внести значения, которые определяли какой объект располагается в координате, закрыто либо открыто для перемещения и прочее.
Но как быть если я хочу создать мосты, этажи и прочие архитектурные причуды. Как мне это выразить в программе? Трехмерным массивом Maps(512,512,512)? Мне кажется это слишком дорого =\ Тут еще надо учесть что будет сервер, где нужно держать в памяти весь игровой ландшафт, все объекты(в цыфрах)

Samodelkin 19.03.2015 01:03

Ответ: GeoData
 
Ну например в воксельной графике для решения подобных задач используют разреженное октодерево (Sparse Voxel Octree).

Igor 20.03.2015 00:18

Ответ: GeoData
 
В майнкрафте максимальная высота значительно меньше. 128 или 256.
Если на одну ячейку тратить по байту, то 512*512*128 байт = 32 мегабайта, вполне нормальная цифра.
Опять же, в майнкрафте карта разбивается на кусочки, которые хранятся на диске в сжатом виде - если в углу карты бегает игрок, другой угол в памяти держать не обязательно.

P.S. даже если на ячейку тратить 2 байта (а это 65536 значений - просто дофига, имхо), а ячеек 512*512*512, то это 256 мегабайт - вполне реальная цифра.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot