Перейти к содержимому
  • 0
Fingercomp

Организация фермы на роботе

Вопрос

Здравствуйте, уважаемые форумчане! В процессе создания на сервере InfoTech собственной энергостанции RF на биотопливе, появилась необходимость фермы дерева. Так как мультифермы из Форестри здесь отключены, в срочном порядке спаял роботика, вручил ему электропилу и написал простенький алгоритмик для добычи дерева:


Робот находится в одном блоке за фермой, в правом нижнем её углу:

 

XXXX|
XXXX|
XXXX|
---⌷+

X — саженцы, |, -, + — граница фермы, а — робот.


При каждом цикле сбора робот поднимается на 1 клетку над саженцами, обходит её "змейкой", если ему по пути попадается дерево — он его срубает и садит саженец из первого слота. Дойдя до конца, он выходит за границы фермы и идёт к стартовой позиции.


На таком алгоритме бы всё и закончилось, если бы не одно "но". Спасибо, Майнкрафт: если саженец вырастает и робот находится в месте, где должен быть блок древесины, последний заменяет роботика полностью и безвозвратно. Естественно, меня такой поворот опечалил бы безразмерно, потому на смену этому алгоритму пришёл новый, куда менее эффективный:


Робот находится в той же позиции, что и в прошлый раз, но "обход" фермы совершается иначе. Робот идёт вперёд на уровне фермы, срубая перед ним саженцы и деревья (мы избавляемся от прорастания в робота), затем возвращается через robot.back(), ставя перед собой саженцы. Дойдя до начала ряда, он выходит за границу, ставит саженец и поворачивает налево, проходит блок и снова поворачивается лицом к ферме, затем повторяется описанное. Возвращается так же, как и в прошлом алгоритме.


Долго обдумав, я решил, что это полностью безопасный алгоритм, записал на робота, запустил и вышел из игры.
 
Вернулся я сегодня на сервер на том же месте, где и вышел, поворачиваюсь к ферме, смотрю — робот пропал! Но паниковать рано. Твёрдой рукой ввожу секретное заклинание: /co l a:block u:Fingercomp.robot t:24h r:20, смотрю — 22 часа назад робот ставит саженец, затем перестаёт, что логично, так как ЧЛ в нём не было (ну, не накопил на него тугрей, бывает), а я вышел из игры. Но! 1.03 часа назад... Робот оживает!.. и ставит саженец. Один, второй, третий... Третий. Дальше лог молчит.
Вчера был поставлен сенсор на месте фермы, в котором крутятся игроки, которые были на ферме (ну, мало ли что, угонят там, например :)), бегу туда, ввожу edit /var/log/players/players.log, смотрю — один я был замечен на ферме. Немного поразмыслив, мысль появилась: эй, так ведь 1.03 часа назад был же рестарт!..
 
Ох уж эти Котлы с ненавистью к роботам. Что конкретно случилось — мне понять не дано, но робот исчез бесследно... А ферма нужна позарез, питать машинки биогазовыми движками на воде и лаве — не вариант совершенно. Поэтому создаю тему здесь, дабы опытные лесоводы могли дать совет, как же обустроить ферму дерева на роботах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендуемые сообщения

робот выходит на старт между саженцами(растояние один блок)

проверяет (детект или сравнение на ваш вкус) есть ли брёвна слева  и справа (он на 1 блок выше саженцев)

если да, то срубает, едет вперёд (у тебя пила так что можно и вниз), ставит саплинг и назад

Изменено пользователем ivan52945

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

лучше саженцы в  слот 16 ложи(а то могут закончиться и на это место могут пойти брёвна)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

лучше саженцы в  слот 16 ложи(а то могут закончиться и на это место могут пойти брёвна)

Не в этом дело, конечно, но всё же. Робот сначала пытается класть предметы в активный слот, затем по-порядку, как в сундуке. Так что не спасёт это.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

если саженец вырастает и робот находится в месте, где должен быть блок древесины, последний заменяет роботика полностью и безвозвратно.

Вот это печаль! А я как раз собирался переписать своего лесоруба с черепашек на роботов. Алгоритм похож на твой, но максимально оптимизированный на скорость и устойчивость. Похоже, частью скорости придется пожертвовать. По теме ничего не посоветую, сам удивлен происходящим.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кстати, о саженцах хороший вопрос. И о схеме посадки. Когда сундук забивался, черепаха прекращала рубить лес. И вся поляна сплошняком зарастала. В результате при первом проходе черепаха тратила все свои саженцы, собирая только древесину. Поэтому я высаживал деревья сплошными рядами, но между рядами имелись промежутки для листвы в 1-2 блока, точно не помню.

 

Upd: Вот еще вспомнилось: Моя лесоферма была огорожена стеклом. И если стекло оказывалось слишком близко к деревьям, то стекло могло заместиться листвой, почти как у тебя с роботом. Но с черепашкой ничего плохого никогда не происходило. Это под 1.4.7 было.

Изменено пользователем eu_tomat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ivan52945, тут, как я понял, в другом дело. Имеющийся алгоритм уже не предусматривает нахождения робота над саженцем. Тут, скорее всего, листва его убила. Или я не знаю.

Изменено пользователем eu_tomat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ivan52945, тут, как я понял, в другом дело. Имеющийся алгоритм уже не предусматривает нахождения робота над саженцем. Тут, скорее всего, листва его убила. Или я не знаю.

Именно, при таком алгоритме листва спокойно срубает робота (я подозреваю, что в момент перемещения). У меня же алгоритм не позволял дать себе срубиться, так как он нахоился на уровне саженцов.

 

робот выходит на старт между саженцами(растояние один блок)

проверяет (детект или сравнение на ваш вкус) есть ли брёвна слева  и справа (он на 1 блок выше саженцев)

если да, то срубает, едет вперёд (у тебя пила так что можно и вниз), ставит саплинг и назад

Если модифицировать этот алгоритм для нахождения робота на уровне саженцов, как у меня, и сравнивать блоки слева и справа с образцом — дубовым бревном, то, вероятно, проблем не будет... Сегодня опробую на новом роботе на сервере)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня же алгоритм не позволял дать себе срубиться, так как он нахоился на уровне саженцов.

А разве treecapitator распространяется на роботов? Если да, я удивлен. А если нет, то роботу все равно придется подняться, чтобы срубить дерево полностью, и тогда он рискует быть поглощенным листвой соседнего дерева, и весь наш эффективный алгоритм посадки идет коту под хвост. Изменено пользователем eu_tomat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

у меня просто берёзы

И на что это влияет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А разве treecapitator распространяется на роботов? Если да, я удивлен. А если нет, то роботу все равно придется подняться, чтобы срубить дерево полностью, и тогда он рискует быть поглощенным листвой соседнего дерева, и весь наш эффективный алгоритм посадки идет коту под хвост.

Распространяется, естественно, иначе бы в алгоритме было сказано о поднимании т. д. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
И на что это влияет?

 

 

Именно, при таком алгоритме листва спокойно срубает робота (я подозреваю, что в момент перемещения). У меня же алгоритм не позволял дать себе срубиться, так как он нахоился на уровне саженцов. 

а берёза так низко не растёт

Изменено пользователем ivan52945

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Fingercomp, если не хочешь, чтобы поле зря пропадало, и по возможности была засажена каждая клетка, можно при движении робота рубить саженец впереди и устанавливать позади. Затраты на лишние движения робота компенсируются большей продуктивностью фермы при той же занимаемой площади. Тем более, вариант ivan52945 тоже предусматривает повороты налево-направо для проверки блока. Если, конечно, он не с геосканером рубит лес.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В чем именно беда? Если робот едет над саженцем и бонмилит, его может пожрать выросшее дерево?
И если он внутри ствола едет, его тоже умирающее или соседнее вновь возросшее дерево пожирает тоже листвой новой?

 

И какой сорт деревьев это именно делает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Только что на ИТ поставил робота, и включенного и выключенного, бонмилил 20-30 деревьев разных, и ваниль и БМ, все норм вроде, робот там в листве как висел, так и висит. Листва его охватывает, но не замещает.  Не смог я повторить такой фокус. Или что-то не так нужно делать? http://puu.sh/iST0J/ea8f1c6fb9.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В чем именно беда? Если робот едет над саженцем и бонмилит, его может пожрать выросшее дерево?

И если он внутри ствола едет, его тоже умирающее или соседнее вновь возросшее дерево пожирает тоже листвой новой?

 

И какой сорт деревьев это именно делает?

Я тестил на дубах, но, вероятно, все деревья так делают. Как всем известно, блоки иметь дробные координаты не умеют. А роботы передвигаются. Как? В момент передвижения, робот заменяется на некую сущность, которая выглядит так же, но функционал никакой не несёт. Если кто-то замечал — робота в процессе передвижения сломать невозможно, только во время пребывания "настоящим", то есть, стоячим. Потому мои предположения, что происходит это тогда, когда саженец вырастает после проверки внутри мода, есть ли блок впереди робота. Робот превращается в эту самую сущность, передвигается в блок, после завершения движения же пытается превратиться в нормального робота, но это у него не получается, и он исчезает. Кстати, опять-таки, как мне кажется, происходит это при загрузке чанков. НО я не уверен в этом всём, повторяюсь, это всего лишь мои предположения.

 

P. S. В сингле такого не было, но я особо не тестил...

Изменено пользователем Fingercomp

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если робот над стволом будущим - дерево вообще не хочет расти. Если земли кусок, он так и остается в стволе.

 

При движении наверно возможно, видимо, что в момент смены координат вырастает крона и это может убить робота.

Нужно просто избегать таких ситуаций и не кататься там, где теоретически может в какой-то момент появиться крона или ствол дерева. Нужно делать дополнительные проверки, вырос ли саженец, чем то детектить или геосканить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если ездить под землей или на уровне земли? Саженцы подхватывать, а бревна рубить, когда робот проедет все поле - возвращается назад, попутно высаживая саженцы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если ездить под землей или на уровне земли? Саженцы подхватывать, а бревна рубить, когда робот проедет все поле - возвращается назад, попутно высаживая саженцы.

Ну так и надо  как-то по идее делать. Я, если честно, не понял, как Саня там умудрился в сингулярность лиственную попасть  :)

 

Как по мне, проехался, высадил саплинги (пробонмилил или поспал 10 мин) потом по нижним блокам дерева проехал их срубая, а вверх пуляй лазером, весь ствол упал, магнитом собирай и стволы и саплинги. Инвенториконтролллером наводи порядок в роботе. Роботу в ж...у вставить солнечную панельку, да и все дела, вот и весь дровосек.

 

Не пойму, какая там сложность дров нарубить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А если ездить под землей или на уровне земли? Саженцы подхватывать, а бревна рубить, когда робот проедет все поле - возвращается назад, попутно высаживая саженцы.

На уровне земли уже обсудили. А при движении под землей куда ты собираешься саженцы втыкать?

 

Ну так и надо  как-то по идее делать. Я, если честно, не понял, как Саня там умудрился в сингулярность лиственную попасть

Да легко можно попасть. Черепахи листвы не боялись, и для них самым оптимальным был уровень над саженцами. Изменено пользователем eu_tomat

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...