ProgramCrafter
Пользователи-
Публикации
245 -
Зарегистрирован
-
Посещение
-
Победитель дней
41
Тип публикации
Блоги
Профили
Форум
Багтрекер
Магазин
Все публикации пользователя ProgramCrafter
-
Крафт программ. Делаем свой мод - часть 1. Регистрация в Minecraft.
ProgramCrafter прокомментировал ProgramCrafter запись в блоге в Рецепты программирования
Идея мода - полная интеграция с OpenComputers (может быть, даже не будет GUI у блоков). Компьютер сможет управлять заводом: напрямую отдавать команды о переплавке чего-нибудь, получать прогресс выполняемого действия. Почему версия 1.14? Она просто валялась у меня на диске, и я решил проверить, а работает ли вообще Gradle по новой инструкции. -
Крафт программ. Делаем свой мод - часть 1. Регистрация в Minecraft.
ProgramCrafter добавил запись в блоге в Рецепты программирования
Благодаря посту «Путь от нуля до разработчика OpenComputers» я вспомнил, что сам тоже хотел сделать моды для Minecraft. Два раза я пытался установить всё необходимое, два раза Gradle ругался на отсутствие JDK. Почему бы не попробовать ещё раз? К тому же, нашлась замечательная ссылка на документацию Forge: https://mcforge.readthedocs.io/en/latest/gettingstarted/ (спасибо @Totoro). Итак, я раскопал на диске Gradle от 1.14 версии Minecraft и выполнил новую для себя команду gradlew genEclipseRuns . Жду… нет, ничего не завершается с ошибкой, Minecraft спокойно декомпилируется, и наконец появляется надпись «BUILD SUCCESSFUL». До такого этапа я раньше не доходил, поэтому решил выбрать, какую из своих идей реализовать. Мне понравилась идея заводика, интегрированного с OpenComputers. Заводик импортирует в себя руду, перерабатывает (с помощью верстаков, печек, дробилок) и экспортирует готовый продукт. При этом каждую команду даёт компьютер из OpenComputers. Как и положено по документации, я написал в файл TestMod.java: В файл mcmod.info (прямо внутри папки src/main/resources): Пишу gradlew build. Мод собирается. Закидываю его к другим модам, запускаю Minecraft 1.14. Запуск происходит очень спокойно, никакого мода по имени OCTechnics в списке не появилось. Что делать? Правильно, искать другие моды под ту же версию (не важно, исходники или скомпилированные моды, главное, чтобы работали). Смотреть, где там лежат файлы и делать такие же файлы у себя. Нашёлся некий файл pack.mcmeta. Пишем туда (спасибо IronChests): Кроме того, нужен ещё файл mods.toml: На этом этапе я безуспешно пытался понять, какие ссылки (для проверки обновлений мода) сюда надо подключить. В конце концов просто удалил их все. Тогда в логах пропала ошибка MalformedURL, и мод стал опознаваться. Итоговая схема расположения файлов: src - main - java - org - octechnics - octechnics - TestMod.java - resources - assets - octechnics - lang - en_us.json (пустой) - META-INF - mods.toml - mcmod.info - pack.mcmeta В следующей записи - создание базового блока для завода. -
@BrightYC новый эмулятор почему-то медленнее: примерно в 2 раза меньше вычислений в секунду (600К вместо миллиона), дольше рендер случайных символов. Это ограничение сервера или какой-то баг?
-
У меня есть такая идея: игроком надо прогружать чанк, в котором находится робот с чанклоадером, но не соседний, где будет находиться тестовый робот. Тогда сигнал гарантированно будет доходить. Насчёт дюпов и исчезновений роботов (важно: /me не читал код, только делает предположения): возможно, чанк сохраняется на диск в тот момент, когда он попадает в очередь на выгрузку, но продолжает просчитываться дальше. Если робот выезжает из выгружаемого в прогруженный чанк, то робот дюпается; если въезжает внутрь, то исчезает.
-
заказ Benchmark - тестируем эмулятор OpenComputers
ProgramCrafter ответил в тему Totoro в Новые заказы
На прошлом тесте было fast=true (быстрый режим). Данные второго теста OCEmu (fast=false): тест 1 - 0,02 с тест 2 - 1,61 с (рендер - как в Minecraft - идёт постоянно) тест 3 - 2,20 с тест 4 - 3,00 с тест 5 - 4,72 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена тест 8 - без предупреждений тест 9 - 1,15 с; баг с поимкой собственного сообщения остался тест 10 - не проводился тест 11 - 0,09 с Итого в OCEmu в медленном режиме: - операции с GPU медленнее, чем в Minecraft, - генерация случайных чисел быстрее, - пищалка в 3 раза быстрее Minecraft, - (баг) модем ловит собственное сообщение, - запись на EEPROM практически мгновенна. Тайминги Ocelot Online практически совпадают с нужными, за исключением GPU. -
заказ Benchmark - тестируем эмулятор OpenComputers
ProgramCrafter ответил в тему Totoro в Новые заказы
Попробовал написать что-то такое. Сам файл лежит в онлайн-эмуляторе (ocelot.fomalhaut.me) по пути /home/.mt.lua . Вкратце результат: Ocelot Online гораздо лучше соответствует таймингам Minecraft, чем OCEmu. Но в обоих эмуляторах есть баги. Тесты: тест 1 - генерация 10 тысяч псевдослучайных чисел тесты 2-4 - отрисовка случайного текста на экране тест 5 - испытание гуделки случайными звуками (computer.beep) тест 6 - проверка, все ли компоненты имеют методы по документации тест 7 - проверка файловой системы на чтение-запись тест 8 - проверка Интернета тесты 9,10 - проверка сетевой и соединённой карты соответственно тест 11 - проверка EEPROM на чтение-запись Результаты: Minecraft 1.7.10 (компьютер tier 3) тест 1 - 0,05 с тест 2 - 1,3 с (рендер идёт постоянно) тест 3 - 1,8 с тест 4 - 2,5 с тест 5 - 13,5 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена тест 8 - без предупреждений тест 9 - 1,15 с; предупреждение, что никто на пинг не ответил тест 10 - не проводился (не хватило места для соединённой карточки) тест 11 - 2,2 с Ocelot Online тест 1 - 0,05 с тест 2 - 1,9 с (рендер кусками) тест 3 - 2,65 с тест 4 - 3,7 с тест 5 - 13,5 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена; (баг эмулятора) на unmanaged диск ничего не записывается тест 8 - без предупреждений тест 9, 10 - не проводились тест 11 - 2,2 с OCEmu тест 1 - 0,02 с тест 2 - 0,37 с (рендер после coroutine.yield) тест 3 - 0,43 с тест 4 - 0,91 с тест 5 - 4,58 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена тест 8 - без предупреждений тест 9 - 1 с; (баг OCEmu) модем поймал своё сообщение тест 10 - не проводился тест 11 - 0,001 с Награду попрошу отдать на дальнейшую разработку Ocelot и фиксы багов. -
заказ администрации Принты, инфо-доска и пр.
ProgramCrafter ответил в тему Alex в Выполненные заказы
Я тут придумал способ обойтись без конвертеров (ну, или почти). Только понадобится считать и желательно иметь бумажку (коды для 4 букв вывески я уже посчитал). -
2D Принтер (v1.0.0) Пользуясь этой небольшой программой, вы сможете напечатать вывеску своей мечты! Правда, придётся немного посчитать... Установка: pastebin get 95SgeMBn 2d_printer.lua Любая буква состоит из одной или нескольких фигур. Каждая фигура - это параллелепипед толщиной в 1/16 блока. Он задаётся числом (X левой стороны) * 4096 + (ширина) * 256 + (Y нижней стороны) * 16 + (высота). Например, для печати буквы S надо последовательно набрать 16961, 17043, 25634, 25714, 25794, 41539, 41649. H - 16940, 25714, 41516. O - 16968, 25634, 25794, 41544. P - 16940, 25714, 25794, 41619. (К сожалению, числа для других букв ещё не рассчитаны. ) Наконец, чтобы отправить фрагмент вывески на печать, необходимо набрать 0 или 'print'. Программа начнёт печать, дождётся её завершения и закроется.
-
заказ администрации Принты, инфо-доска и пр.
ProgramCrafter ответил в тему Alex в Выполненные заказы
Вторая версия программы: Теперь: 1. Цвет фона меняется табуляцией при отсутствии выделения или выделенном поле "-- Editing". 2. Разрешение можно передать вторым и третьим аргументом в редактор баннеров. Отрисовщик меняет разрешение экрана под картинку автоматически. 3. Если в отрисовщик передать только один путь к баннеру, он не обновляет картинку на экране. Вообще. 4. Загруженные баннеры кэшируются: диск будет жужжать ровно столько раз, сколько баннеров указано, и не больше. -
Эта программа состоит из двух частей: Создание картинки: https://pastebin.com/ff1zwCDQ Отрисовка картинок: https://pastebin.com/tJHPS9NB Для создания баннера надо: 1. Запустить программу. Первый аргумент - путь, куда баннер будет сохраняться. Пример запуска: banner.lua path_to_banner 2. Кликнуть в любом месте (для распознавания владельца). 3. Щёлкнуть правой кнопкой мышки, чтобы перейти в режим редактирования. В режиме редактирования: Клик левой кнопкой мыши на пустом месте создаёт новое текстовое поле. Клик левой кнопкой мыши на каком-то поле выберет его (фон под ним подсветится). При нажатии клавиш текст добавляется в выбранное поле. Работает Backspace. Цвет текста в выделенном поле можно поменять табуляцией (есть палитра из 12 цветов). Если ничего не выделено, то поменяется цвет фона. Перемещается поле стрелками, удаляется кнопкой Delete. В любой момент программу можно закрыть (Ctrl-C), сохранения автоматические. Программу нужно запускать с аргументами: первый отвечает за частоту смены картинки (в секундах), следующие - пути, где картинки лежат. Например: banner_show.lua 5 path_to_banner1 path_to_banner2 Закрывается тоже по Ctrl-C. Обо всех багах и предложениях просьба сообщать сюда.
-
заказ администрации Принты, инфо-доска и пр.
ProgramCrafter ответил в тему Alex в Выполненные заказы
Вторая модель банкомата: https://pastebin.com/9MwUsGE8 С её помощью можно смонтировать 3 варианта банкомата: или торчащий мордой из стены, или стоящий сам по себе, или группу из сразу 4 банкоматов на все стороны света (тогда понадобится сложная программа для управления всем сразу). Справа - тот банкомат, который я выкладывал раньше (один из кожухов для наглядности снят). -
заказ администрации Принты, инфо-доска и пр.
ProgramCrafter ответил в тему Alex в Выполненные заказы
Программа для создания баннеров: Создание: https://pastebin.com/7v4NTukh Для создания баннера надо: 1. Запустить программу. Первый аргумент - путь, куда баннер будет сохраняться. Пример запуска: banner.lua path_to_banner 2. Кликнуть в любом месте (для распознавания владельца). 3. Щёлкнуть правой кнопкой мышки, чтобы перейти в режим редактирования. В режиме редактирования: Клик левой кнопкой мыши на пустом месте создаёт новое текстовое поле. Клик левой кнопкой мыши на каком-то поле выберет его (фон под ним подсветится). При нажатии клавиш текст добавляется в выбранное поле. Работает Backspace. Цвет текста в выделенном поле можно поменять табуляцией (есть палитра из 27 цветов). Перемещается текст стрелками. Удаляется поле кнопкой Delete. В любой момент программу можно закрыть (Ctrl-C), сохранения автоматические. Отрисовка: https://pastebin.com/abUTNJUK Программу нужно запускать с аргументами: первый отвечает за частоту смены картинки (в секундах), следующие - пути, где картинки лежат. Закрывается тоже по Ctrl-C. Скрин (из эмулятора): -
заказ администрации Принты, инфо-доска и пр.
ProgramCrafter ответил в тему Alex в Выполненные заказы
Вот такой банкомат получился: https://pastebin.com/g6jDhs9N В качестве материала выбрана глина, потому что она одинаково видна и в редакторе, и в игре. -
заказ администрации Принты, инфо-доска и пр.
ProgramCrafter ответил в тему Alex в Выполненные заказы
Ничего страшного, новые придумают! P.S. А какой лимит на количество шейпов стоит? Стандартный или больше? Просто для банкомата мало 24 получается... -
заказ администрации Принты, инфо-доска и пр.
ProgramCrafter ответил в тему Alex в Выполненные заказы
Сделал. Немного скруглил. Если будет смотреться лучше, то это замечательно! Дело в том, что в редакторе фоном служит трава и немного криво накладываются текстуры. Если всё будет оформлено в одном стиле, то смотреться, по-моему, будет хорошо. Но немного увеличить цепь можно. Новые модели: https://pastebin.com/cLWxVGMW Выглядят вот так: -
заказ администрации Принты, инфо-доска и пр.
ProgramCrafter ответил в тему Alex в Выполненные заказы
Заказ №2. Решётка. https://pastebin.com/Hj0XEnNh Решётка, которая на скрине - это Lattice2. Модель лавы можно использовать, чтобы никто не мог её забрать ведром. Как выглядит всё вместе: -
заказ администрации Принты, инфо-доска и пр.
ProgramCrafter ответил в тему Alex в Выполненные заказы
Заказ №1. Цепь + пятаки (верхний и нижний). https://pastebin.com/QiQ1qu2B Печатается с помощью программы print3d. Как выглядит в мире:
