Онлайн-игры для STK
Прежде всего, вы можете скомпилировать STK с помощью команды -DSERVER_ONLY=ON
, которая создаст двоичный файл STK без графического интерфейса, оптимизированный для размера и использования памяти. Это полезно в ситуациях, подобных VPS.
Зависимости для RHEL/CentOS 7 устанавливаются с помощью следующих команд:
yum install wget; cd /tmp; wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-12.noarch.rpm; rpm -Uvh epel-release*rpm
yum install gcc-c++ cmake openssl-devel libcurl-devel zlib-devel enet
Сначала вам необходимо иметь онлайн-аккаунт STK. Перейдите по ссылке здесь для регистрации. Рекомендуется иметь сохранённого пользователя на вашем компьютере, чтобы разрешить хостинг нескольких серверов одновременно с одной учётной записью. Если у вас свежая установка STK, сначала запустите:
Если вы намерены поддерживать свой сервер всегда включённым (24x7), вам необходимо реализовать переадресацию портов или прямое подключение с проникновением NAT в вашу сеть. Мы будем регулярно удалять любые серверы, не следующие этому правилу.
supertuxkart --init-user --login=your_registered_name --password=your_password
После этого вы должны увидеть «Done saving user, leaving» в терминале, если вход выполнен успешно.
Затем вы можете просто запустить:
supertuxkart --server-config=your_config.xml --network-console
Он создаст этот XML-файл конфигурации, если его нет в текущем каталоге. Вы можете ввести «quit» в терминал, а затем отредактировать этот файл для дальнейшей настройки по мере необходимости.
Параметр --network-console
не следует использовать, если вы запускаете сервер supertuxkart позже с сервисом systemd, см. проблему #4299.
Текущий файл конфигурации сервера выглядит следующим образом:
<?xml version="1.0"?>
<server-config version="6" >
<!-- Имя сервера, кодируйте в XML, если хотите использовать символы юникода. -->
<server-name value="STK Server" />
<!-- Порт, используемый на сервере. Если вы укажете 0, будет использоваться порт сервера, указанный в stk_config.xml. Если вы хотите использовать случайный порт, установите random-server-port в '1' в пользовательской конфигурации. STK автоматически переключится на случайный порт, если указанный вами порт не может быть привязан. -->
<server-port value="0" />
<!-- Режим игры на сервере, 0 — нормальная гонка (гран-при), 1 — гонка на время (гран-при), 3 — нормальная гонка, 4 — гонка на время, 6 — футбол, 7 — свободная игра и 8 — захват флага. Обратите внимание: сервер гран-при не позволяет игрокам присоединяться и ждать текущей игры. -->
<server-mode value="3" />
<!-- Сложность на сервере, 0 — новичок, 1 — средний уровень, 2 — эксперт и 3 — супертукс (самая сложная). -->
<server-difficulty value="0" />
<!-- Количество треков гран-при за игру (если гран-при включён). -->
<gp-track-count value="3" />
<!-- Использовать цель в футболе. -->
<soccer-goal-target value="false" />
<!-- Включить сервер WAN, для которого требуется учётная запись stk-addons с сохранённой сессией. Подробнее см. команду init-user. -->
<wan-server value="true" />
<!-- Включить сетевую консоль, которая может выполнять, например, кикбан. -->
<enable-console value="false" />
<!-- Максимальное количество игроков на сервере. Установка значения больше 8 может привести к снижению производительности. -->
<server-max-players value="8" />
<!-- Пароль для частного сервера, оставьте пустым для публичного сервера. -->
<private-server-password value="" />
<!-- Сообщение сегодняшнего дня, отображаемое в лобби. Здесь можно ввести закодированные слова XML или файл .txt и позволить STK загрузить его. -->
<motd value="" />
<!-- Если это значение установлено в false, сервер будет игнорировать сообщения чата от всех игроков. -->
<chat value="true" />
<!-- Если клиент отправляет более chat-consecutive-interval / 2 сообщений чата в течение этого значения (в секундах), они будут игнорироваться, отрицательное значение для отключения. -->
<chat-consecutive-interval value="8" />
<!-- Разрешить игрокам голосовать за то, какой трек играть. Если это значение равно false, сервер случайным образом выберет следующий трек для воспроизведения. -->
<track-voting **<!-- Таймаут в секундах для выбора картов и (или) голосования за треки на сервере, вы можете использовать меньшее значение, если у вас отключено голосование за треки. -->**
<voting-timeout value="30" />
**<!-- Таймаут в секундах для валидации клиентов в wan, в настоящее время STK будет использовать сервер stk-addons для обмена ключом AES между клиентом и сервером. -->**
<validation-timeout value="20" />
**<!-- По умолчанию WAN-сервер всегда будет валидировать игрока, а LAN — нет. Отключите его, чтобы разрешить невалидированному игроку в WAN. -->**
<validating-player value="true" />
**<!-- Отключите, чтобы отключить весь код, связанный с оглушением, на сервере. Это позволяет экономить ресурсы сервера, если ваш сервер не находится за брандмауэром. -->**
<firewalled-server value="true" />
**<!-- Включите, чтобы разрешить соединение IPv6, если у вас есть публичный адрес IPv6. В настоящее время STK использует режим двойного стека, который требует, чтобы сервер имел как IPv4, так и IPv6 и слушал один и тот же порт. Если STK обнаружит, что у вашего сервера нет публичного адреса IPv6 или порт отличается между IPv4 и IPv6, он будет использовать только сокет IPv4. Для систем, которые не поддерживают сокеты двойного стека (например, OpenBSD), вы можете не подключиться через клиентов IPv4. Вы можете переопределить обнаружение в config.xml в папке supertuxkart config-0.10 с помощью опции default-ip-type. -->**
<ipv6-connection value="true" />
**<!-- Нет владельца сервера в лобби, который может контролировать запуск игры или исключать игроков. -->**
<owner-less value="false" />
**<!-- Время ожидания перед входом в экран выбора карта, если удовлетворено min-start-game-players ниже для owner less или ранжированного сервера. -->**
<start-game-counter value="60" />
**<!-- Клиенты ниже этого значения будут отклонены от присоединения к этому серверу. Определяется по количеству официальных картов в клиенте / количеству официальных картов на сервере -->**
<official-karts-threshold value="1" />
**<!-- Клиенты ниже этого значения будут отклонены от присоединения к этому серверу. Определяется количеством официальных треков в клиенте / количеством официальных треков на сервере. Установка слишком высокого значения помешает игрокам Android присоединиться к этому серверу, поскольку в STK android apk некоторые официальные треки удалены. -->**
<official-tracks-threshold value="0.7" />
**<!-- Автоматически запускайте выбор карта только тогда, когда количество подключённых игроков больше или равно этому значению, для owner less или ранжированных серверов после того, как start-game-counter достигнет 0. -->**
<min-start-game-players value="2" />
**<!-- Автоматически завершайте линейную гонку после 1-го финишировавшего игрока в течение некоторого времени (в настоящее время его финишное время * 0,25 + 15,0). -->**
<auto-end value="false" />
**<!-- Включить выбор команды в лобби в командной игре (футбол и CTF). Если owner-less включён, а live-spectate не включён, эта опция всегда отключена. -->**
<team-choosing value="true" />
**<!-- Если strict-players включён, дублированные онлайн-идентификаторы или игроки с разделённым экраном не допускаются, что может помешать кому-либо использовать более 1 сетевого ИИ с этим сервером. -->**
<strict-players value="false" >
**<!-- Сервер отправит рейтинг на сервер stk-addons для линейных гоночных игр, вам потребуется разрешение для этого. validating-player, auto-end, strict-player и owner-less будут включены. -->**
<ranked value="false" />
**<!-- Если true, владелец сервера может настроить сложность и режим игры в графическом интерфейсе лобби. Эту опцию нельзя использовать с owner-less или grand prix-сервером, и она автоматически включается, если сервер был создан с использованием графического интерфейса игры. Изменённые сложность и игровой режим не будут сохранены в этом файле конфигурации. -->**
<server-configurable value="false" />
**<!-- Если true, игроки могут присоединяться вживую или наблюдать за игрой в процессе. В настоящее время живое присоединение доступно только в том случае, если текущий используемый в сервере режим игры — FFA, CTF или футбол, также official-karts-threshold будет равен 1,0. Если false, аддон-карты будут использовать свой оригинальный хитбокс, отличный от тукса, все игроки, имеющие это ограничение, применяются. -->**
<live-spectate value="true" >
**<!-- Время в секундах, когда игрок бросает флаг в CTF, возвращаясь на свою базу. -->** **Конфигурация сервера сетевой игры**
*Флаг возврата таймаут*
Значение: 20
Описание: Время в секундах, через которое флаг будет деактивирован, если его захватят или вернут на свою базу игроки.
*Флаг деактивации времени*
Значение: 3
Описание: Время (в секундах) после захвата флага, по истечении которого он будет деактивирован.
*Хит лимит*
Значение: 20
Описание: Лимит попаданий для режима «все против всех». Установите значение 0, чтобы отключить лимит попаданий.
*Тайм-лимит для режима «всё против всех»*
Значение: 360
Описание: Ограничение по времени для режима «всё против всех» (в секундах). Установите значение 0, чтобы снять ограничение по времени.
*Захват лимит для CTF*
Значение: 5
Описание: Лимит захватов для CTF. Установите значение 0, чтобы отменить лимит захватов.
*Ограничение по времени CTF*
Значение: 600
Описание: Лимит времени для CTF (в секундах). Установите значение 0, чтобы снять лимит времени.
*Автоматическое определение времени игры*
Значение: -1
Описание: Значение, используемое сервером для автоматического определения времени каждой игры. Для гонок оно определяет круг каждой гонки в сетевой игре. Если значение больше 0.0f, то количество кругов каждой трассы будет определяться как max(1.0f, auto-game-time-ratio * default lap of that track). Для футбола, если значение больше 0.0f, для игр с ограничением по времени это будет auto-game-time-ratio * soccer-time-limit в UserConfig, а для игр с лимитом голов — auto-game-time-ratio * numgoals в UserConfig. Установите -1, чтобы отключить для всех.
*Максимальный пинг игрока*
Значение: 300
Описание: Максимальный пинг (в мс), который допускается для игрока. Рекомендуется использовать значение по умолчанию, если включена функция live-spectate.
*Допуск джиттера в сети*
Значение: 100
Описание: Допуск джиттера (в мс) в сети. Рекомендуется использовать значение по умолчанию, если включена функция live-spectate.
*Выбивать игроков с высоким пингом*
Значение: false
Описание: Выбивает игроков, чей пинг превышает максимальное значение.
*Разрешить игрокам с высоким пингом играть*
Значение: true
Описание: Разрешает игрокам, чей пинг выше максимального значения, играть. Включите эту опцию, также используйте значение по умолчанию для максимального пинга и допуска джиттера.
*Выбивать бездействующих игроков*
Значение: 60
Описание: Выбивает бездействующего игрока, который не имеет сетевой активности с сервером более нескольких секунд во время игры, если только он не закончил гонку. Отрицательное значение отключает эту функцию. Эта опция всегда отключена для LAN-сервера.
*Частота состояний*
Значение: 10
Описание: Определяет, сколько состояний сервер будет отправлять в секунду. Чем выше это значение, тем больше требуется пропускной способности, и каждый клиент будет вызывать больше перемотки назад. Клиенты с медленными устройствами могут испытывать проблемы при воспроизведении этого сервера. Рекомендуется использовать значение по умолчанию.
*Управление базой данных SQL*
Значение: false
Описание: Использовать базу данных SQL для управления статистикой сервера и обслуживания. STK должен быть скомпилирован с поддержкой sqlite3.
*Файл базы данных*
Значение: stkservers.db
Описание: Имя файла базы данных для использования sqlite. Может использоваться совместно всеми серверами, созданными на этом компьютере, и STK создаст отдельную таблицу для каждого сервера. Сначала необходимо создать базу данных самостоятельно. Подробности см. в разделе NETWORKING.md.
*Время ожидания в sqlite3_busy_handler*
Значение: 1000
Описание: Указывается в миллисекундах для максимального времени ожидания в sqlite3_busy_handler. Возможно, потребуется большее значение, если ваша база данных используется многими серверами или у вас медленный жёсткий диск.
*Таблица списка IP-бана*
Значение: ip_ban
Описание: Необходимо сначала создать таблицу. См. раздел NETWORKING.md для получения подробной информации. Пустое значение отключает функцию. Этой таблицей можно поделиться со всеми серверами, если вы используете одно и то же имя. STK может автоматически выбивать активных участников из списка бана (обновляется каждую минуту), что позволяет мгновенно выбивать участников, вставляя запись в базу данных.
*Таблица списка IPv6-бана*
Значение: ipv6_ban
Описание: Необходимо сначала создать таблицу. См. раздел NETWORKING.md для получения подробной информации. Пустое значение отключает функцию. Этой таблицей можно поделиться со всеми серверами, если вы используете одно и то же имя. STK может автоматически выбивать активных участников из списка бана (обновляется каждую минуту), что позволяет мгновенно выбивать участников, вставляя запись в базу данных.
*Таблица онлайн-ID-бана*
Необходимо сначала создать таблицу. См. раздел NETWORKING.md для получения подробной информации. Пустое значение отключает функцию. Этой таблицей можно поделиться со всеми серверами, если вы используете одно и то же имя. STK может автоматически выбивать активных участников из списка бана (обновляется каждую минуту), что позволяет мгновенно выбивать участников, вставляя запись в базу данных. **Конфигурация сервера**
<!-- Player reports table name, которое будет записано, когда игрок сообщает об игроке в диалоговом окне сетевого пользователя, вам нужно сначала создать таблицу, подробности см. в NETWORKING.md, пусто, чтобы отключить. Этой таблицей можно поделиться для всех серверов, если вы используете одно и то же имя. -->
<player-reports-table value="player_reports" />
<!-- Количество дней, в течение которых будут храниться отчёты игроков, старше этого срока будут автоматически удалены, 0 — хранить их вечно. -->
<player-reports-expired-days value="3" />
<!-- Таблица геолокации IP, она вам нужна только в том случае, если вы хотите определить местоположение IP-адреса из соединения, отличного от stk-addons, поскольку все проверенные игроки, подключающиеся через stk-addons, предоставят информацию о местоположении, вам необходимо сначала создать таблицу, см. NETWORKING.md для получения подробной информации, пусто для отключения. Этой таблицей можно поделиться для всех серверов, если вы используете одно и то же имя. -->
<ip-geolocation-table value="ip_mapping" />
<!-- Таблица геолокации IPv6, она вам нужна только в том случае, если вы хотите определить местоположение IPv6-адреса из соединения, отличного от stk-addons, поскольку все проверенные игроки, подключающиеся через stk-addons, предоставят информацию о местоположении, вам необходимо сначала создать таблицу, см. NETWORKING.md для получения подробной информации, пусто для отключения. Этой таблицей можно поделиться для всех серверов, если вы используете одно и то же имя. -->
<ipv6-geolocation-table value="ipv6_mapping" />
<!-- Если это правда, этот сервер будет автоматически добавлять / удалять AI, подключённый с network-ai=x, что приведёт к удалению N - 1 бота(ов), где N — количество игроков-людей. Используйте это только для не-GP гоночного сервера. -->
<ai-handling value="false" />
<!-- Если это верно, этот сервер позволит экземпляру AI подключаться откуда угодно (кроме локальной сети). -->
<ai-anywhere value="false" />
</server-config>
В настоящее время STK имеет список серверов STUN для проникновения NAT, который позволяет игрокам или серверам за брандмауэром или маршрутизатором подключаться друг к другу, но в случае сбоя вам придётся вручную отключить брандмауэр или перенаправить порты, используемые STK.
По умолчанию серверы STK используют порт 2759. Например, в дистрибутивах на основе Ubuntu выполните следующую команду, чтобы отключить брандмауэр на этом порту:
`sudo ufw allow 2759`
Вам также может потребоваться настроить порт обнаружения сервера 2757 для подключения вашего WAN-сервера в локальной сети / локальном хосте.
Примечание: Вам не нужно вносить какие-либо изменения в конфигурацию брандмауэра или маршрутизатора, если вы подключаетесь к рекомендуемым серверам (отмечены знаком ☆★STK★☆).
### Размещение LAN (локального интернет) сервера
Всё в основном так же, как и для WAN, за исключением того, что вам не нужен онлайн-аккаунт STK, просто выполните:
`supertuxkart --server-config=your_config.xml --lan-server=your_server_name --network-console`
Для LAN-сервера требуется, чтобы порт сервера и порт обнаружения были доступны клиентам напрямую, в LAN не будет выполняться проникновение NAT.
К LAN-серверу также можно подключиться, введя общедоступный адрес вашего сервера (с портом) в диалоге «Введите адрес сервера», не полагаясь на stk-addons.
------
После первой настройки вы можете просто запустить сервер с помощью команды:
`supertuxkart --server-config=your_config.xml`, независимо от того, выбран ли LAN или WAN сервер (конечно, у вас должен быть сохранённый пользователь для WAN), по умолчанию ваши журналы сервера будут сохранены в каталог конфигурации STK с именем your_config.log, при условии, что имя файла конфигурации сервера — your_config.xml.
Вы можете узнать расположение этого каталога [здесь (см. Где хранится конфигурация?)](https://supertuxkart.net/FAQ)
## Тестирование сервера
В STK есть сетевой тестер AI, который может использовать ИИ на контроллере игрока для тестирования серверов, размещающих линейный режим игры, что помогает автоматизировать тестирование серверов. Чтобы включить его, используйте его на LAN-сервере:
`supertuxkart --connect-now=x.x.x.x:y --network-ai=n --no-graphics`
Удалите `--no-graphics`, если вы хотите увидеть гонку ИИ. Вы также можете запустить сетевой тестер ИИ в сборке сервера STK.
С сетевым тестером ИИ легче, например, имитировать высоконагруженные серверы или плохие сети (с высоким пингом и/или потерей пакетов).
Протестировано на... Создание таблиц для базы данных:
1. **ipv6_ban** — содержит информацию о банах по IPv6-адресам. Включает уникальный IPv6 CIDR диапазон для бана, время начала действия бана, срок истечения бана (если не указано, то бан постоянный), причину бана, описание для администратора сервера, количество срабатываний бана и последнее срабатывание бана.
2. **online_id_ban** — содержит информацию о банах по онлайн-идентификаторам. Включает онлайн-идентификатор из базы данных дополнений STK для бана, время начала действия бана, срок истечения бана (если не указано, то бан постоянный), причину бана, описание для администратора сервера, количество срабатываний бана и последнее срабатывание бана.
3. **player_reports** — содержит отчёты игроков. Включает идентификатор сервера, IP-адрес игрока, который делает отчёт, IPv6 адрес игрока (только для серверов с поддержкой IPv6), онлайн-идентификатор игрока, имя игрока, время отчёта, информацию об отчёте, IP-адрес игрока, на которого делается отчёт, IPv6 адрес этого игрока (только для серверов с поддержкой IPv6) и его имя.
4. **ip_mapping** — сопоставляет IP-адреса с географическими координатами. Включает начальный и конечный IP-адреса, широту, долготу и код страны.
5. **ipv6_mapping** — аналогично таблице ip_mapping, но для IPv6 адресов.
Для инициализации таблицы **ip_mapping**, проверьте скрипт tools/generate-ip-mappings.py.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )