Starbound Dedicated Server

Здесь хранится вся документация по созданию выделенных серверов
Ответить
Сообщение
Автор
Renaissance
Полковник
Полковник
Сообщения: 7024
Зарегистрирован: 03.06.2009

Starbound Dedicated Server

#1 Сообщение Renaissance » 28.01.2014, 13:50

Установка и запуск выделенного сервера Starbound
Установка сервера происходит через SteamCMD (в случае, если на аккаунте есть купленная игра), либо простым копированием игровых файлов на сервер.
На данный момент клиент игры содержит в себе и выделенный сервер для платформ Windows и GNU/Linux.

Рассмотрим установку и запуск на выделенном сервере под управлением GNU/Linux (на примере Deban/Ubuntu Server):
Подготовка
1. Если вы используете 64-битную версию ОС, то для работы SteamCMD необходимо наличие установленных библиотек lib32gcc1 (а не целого набора ia32-libs).
В большинстве дистрибутивов данные библиотеки можно скачать из стандартных репозитариев:

Код: Выделить всё

sudo apt-get install lib32gcc1
Загрузка SteamCMD
2. Скачиваем и распаковываем клиент SteamCMD:

Код: Выделить всё

cd ~
mkdir steamcmd
cd steamcmd
wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz
tar zxvf steamcmd_linux.tar.gz
Устанавливаем права запуска на скрипт steamcmd.sh через консоль или FTP-менеджер:

Код: Выделить всё

chmod +x steamcmd.sh
Также, создаем папку для своего сервера, к примеру

Код: Выделить всё

mkdir starbound
В итоге путь к папке будет выглядеть как: /home/username/starbound
Запуск SteamCMD
3. Запускаем SteamCMD:

Код: Выделить всё

./steamcmd.sh
дожидаемся обновления платформы, обычно оно заканчивается приглашением вида Steam> в консоли.
Установка Starbound
4. Устанавливаем Starbound
Для установки Starbound необходимо наличие купленной игры на аккаунте. Если игра не куплена, скачиваем дистрибутив в сети, пропускаем предыдущие и текущий шаги.

Код: Выделить всё

login USERNAME PASSWORD

Код: Выделить всё

force_install_dir ПУТЬ К ВАШЕЙ ПАПКЕ ДЛЯ СЕРВЕРА
Если на аккаунте активирован SteamGuard, то потребуется ввод кода.

Код: Выделить всё

app_update 211820 validate
запустит процесс установки сервера.
После завершения загрузки и смены строки приглашения на Steam> необходимо произвести корректный выход из SteamCMD:
Запуск сервера
5. Запускаем сервер
Выбор бинарного файла для запуска сервера происходит в зависимости от разрядности вашей ОС
Для 32-бит это:

Код: Выделить всё

cd ~/starbound/linux32
Для 64-бит это:

Код: Выделить всё

cd ~/starbound/linux64
В принципе, на 64-битной ОС не будет проблем с запуском обеих версий сервера, но на x32 будет невозможен запуск из ~/starbound/linux64

Сам запуск сервера происходит через бинарный файл starbound_server
Для его запуска может потребоваться установка прав на запуск по аналогии со steamcmd.sh:

Код: Выделить всё

chmod +x starbound_server
Запускаем сервер:

Код: Выделить всё

./starbound_server
Удобнее всего запускать сервер в отдельной сессии screen
Для примера:

Код: Выделить всё

screen -dmS starbound ./starbound_server
запустит процесс в отдельном «окне», доступ к которому можно получить набрав одну команду:

Код: Выделить всё

screen -r starbound
Для успешного подключения к серверу должны быть открыты следующие порты: 21025 TCP. Игра также использует порты: 21026, 21027.
Управление сервером
6. Управление сервером
Для остановки сервера используется сочетание клавиш CTRL+C. Никаких других команд в консоли сервера (типа stop, exit, close) не предусмотрено.
Настройки сервера хранятся в файле starbound.config который создается автоматически после первого запуска. В нем можно изменить такие параметры как: имя сервера, пароль для подключения, игровые порты, количество игроков и некоторые другие аспекты игры.
Лог сервера автоматически пишется в файл starbound_server.log
Мир генерируется автоматически и хранится в папке universe. Рекомендуется делать периодические бекапы в рамках одной версии игры-сервера.
Существуют наработки по веб-интерфейсам и клиентам для управления сервером, например: http://community.playstarbound.com/inde ... ase.53988/
Для тех, у кого нет лицензии:
На данный момент в игре нет проверки на лицензионность клиента на стороне сервера.
Это значит, что пираты и обладатели лицензии могут спокойно играть одновременно на одном сервере.
Если у вас нет купленной игры, а поднять сервер хочется, то вы можете найти дистрибутив игры в интернете (желательно НЕ репак, т.к. сервер из него может быть вырезан), скопировать его по FTP на свой сервер (для запуска сервера достаточно скопировать папки assets и linux32/linux64/win32) и пройти через шаги 5 и 6.
Сервер и клиент должны быть одной версии.

Windows
Установка и запуск происходят аналогично. Различия минимальны: не требуется установка библиотек и прав, запуск сервера происходит из папки win32/starbound_server.exe
Конфигурация и логи пишутся в аналогичные файлы.

Используемые материалы:
Dedicated Starbound server under GNU/Linux + Port Forwarding
SERVER/MULTIPLAYER GUIDES

Renaissance
Полковник
Полковник
Сообщения: 7024
Зарегистрирован: 03.06.2009

Re: Starbound Dedicated Server

#2 Сообщение Renaissance » 30.01.2014, 15:17

Установка StarryPy
StarryPy — это «обертка» над сервером, написанная на Python. StarryPy добавляет в игру новые возможности, такие как: команды администратора, игровые команды, логи входа на сервер, а также расширяет игру дополнительными плагинами.

Некоторые возможности StarryPy:
  • Команды администратора
  • Быстрый чат с администратором или модератором сервера
  • Аннонсер, приветствует новых игроков при входе на сервер
  • Баунсер, запрещаем незарегистрированным на сервере игрокам взаимодействовать с миром (отключен по умолчанию)
  • Разноцветные ники в чате
  • MOTD
  • Помощник для новых игроков. По заданным параметрам добавляет новым игрокам в инвентарь вещи
  • Защита планеты. Запрещает любые изменения на заданной планете
  • Управление плагинами
  • Варпы в любом направлении. Позволяет переместиться на чужой корабль или переместить свой или чужой корабль
Установка StarryPy для GNU/Linux
Рассмотрим установку StarryPy на выделенном сервере под управлением GNU/Linux (в данном случае это Debian / Ubuntu Server).
Установка Python
1. Установка Python
В большинстве дистрибутивов Python уже установлен в системе. Для Ubuntu 13.10 это Python версии 2.7.5+
Проверить версию установленного Python можно командой:

Код: Выделить всё

python --version
Для работы StarryPy необходимо наличие установленных пакетов python-dev и python-pip:

Код: Выделить всё

sudo apt-get install python-dev

Код: Выделить всё

sudo apt-get install python-pip
Установка StarryPy
2. Установка StarryPy
Скачиваем последнюю версию StarryPy с GitHub:

Код: Выделить всё

wget https://github.com/CarrotsAreMediocre/StarryPy/archive/master.zip
Распаковываем скачанный архив. Например в свою домашний каталог. Полученный каталог будет иметь путь вида ~/StarryPy-master
Переходим в каталог StarryPy-master:

Код: Выделить всё

cd StarryPy-master
Выполняем команду:

Код: Выделить всё

sudo pip install -r requirements.txt
Дожидаемся завершения операции (операция завершится когда появится приглашение командной строки).
Установка завершена.
Настройка StarryPy
3. Настройка
Важно понять, что StarryPy работает именно как «обертка» над вашим сервером Starbound. Это означает, что StarryPy принимает на себя обработку запросов на стандартный игровой порт Starbound (21025), в то время как сам сервер и StarryPy взаимодействуют на другом порту (20124).

Переходим в каталог ~/StarryPy-master/config и дублируем файл config.json.example в просто config.json
Открываем config.json для редактирования (рекомендуется редактировать файл через редакторы типа Notepad++):

Код: Выделить всё

{
    "bind_port": 21025, // ПОРТ ДЛЯ ВХОДА НА СЕРВЕР, ПО УМОЛЧАНИЮ 21025
    "chat_prefix": "@",
    "colors": {
        "admin": "^#C443F7;",
        "default": "^#F7EB43;",
        "guest": "^#F7EB43;",
        "moderator": "^#4385F7;",
        "owner": "^#F7434C;",
        "registered": "^#A0F743;"
    },
    "command_prefix": "/",
    "core_plugin_path": "./core_plugins",
    "debug_file": "debug.log",
    "owner_uuid": "!!! SET THIS !!!", // UUID ВЛАДЕЛЬЦА СЕРВЕРА, ИМЕЕТ ВСЕ ПРАВА ПО УМОЛЧАНИЮ
    "passthrough": false,
    "player_db": "config/player.db",
    "plugin_config": {
        "motd_plugin": "Welcome to the server! Play nice.", // СТРОКА MOTD
        "new_player_greeter_plugin": {
            "items": [
                [
                    "coalore",
                    200
                ],
                [
                    "alienburger",
                    5
                ]
            ],
            "message": "Welcome to the server! Here are some starter items to get you off to a good start."
        }
    },
    "plugin_path": "./plugins",
    "upstream_hostname": "localhost", // IP-АДРЕС СЕРВЕРА, ЕСЛИ ЗАПУЩЕН НА ОТДЕЛЬНОЙ МАШИНЕ
    "upstream_port": 21024 // ПОРТ СЕРВЕРА, ДОЛЖЕН СОВПАДАТЬ С ПОРТОМ В КОНФИГЕ STARBOUND.CFG
}
Пояснения для самых важных параметров:

"bind_port": 21025 — порт для входа на сервер. По умолчанию, StarryPy использует стандартный порт Starbound. Можно изменить. Обязательный параметр.

"owner_uuid": "!!! SET THIS !!!" — uuid «владельца». Владелец имеет все права, может назначать администраторв и модераторов. UUID можно взять из сохранений для своего персонажа (D:\Games\Steam\SteamApps\common\Starbound\player). Обязательный параметр.

"upstream_hostname": "localhost" — IP-адрес сервера Starbound, если он находится на другом физическом сервере. Если StarryPy и Starbound работают на одном сервере, то изменять значение не нужно. Обязательный параметр.

"upstream_port": 21024 — порт сервера Starbound. Порт, на котором будет запущен сам выделенный сервер. Его необходимо выбрать и установить в конфиге starbound.config значение "gamePort" : 21024. Порты должны совпадать, иначе StarryPy не будет работать!
При работе StarryPy и Starbound на одном сервере рекомендуется с помощью файрвола запретить upstream_port для взаимодействия извне.
Запуск StarryPy
4. Запуск StarryPy
Запускаем сервер Starbound, после его инициализации запускаем StarryPy из его каталога:

Код: Выделить всё

cd ~/StarryPy-master

Код: Выделить всё

python server.py
Удобнее всего запускать StarryPy в отдельной сессии screen
Для примера:

Код: Выделить всё

screen -dmS StarryPy python server.py
запустит процесс в отдельном «окне», доступ к которому можно получить набрав одну команду:

Код: Выделить всё

screen -r StarryPy
Установка StarryPy для Windows
Описана здесь (на английском). Различия минимальны.

Использование StarryPy
После успешной установки и настройки StarryPy можно попробовать зайти на сервер на порт, который вы указали ранее в параметре "bind_port".
К примеру, если "bind_port": 21025, то вход на сервер происходит на стандартный порт, который не нужно явно указывать.
Проверить работоспособность StarryPy можно в чате сервера при входе на сервер. Там будет заданное приветствие и MOTD.

Известные проблемы
  • При запущенном StarryPy увеличивается время первого входа на сервер. Это связано с тем, что StarryPy записывает логи и обрабатывает права игроков. На первый взгляд может показаться что игра зависла, но это не так. Просто дождитесь входа на сервер (около 30 секунд).
  • При входе на сервер через порт, указанный в "upstream_port" StarryPy НЕ будет функционировать и все его возможности НЕ будут работать. Это означает, что если игрок зайдет на сервер таким путем, он может обойти запреты на взаимодействие с миром, баны, мьюты и прочие вещи. Данная проблема решается запретом на взаимодействие с портом указанным в "upstream_port" извне с помощью файрвола (например iptables).
Используемые материалы:
StarryPy - A plugin driven server wrapper written in Python.
CarrotsAreMediocre / StarryPy

Ответить