Обновить
344
124.1
Владимир @Firemoon

Пользователь

Отправить сообщение

Ответ на самом деле на поверхности: главный офис Selectel в Санкт-Петербурге, а мы тут встретились в корпоративном блоге Selectel, в котором говорится о игровом сервере, который запущен на мощностях Selectel под крылом Selectel x)

Но плагин, конечно, конфигурируемый и можно указать примерно любое место, которое есть у провайдера погоды. А можно, наверное, даже без него, вручную указав рассвет и закат

У нас пользователи, которые зарегистрировались через страничку promo.selectel.ru/Minecraft должны поставить галочку о согласии (там ФИО и почта). В игре на текущий момент мы не используем ФИО и почту.

На других серверах я видел, что у некоторых есть политика обработки ПДн на сайте сервера, но в игре никак не подсвечивается момент про ПДн

Можно на лету после сохранения и сброса буферов (мы же на Posix), а можно incremental rsync: один раз онлайн, потом дельту после остановки. Snapshot файловой системы?

Если не ванила, то сервер может состоять из кучи плагинов, каждый из которых имеет своё видение когда и как нужно сохранять свои данные: кто-то сохраняет в YAML, кто-то в SQLite3, кто-то во внешнюю базу. Я не уверен, что плагины уважают команду /save-all, возможно, они о ней даже ничего не знают.

Кажется, что для сохранения консистентности бэкапа надежнее будет погасить сервер

Честно сказать, вы промахнулись статьей :)

Это был обзор других проектов на предмет «посмотрим что неприкрыто» с целью, может быть, позаимствовать практики, привлекающие пользователей. А заодно ответить себе на вопрос «Действительно ли (подставьте любой форк Paper'а) используется на серверах с онлайном 100+?» Вряд ли владельцы агрессивно-донатных серверов хотят всем и каждому рассказывать что и как у них устроено в мельчайших деталях. Они наверняка не хотят конкурентов.

Предлагаю вам обратиться к моей предыдущей статье (хотя, конечно, наша недоработка, что ссылки нет в тексте этой статьи), в которой рассматриваются технические подробности именно нашего сервера, где вы можете подчерпнуть какую-то пищу для размышлений (там рассказывается что мы делали пять лет назад в пандемию и что оставили для перезапуска в этом году) и заодно в комментариях приобщиться к обществу любителей Kubernetes: https://habr.com/ru/companies/selectel/articles/946400/

что вы думаете по поводу шардированного майна по типу проекта https://github.com/MultiPaper/MultiPaper?

Как читатель о технологиях скажу «круто». Как админ текущего сервера скажу «зачем?». Я взглянул по вашей ссылке, MultiPaper остановился в публичной бете на версии 1.20.1, просто многопоточная Folia тоже немного отстает от классического Paper (у Paper есть хотя бы экспериментальные билды для 1.21.10). Для нашего сервера один из интересов — по возможности быстро подтягивать версию игры на актуальную стабильную, что для таких сложных проектов будет затруднительно. Более того, у нас одновременный онлайн пока что не превышал 30 человек, поэтому масштабируемые решения несколько избыточны. Возможно такие технологии пригодились бы какому-нибудь 2b2t, но там, говорят, чистая ванила.

В моих наблюдениях в этой статье мне не попалась ни одна Folia и ни одного MultiPaper. Сеть серверов с тысячным онлайном размазывает игроков между десятком независимых серверов и не знает бед.

А как насчёт того, чтобы майн запихнуть в кубер? Почему да и почему нет? И как бы решали подобную задачу?

Основной большой сервер на много людей запихивать в кубер я не вижу надобности, потому что это дополнительный слой абстракций, который будет немного да вносить ненужных накладных расходов и мало выгоды. Но как говорили в комментариях к моей предыдущей статье, это может быть оправдано, когда надо поднимать множество маленьких и, возможно, временных миров (мини-игры? Реалмы?). Но для совсем маленьких и совсем временных миров есть LimboAPI, которое довольно активно применяется. Если у нас почему-то появятся мини-игры с необходимостью поднимать отдельные игровые серверы под отдельную группу игроков, то вот тогда я и узнаю, как бы я решал эту задачу. Но скорее всего использовал бы Nomad или обратился бы к коллегам за помощью с кубером.

Какие есть особенности тюнинга майна (всеми любимая жава с тысячами разных параметров и разными гс), что в первую очередь требуется потрогать, чтобы из-за взрыва сотен тнт сервер не падал?

Здесь мне хочется со школьных времён вспомнить три правила ОБЖ: «Предвидеть опасность. По возможности предотвратить. При необходимости действовать.» Так вот «тюнинг майна» — это мёртвому припарка. «Предвидеть опасность» — это потрогать разграничение прав доступа на команды в игре и, возможно, отключить опасные игровые механики через плагины или настройки сервера. Вы можете использовать всевозможные флаги и дистрибутивы JVM, чтобы добиться чтобы сервер за приемлемое время обрабатывал в два раза больше блоков ТНТ, чем ванила. Но какой в этом толк, если пользователь может поставить в два-три-четыре раза больше блоков, чем вы хотели бы? У нас просто не выдаются права на команды WorldEdit и на вход в режим креатива. Игроки, конечно, и в режиме выживания могут «залагать» сервер, но это несколько сложнее.

В предыдущей статье описывается, что я решил попробовать разместить игровой сервер на облачной виртуалке, где максимальная частота ядра всего 2.1 ГГц. Это было ошибочное решение и игроки обычной своей игровой жизнью вскоре уронили ТПС сервера. Я пытался временно (до переезда на физический сервер) исправить ситуацию с помощью Aikar's flags. Это, очевидно, не помогло. Я не специалист в JVM, но вроде флаги скорее относятся к потреблению оперативной памяти и работе сборщика мусора, чем непосредственно к производительности виртуальной машины. Поэтому моё субъективное дилетантское не подкреплённое научными измерениями мнение: тюнинг может быть хорош для уменьшения потребляемых ресурсов (и потребляемых денег) для маленького сервера с друзьями.

Какие стандартные настройки вы бы включили на сервере/установили нужные плагины, чтобы его не сломали за один вечер парочка скучающих школьников?

Для сервера с друзьями — белый список. Я видел применение белого списка даже на более крупных онлайн-проектах. Там регистрация через привязку аккаунта в соцсетях. Если вы хотите прям публичный сервер, то готовьте CoreProtect и WorldGuard, если хотите бдить за порядком. Вы также можете заявить отсутствие порядка и не поставить ничего (режим «Анархия»). Я пошёл по пути порядка и полный список плагинов вы можете найти в статье, ссылку на которую я упоминал ранее.

Резервирование и восстановление мира (эксплоиты для серверов майна не такая и редкость, и лучше иметь бэкап на готове), как лучше это сделать?

Я сделал довольно в лоб: раз в какой-то промежуток времени ранним утром выполняется остановка сервера, архивация каталога с сервером, запуск сервера, выгрузка архива на внешний ресурс. Так как у нас несколько серверов с хранением данных в общей бд, то в архив ещё дамп базы можно сохранить.

А как правильно мониторить работу сервера и на что смотреть?

У прокси-сервера и у игровых серверов есть Prometheus-экспортёры. Вы также можете добавить NodeExporter на физический/облачный сервер и следить за его ресурсами. Но опять же ответ на этот вопрос зависит от цели существования вашего сервера. Я смотрю за онлайном на проксе и вижу распределение игроков между серверами. На игровом сервере можно смотреть метрику TPS, хотя я этого пока не делаю. С физического и облачного сервера собираю метрики нагрузки на ядра, потребление оперативной памяти и количество свободного места на разделе с игровым сервером. Для сервера для друзей вряд ли нужно что-то кроме свободного места. Ибо друзья сразу пожалуются вам "чёт сервер лагает...".

Но всё же в более-менее крупных проектах (даже с нашим онлайном в 10-20 человек) должны быть люди, которые смотрят за игровым серверов прямо «на полях», то есть в игре. Потому что некоторые игроки коварны.

В заключение надеюсь, что мои ответы и ссылка на предыдущую статью утолили ваш голод технических деталей, возникший из-за этой статьи.

«Запихать в куб» — это как будто не самая сложная задача. Но я любитель запускать на железе, поэтому без кубернетеса х)

Что касается расширения одного мира на несколько серверов — вроде есть MultiPaper и у него написано, что это форк Purpur'а, который тоже так мог. Балансировать между серверами может хоть прокся (Bungeecord/Velocity), хоть по DNS на разные серверы отправлять.

Но я как-то не очень оптимистично смотрю на эти извращения, потому что, мне кажется, обязательно где-нибудь что-нибудь отвалится. Folia, пытающийся в многопоточность — в бете, MultiPaper в бете и с ним несовместимы обычные плагины.

В какой-то момент кажется, что проще сделать несколько серверов на ~200 игроков с драконовскими ограничениями на количество сущностей в мире. Ну по крайней мере с высоты сегодняшнего опыта мне так кажется

Ну на 4pda применили — приложение "Транспорт" и синхронизация с Google Tasks до сих будоражит сознание людей и они хотят что-то такое на девятке-десятке =)

А недавно видел интересный запрос — циферблат, на котором отображается курс золота. Тут бы интернет точно пригодился

Пардон, пропустил уведомление о комментарии.

Тут, кажется, вам только эксперименты помогут. Я в своей работе в принципе не отдаю опцию 60, так загружается самый простой режим, который (по крайней мере у меня) работает.

Когда я пытался отвечать с PXEClient, то сетевуха по спецификации делает ещё один DHCPproxy-запрос юникастом на другой порт. В общем, меня такое поведение не радовало и поэтому я не использую опцию 60.

С конкретной моделью не работал, но в общем нахватался забавных ситуаций. Не готов ответить по-научному и со всеми пруфами, но направление для отладки, надеюсь, смогу вам подсказать.

В общем случае могу сказать, что если вы уверены, что DHCPOFFER доходит до сетевухи, а сетевуха не хочет отправлять DHCPREQUEST, то это значит, что ваш оффер не удовлетворяет требованиям сетевухи.

Я, в частности, обнаружил, что «обычный» PXE игнорирует офферы, если в них нет next-server и bootfile. В некоторых случаях у сетевухи два режима загрузки — в соответствии со спецификацией интела и какой-то «обычный» режим. Так вот первый режим требует в ответе опции 60 со значением PXEClient, иначе тоже игнорирует офферы.

Послушайте трафик, там есть опция, кажется, 54, Parameter LIst называется, там указан список опций, которые хочет видеть сетевуха. Сравните этот список с тем, что вы предоставляете и, может быть, это и будет решением.

Я видел мем, что при вопросе про платные подписки deepseek отвечает что-то вроде "абсолютно бесплатно", а потом добавляет про подписку плюс =)

Я не смог добиться такого, да и может это фотошоп, но полностью исключать нельзя.

Технические характеристики «железного» радио — это, действительно, вам в статью по ссылке из начала. Сам проект Ka-Radio32 не то чтобы развивается семимильными шагами, но его сложно называть заброшенным. А ещё он достаточно неплохо работает.

А «проект заброшен, с багами» относится к интеграции, которая связывает Home Assistant и Ka-Radio32.

Так уж получилось, что мои познания в JS меньше, чем умение строить велосипеды. В конце концов, эта статья про разбор png, а не про попытки поладить с малознакомой мне платформой на не сильно знакомом мне языке =)

Но ваш комментарий, я, безусловно, приму к сведению. Благодарю!

Вот это поворот.

Я работаю с Mi Smart Band 9, потому что на 4pda какое-то нереальное запустение на тему приложений, только перезаливы с китайских форумов. У самого «семерка», но ей в плавности до «девятки», конечно, далеко. А хочется плавность девятки и софт как на семерке, поэтому потихоньку наскребаю порты легенд.

Насколько я понял, quickapp'ы, которые rpk-приложения, очень ограничены. У них есть набор интерфейсов, но и те как-то через пень-колоду сделаны. Чтение файлов, там, например, не open/read/write/close, а отдельный метод, который по имени файла считывает нужное количество байт с нужного оффсета. Так что побайтовое чтение там вряд ли реализуемо в нормальном понимании этого словосочетания. И такого много, поэтому я хз, как из JS-окружения дёргать что-то внутри ОС и до сего момента были сомнения в том, что это вообще возможно.

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

Я видел «магические» циферблаты, которые могут удалять приложения и с них вышел на ваш репозиторий с EasyFace и lua-скриптами в циферблатах, которые имеют доступ к ОС. Но циферблаты, на мой взгляд — это не то.

Можете более подробно раскрыть мысль про либы png? Это нативные библиотеки и их как-то можно вызывать из JS? Или это какие-то недокументированные JS-библиотеки?

Устройства из экосистемы Xiaomi Vela. Там приложения пишутся на упрощенном Vue.js, так что libpng может и можно принести, но слинковать с приложением или запустить как-то иначе не получится.

Xiaomi Redmi Watch 4 на другой платформе -- VelaOS (HyperOS), на той же, что и Mi Smart Band 8 Pro и 9. Там навороченные циферблаты делать нельзя. Приложения -- можно, но что-то на 4pda этим никто не занимается о.О

В самом конце блока «Разработка красивого приложения»:

Установка приложений и сторонних циферблатов осуществляется одинаково — через приложение «Mi Band 7 Циферблаты от Mi Band Watch Face Makers».

По крайней мере я так ставлю. Но на 4pda можно найти и более специфичные варианты.

Ссылки поправлены, спасибо!

Жаль, что потраченного трафика уже не вернуть. Но картинку сжали и перезалили!

Нет, поля не выравниваю. Была идея извлекать ячейки с условием, а весь остальной сканворд нарисовать на «конве», но тогда нужно извлекать ещё и стрелочки. В общем, решил максимально не усложнять в первой итерации.

Если бы на Хабре можно было бы давать медальки своим подписчикам, я бы дал вам медаль I степени за преданность :)

1
23 ...

Информация

В рейтинге
47-й
Откуда
Челябинск, Челябинская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Middle
Python
Flask
SQLalchemy
Bash
C