Поиск дискорд серверов использующих тег rust

Обновлено: 08.07.2024

клан раст, ищу клан раст, ищу клан, найти клан, поиск напарников раст, найти тиму раст, поиск напарников раст, поиск напарников, раст, рис, игра раст, мемы раст, поиск тимы раст, поиск тимы, ищу друга, найти друзей, поиск тиммейтов, тиммейт, тима, поиск раст, rust, rust teams, rust clan, поиск rust, поиск напарника rust, найти тиммейта rust.

Открыть приложение

Правила сообщества

Обсуждения и темы

Ивенты и конкурсы

Магазин

Открыть приложение

Открыть приложение

RUST Community

RUST Community запись закреплена

Новый Twitch drop уже завтра. Будет 2 категории скинов, первые можно будет получить за просмотр стримов, вторые купить в магазине.

За просмотр трансляций - Preemptive love Pants, Boonie of Love, Preemptive Love Hammer, Preemptive Love Armored Door и Preemptive Love | Sleeping Bag

Купить в магазине - Preemptive love Hoodie, Preemptive Garage Door, Preemptive Love [Charity Box] и Preemptive Love Sheet Metal Door

п.с. В этот раз специальный благотворительный твич дроп.

Алекс

Шароцкий Владислав

Андрей Пушкарёв


Андрей Пушкарёв

RUST Community

RUST Community запись закреплена

Егор Куканов


Егор Куканов

Григорий Бугаев

Добавили бы анимки для еды и чаев, аптечка слишком сложно

Артём Чернявский


Артём Чернявский

Андрей Дорофеев

Артём, согласен, но я не думаю, что модели будут именно такие

RUST Community

RUST Community запись закреплена

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

«Рандомная отдача ничего бы не изменила, как минимум потому что читеры редко когда стреляют на все 100% в одну точку. Если вы попробуете это сделать, то быстро окажетесь в бане, и они про это в курсе. Чтобы избежать этого наказания, они уменьшают точность отдачи на некоторый процент, чтобы казалось словно это стреляет просто хороший игрок, что всё равно нечестно потому что они на самом деле не хорошие игроки.

Баны по IP-адресу очевидно бесполезны. Множество читеров пользуются VPN или просто сбрасывают свой адрес перезапуском роутера и получают новый от провайдера, если у них нет статического IP. Они иногда полезны при поиске других аккаунтов у читера, но в остальном по нему нет смысла банить, так как многие адреса зачастую могут быть назначены на роутеры совершенно невинных игроков.

Обязательная двухфакторная авторизация была бы прекрасным способом предотвратить кражу аккаунтов, но мы не можем заставить всех ею пользоваться. Steam Guard активирован лишь на 50% аккаунтов всех игроков Rust, и я могу предположить, что те, кого мало волнует безопасность аккаунта, наиболее всего подвержены вероятности оказаться взломанными.

Привязка по номеру телефона имеет такую же проблему как и IP-адреса, только вдобавок любой может бесплатно воспользоваться случайным номером телефона, и они также зачастую могут быть неоднократно использованы совершенно случайными людьми. Да и ко всему прочему не у всех есть номер телефона. Обязательная двухфакторная авторизация это хорошо, однако те, кто её изначально активировали, вряд ли будут пытаться авторизоваться на сомнительных фишинговых сайтах.

Судебные разбирательства с читерами было бы вариантом, если бы мы на 100% знали кого-либо, с кем мы имеем дело.

Мы не можем разглашать детали о борьбе с читерами в девблогах, так как это лишь поможет остальным читерам, однако мы активно работаем над собственными системами обнаружения читерства и не зависим исключительно от EasyAntiCheat.»

Контекст: некоторые игроки в данной теме раскритиковали разработчиков за удаление идей для противодействия с читерами на данной платформе, после чего они получили развёрнутый ответ, который упрекал игроков в отсутствии конструктивного диалога, и что большинство предлагаемых идей не будут работать так, как они это представляют.

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

Существует немало симуляторов выживания, которые ориентируются на мультиплеерные игры, составление команд для общего выживания. Всё это заставляет игроков играть больше, ведь всегда можно провести вечер с друзьями за интересной игрой, выживать на острове, собирать ресурсы. Rust — одна из популярных игр, содержащих в себе элементы выживания. Основы геймплея разработчики взяли из популярных Minecraft, DayZ, что в сумме дало свежую, уникальную игру. Однако не у каждого игрока есть друзья, готовые сыграть. Для поиска тиммейтов понадобится найти сервера, о которых пойдёт речь.


Описание официального сервера Rust

У игры Rust в Discord есть официальный сервер, поддерживаемый разработчиками, в котором состоит более 260 000 участников. Его можно найти, перейдя к вкладке “Исследуйте публичные серверы”. Вкладка находится справа, среди списка каналов, к которым присоединился пользователь, снизу, иконка с изображением компаса. В поиске набрать название игры — “Rust”, пролистать результаты до сервера со стоящей на нём зелёной галочкой.

Сервер Rust в Дискорд состоит из множества голосовых, текстовых каналов. Основные, рекомендуемые к прочтению в первую очередь, текстовые каналы:

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


Рейтинг неофициальных русских серверов

Помимо официального сервера, работа которого поддерживается на английском — общеизвестном языке, существуют прочие, неофициальные. В поисковике, на форумах, у знакомых, легко можно найти русский сервер, на котором спокойно можно поиграть в Rust с игроками из России, просто русскоговорящими людьми. Найти хороших напарников станет намного проще, поскольку не придётся испытывать проблем с пониманием чужого языка, сленга, переспрашивать значения несколько раз. Если ваш уровень английского недостаточно хорош — есть несколько топовых русских серверов, перечисленных в списке ниже.

RUster games

Зайти на сервер можно, перейдя по ссылке — ссылке, кликнуть по кнопке “Войти”. На сайте также можно прочитать отзывы о сервере, что помогает определить, стоит ли туда заходить.

Сервер представляет собой стандартный набор каналов:

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


RUSTHOT

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

Orkus Group

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


RUST (Д.Е.Р.Е.В.Н.Я)

Присоединиться к серверу можно, перейдя по ссылке. Сервер содержит в себе бота, для которого можно посмотреть каналы на отдельном канале. Бот возможен для применения всем участникам сервера. Есть список правил, обязательных к соблюдению.

Сервер специализируется на голосовых каналах. По этой причине текстовых здесь немного — для поиска напарников, клана. Остальные каналы — голосовые, направленные на общение по игре, вне игры, отдельные каналы для администратора, поиск игроков старше двадцати лет, прочие. Также, помимо текстовых каналов по поиску напарников, можно найти голосовые, где концепция та же — найти игрока, который будет с вами играть — но с возможностью поговорить лично.

Gaming Community

Вступить на сервер можно, кликнув по ссылке. В окне нажать “Войти”.

Подбор серверов кажется сложным, но не в том случае, когда есть форумы, рекомендации других игроков. Каждый сервер индивидуален — поэтому из предоставленных хотя бы один зацепит игроков, жаждущих поиграть с кем-нибудь хорошим за компанию.


А раст они тоже взяли версии, проверенной временем? И llvm 3.5 или 4.0?

As you might notice, there are latency and CPU spikes roughly every 2 minutes.

Но это же, сравнительно, целая вечность между этими двумя минутами.

After a bit of profiling and performance optimizations, we were able to beat Go on every single performance metric. Latency, CPU, and memory were all better in the Rust version.

Странно: если усреднить нагрузку на процессор, то, похоже, получится, что go-версия в среднем потребляет меньше ресурсов.

А где графики потребления оперативки?


Круто. Но свой никому не нужный шакализатор, из-за которого не работает WebP они выкидывать не собираются, я так понял, да?

О, ещё один вопрос, Раст давно не тыкал. А чтобы им пользоваться больше не нужно ставить nightly компилятор?

Unicode4all ★★★★★ ( 05.02.20 07:53:58 )
Последнее исправление: Unicode4all 05.02.20 07:56:33 (всего исправлений: 1)


А раст они тоже взяли версии, проверенной временем?

Rust (nightly build) vs Go (1.9.x)


Потому что в rust «stable» не было фич асинхронности, а сторонние библиотеки их не устроили излишней вознёй с ними, насколько я понял из текста.


Это понятно. Но найтли в продакшене… так себе идея.


Странно: если усреднить нагрузку на процессор, то, похоже, получится, что go-версия в среднем потребляет меньше ресурсов.

Меня тоже позабавило их «had no latency spikes!» при средней большей нагрузке на процессор. Только что такое @mentions не понял.


Предлагаешь всё писать на Си?


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

Ну заодно может помогут разработчикам rust отработать async.

В примечаниях пишут, что всё подряд на rust они переписывать не собираются.

Monir Zaman

Feb 5

May be you can just write it in C then?

Ещё интересно, как часто проводился семплинг нагрузки. График намекает, что недостаточно часто, так что, возможно, там пик по времени на самом деле короче.

проблема с GC в Go 3-x летней давности

На Hacker News пишут, что с момента обнаружения проблемы было 4 обновления Go. Видимо, эксперименты по переписыванию начались раньше, чем была выкачена новая версия с улучшенным временем отклика GC.

Меня тоже позабавило их «had no latency spikes!» при средней большей нагрузке на процессор. Только что такое @mentions не понял.

Ну версия кода на Rust видимо хуже оптимизирована, чем версия на Go.

Люди хотят асинхронный IO.
На сишечке конечно можно этим заниматься, но придётся много писать и вероятность прострелить себе ногу значительно возрастает.


Да, об этом они тоже пишут, что пока оптимизацией особо не занимались. Начали писать код, емнип, весной 2019.

Ну меньше чем за год получили реализацию не сильно хуже по CPU, но сильно лучшую по консистентной latency. Норм, чо.

Странно: если усреднить нагрузку на процессор, то, похоже, получится, что go-версия в среднем потребляет меньше ресурсов.

Так, вроде средняя выше у первой rust-версии, когда они увеличили кэш(что с го приводило к увеличению времени фризов), то, судя по графикам, нагрузка упала в 2 раза по сравнению с первой версией.


Но найтли в продакшене… так себе идея.

Любая версия она найтли. От не найтли отделяет только количество тестов проведённых. Так что если оттестируют, а они должны тестировать, то норм же.


Rust становится первоклассным языком в самых разных областях. Мы в Discord успешно используем его и на серверной, и на клиентской стороне. Например, на стороне клиента в конвейере кодирования видео для Go Live, а на стороне сервера для функций Elixir NIF (Native Implemented Functions).

Недавно мы резко улучшили производительность одной службы, переписав её с Go на Rust. В этой статье объясним, почему для нас имело смысл переписать службу, как мы это сделали и насколько повысилась производительность.

Реализация службы на Go не соответствовала всем требованиям. Большую часть времени она работала быстро, но каждые несколько минут начинались сильные задержки, заметные для пользователей. После изучения ситуации мы определили, что задержки объясняются ключевыми особенностями Go: его моделью памяти и сборщиком мусора (GC).

Чтобы объяснить, почему Go не соответствует нашим целевым показателям производительности, сначала нужно обсудить структуры данных, масштаб, шаблоны доступа и архитектуру сервиса.

Для хранения информации о состояниях мы используем структуру данных, которая так и называется: Read State. В Discord их миллиарды: по одному состоянию для каждого пользователя на каждый канал. У каждого состояния несколько счётчиков, которые необходимо атомарно обновлять и часто сбрасывать в ноль. Например, один из счётчиков — это количество @mention в канале.

Для быстрого обновления атомарного счетчика на каждом сервере Read States имеется кэш «последних состояний» (Least Recently Used, LRU). В каждом кэше миллионы пользователей и десятки миллионов состояний. Кэш обновляется сотни тысяч раз в секунду.

Для сохранности кэш синхронизируется с кластером базы данных Cassandra. При вытеснении ключа из кэша мы заносим состояния этого пользователя в БД. В будущем мы планируем обновлять базу в течение 30 секунд при каждом обновлении состояния. Это десятки тысяч записей в БД каждую секунду.

На графике внизу — время отклика и нагрузка на CPU в пиковый промежуток времени для службы Go 1 . Видно, что задержки и всплески нагрузки на CPU происходят примерно каждые две минуты.


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

Очень похоже, что периодические подтормаживания нашей службы связаны со сборкой мусора. Но мы написали очень эффективный код Go с минимальным количеством выделений памяти. Там не должно оставаться много мусора. В чём же дело?

Покопавшись в исходном коде Go, мы узнали, что Go принудительно запускает сборку мусора минимум каждые две минуты. Независимо от размера кучи, если GC не запускался две минуты, Go принудительно его запустит.

Мы решили, что если запускать GC чаще, то можно избежать этих пиков с большими задержками, поэтому мы поставили точку вывода (endpoint) в службе, чтобы на лету изменять значение GC Percent. К сожалению, настройка GC Percent ни на что не повлияла. Как такое могло случиться? Оказывается, GC не хотел запускаться чаще, потому что мы недостаточно часто выделяли память.

Мы стали копать дальше. Оказалось, что настолько большие задержки возникают не из-за огромного количества высвобождаемой памяти, а потому что сборщик мусора сканирует весь кэш LRU, чтобы проверить всю память. Тогда мы решили, что если уменьшить кэш LRU, то объём сканирования уменьшится. Поэтому мы добавили в службу ещё один параметр, чтобы изменять размер кэша LRU, и изменили архитектуру, на каждом сервере разбив LRU на много отдельных кэшей.

Так и вышло. С меньшими кэшами пиковые задержки уменьшились.

К сожалению, компромисс с уменьшением кэша LRU поднял 99-й процентиль (то есть увеличилось среднее значение для выборки из 99% задержек, исключая пиковые). Это связано с тем, что уменьшение кэша уменьшает вероятность, что Read State пользователя будет в кэше. Если его здесь нет, то мы должны обратиться к БД.

Проведя большой объём нагрузочного тестирования на разных размерах кэша, мы вроде нашли приемлемую настройку. Пусть и не идеальное, но это было удовлетворительное решение, поэтому мы надолго оставили службу работать так.

В то же время мы очень успешно внедряли Rust в других системах Discord, и в итоге приняли коллективное решение писать фреймворки и библиотеки для новых сервисов только на Rust. А эта служба казалась отличным кандидатом для переноса на Rust: она небольшая и автономная, а мы надеялись, что Rust исправит эти всплески с задержками и в конечном счёте сделает сервис приятнее для пользователей 2 .

Rust невероятно быстр и эффективно работает с памятью: в отсутствие среды выполнения и сборщика мусора он подходит для высокопроизводительных служб, встроенных приложений и легко интегрируется с другими языками. 3

У Rust нет сборщика мусора, поэтому мы решили, что не будет и этих задержек, как у Go.

В управлении памятью он использует довольно уникальный подход с идеей «владения» памятью. Если вкратце, Rust отслеживает, кто имеет право читать из памяти и записывать туда. Он знает, когда программа использует память, и немедленно освобождает её, как только память больше не нужна. Rust принудительно применяет правила памяти во время компиляции, что практически исключает возможность ошибок памяти во время выполнения. 4 Вам не нужно вручную отслеживать память. Об этом позаботится компилятор.

Таким образом, в версии Rust, когда состояние Read State исключается из кэша LRU, память освобождается немедленно. Эта память не сидит и не ждёт сборщика мусора. Rust знает, что она больше не используется, и немедленно освобождает её. Нет никакого процесса в рантайме для сканирования, какую память освободить.

К счастью, команда Rust усердно работала над упрощением асинхронного программирования, и оно уже было доступно на нестабильном канале (Nightly).

Discord никогда не боялся осваивать перспективные новые технологии. Например, мы были одними из первых пользователей Elixir, React, React Native и Scylla. Если какая-то технология выглядит перспективной и даёт нам преимущество, то мы готовы столкнуться с неминуемой трудностью внедрения и нестабильностью передовых инструментов. Это одна из причин, как мы настолько быстро достигли аудитории в 250 миллионов пользователей c менее чем 50-ю программистами в штате.

Внедрение новых асинхронных функций с нестабильного канала Rust — ещё один пример нашей готовности принять новую, многообещающую технологию. Инженерная команда решила внедрить нужные функции, не дожидаясь их поддержки в стабильной версии. Вместе с другими представителями сообщества мы преодолели все возникшие проблемы, и теперь асинхронный Rust поддерживается в стабильной ветке. Наша ставка окупилась.

Просто переписать код было несложно. Мы начали с грубой трансляции, потом сократили его в тех местах, где это имело смысл. Например, у Rust отличная система типов с обширной поддержкой дженериков (для работы с данными любого типа), поэтому мы спокойно выбросили код Go, который компенсировал отсутствие дженериков. Кроме того, модель памяти Rust учитывает безопасность памяти в разных потоках, так что мы выбросили защитные горутины.

Нагрузочное тестирование сразу показало отличный результат. Быстродействие службы на Rust оказалось таким же высоким, как у версии Go, но без этих всплесков повышения задержки!

Что характерно, мы практически не оптимизировали версию Rust. Но даже с самой простой оптимизацией Rust смог превзойти тщательно настроенную версию Go. Это красноречивое доказательство, насколько легко писать эффективные программы на Rust по сравнению с глубоким погружением в Go.

Но наc не удовлетворил простой статус-кво по производительности. После небольшого профилирования и оптимизации мы превзошли Go по всем показателям. Задержка, CPU и память — всё стало лучше в версии Rust.

Оптимизации производительности Rust включали в себя:

  1. Переход на BTreeMap вместо HashMap в кэше LRU для оптимизации использования памяти.
  2. Замену первоначальной библиотеки метрик на версию с поддержкой современного параллелизма Rust.
  3. Уменьшение количества копий в памяти.

Запуск прошёл довольно гладко, поскольку мы проводили нагрузочные испытания. Мы подключили службу к одному тестовому узлу, обнаружили и исправили несколько пограничных случаев. Вскоре после этого накатили новую версию на весь серверный парк.

Результаты показаны ниже.

Фиолетовый график — Go, синий — Rust.


Когда служба успешно отработала нескольких дней, мы решили снова увеличить кэш LRU. Как упоминалось выше, в версии Go это нельзя было сделать, потому что возрастало время на сборку мусора. Поскольку мы больше не занимаемся сборкой мусора, можно увеличить кэш в расчёте на ещё больший рост производительности. Итак, мы нарастили память на серверах, оптимизировали структуру данных на меньшее использование памяти (для удовольствия) и увеличили объём кэша до 8 миллионов состояний Read State.

Приведённые ниже результаты говорят сами за себя. Обратите внимание, что среднее время теперь измеряется в микросекундах, а максимальная задержка @mention измеряется в миллисекундах.


Наконец, у Rust замечательная экосистема, которая быстро развивается. Например, недавно вышла новая версия асинхронной среды выполнения, которую мы используем, — Tokio 0.2. Мы обновились, и без каких-то усилий с нашей стороны автоматически снизили нагрузку на CPU. На графике ниже можете видеть, как нагрузка снизилась примерно с 16-го января.


На данный момент Discord использует Rust во многих частях программного стека: для GameSDK, захвата и кодирования видео в Go Live, в Elixir NIF, нескольких бэкенд-сервисах и много где ещё.

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

Кроме производительности, Rust даёт разработчикам много других преимуществ. Например, его типобезопасность и проверка заимствования переменных (borrow checker) сильно упрощают рефакторинг по мере изменения требований к продукту или внедрения новых функций языка. Экосистема и инструментарий превосходны и быстро развиваются.

Забавный факт: команда Rust для координации тоже использует Discord. Есть даже очень полезный сервер сообщества Rust, где и мы иногда общаемся в чате.

Читайте также: