ProgramCrafter 544 Опубликовано: 17 июня, 2022 (изменено) Хотел заказать эту программу у других, но пришлось писать самому. Ничего, награду тоже выдам себе. Цитата Главная/Программирование/Разработчикам/Новые заказы Программа "Сундук пчеловода v1.OC" Описание: требуется программа - интерфейс для сундука с пчёлами. Требования к ПО: 1. Выводить список пчёл в сундуке на экран. При этом должны выводиться вид пчелы (для гибридов - оба вида), срок жизни, скорость работы, допустимые температура и влажность, возможность пчелы работать ночью, под дождём и в пещере; 2. Без перезапуска принимать новых пчёл через воронку/PIM (опционально - сразу забирать из пасек); 3. Выдавать пчёл через раздатчик/PIM одним кликом по данным этой пчелы. Награда: два стака бутербродов с мёдом. Оборудование: тир2 компьютер, адаптер/транспозер, алмазный сундук IronChest либо сундук пчеловода из Forestry, опционально PIM. Связь: ответ на этот пост в дискорде. Ник на сервере - ProgramCrafter. Моя программа (https://github.com/ProgramCrafter/lua-utils/blob/a22e5e50ad46f130f6a7ec5959cd7282bb8a06df/beealyzer_v1oc.lua) служит компактным интерфейсом для сундука с пчёлами. Её возможности: 1. Сканирование сундука и вывод списка проанализированных пчёл с их характеристиками на экран (при запуске происходит автоматический скан); 2. Выдача любой пчелы кликом левой кнопкой по её описанию; 3. Принудительное обновление списка (если в сундуке что-либо появилось) правой кнопкой мыши; 4. Выход кликом по заголовку. Схема собирается таким образом: к компьютеру надо подключить транспозер, сверху на него поставить сундук с пчёлами, а с восточной стороны (правится в коде) выбрасыватель. Выбрасыватель требуется запитать от генератора импульсов (я использовал таймер из RedLogic из-за его компактности) - программа не подаёт самостоятельно импульс для выкидывания пчелы. Чтобы программа работала, не забудьте поменять в начале программы ник доверенного пользователя на свой. Программа воспринимает нажатия только от доверенного пользователя - то есть, по умолчанию, только от меня. Как выглядит интерфейс: Изменено 4 августа, 2022 пользователем ProgramCrafter Заменил ссылку на скриншот на неизменяемую 7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 17 июня, 2022 1 час назад, ProgramCrafter сказал: Выбрасыватель требуется запитать от генератора импульсов (я использовал таймер из RedLogic из-за его компактности) - программа не подаёт самостоятельно импульс для выкидывания пчелы. А в чём преимущество такого решения? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 544 Опубликовано: 18 июня, 2022 13 часа назад, eu_tomat сказал: А в чём преимущество такого решения? Основное преимущество - не требуется использовать контроллер красного камня или красную плату в компьютере. 1) В тир2 компьютере и так мало места: один из слотов занимает видеокарта, во второй слот влазит максимум тир1 плата. Туда можно поставить редстоун-плату, но не нужно; 2) Упрощается монтаж схемы - не надо думать, как подвести провод ещё и к контроллеру красного камня, или как разместить выбрасыватель достаточно близко к компьютеру, чтобы он получал сигнал; 3) Такое решение на 2 тика быстрее - не надо включать и выключать сигнал. Следовательно, если надо обработать много пчёл, это может быть существенно. (Правда, сейчас большая часть времени тратится на обновление экрана. Сюда надо бы прикрутить буферизацию и использование по возможности gpu.copy.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 18 июня, 2022 @ProgramCrafter В использовании таймера из RedLogic меня в первую очередь смущает его непрерывная работа независимо от состояния программы. Мало того, он при этом пытается инициировать работу выбрасывателя, что ещё сильнее увеличивает нагрузку на сервер. Компьютер же даёт команду красной плате лишь тогда, когда это необходимо, а в остальное время схема пассивна. Также схема на красной плате не зависит от наличия мода RedLogic, да и установка может получиться чуть компактнее. Но твои аргументы я понял. В каких-то ситуациях они могут оказаться решающими. У меня возник ещё один вопрос. 3 часа назад, ProgramCrafter сказал: Такое решение на 2 тика быстрее - не надо включать и выключать сигнал. Следовательно, если надо обработать много пчёл, это может быть существенно. А сколько пчёл ты выдаёшь за один раз? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 544 Опубликовано: 18 июня, 2022 15 минут назад, eu_tomat сказал: А сколько пчёл ты выдаёшь за один раз? По одной - но в отзывчивости программы разница в 2 тика (100 мс) может быть заметна. 15 минут назад, eu_tomat сказал: увеличивает нагрузку на сервер Это хорошо было бы измерить. В то, что таймеры из RedLogic могут нагружать сервер, я верю - но срабатывание выбрасывателя не должно особенно сильно добавлять нагрузку. Вообще мне кажется, что основная нагрузка сервера - это изменение блоков и создание сущностей, и если в выбрасывателе пусто, то ничего из этого не происходит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 18 июня, 2022 55 минут назад, ProgramCrafter сказал: Это хорошо было бы измерить. Измерить можно. Но эти тесты всегда сравнительные и выглядят примерно так: такой-то механизм в таком-то режиме создаёт нагрузку, эквивалентную N других механизмов в каком-то режиме. И с оговорками: на таком-то сервере и на такой-то сборке. Я пока не смог прийти к какому-то единому стандарту замеров. По грубым оценкам быстро тикающий таймер нагружает сервер на десятые доли процента, а приставленный к нему пустой выбрасыватель — на сотые. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 197 Опубликовано: 19 июня, 2022 Как на счет красивых иконок пчелок? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 544 Опубликовано: 19 июня, 2022 Изменения в новой версии (fe3a3c8) относительно начальной (5e97a3e): 1. Добавлена поддержка тир3 экранов; 2. Пчёлы сортируются по "уровню" - сложности получения их вида в селекции; 3. Поддерживается несколько сундуков с пчёлами; 4. Настройки сторон для сундуков и выдачи пчёл перенесены в начало программы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 544 Опубликовано: 19 июня, 2022 2 минуты назад, hohserg сказал: Как на счет красивых иконок пчелок? Очень мало места. Но если добавить их в шрифт OpenComputers, то можно, в принципе. Кто-то сможет нарисовать красиво пчелу шириной в два знакоместа? А точнее, двух пчёл - трутня (без короны) и принцессу (с короной). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 197 Опубликовано: 19 июня, 2022 А сколько всего видов пчел в сборке? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 544 Опубликовано: 19 июня, 2022 2 минуты назад, hohserg сказал: А сколько всего видов пчел в сборке? Пчелиный сундук говорит, что 37. Но может случиться, что Вольфрам поставит Extra Bees, и будет 150 видов, или где-то около того. Кстати, список пчёл есть здесь: https://minecraft.fandom.com/ru/wiki/Forestry/Пчеловодство Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 197 Опубликовано: 19 июня, 2022 Допустим, юзаем экран т3 и на иконку пчелы тратим до 6x6 знако-мест(7x7 включая отступ между иконками) По высоте влезает 7 пчел, по ширине 22 пчелы, 154 пчелы в сетке. Вроде все влезает даже на одной странице Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 544 Опубликовано: 19 июня, 2022 Проблема вот в чём: это будет выглядеть красиво, но пользоваться такой программой будет совершенно невозможно. Эта программа предназначена, чтобы быстро выбирать, каких пчёл скрещивать. Для этого важно видеть сразу все характеристики на одном экране. Именно поэтому меня не устроил просто сундук пчеловода - там надо наводить на каждую пчелу, зажав шифт, и запоминать - какая же пчела там лучше?.. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 197 Опубликовано: 19 июня, 2022 Жду версию для очков OpenPeripherals, там можно предметы рендерить 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 544 Опубликовано: 19 июня, 2022 24 минуты назад, hohserg сказал: Жду версию для очков OpenPeripherals, там можно предметы рендерить Тогда стоит завести issue на гитхабе: https://github.com/ProgramCrafter/lua-utils/issues Или на гитлабе - скоро и туда сделаю зеркало репозитория. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 544 Опубликовано: 1 июля, 2022 Под давлением общественности сделал версию, где отображаются только топовые пчёлы каждого вида. Скачать можно здесь: https://github.com/ProgramCrafter/lua-utils/blob/main/beealyzer_v2oc.lua Читаемость кода не максимальная, зато вся программа влазит в 256 строк - её можно скопировать и вставить в компьютер OC. Особых изменений по интерфейсу нет, поэтому думаю, что в скриншотах смысла нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 1 июля, 2022 1 час назад, ProgramCrafter сказал: сделал версию, где отображаются только топовые пчёлы каждого вида А как ты определяешь топовую пчелу, если, например, одна пчела хороша плодовитостью, другая — скоростью работы, а третья летает в дождь? Или, например, на этапе активной селекции желательно минимизировать срок жизни пчелы, но рабочим пчёлам желательно дать максимально возможную продолжительность жизни. Какая из них попадёт в топ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter Автор темы 544 Опубликовано: 2 июля, 2022 На данный момент пчёлы сортируются по таким критериям: 1. Все принцессы выше трутней; 2. Менее топовый вид; 3. Продолжительность жизни; 4. Скорость работы. Может быть, скорость работы - более важный критерий, чем продолжительность жизни, и их можно поменять местами. Но я не согласен, что срок жизни пчелы надо минимизировать при селекции: для этого надо куда-то спешить, а топовые пчёлы появляются с долгим сроком жизни по умолчанию. Их придётся скрещивать с менее топовыми, чтобы понизить срок жизни - а потом ещё раз, чтобы повысить. К тому же, если пчела живёт дольше, медленнее заполняются сундуки пчеловода Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 154 Опубликовано: 2 июля, 2022 3 часа назад, ProgramCrafter сказал: Но я не согласен, что срок жизни пчелы надо минимизировать при селекции: для этого надо куда-то спешить, а топовые пчёлы появляются с долгим сроком жизни по умолчанию. Минимизировать срок жизни пчелы на этапе селекции желательно, но не обязательно. Надо оно или нет, определяется конкретной ситуацией. Даже если спешить, не всегда целесообразно прививать весь набор генов, ускоряющих селекцию. Более приоритетным может оказаться переход к следующей ветви селекции, даже с не очень "быстрыми" генами. Я не имею чёткой формулы развития, поэтому меня и заинтересовали твои критерии рейтинга пчёл. 3 часа назад, ProgramCrafter сказал: К тому же, если пчела живёт дольше, медленнее заполняются сундуки пчеловода Для ускорения селекции как раз полезно наработать как можно больше разнообразного генетического материала. А чтобы не допустить переполнения сундуков, трутней с явно бесполезным набором генов можно выкинуть. Для этого нужен антирейтинг. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах