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

«Моджанг какого х» N3 или маяки делающие бесполезную работу

Тема в разделе "Оффтопик", создана пользователем Shevchik, 24 фев 2016.

  1. Автор темы
    Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Все знают такую штуку как маяки в майнкрафте, они накладывают указанные эффекты, а также светят прикольным лучом. Что же могло пойти не так в такой простой вещи как маяк? Но моджанг как обычно смог налажать в таком простом деле.

    Итак маяк дрёт процессор как бешеный, а всё потому что там есть 3 огромных косяка.
    Самый малый косяк пожалуй знают все: маяк при проверке целостности загружает чанки, так что маяки расположенные на границах чанков могут внезапно начать загружать процессор, а в таймингах это будет отображаться как большое время на syncChunkLoad. Ну впрочем это не такая большая проблема, просто когда писали эту часть логики в коде вообще отсутсвовал способ проверить а загружен ли чанк.
    А вот вторая проблема куда больше. У маяка есть такая механика, что если над маяком находится непрозрачный блок, то маяк не работает. Проверка этого выполняется каждый тик, как и применение эфеектов. Но в моджанге правая рука не знает что делает левая, и поэтому проверка осуществляется тупым перебором блоков от Y маяка до потолка... И это при условии что в коде есть функция getHighestYAt() которая возвращает самый высокий непрозрачный блок на указанных координатах. Кстати в самом бакките есть такая же функция напрямую использующая эту, но при этом в доках указано что эта функция просто возвращает самый высокий блок отличающийся от воздуха, что конечно же неправда...
    Но самый весёлый косяк появился в 1.8, когда луч маяка стало можно окрашивать. Ну и пусть, скажете вы, всё равно ведь всё на клиенте выполняется... Ага, как бы не так. Более того, из-за того что смещение цветов жрёт много процессора, его сделали асиихронным. Есть пул потоков которое обрабатывает это, поэтому собственно на клиенте цвет луча маяка обновляется не сразу если загружено много маяков. Но при этом же эти расчёты делаются и на сервере. Просто так... А учитывая что на сервере загружено много чанков, то и маяков много, а значит больше и нагрузка...

    Вот так то,такая простая вещь, и столько косяков.
     
  2. alexandrage

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

    Баллы:
    173
  3. QuickDancer

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

    Баллы:
    103
    Годно
     
  4. Danil007524

    Danil007524 Активный участник Пользователь

    Баллы:
    76
  5. stars

    stars Активный участник Пользователь

    Баллы:
    76
    Как то не камильфо все равно. Многомиллиардная компания и такие косяки
     
  6. stars

    stars Активный участник Пользователь

    Баллы:
    76
    В точку!
    Вспомнил про эту тему http://rubukkit.org/threads/rising-world.116051/
    На нее забили -_-?
     
  7. 11dimonchik22

    11dimonchik22 Активный участник Пользователь

    Баллы:
    76
    нет, игра сама по себе процветает rising-world.net
     
  8. Автор темы
    Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Никто так и не добавился, я пока начинать и не стал. Тем более что уже скоро 1.9, так что времени у меня не будет.
     

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