Table of content

Огляд

Roliserver призначено для організації одночасної гри у декілька ігор на одному комп'ютері. Цю послугу можуть пропонувати спільноти гравців у рольові ігри.

Перший запуск

Наполегливо рекомендуємо запускати roliserver ось так:

roliserver -p config.conf

У результаті буде створено файл налаштувань із назвою «config.conf» (змініть назву, якщо потрібно).

:::ini
[General]
AdminPassword=@Invalid()
ChannelCount=@Invalid()
ConnectionMax=@Invalid()  
IpBan=@Invalid()
IpMode=@Invalid()
IpRange=@Invalid()
LogLevel=@Invalid()
DeepInspectionLog=@Invalid()
ThreadCount=@Invalid()
TimeEnd=@Invalid()
TimeStart=@Invalid()
TimeToRetry=@Invalid()
password=@Invalid()
port=@Invalid()
TryCount=@Invalid()
MaxMemorySize=@Invalid()

Змініть значення бажаним чином. Порядок елементів не має значення.

Файл налаштувань

Пароль

Визначте пароль для доступу до сервера. Кожен пароль, що зберігається в цьому файлі, має бути зашифрований методом Sha3_512. Не хвилюйтеся, це справді легко зробити.

Спочатку, запустіть сервер з параметром -g.

$ roliserver -g

Вас попросять ввести пароль. Далі, програма виведе зашифровану версію вашого пароля.

P9d63VIxEvincVCutARz0W86GFFX36h0zWEIUomzusZmnv3krtcEsXzZWKKXXv6Ivag+8fR2a7tRWoaaIu3L1w==

Далі, ви можете скопіювати цей ключ і вставити його до вашого файла.

У Rolisteam передбачено графічний інтерфейс для отримання створеного пароля за допомогою Sha3_512.

Попередження: переконайтеся, що ви використовуєте сервер з Qt5.9 або вище. Sha3_512 на старіших версіях Qt працює некоректно. У вас можуть виникнути труднощі зі з'єднанням із сервером.

Port

Визначає порт з'єднання. Звичайним портом є 6660, але порт можна змінити.

ConnectionMax

Визначає максимальну кількість клієнтів, які можуть з'єднуватися з сервером.

ChannelCount

Визначає кількість каналів під час першого запуску сервера.
По суті, це визначає кількість ігор, які ваш сервер може приймати одночасно.

Пароль адміністратора

Визначає пароль для захисту розпізнавання адміністратора сервера. Пароль все ще зашифровано в Sha3_512.

Адміністратор може викидати користувачів, додавати або вилучати канали та робити багато інших речей.

LogLevel

Рівень журналювання є числовим значенням, яке визначає рівень деталізації потрібних вам відомостей.

Можливе значення:

  • 1 : Помилка
  • 2 : Діагностика
  • 3 : Попередження
  • 4 : Інформація

На рівні Помилка сервер показує лише повідомлення про помилки.
Рівень діагностики корисний, коли ви хочете покращити сервер, додати деякі функції тощо.
Повідомлення Попередження показує повідомлення про неочікувані дані або поведінку.
Нарешті, рівень відомостей надає докладні відомості про те, що робить сервер.

Перш ніж оприлюднювати звіт щодо вади, варто запустити програму з рівнем журналювання «Відомості», щоб надати команді розробників якомога більше інформації.

DeepInspectionLog

Записувати до журналу усі події на сервері. Використання цього варіанта може уповільнити роботу сервера.

Можливе значення:

  • істина
  • хибність

LogFile

встановити шлях, за яким буде записано журнал.

Приклад

LogFile=/var/log/roliserver.log

ThreadCount

Визначає максимальну кількість потоків обробки, якими може користуватися сервер.

TimeToRetry

Час очікування (у мілісекундах) між двома спробами отримати дані з порту.

Сервер очікує над дані будь-якого з'єднання на порті, визначеному в цьому файлі. У рідкісних випадках цей крок може завершитися невдачею. Ймовірно, тому, що інший сервер вже очікує на дані за цьому порті. Тому roliserver спробує кілька разів.

TryCount

Визначає, скільки разів сервер намагатиметься отримати дані з порту. Якщо досягнуто цієї кількості, сервер завершить роботу зі статусом помилки.

TimeStart

Визначає час доби, коли сервер дозволяє з'єднання із собою.

Його слід записати так: гг:хх. Години мають бути визначені двома цифрами, як і хвилини.

Приклади: 8pm

20:00

6am

06:00

TimeEnd

Визначає час, коли сервер припиняє приймати з'єднання.

Його слід записати так: гг:хх. Години мають бути визначені двома цифрами, як і хвилини.

Приклади: 8pm

20:00

6am

06:00

IpBan

Визначає список заблокованих IP-адрес.

Приклади: список із 3 адресами

80.80.80.80,127.9.9.1,10.10.10.10

IpMode

ipv4 або ipv6, або обидві версії.

Ще не використовується.

MaxMemorySize

Встановіть значення максимального розміру, який має зберігати сервер. Коли буде досягнуто обмеження, дані з усіх каналів буде відкинуто.

Приклад:

:::ini
MaxMemorySize=8G  #Define the size at 8 Gibibyte
MaxMemorySize=8M  #Define the size at 8 Mebibyte

Приклад робочого файла .conf:

AdminPassword=tnjOmGIvYntbNcoej2VvG9M1RdJCtZ8BWjHek4r6OvvmhThbjjzJ/zfYwq+G7r/TGe7WWr20vkGBzULuTzcPYQ==
ChannelCount=8
ConnectionMax=50
IpBan=@Invalid()
IpMode=@Invalid()
IpRange=@Invalid()
LogLevel=3
LogFile=
ServerPassword=tnjOmGIvYntbNcoej2VvG9M1RdJCtZ8BWjHek4r6OvvmhThbjjzJ/zfYwq+G7r/TGe7WWr20vkGBzULuTzcPYQ==
ThreadCount=8
TimeEnd=@Invalid()
TimeStart=@Invalid()
TimeToRetry=100
TryCount=10
port=6660

Як пароль буде використано 0000. Рекомендуємо створити свій власний пароль за допомогою допоміжного засобу для створення паролів, доступного у клієнті Rolisteam.

Розгортання на SystemD

Створімо наш файл служби

$ sudo touch /etc/systemd/system/roliserver.service

Далі, скопіюймо і вставимо це до roliserver.service:

:::ini
[Unit]
Description=Rolisteam Server
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=1
User=#your_username#
ExecStart=/usr/local/bin/roliserver -c /home/#your_username#/.roliserver.conf

[Install]
WantedBy=multi-user.target

Далі, увімкнімо і запустімо службу:

:::shell
$ sudo systemctl enable roliserver.service
$ sudo systemctl start roliserver.service