
bedrock-rs: Разработка для Minecraft Bedrock на Rust
"Универсальная библиотека для Minecraft Bedrock на Rust"
bedrock-crustaceans/bedrock-rs, github.com
Для Java Edition существует множество моддинговых инструментов - Forge, Fabric, Quilt, Paper. Bedrock Edition до сих пор лишен такого внимания. Разработчикам, пытающимся создать что-то кастомное для Bedrock - частный сервер, систему аддонов или специализированный клиент - приходится обходиться ограниченными инструментами и глубокими знаниями протокола. Вот здесь на сцену выходит bedrock-rs.
Что делает bedrock-rs
bedrock-rs - это Rust-библиотека, абстрагирующая сложность Minecraft Bedrock. Вместо борьбы с сырыми протокольными буферами и спецификациями форматов данных, вы получаете модульный инструментарий, который берет на себя сложные задачи. Проект разбит на несколько crate, каждый из которых выполняет одну задачу - и вы используете только то, что нужно.
Основная идея солидна. Большинство разработчиков, работающих над Bedrock, дублируют одни и те же низкоуровневые задачи: парсинг пакетов протокола, управление метаданными аддонов, работа с файлами уровней. bedrock-rs упаковывает эти проблемы в повторно используемые модули, чтобы вы не изобретали велосипед.
Основные crate и их функции
bedrock-rs распределяет функциональность между пятью основными crate, каждое с конкретной целью. Понимание того, что вам нужно, - половина успеха.
- bedrockrs::shared - Основной слой. Общие типы данных, используемые во всей библиотеке. Здесь находятся общие строительные блоки, включая поддержку макросов для вывода, на которые зависят другие модули.
- bedrockrs::form - Если вы работаете с системой JSON-форм Bedrock, этот crate обрабатывает сериализацию и десериализацию. Bedrock использует формы для элементов интерфейса, и этот crate абстрагирует особенности формата.
- bedrockrs::addon - Для разработки аддонов. Предоставляет структуры данных для определения макетов аддонов и обрабатывает сериализацию, необходимую для создания или изменения поведенческих пакетов и ресурсных пакетов программно.
- bedrockrs::proto - Тяжело вооруженный. Это полная реализация протокола Bedrock, охватывающая как серверную, так и клиентскую часть операций. Поддержка нескольких версий протокола позволяет работать с разными выпусками Bedrock без полной переписки кода.
- bedrockrs::level - Работает с форматом уровней Bedrock с использованием LevelDB. Если вам нужно читать или изменять данные мира, это то, на что вы ссылаетесь.
Модульный подход означает, что вам не придется импортировать все, чтобы работать с аддонами, например. Чистый дизайн.
Почему использовать это
Честно говоря: bedrock-rs решает конкретную проблему. Вам нужна эта библиотека, если вы строите инструменты разработчика, кастомные серверы или фреймворки для создания аддонов на Rust. Некоторые конкретные примеры:
Разработчик, строящий обертку для сервера Bedrock на Rust, может использовать crate `proto`, чтобы обработать клиентские подключения без ручной реализации протокола версий Bedrock. Кто-то, создавший платформу для распределения аддонов, может использовать crate `addon`, чтобы проверить поведенческие пакеты программно. Инструмент, преобразующий форматы миров между Java и Bedrock, будет сильно полагаться на crate `level`.
Но вот важный момент: это не фреймворк для моддинга, как Fabric или Forge. Вы не устанавливаете bedrock-rs, чтобы добавить новые геймплейные механики на стандартный сервер. Вы используете его как библиотеку, когда пишете код на Rust, который нуждается в взаимодействии с форматами данных или протоколом Bedrock. Это более узкий случай применения, чем кажется, и это нормально.
Начало работы с bedrock-rs
Установка проста, если вы уже использовали Rust. Добавьте это в ваш Cargo.toml:
[dependencies]
bedrockrs = { git = "https://github.com/bedrock-crustaceans/bedrock-rs.git", features = ["full"] }
Примечание: bedrock-rs берется напрямую из GitHub, а не из crates.io - проект планирует опубликоваться в crates.io в будущем, но пока вы используете версию из git. Флаг.features «full» включает все crate и опциональную функциональность, хотя вы можете настроить это в зависимости от того, что вам действительно нужно (form, addon, proto, level и т.д.). Минимизация зависимостей сохраняет разумные времена компиляции.
После этого документация для каждого отдельного crate проведет вас через подробности. Сервер Discord проекта - лучшее место, чтобы задать вопросы или узнать, куда движется сообщество далее.
Хорошие части и где это идет не так
bedrock-rs действительно отличается модульной архитектурой. В отличие от монолитных библиотек, которые заставляют вас тащить мертвый вес, структура crate позволяет выбирать по желанию. Здесь все хорошо с производительностью, поскольку это Rust - вы получаете безопасность памяти и скорость без накладных расходов на сборку мусора.
Реализация протокола полная, и поддержка нескольких версий очень полезна. Если вы развертываете под разные версии Bedrock, наличие этой функции в библиотеке спасает от серьезных головной боли. Crate `addon` с программным подходом к созданию поведенческих пакетов действительно полезен, если вы строите инструменты кодогенерации.
Где事情 становятся сложнее: документация ориентирована на разработчиков и предполагает, что вы уже достаточно хорошо понимаете архитектуру Bedrock. Если вы новичок в разработке для Bedrock, вам придется дополнить это статьями из Minecraft Wiki о структуре протоколов. Библиотека еще молода (162 звезд, активна, но не массовая), поэтому вы не найдете множества ответов на Stack Overflow.
Кроме того, bedrock-rs более низкоуровневый, чем ожидают некоторые разработчики. Он не абстрагирует все сложности - просто лучше организует их. Вам все равно нужно понимать структуры пакетов и форматы данных. Представьте это как шаг выше ручной манипуляции байтами, но не полную систему, ведущую за рукавиком.
Когда выбирать bedrock-rs вместо альтернатив
Если вам нужно строить кастомные инструменты для Bedrock на Rust, bedrock-rs - самая полная библиотека, доступная сейчас. Прямых конкурентов в экосистеме Rust для Bedrock мало. Технически вы могли бы написать свою собственную реализацию протокола (как это делали некоторые), но это означало бы месяцы обратного инжиниринга форматов Bedrock.
Если вы строите частный сервер для Java Edition или модпак, это не для вас. Если вы пытаетесь создать игровой контент для стандартного Bedrock, вам следует посмотреть на поведенческие пакеты и ресурсные пакеты через официальные инструменты, а не bedrock-rs.
Сладкое место - когда вы являетесь разработчиком на Rust, нуждающимся в программном взаимодействии с экосистемой Bedrock. Строительство инструментов, мостов между платформами или специализированных реализаций сервера. Это миссия, для которой была построена bedrock-rs, и она выполняет свою задачу хорошо.
Если вы управляете сервером Bedrock и хотите узнать, как он работает, инструменты, такие как Проверщик статуса сервера Minecraft, дают вам информацию о количестве игроков и производительности. Если вы исследуете, что доступно в сообществе Bedrock, Список серверов Minecraft показывает, что там есть. Это инструменты, ориентированные на игроков. bedrock-rs предназначен для тех, кто строит следующее поколение таких инструментов.
Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.
Have a Question or Tip about this Guide?Community Q&A
Ask a question or help other players below. Join the discussion and share your Minecraft tips!
Комментарии
Пока нет комментариев. Станьте первым, кто поделится своим мнением!


