Описание сервера раст как сделать красиво

Добавил пользователь Евгений Кузнецов
Обновлено: 08.09.2024

Приветствую вас, друзья! Раст меняется и мы вместе с ним. Уже давно есть определённый набор команд для Rust New (известный как Experimental ранее)! Мы решили для вашего удобства использовать прежние страницы Rust Legacy с разделением их на Rust Experimental и Rust Legacy.

Чтобы использовать в Rust консольные команды, необходимо вызвать саму консоль, нажав на клавиатуре клавишу F1 (вне зависимости от версии Rust).

Значения команд можно разделить на несколько видов:

  • [Boolеan] — Логический — может иметь два значения: включить и выключить. Значение true (или, что то же самое, 1) задействует параметр, значение false (или, что то же самое, 0) отключает.
  • [Value] — Числовой — Значения могут быть как положительными, так и отрицательными. Учтите, что в некоторых командах диапазон возможных значений ограничен их функциональностью.
  • [Player Name] — имя игрока.
  • [Item ID] — Steam ID (номер профиля в Steam)
  • [Text] — текстовый. Здесь можно разместить любой текст.
  • [Col] — В данном параметры допускаются только цифровые значения не >1.

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

Консольные команды Rust New или просто Rust

Консольные команды Rust Experimental

Консольные команды Rust Experimental

Общие команды (основные)

Команда Тип Описание команды
client.connect [Server IP] : [Server Port]

global.clperf

perf

Команды настройки клиента

Команды для разработчиков

Команда Тип Описание команды
developer [Boolеan]
global.developer [Boolеan]
К Показывает некоторую информацию для разработчиков.
vis.attack [Boolеan] К Отображает траекторию полёта пуль., работает только в режиме разработчика (developer) или отладки.
vis.damage [Boolеan] К Отображает нанесённый урон, работает только в режиме разработчика (developer) или отладки.
vis.metab [Boolеan] К Отображает информацию по метаболизму, работает только в режиме разработчика (developer) или отладки.
vis.triggers [Boolеan] К Отображает триггеры, работает только в режиме разработчика (developer) или отладки.
debugmode [Boolеan]
global.debugmode [Boolеan]
К
dev.culling [Value] К
dev.hidelayer [Value] К
dev.netgraph [Boolеan] К Отображает качество связи с сервером.
dev.sampling [Value] К
dev.shaderlod [Value] К Команда больше не поддерживается.
dev.showlayer К Отображает количество игроков на сервере.
dev.togglelayer [Value] К
cui.test К/С
data.export [Value] К
ddraw.arrow [Value]
ddraw.line [Value]
ddraw.sphere [Value]
ddraw.text [Value]
entity.debug_toggle [Value] К Включение отладки объектов

Админские команды

Список команд, который доступен только администраторам серверов.

terrain.pvt false или true

Если выключить данный параметр, то это сильно повысит FPS. Дело в том, что PVT — это технология, смешивающая разные текстуры (например разные биомы) так, чтобы это выглядело нормально. А вообще, эта команда управляется в меню F2 под названием Pprocedural Virtual Texturing (PVT).

graphics.quality 1 — 5

Команда меняет качество графики. 1 — ничего особенного для производительности, 5 — фантастика для глаз!

Вот, пока всё с командами для Rust. Далее кусок старой статьи про старый добрый Rust, который теперь зовётся Rust Legacy.

Консольные команды старого доброго Rust Legacy

Команды для игроков

ВНИМАНИЕ! Запись вида true/false не означает, что так и надо писать, это значит у команды есть два возможных значения! Вводить надо либо true, либо false. И ещё, если ник игрока содержит пробелы, необходимо заключать его в кавычки!

  • Для того, чтобы убить себя введите консольную команду suicide;
  • Для того, чтобы включить/выключить траву введите grass.on false true/false (иногда срабатывает не с первого раза, пробуйте туда-сюда для достижения желаемого результата);
  • Для того, чтобы включить/выключить движение травы введите grass.displacement true/false;
  • Для подключения к серверу введите net.connect IP (где IP — адрес сервера в виде 192.168.1.1, команда удобна в случае, когда вам лень искать в списке нужный сервер);
  • Чтобы выйти из игры Rust введите в консоли команду exit или quit;
  • ВНИМАНИЕ! Для отключения/включения цензуры введите в консоли команду censor.nudity false/true (данная команда и веселит и приносит пользу, т.к. голых игроков легче различать на большом расстоянии);
  • Чтобы включить/выключить интерфейс игры введите gui.show или gui.hide;
  • Отключиться от текущего сервера можно командой консоли net.disconnect;
  • А подключиться к последнему посещенному серверу просто введите в консоли команду net.reconnect.

Остальные консольные команды в Раст (Rust), а их не так и много, для игроков не несут особого значения, поэтому мы их подробно рассматривать не будем, а просто перечислим: terrian.idleinterval 0-100, gui.show_branding, gui.hide_branding.

Команды для чата в игре Rust:

Чат вызывается простым нажатием клавиши Enter во время игры.

Консольные команды для админа сервера Rust:

Вот, собственно, пока и все! Пользуйтесь на здоровье! Удачи вам на просторах игры Rust, выживайте и другим помогайте. Ну или что вы там ещё делаете, главное — не читерите! =)

Laven

В этой теме я расскажу, как создать свой сервер Rust Experimental с модами. Зачем это надо? Ну, как минимум, если вы играете в Раст, то у вас появляется множество идей, которые гораздо удобней тестить на своем сервере с бесконечными ресурсами и возможностью летать. А если пойти дальше, то вы cможете сделать свой сервер популярным и получать реальные деньги за продажу игровых плюшек игрокам своего сервера.

Далее в блокноте нажимаем "Сохранить как. " и сохраняем файл с именем "start server.bat" расширение "Все файлы".
Появившийся файлик "start server.bat" и есть пусковый файл для вашего сервера. При нажатии на него откроется снова черное окошко командной строки и пойдет создание карты и запуск сервера. О том, что сервер готов к работе, можно узнать, глядя на счетчик фпс справа-внизу окошка: при загрузке он будет показывать 0 fps, а после окончания появится цифровое значение, например у меня это 262 fps.
5. Далее нужно узнать свой внешний IP-адрес.
Допустим, вы зашли на один из сервисом определения IP адреса, и ваш адрес оказался 213.180.193.11
Открываем Rust и жмем кнопку F1, в открывшейся консоли вводим команду client.connect 213.180.193.11:28015

Если все сделано верно, то пойдет подключение и вы окажетесь на своем собственном сервере

P.S.: Папка с файлами вашего сервера (сейв и тд) будет находиться по адресу C:\Games\Rust_Server\Server\rustds\server\Hello_World

Часть вторая: Админка

Часть третья: Добавляем моды.

1. Переходим на сайт разработчика модов Oxide и скачиваем архив патча Oxide-Rust.zip , позволяющий запускать моды (жмем справа кнопку Download Now).
2. Распаковываем содержимое архива в папку C:\Games\Rust_Server\Server\rustds с заменой файлов.
ВАЖНО: Патч Oxide постоянно обновляется и с каждым обновлением его необходимо снова скачивать и копировать в папку с заменой.
3. Переходим в раздел сайта , посвященный модам для Rust.
Скачиваем любые понравившиеся вам моды. На странице каждого мода есть инструкция по его использованию.

Например, если вы создали сервер для практики в постройке крепостей, я рекомендую вот эти моды:
a) Ремув (удаление) стен и других объектов.
b) Увеличение размера стака предметов.
c) Телепортация к сохраненной точке или к другому игроку
d) Апгрейд стен одним ударом киянки, без необходимости использования колеса
e) Апгрейд строения целиком (всё сразу в камень или всё сразу в железо и т.д.)
Скачанные моды копировать в папку
C:\Games\Rust_Server\Server\rustds\server\Hello_World\oxide\plugins
где Hello_World - это папка с названием вашего сервера.

В статье будет показано как создать gRPC сервер и клиент на Rust. Для большей наглядности клиент будет также Telegram ботом. В итоге будет получена следующая архитектура:


Статья является не всеобъемлющим руководством по gRPC в Rust, а скорее практическим гайдом, демонстрирующим основы и как создать приложение на основе gRPC.

Доменная модель включает данные о планетах Солнечной системы и их спутниках.

Существует несколько реализаций gRPC на Rust. В этом проекте был использован tonic .

Проект включает следующие модули:

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

Определение сервиса и генерация кода

Определение сервиса написано на версии proto3 Protocol Buffers и находится в .proto файле:

Здесь определены простые ( unary ) RPC ( GetPlanetsList и GetPlanet ), server-side streaming RPC ( GetPlanets ) и структуры для передачи необходимых данных. Структуры содержат поля как некоторых обычных типов ( uint64 , string , etc.), так и:

  • перечисление ( Planet.type )
  • список ( Planet.satellites )
  • бинарные данные ( Planet.image )
  • тип date/timestamp ( Satellite.first_spacecraft_landing_date )

Для настройки генерации серверного и клиентского gRPC кода сначала добавим следующие зависимости:

Библиотека prost-types позволяет использовать некоторые из well-known типов Protobuf, такие как Empty и Timestamp .

В корне модуля должно быть расположено следующее:

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

После запуска сервера или клиента вы можете найти сгенерированный код в файле /target/debug/build/solar-system-info-rpc/out/solar_system_info.rs . Например, для создания сервера вам нужно будет имплементировать сгенерированный трейт SolarSystemInfo :

Сгенерированный трейт SolarSystemInfo

Сгенерированные структуры, используемые функцией get_planet , выглядят так:

Сгенерированные структуры для функции get_planet

gRPC сервер

Функция main сервера представлена ниже:

Имплементация трейта SolarSystemInfo (был показан в предыдущем разделе) выглядит так:

Здесь определена кастомная SolarSystemInfoService структура, которая имеет доступ к БД с помощью Diesel ORM.

Напомню, что get_planets_list и get_planet являются примерами простых RPC, а get_planets — server-side streaming RPC.

Изображения планет включаются в бинарник приложения во время компиляции с помощью библиотеки rust_embed (при разработке они загружаются из файловой системы).

gRPC клиент

gRPC клиент в модуле bot создаётся так:

Далее он может быть использован так:

Telegram бот

Как было отмечено ранее, для большей наглядности gRPC клиент является также и Telegram ботом. Для имплементации бота использована библиотека teloxide.

Перейдём сразу к main.rs :

Вы можете запустить проект локально двумя способами:

  • используя Docker Compose ( docker-compose.yml ):
    docker-compose up
  • без Docker
    Запустите gRPC сервер и клиент с помощью cargo run

Запросы к серверу можно выполнять используя какой-либо gRPC клиент (например, BloomRPC):


или делать это косвенно с помощью Telegram бота:

Соответствие между командами бота и RPC следующее:

  • /list -> GetPlanetsList
  • /planets -> GetPlanets
  • /planet -> GetPlanet

Для тестирования приложения с помощью бота вам нужен Telegram аккаунт и собственный бот (введение в эту тему здесь). В зависимости от выбранного способа запуска, токен бота должен быть указан здесь или здесь.

CI/CD сконфигурировано с использованием GitHub Actions (workflow), который собирает Docker образы gRPC сервера и клиента (то есть Telegram бота) и разворачивает их на Google Cloud Platform.

Бота можно протестировать здесь.

В статье я показал как создать gRPC сервер и клиент на Rust и привёл пример использования клиента как источника данных для Telegram бота. Не стесняйтесь написать мне, если нашли какие-либо ошибки в статье или исходном коде. Спасибо за внимание!

Как запустить и настроить экспериментальный сервер Rust

Сервер установится в папку ./RustServer , или можете указать другую. Размер закачки около 2ух GB.
После чего необходимо создать *.bat файл рядом с файлом RustDedicated.exe , со следующим содержимым:

Настраиваем сервер (читаем ниже), или запускаем как есть.

Можно изменить название сервера и количество игроков, используйте следующие команды непосредственно в консоли сервера (в окне что открылось после запуска *.bat файла):

server.hostname " My Personal Server "

Используйте команду консоли ( F1 ) в игре для подключения к локальному серверу:

  • kick "Name" - прогнать игрока "Name"
  • kickall - сбросить всех
  • ban "Name" - забанить игрока "Name"
  • banid "Steam ID" - забанить по идентификатору Steam
  • status - Список игроков
  • say - Написать в чат от имени сервера
  • users - Информация о пользователях
  • banlist - Список забаненых
  • banlistex - Список забаненых с причинами
  • listid - Список забаненых по идентификатору Steam
  • event.run - Запуска аирдропа для сброса в точку с координатами (0,0,0), самолет летит из случайного направления.
  • server.port "28015" - Порт сервера
  • server.maxplayers 500 - Максимальное количество игроков
  • server.hostname "My Personal Server" - Название сервера в списке
  • server.identity "SomeString" - Идентификатор сервера для сохранений в папке сервера в подпапке "server", пример: /SteamCMD/RustServer/server/SomeString
  • server.level - ?
  • server.seed 123456 - Строчка для уникальности генерации
  • server.saveinterval 3600 - Интервал сохранений в секундах (тут указан час)
  • server.secure - защита сервера VACом
  • server.tickrate - частота тиков (для fps) на сервере
  • server.start - запустить сервер
  • server.stop - приостановить сервер
  • server.writecfg - сохраняет текущую конфигурацию в файл (в папке-идентификаторе сохранения в каталоге cfg, см. выше)
  • inventory.give - Получение предмета, синтаксис уточняется. Необходимо знать идентификаторы предметов.
  • gc.collect - Удаление мусора из памяти сервера
  • construct.frameminutes 600 - время в минутах до разрушения построенного игроком объекта
  • server.pvp "true/false" - включить/выключить режим ПвП на сервере
  • sleepers.on "true/false" - включить/выключить спящих на сервере



Параметры командной строки для установки начальных параметров, прописать в *.bat нужное (по подсказке-примеру Гарри на форуме):

RustDedicated.exe -batchmode +server.hostname "Facepunch Dev Server" +server.port 29015 +server.identity "facepunchdev" +server.seed 6738 -logFile "output.txt"

Так же можно добавлять и описанные ранее команды консоли, или посмотреть что это значит, команды консоли через "+", параметры командной строки через "-"
Из примера:
-batchmode - запуск сервера без графической системы
-logFile "output.txt" - файл отчетов сервера

Не копировать из предыдущего примера от Гарри, иначе возникнет путаница, помните, стандартный порт - 28015, а RCON - 28016, берем следующее содержимое и меняем название, профит, у вас настроеный сервер готовый к запуску:

RustDedicated.exe -batchmode +server.hostname "Самый крутой сервер!" +server.port 28015 +server.identity "myserver" +server.seed 666 -logFile "output.txt"

Ваша задача сводится к тому что нужно скачать сервер и создать *.bat файл с этим содержимым. Не забудьте о пробросе портов, если сервер в домашних условиях.

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