[Rust] bedrock-server

Ссылка на репозиторий: Anxiety-Network/bedrock-server

upd – кто желает стать контрибьютором и видит в проекте что-то годное – пишите в личные сообщения на форуме.

заранее извиняюсь за такой пост, поскольку в нем ничего практически не описано, и сам проект на гитхабе залит был на скорую руку: он не имеет никакой серьезности, строгости, объяснений самих реализаций.
проект из себя представляет ядро для майнкрафт бедрока (насколько помню, версии v26.10, если нестабильная генерация мира - попробуйте v26.20)

написано тупо для себя, и залито тупо для себя в портфолио: но контрибьюторы приветствуются, если кто-то горит желанием развивать проект дальше.
за щиткод извиняюсь, за ии код тоже. я обучался написанию кода на любимом Rust, но в высокотехнологичном стеке приходилось использовать ии (дабы в местах снижать нагрузку (но их куча, и они остались), ии советовал более улучшенные крейты для оптимизации, и при выгорании сам писал код, и отслеживался мною)
из сложных вещей… реализована кривая система команд (тупо для теста, так же не для прода) + нужный пакет для команд (command request, available commands). реализован протокол на макросах (удобен в расширяемости). добавлено серверное сохранение мира + его сериализация в чанки (world/chunk.rs, кто хочет, тот посмотрит). комментарии особо для себя не оставлял, так как горел желанием и просто ради себя писал проект, но были мысли превратить его во что-то масштабное.

из прелестных механик можно еще заметить разделение на многопоточность: сетевой & чанк слои (воркеры), и сам основной тик поток.
так же, реализована “щиткод” система плагинов, которая ВООБЩЕ не готова. используется для апи oxc транспилер + quickjs в качестве движка (можно писать как и на джаваскрипте, так и на тайпскрипте для любителей типизации). добавлены рантаймы и лоадеры, так что ооп и импорты файлов на удивление пашут.

по тестам не помню, вроде 20 тпс (с погрешностью) при 300 ботах (+спам пакетами и командами) и ~30мб оперативы используемой (/status для проверки), но нет смысла ее измерять пока так сыро. поэтому.. да.

ВАЖНО: ЯДРО НАСТОЯТЕЛЬНО НЕ РЕКОМЕНДУЕТСЯ ИСПОЛЬЗОВАТЬ ДЛЯ ПРОДА. оно написано для ознакомительных целей, и для возможности набрать контрибьюторов, так как полноценная база готов. возможно, я замотивируюсь продолжением. да, зайти можно, ядро уже предоставляет полную цепочку логин секвенса и генерацию плоского мира (+ горе транспорт пакетов между игроками), однако его для прода использовать ВСЕ РАВНО КАТЕГОРИЧЕСКИ не рекомендуется. повторюсь про ии код, поэтому… да, все таки, нужно в местах переписывать многое.

и многоходовочка – марсель сдохни, у меня мобила в участке, спасибо, я теперь без тг. надо было тебе сватать меня?

2 лайка

@dmitrijafamev твое мнение приветствуется, даже негативное. ты на расте пишешь дольше, так что мне бы стало интересно

для плагинов лучше используй lua, чем js

Так, к слову

Привязка почты существует не просто так

изначально была наработка на луа, но без “соусных добавок” это сырой ■■■■■ яп без типизации

так, к слову, 250 контрибьюторов не потянули сделать ядро в прод, и оно тоже не рекомендуется к проду. напомнить тесты мефрекса?
причем тут мой проект который написан для души, и это? конструктивной критики не будет?

а почта тут чо

Позволяет обходить получение кода (по крайней мере у меня так и работает)

Тыква вообще конченное ядро, в моменте оно было настолько нестабильное, что при его запуске у меня просто нахуй шинда в бсод улетала мгновенно

вхахвахвх

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

кто желает стать контрибьютором и видит в проекте что-то годное – пишите в личные сообщения на форуме, в самом посте обновил. а это, если кто не увидел

Я бы тебе посоветовал использовать bedrockrs, у него есть активные контрибюторы. Лично я поддерживаю тебя в реализации такого проекта, не вижу причины не делать что-то, так как оно уже существует (мне самому в душе лежит handmade менталитет). Что было бы лучше, я считаю, так это если бы ты использовал bedrockrs, с этим ты:

  1. Сможешь внести свой вклад в экосистему если что-то ещё не реализовано
  2. Получать бесплатные обновления которые много-вероятно совместимы с тем, как ты используешь библиотеку/библиотеки. Эти обновления могут касатся как новых (и старых) версий, так и производительности, безопасности, с точки зрения памяти И логики.
  3. Сможешь просить помощи если вдруг понадобится. На новых версиях этого меньше, но если вдруг будешь и старые, какие я скоро на bedrockrs добавлю (1.1.5 - 113 + RakNet 6), где документации иногда неправильно интерпретировали пакеты (типы и endianness) или где даже с несчисленными имплементациями на PHP ты не можешь быть уверен почему твоя имплементация не работает, хотя RakNet строго по документации, пакеты тоже, короче малейшая ошибка и ты в жопе на часов 5.

за ии ответы помоему @ChatGPT отвечает

Я сам его написал…

не чуди ахахаххаха

Программист Rust и C. В данное время пишу ПО для сетевого протокола мкпе 1.1.5 (113), а также для его сетевого протокола RakNet.

Боже… tg @heydocode в лс кидай все фоточки скину у меня прокси уже есть

какие мне тебе фоточки скинуть? не буду я тебе свои фотки кидать дружище