1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Ванилла ест 50 Мб оперативки на каждого игрока

Тема в разделе "Sponge", создана пользователем Bars, 26 июн 2018.

Метки:
  1. Автор темы
    Bars

    Bars Старожил Девелопер Пользователь

    Баллы:
    173
    Вы делали подобное? Судя по сообщению вы это умеете
     
  2. Konstantin773

    Konstantin773 Старожил Пользователь

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Только для ваниллы.....стояла цель - прогружать статичную 8x8км карту с минимальным MemFootprint. Данные способы на ранних этапах юзал, но в дальнейшем отказался с переходом на собственную систему карты

    P.S: Своего я добился (жрет ~300-700мб в разделяемой памяти), но это уже совсем другая история
     
    Последнее редактирование: 3 июл 2018
  3. alexandrage

    alexandrage Старожил Пользователь

    Баллы:
    173
    Это на сколько чанков?
     
  4. Konstantin773

    Konstantin773 Старожил Пользователь

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    262144 чанка

    Система работает так....на каждый регион существует объект, содержащий:
    4*КУБ баит - палитра блоков
    4*КУБ баит - палитра покрытий
    262144 баита - HeightMap (256 баит на каждый чанк)
    262144 баита - блоки
    262144 баита - покрытие
    4*КУД баит - палитра деревьев
    4*КУО баит - палитра объектов
    128 баит - кэш, сообщающий о наличии объектов, пересекающихся с чанками (для ускорения выборки)
    N баит - список врапперов деревьев
    N баит - список врапперов объектов

    Враппер обьъекта/дерева:
    6 баит - координаты внутри региона
    4 баита - ссылка на объект
    1 баит - поворот
    N баит - список блоков, которые могут быть разрушаемы/изменяемы (стекла, двери и т.д.)

    Сам объект:
    6 баит - размер по x,y,z
    4*КУБ баит - палитра
    x*y*z баит - массив блоков

    Сервер выбирает блок так:
    1. Находит объект региона
    2. Делает выборку из HeightMap (по локальным x,z выбирает высоту)
    3. Если y ниже высоты, то, если y==0 - бедрок, в противном случае камень
    4. Проверяет, есть ли пересекающиеся объекты
    5. Если есть объекты, то находит враппер объекта, вычилсяет оффсет и выбирает соответствующий блок из объекта
    6. Если объектов нет или из объекта выбран воздух, то, если y==высота - возвращает блок, если выше - проверка и выборка покрытия

    Элемент палитры покрытия может содержать как одинарный блок, так и несколько стоящих друг над другом блоков (кактусы, высокая трава, заборы), так и столб воды

    И получается, что большинство чанков весят жалкие 768 баит (256 на HeightMap, 256 на блоки и 256 на покрытия) + возможно, придется добавить 256 баит копий покрытий, чтобы реализовать их разрушаемость

    Лысая карта в 262144 чанка без деревьев и объектов будет весить 192мб + максимум 1мб на палитры и прочую лабуду

    Строители действют так:
    1. Строят ландшафт, дороги, заборы и прочую мелочь. Заливают водоемы. Но карта на этом этапе должна быть плоская (не считая воду и растительность)
    2. На отдельном сервере строят шаблоны деревьев и объектов
    3. Лысая карта и шаблоны конвертируются в собственный формат
    4. Далее им остается летать по карте и в один клик расставлять маркеры деревьев/объектов

    На выходе имеем подобное https://clip2net.com/s/3VdyPel https://clip2net.com/s/3Vdz9mp https://clip2net.com/s/3Vdzkt2
    Лоды генерируются на лету и сжимаются. Для такой огромной карты вес, всего, 1.5мб

    Вангую, что ой как зря я опубликовал данный концепт....
     
    Последнее редактирование: 4 июл 2018
  5. Aleksey Videman

    Aleksey Videman Активный участник

    Баллы:
    61
    Имя в Minecraft:
    Wixend
    Такая же проблема
     

Поделиться этой страницей