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

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

Вернуться   www.boolean.name > Программирование в широком смысле слова > Алгоритмика

Алгоритмика Об алгоритмах вообще; методы, обсуждения способов решения

Ответ
 
Опции темы
Старый 18.03.2015, 21:32   #1
Izunad
ПроЭктировщик
 
Аватар для Izunad
 
Регистрация: 02.06.2011
Адрес: Набережные Челны
Сообщений: 102
Написано 26 полезных сообщений
(для 89 пользователей)
Восклицание GeoData

Пока писал редактор карт, наткнулся на такую проблему:
Создал массив Maps(512,512)- игровое поле, в массив можно было внести значения, которые определяли какой объект располагается в координате, закрыто либо открыто для перемещения и прочее.
Но как быть если я хочу создать мосты, этажи и прочие архитектурные причуды. Как мне это выразить в программе? Трехмерным массивом Maps(512,512,512)? Мне кажется это слишком дорого =\ Тут еще надо учесть что будет сервер, где нужно держать в памяти весь игровой ландшафт, все объекты(в цыфрах)
__________________
Хочешь изменить мир-начни с шейдера.
(Offline)
 
Ответить с цитированием
Старый 18.03.2015, 22:03   #2
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 977
Написано 388 полезных сообщений
(для 630 пользователей)
Ответ: GeoData

Ну например в воксельной графике для решения подобных задач используют разреженное октодерево (Sparse Voxel Octree).
__________________
Config1: Windows 10 x64 / Linux Ubuntu Xenial x64 (Xfce-4); Default Resolution 1920x1080; Intel Core i7 930 @ 2.80GHz; DDR3 9GB Triple; AMD Radeon R9 290 4GB; SSD Ignition 2 120GB; HDD Seagate 1TB.
Config2: Linux Ubuntu Xenial x64 (Xfce-4); Default Resolution 1366x768; Intel Pentium Dual-Core T4400 @ 2.20GHz; DDR2 2GB; NVIDIA GeForce G105M; HDD WD 250GB.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Izunad (19.03.2015)
Старый 19.03.2015, 21:18   #3
Igor
Мастер
 
Аватар для Igor
 
Регистрация: 03.05.2010
Адрес: Подмосковье
Сообщений: 1,217
Написано 436 полезных сообщений
(для 784 пользователей)
Ответ: GeoData

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

P.S. даже если на ячейку тратить 2 байта (а это 65536 значений - просто дофига, имхо), а ячеек 512*512*512, то это 256 мегабайт - вполне реальная цифра.
__________________
О¯О ¡¡¡ʁɔvʎнdǝʚǝdǝu dиW
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Izunad (20.03.2015)
Ответ


Опции темы

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

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


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


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