В данной статье я хотел бы проанализировать все, что на данный момент известно про Minecraft Script Engine (ранее упоминавшийся во многих ресурсах как Script API/Scripting API) и составить некое полноценное виденье того, что это и для чего может быть применено. Сразу оговорю, что данная статья написана 25.10.2018 и может содержать неактуальные на момент прочтения сведения. Также на данный момент у меня нет возможности запускать и тестировать приведенные ниже примеры, поскольку возможности доступны только в закрытой бете игры.
Итак, тщательно ознакомившись с документацией по Minecraft Script Engine (и даже переведя большую её часть) и примерами, я смог сложить для себя определенное мнение о данной платформе. Попробую описать это в срезе плюсов/минусов по сравнению с InnerCore/BlockLauncher.
Итак, несомненные преимущества:
- Отсутствие необходимости устанавливать дополнительное программное обеспечение
- Официальная поддержка от Mojang и, вероятно, частые обновления
- Поддержка клиент-серверной архитектуры заложена в самом приложении, полное разделение клиентской и серверной логики
- Используется уже известный нам язык программирования JavaScript и его формат хранения данных — JSON.
- Возможность полноценной отладки с помощью отладчика JIT Debug (Visual Studio).
- Для создания интерфейсов используется формат WEB-страниц (HTML5), что позволяет с легкостью создавать окна и достаточно просто с ними работать.
- Возможна прямая работа с пакетами поведений, что несомненно является плюсом для тех, кто умеет с ними работать.
- Сохранена архитектура пакетов поведений, многие функции принимают аргументы в том же формате, в котором они используются в JSON-файлах поведений.
- Сами скрипты являются частью пакетов поведений, а значит, их можно упаковывать в архивы с пакетами ресурсов и картами.
Но, у каждой медали есть две стороны. К сожалению, на данном этапе недостатки для меня оказались намного существеннее. И тут пойдут примеры кода, в качестве доказательств.
Как работает графика Minecraft? Движок майнкрафта
- Файловая система. Несомненно лучше, чем один файл ModPE (что решается с помощью системы сборки NIDE), но далека от гибкости и мощности файловой системы InnerCore. Все скрипты Minecraft Script Engine являются независимыми исполняемыми файлами и коммуницируют только на уровне событий.
- Архитектура. В ванильном варианте архитектура скрипта очень ограниченна контекстом вызова функций. Нужно либо объявлять все функции в пространстве имен системы (см. документацию), либо передавать во все функции, использующие API Script Engine’a, контекст их выполнения. Яркий пример:
var system = client.registerSystem(0,0); system.
initialize = function() { // Обратите внимание на поддержку стрелочных функций this.listenForEvent(«minecraft:client_entered_world», (eventData) => this.
playerJoin()); // Альтернативный вариант — передать контекст // в качестве параметра обычной функции this.listenForEvent(«minecraft:client_entered_world», (eventData) => playerJoin(this)); } // Функции приходится объявлять так system.playerJoin = function() { this.broadcastEvent(«minecraft:display_chat_event «, «Hello, world!»); } // Альтернативный вариант — передать контекст в качестве параметра function playerJoin(ctx){ ctx.broadcastEvent(«minecraft:display_chat_event «, «Hello, world!»); }
var system = client.registerSystem(0,0); system.initialize = function() < // Обратите внимание на поддержку стрелочных функций this.listenForEvent(«minecraft:client_entered_world», (eventData) =>this.playerJoin()); // Альтернативный вариант — передать контекст // в качестве параметра обычной функции this.listenForEvent(«minecraft:client_entered_world», (eventData) => playerJoin(this)); > // Функции приходится объявлять так system.playerJoin = function() < this.broadcastEvent(«minecraft:display_chat_event «, «Hello, world!»); >// Альтернативный вариант — передать контекст в качестве параметра function playerJoin(ctx)
- Использование команд командного блока в качестве команд. Разбирая примеры, приведенные в документации, я часто наталкивался на подобные строки:
Вроде бы хорошо, в чем проблема? А их даже 2, а именно: читабельность (этот код сложно назвать интуитивно понятным) и скорость выполнения. Поскольку парсер команд — штука относительно медленная, вызывать подобные методы достаточно часто нельзя в принципе — слишком высокая нагрузка на клиент/сервер, так как команда будет передана из Minecraft Script Engine парсеру команд командного блока, а уже он её превратит в набор необходимых аргументов и вызовет нужные функции. Процесс, мягко говоря, медленный. Хотя, с другой стороны, гибкость этого метода все равно остается на высоте.
- Повторюсь, но отсутствие читабельности кода. Для того, чтобы получить всех сущностей в мире, например, нужно выполнить следующий код:
var view = this.registerView(); let entities = this.getEntitiesFromView(customView);
var view = this.registerView(); let entities = this.getEntitiesFromView(customView);
Согласитесь, не очень очевидно, о чем речь?)
- Отсутствие доступа к внешнему миру. В отличии от Inner Core & BlockLauncher, разработчики Minecraft Script Engine ни за что не предоставят доступ к Java (безопасность для них прежде всего). Тем не менее, запуск чего-либо «в коробке» сразу урезает возможности АПИ в разы.
- Наконец, полная недоделанность. Я все-таки отнесу это к минусам, хотя и понимаю, что большая часть функционала будет ждать нас впереди.
Моё личное мнение — не стоит возлагать больших надежд на Minecraft Script Engine. В корне неправильная архитектура и ограничения, связанные с безопасностью и скоростью работы, сделают это АПИ лишь очередным инструментом для создания карт либо отдельных модов, слабо интегрируемых друг с другом, следующей ступенью после пакетов поведений и текстур.
Что будет на самом деле — время покажет. Ваши предположения жду в комментариях)
Источник: mineprogramming.org
Подвинься, Unreal Engine 5. Minecraft получила безумно реалистичный набор текстур
На сайте NexusMod появилась модификация для Minecraft, благодаря которой некоторые блоки в игре получают невероятно реалистичные текстуры. Мод так и называется «Безумный Реализм». Insane Realism является духовным наследником мода RealismExtreme. Его задача — максимально изменить графику в Minecraft. Всего было переработано 72 блока.
Скачать модификацию можно по ссылке . К сожалению, данный мод несовместим с RTX версией Minecraft, поэтому упасть в обморок от совсем реалистичной графики все же не получится.
Источник: gameguru.ru
⚡️ Подписка Model Engine R3.1.6
Этот ресурс является премиальным и требует статус Подписка
Model Engine — плагин, который позволяет каждому создавать, казалось бы, модифицированные модели, не касаясь каких-либо конфигураций.
Немного подробней:
Model Engine — это плагин Minecraft, который преодолевает барьер моделирования сущностей и позволяет создавать модели, подобные модам, анимировать их и предоставлять полный контроль над их анимацией. Возможно, вы слышали о подключаемом модуле ModelAPI, подключаемом модуле моделирования, который требует от вас базовых знаний о модулях Java и кодирования. Модель двигателя, однако,
полностью убрали необходимость что-либо кодировать. Другими словами, вы можете создавать что угодно, не зная java!
Особенности плагина Model Engine:
- Безупречно работает с BlockBench. Не требует знаний о настройке, написании сценариев или кодировании.
- Автоматическая генерация пакетов ресурсов. Просто принимай и играй.
- Полный контроль анимации. Плавная анимация и переходы.
- Пользовательский хитбокс. Удар, движение, столкновение — все в одном.
- Повреждение оттенка. Отображение красных моделей при повреждении.
- Никаких модов не требуется.
- Поддержка MythicMobs.
Команды на плагин Model Engine:
Есть всего несколько команд.
/meg reload — Перезагружает конфигурацию и модели.
/meg reload config — Перезагрузить только конфигурацию.
/meg reload models — регенерировать модели.
/meg trait — Интеграция с Citizens.
/meg disguise — Замаскировать себя под модель.
/meg undisguise — Снимите маску.
Права плагина Model Engine:
modelengine.command.reload — Разрешите игрокам перезагрузить конфигурацию и модели.
modelengine.command.trait — Разрешить игрокам настраивать черту Citizens NPC.
modelengine.command.disguise — Позвольте игрокам замаскироваться под модель.
modelengine.command.undisguise — Позвольте игрокам снять маску.
Как установить плагин Model Engine?
- Скачайте плагин.
- Возьмите скачанный файл и перенесите в папку plugins вашего сервера.
- Перезапустите сервер.
- Готово.
Автор McDev Скачивания 312 Просмотры 4,082 Первый выпуск 28 Июл 2021 Обновление 2 Апр 2023 Оценка 0.00 звёзд 0 оценок
Источник: forum-minecraft.ru