У автора голова квадратная, а потому теперь это канал по майнкрафту. История о том, как я нашёл багу то ли в create, то ли в его вики
Уже некоторое время играю с модом Create, сделал машинерию для довольно шустрой промывки. Кормить её надо, как правило, результатами работы перемола (crushing wheels (пикрелейтед)), и они для меня стали боттлнеком
Уже некоторое время играю с модом Create, сделал машинерию для довольно шустрой промывки. Кормить её надо, как правило, результатами работы перемола (crushing wheels (пикрелейтед)), и они для меня стали боттлнеком
🥰1
Я пошёл разбираться, как это счастье ускорить. На (вроде, официальной) вики нашлась формула (пикрелейтед 1)
Выглядит страшненько, но разбивается на части, плюс многое заменяется на константы
Сначала верхняя часть
recipe duration in seconds (на самом деле, кажется, что in ticks, но в этом я как-то в другой раз разберусь) — для меня это конкретный рецепт (булыжник -> гравий) —
Теперь нижняя
В числителе RPM — скорость вращения колёс — выкручиваем в максимум и фиксируем,
В знаменателе log_2(stack_size). Размер этого stack_size я и хочу узнать, так что здесь ничего в константу не превратится
А дальше всё это зажимается в рамки [0.25, 20](всё, что меньше 0.25, превращается в 0.25, всё, что больше 20, превращается в 20)
Обрубленные квадратные скобки — округление вверх
Дальше прибавляется input delay. Если верить той же вики, он зависит от того, чем подаются предметы. Для моей схемы это тоже фиксировано, и значение
Последняя часть. После того, как мы всё это вычислили, мы домножаем полученное счастье на stack_size.
Всё это должно обозначать время, за которое мы перерабатываем скормленные в колёса блоки. Как раз время я хочу минимизировать
Выглядит страшненько, но разбивается на части, плюс многое заменяется на константы
Сначала верхняя часть
recipe duration in seconds (на самом деле, кажется, что in ticks, но в этом я как-то в другой раз разберусь) — для меня это конкретный рецепт (булыжник -> гравий) —
250
. Вычитаем эти 19.9..., получаем 230.000001Теперь нижняя
В числителе RPM — скорость вращения колёс — выкручиваем в максимум и фиксируем,
256
. Применяем умножение/деление рядом, получаем 20.48
В знаменателе log_2(stack_size). Размер этого stack_size я и хочу узнать, так что здесь ничего в константу не превратится
А дальше всё это зажимается в рамки [0.25, 20]
Обрубленные квадратные скобки — округление вверх
Дальше прибавляется input delay. Если верить той же вики, он зависит от того, чем подаются предметы. Для моей схемы это тоже фиксировано, и значение
1
Последняя часть. После того, как мы всё это вычислили, мы домножаем полученное счастье на stack_size.
Всё это должно обозначать время, за которое мы перерабатываем скормленные в колёса блоки. Как раз время я хочу минимизировать
Дисклеймер: автор так себе математик, и да, к выводам можно было прийти более кратким путём, но чем умеет, тем и пользуется
В формуле с вики получилось оставить всего одну переменную — stack size. Последняя доработка формулы: поскольку я могу подать от 1 до 64 блоков одновременно, мне интересно, за какое минимальное время я могу переработать 64 блока. Потому если мы бьём партию на части по stack size частей, их будет
Поскольку у нас осталась единственная переменная — stack size, мы возьмём её за x, и найдём минимум полученной функции. Для наглядности, вобьём в десмос, постоим график
Что видим? Чем меньше x, тем меньше y. В частности, хорошее значение для stack size это 2
В формуле с вики получилось оставить всего одну переменную — stack size. Последняя доработка формулы: поскольку я могу подать от 1 до 64 блоков одновременно, мне интересно, за какое минимальное время я могу переработать 64 блока. Потому если мы бьём партию на части по stack size частей, их будет
(64 / stack_size)
, и на это число частей нам надо домножить время переработки одной частиПоскольку у нас осталась единственная переменная — stack size, мы возьмём её за x, и найдём минимум полученной функции. Для наглядности, вобьём в десмос, постоим график
Что видим? Чем меньше x, тем меньше y. В частности, хорошее значение для stack size это 2
Но вооружившись таймером, и померив переработку по 2 блока против переработки по 64, я обнаружил, что всё наоборот, и по 64 перерабатывать в разы эффективнее. Что не так?
Естественно, ошибка не может быть во мне 😎, а значит лезем в сурцы create разбираться. Находим кусок кода про процессинг. Находится он в перегрузке метода
Оно зависит только от рецепта! И никак не завязано на размер пришедшего стака. А значит, формула нас обманула, и надо идти всё пересчитывать...
Естественно, ошибка не может быть во мне 😎, а значит лезем в сурцы create разбираться. Находим кусок кода про процессинг. Находится он в перегрузке метода
tick
, что подразумевает вызов на каждый тик в игре (квант времени в майнкрафте). Видим формулу скорости как с картинки. Здесь мы её вычитаем из некого remainingTime
. То есть, в какой-то момент мы вычислили, сколько мы должны обрабатывать попавшие к нам предметы, и отсчитываем время до окончания. Смотрим, где мы присваиваем это самое время....Оно зависит только от рецепта! И никак не завязано на размер пришедшего стака. А значит, формула нас обманула, и надо идти всё пересчитывать...
На деле нам нужно убрать всего один множитель, но это превращает нашу функцию в убывающую. И теперь понятно, почему выгоднее брать стаки по 64: игра никак не штрафует нас за то, что мы заталкиваем больше материалов!
Боттлнек решается разве что тем, что я выкрутил RPM, и потенциально добавлю ещё перемалывалок
Итого: несколько потерянных часов жизни ради какой-то фигни) Но перефразируя великих, "это не потерянное время, если вам было весело"
Фуф
Итого: несколько потерянных часов жизни ради какой-то фигни) Но перефразируя великих, "это не потерянное время, если вам было весело"
Фуф
🔥8
Еееее, просидеть 6 часов днд боёвки с персонажем в отключке!
Upd. Недосчитал. Там скорее 4
Upd. Недосчитал. Там скорее 4
🕊2
Заказал в яндексе одно такси. Приехало два. В приложении отображается одно. Дозвонилось таксистов до меня два
🙂
🙂
👍6
Фейсконтроль не пустил в бар, где меня ждало 3 человека
Да что за день-то такой, ну блят)))0)
Да что за день-то такой, ну блят)))0)
😭3
В клауд сервисе есть у меня тачка на одно ядро, стоит чучуть в месяц
Хз, сколько она уже есть. Завёл очень давно, наощупь, тут же забыл, в каком сервисе
Откопал нужную почту, обнаружил, что я в нём же в последнее время поднял себе ещё пару на другом аккаунте. Решил перенести на него же и эту мелкую
А одноядерных конфигураций больше нет, есть только дороже))))
Хз, сколько она уже есть. Завёл очень давно, наощупь, тут же забыл, в каком сервисе
Откопал нужную почту, обнаружил, что я в нём же в последнее время поднял себе ещё пару на другом аккаунте. Решил перенести на него же и эту мелкую
А одноядерных конфигураций больше нет, есть только дороже))))
Пытался скачать firefox
Яндекс в качестве рекламы подсунул сайт, который очень пытается быть похожим
Не выкупил — скачал установщик
Получил яндекс браузер, оперу и ушат говна впридачу
Стыдно и за поиск, и за браузер. Просто пиздец. Жопа сгорела
Яндекс в качестве рекламы подсунул сайт, который очень пытается быть похожим
Не выкупил — скачал установщик
Получил яндекс браузер, оперу и ушат говна впридачу
Стыдно и за поиск, и за браузер. Просто пиздец. Жопа сгорела
2 поездки на электричке из 3-х бесплатно!
Как? Легко! Нужно всего лишьсесть не на той платформе, уехать непонятно куда, затем сесть на противоположное направление и вернуться. Никто не узнает об этих двух поездках!
Как? Легко! Нужно всего лишь
🥰6😱2💋2