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

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

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

Метки:
  1. Roots

    Roots Участник Пользователь

    Баллы:
    31
    Ха а я думал что на игрока уходит около 100mb Оперативной памяти =)
     
  2. Mr Hosting
  3. alexandrage

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

    Баллы:
    173
    Самый адекватный ответ. Остальное мусор.
     
  4. Автор темы
    Bars

    Bars Старожил Девелопер Только чтение Временно заблокирован Пользователь

    Баллы:
    173
    Имя в Minecraft:
    Notcz
    Это сразу стало понятно. Но это теоретическая часть, а на практике как уменьшить потребление памяти этими чанками?
     
  5. alexandrage

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

    Баллы:
    173
    Это фигня все. Мне всегда хватало 4-6 гб на сотку онлайна. А дальше оно уже не в озу упрется, а в cpu. А конкретно в тикентити.
    Он злоупотребления прогрузкой ставится античит от спидхака. Ну и отключение якорей в модах, которые любят удерживать чанки.
    Да и на дворе уже 2к18. Оперативка давно не проблема.
    Лучше подумать о реальных проблемах, оптимизации плагинов и модов. Что действительно приходится делать. А еще есть мода дудосить пакетами, пришлось пилить свой пакетлимитер. Ибо у спонжа еще и с модами с этим проблемы.
     
    Последнее редактирование: 2 июл 2018
  6. Konstantin773

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

    Баллы:
    153
    Skype:
    Konstantin77313
    Имя в Minecraft:
    K773
    Переписать/пропатчить сервер.....например, отгружать чанк сразу же/в течение 10 секунд, если в определенном радиусе нет игроков

    Радикальные меры:
    1. Отказ от системы освещения на сервере
    Для Sky(Block) Light всех секций использовать один и тот же NibbleArray, заполненный нулями, в который запретить писать любые данные. Освещение придется просчитывать в клиенте в момент загрузки чанка с кучей костылей. А на сервере появится ряд багов)
    Результат: -4096 баит на каждую секцию
    + еще можно отказаться от updateSkylightColumns. Еще -256 баит на чанк
    2. blockBiomeArray - заменить на одинарный баит. Пострадает плавность перехода биомов, но -255 баит на каждый чанк
    3. Можно попытаться поработать с HeightMap'ами, но тут уже профилировать надо и уменьшать использование по максимуму. Смысл такой, чтобы их генерировать при надобности на небольшие промежутки времени и затем удалять. В итоге: -2048 баит на чанк
    4. Сжимать данные секций, но из-за того, что кол-во обращений в секунду к этим данным колоссально, то нагрузка на CPU вырастет во много раз. так что, не рационально

    Даже с реализацией первого пункта жор понизится чуть ли не в три раза для большинства секций
     
    Последнее редактирование: 2 июл 2018
  7. Автор темы
    Bars

    Bars Старожил Девелопер Только чтение Временно заблокирован Пользователь

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

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

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

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

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

    Баллы:
    173
    Это на сколько чанков?
     
  10. 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
  11. Aleksey Videman

    Aleksey Videman Ньюби

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

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