Jump to content

Как запустить свой сервер Пиратии 1 часть


Go-piratia

Recommended Posts

image.png

Содержание

  1. Введение.
  2. Выбор хостинга.
  3. Выбор сервера.
  4. Архитектура серверов Пиратии.
  5. Подготовка сервера.
    1. Установка СУБД.
    2. Настройка СУБД.
    3. Установка Git.
    4. Установка VScode.
    5. Установка GitClient.
    6. Изучение конфигов.
      1. Генерация пароля к БД.
      2. Включаем Accountserver.
      3. Включаем GroupServer.
      4. Включаем GameServer.
      5. Включаем GateServer.
    7. Открытие портов снаружи.
  6. Запуск сервера.
  7. Проверка соединения извне.
  8. Остановка сервера.
  9. Подключение клиента к серверу.
  10. Создание аккаунта. 

 

Введение
Если вы хотели запустить свою игру - вам сюда!

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

 

Выбор хостинга

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

  • Hetzner.com
  • Ovhcloud.com

Если рассматриваем РФ

  • Selectel.ru
  • Fastvps.ru

Можно рассматривать и другие хостинги, тут уж на вкус и цвет, а так же смотря сколько денежных средств вы готовы оставить.

 

Выбор сервера

Хостинг выбрали - пошли дальше, теперь выбираем сервер. На что обратить внимание при выборе сервера:

  1. На сервер должна быть возможность установить Windows/Windows Server - все сервера сделаны для windows + у вас должна быть возможность подключаться по RDP.
     
  2. Процессор должен быть частотой выше 2Ггц, но лучше 3.2Ггц и больше. Чем быстрей процессор - тем быстрей работает ваш сервера. 
     
  3. Оперативной памяти много не требуется, для маленького сервера достаточно 8GB RAM, для среднего сервера будет достаточно 16GB RAM, а на 32GB RAM вы сможете позволить себе запустить 2 полноценных сервера или очень стабильный 1. Главное чтоб хватило ядер. 
     
  4. Жесткий диск желательно SSD, но можно и HDD от 100 GB, память нужна в основном для логов и БД. Главное вовремя чистить логи. Почему SSD лучше чем HDD - сервера будут меньше ждать от сервера разрешения на запись, а значит сервер будет быстрее работать. 
     
  5. И одно из самых важных сеть. Вообще для сервера и 1000 игроков достаточно 10-20 Мбит/сек. Но если мы хотим устойчивый сервер, который еще и задодосить нельзя - стоит брать 1Гбит/сек

 

Архитектура серверов Пиратии

Идем сюда и читаем теорию.

Далее переходим практике. 

 

Подготовка сервера

Из темы выше мы выяснили, что нам нужна некая СУБД MSSQL. Разберемся что это такое:
Microsoft SQL Server — система управления реляционными базами данных (РСУБД), разработанная корпорацией Microsoft. Проще говоря, эта штука в которой хранится информация о ваших игроках, об их персонажах, кораблях, характеристиках и т.д.

MSSQL бывает разных видов: Developer и Express(есть и другие, но нам они не нужны, мы не хотим платить деньги)Быстренько разберемся чем они отличаются и что нам подойдет. Если мы не уверенный администратор, то нам достаточно будет Express версии, в которой нет различных дополнительных примочек. Develop имеет меньше ограничений и большую производительность и более расширенные лимиты, но чуть более сложен в обращении из-за этого, а так же не маловажно сказать что там есть SQL Agent. 

Агент SQL Server — это служба Microsoft Windows, выполняющая запланированные административные задачи, которые называются заданиями в SQL Server. Этот сервис позволит делать автоматические бэкапы БД и автоматические задания для сбора статистики.

Для обычного пользователя переходим по ссылке https://www.microsoft.com/ru-ru/sql-server/sql-server-downloads

Для более прошаренных пользователей лучше купить еще один сервер на Linux и поставить Docker и MSSQL dev (https://learn.microsoft.com/ru-ru/sql/linux/sql-server-linux-setup?view=sql-server-ver16). Оно же, но без Docker (https://www.dmosk.ru/miniinstruktions.php?mini=mssql-ubuntu)


Разбираем по шагам установку MSSQL 2022 Developer Edition

Выбираем базовую установку. 

image.png

 

Соглашаемся с условиями лицензии

image.png

 

Ждем пока скачиваются все необходимые пакеты

image.png

 

Далее происходит установка компонентов

image.png

 

Далее мастер установки показывает нам где лежат файлы сервера, версию и конфигурационные настройки. 

image.png

 

На этом установка закончена. 

Помимо установки самой базы, нам нужно будет установить и менеджмент студию -  Скачать SQL Server Management Studio (SSMS) или установить из предыдущего шага. Устанавливаем либо на свой ПК, либо на сервере. Через это приложение мы и будем общаться с базой данных. 

 

image.png

 

Нас перебросит на сайт, где нужно найти следующую ссылку

image.png

 

Выбираем расположение приложения 

image.png

 

Ждем скачивания и установки компонентов 

image.png

 

После всех этих процедур необходимо найти Диспетчер серверов

image.png

 

Выбрать службы SQL Server

image.png

 

 

Затем включить обозреватель SQL

image.png

 

image.png

 

Далее переходим в раздел "Сетевая конфигурация" и включаем протоколы: 

image.png

 

После данного шага стоит перезапустить Сервер.  А после перезапуска открываем SSMS

image.png

 

Локально мы сразу можем подключиться к серверу

image.png

 

Сразу же заходим в настройки сервера

image.png

 

Разрешаем подключение по SQL и Windows

image.png

 

После перезапускаем сервер и снова заходим

image.png

 

Сразу создадим пользователя для дальнейшей работы с базой

 

image.png

 

Убираем требование обновлять пароль раз в 3 месяца и ставим способ аутентификации SQL (по логину и паролю). Из-за особенностей шифрования паролей пользователей баз данных в конфигурационных файлах сервера Пиратии, пароль каждого пользователя должен быть длиной ровно 9 символов

image.png

 

После чего пользователь после обновления должен появиться и можно проверить подключение 

image.png

 

image.png

На этом настройка SQL Server пока закончена. 

 

Далее для продуктивной работы нам понадобится среда разработки. Вся сборка севера написана на Lua. А значит нам понадобится IDE(Интегрированная среда разработки). Совет автора - VScode. После установки ставим расширение Lua Server и получаем супер-мега помощника, который будет с нами весь дальнейший путь. Чем еще хорош VScode - он позволяет установить еще кучи расширений, которые помогут нам в разработке это и SSH консоль, и SSMS для работы с MSSQL и Git(систему контроля версий) и еще кучу полезных вещей, которые будут нужны при разработке. 

 

image.png

Принимаем лицензионное соглашение

image.png

 

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

image.png

 

Далее для удобства ставим тут галочки 

image.png

 

 

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

image.png


В появившемся окне вводим encod для изменения кодировки по умолчанию. Все файлы lua в кодировке win1251

image.png

 

Выбираем кодировку WIN1251

image.png

 

Приступаем к установке LuaServer 

image.png

 

Вводим в поиске

image.png

 

Еще добавляем заранее git history

image.png

 

Мои поздравления, мы завершили подготовку второго приложения. При желании можно в поиске расширений посмотреть расширения для SSH/MSSQL.

 

Для безопасной работы над проектом нам понадобится Git и приложение для взаимодействия с системой контроля версий. Для новичков просьба ознакомиться с этим пособием.

Скачиваем базовый git клиент

image.png

 

 

Читаем лицензионное соглашение

image.png

 

Выбираем где будет располагаться приложение 

image.png

 

Добавляем на рабочий стол и убираем GUI из контекстного меню 

image.png

 

 

Далее соглашаемся со всем вплоть до окончания установки 

image.png

 

Далее вводим ssh-keygen.exe  и нажимаем Enter много раз 

image.png

 

В итоге должно получиться вот так

image.png

 

Теперь немного информации что сейчас произошло - мы сгенерировали уникальный ssh-ключ для дальнейшей работы с gitlab/github.  С этим приложением пока закончили. 

Мы ведь не про специалисты-хакеры. Ставим приложение, которое будет помогать работать с Git таких несколько, есть платные, есть бесплатные. Совет автора - Sourcetree или GitKrakenВ примере разберем Sourcetree:

 

Скачиваем с сайта сетапник

image.png

Скипаем

image.png

 

Далее ничего не прожимаем

image.png

 

Ожидаем завершение установки 

image.png

 

Вписываем данные, как мы будем предоставлять этот сервер для Git

image.png

 

В появившемся окне нажимаем Нет

image.png

 

После запуска приложения заходим в настройки  

image.png

 

Меняем настройки SSH клиента

image.png

Еще можно поменять цвет интерфейса и кодировку, это уже по усмотрению. С этим покончено. 

Теперь, наконец приготовления закончились, теория прочитана и начинается самое интересное, то для чего мы это делали. Скачиваем сборку https://gitlab.com/pko-base/udio-piratia-server

image.png

 

 

Распаковываем в понравившуюся папку. И получаем следующий результат 

image.png

 

Открываем SSMS и подключаем базы данных к серверу. 

image.png

 

Добавить

image.png

Выбираем файлы БД, желательно положить туда, где сервер будет видеть директорию(в примере лежит на диске C)

image.png

 

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

image.png

 

Далее ранее созданному пользователю нужно дать права на подключение 

image.png

 

Щелкаем галочки напротив БД и у каждой БД выставляем owner 

image.png

 

Получится вот так 

image.png

image.png

На этом пока заканчивается наша настройка в БД. Переходим к конфигам. 

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

 

В *ini файле вводим пароль от piratia, который мы задавали пользователю БД и после запуска получаем строчку, которую позже нужно будет использовать для конфига. 

 

Открываем конфиг AccountServer.cfg и вписываем информацию о пользователе и пароль из шифровальщика. Сохраняем файл.

image.png

 

Если ранее вы все делали правильно, то после запуска AccountServer.exe у вас будет вот такая картина

image.png

 

Далее делаем тоже самое с GroupServer.cfg, сохраняем файл. 

image.png

 

После запуска GroupServer.cfg мы должны лицезреть вот такую консоль

image.png

 

На пусти у нас остался последний сервер который работает с БД - GameServer. Открываем GameServer.cfg и добавляем по аналогии с предыдущими файлами информацию о подключении к БД.  Не забываем сохранять файл после редактирования.

image.png

 

Получаем вот такую консоль после запуска GameServer.exe

image.png

 

Ну и наконец запускаем GateServer.exe и проверяем, что GroupServer соединился с GateServer.

image.png

 

На данный момент у нас работает целиком весь сервер с 1 картой garner.  Нам необходимо открыть порт для подключения, а именно 1973 (см. конфиг GateServer раздел ToClient). Для этого заходим в панель управления 

image.png

image.png

 

image.png

 

Поверяем что у нас есть правила во входящих подключениях. Если что редактируем их и вписываем порт 1973

image.png

 

 

Если вы все делали правильно, то сейчас имея клиент вы сможете подключиться к серверу введя ip купленного вами сервера, где расположен и запущен GateServer

 

Запуск сервера

Общие принципы и порядок запуска исполняемых файлов сервера. Поскольку игровой сервер состоит из нескольких исполняемых файлов (AccountServer.exe, GateServer.exe, GameServer.exe, GroupServer.exe), то их необходимо запускать в определенном порядке:

  • AccountServer;
  • Экземпляры GameServer;
  • GroupServer;
  • GateServer.

 

Для запуска AccountServer, GroupServer и GateServer достаточно запустить их исполняемые файлы из проводника. Если таким же образом запустить GameServer, то он будет использовать конфигурационный файл по умолчанию GameServer.cfg, поэтому при запуске очередного экземпляра GameServer необходимо дополнительно указать в параметрах его запуска конфигурационный файл, который необходимо использовать экземпляру для работы: GameServer.exe <Конфигурационный файл>

Это можно сделать из Командной строки (cmd.exe), либо с помощью пакетного .bat-файла.

 

Запуск GameServer из Командной строки (cmd.exe)

cd C:\Сервер\GameServer GameServer GameServer2.cfg

Данная последовательность команд запустит исполняемый файл GameServer.exe с конфигурационным файлом GameServer2.cfg, которые находятся на диске в директории C:\Сервер\GameServer.

 

Запуск GameServer с помощью .bat-файла

start GameServer.exe GameServer3.cfg

Данный .bat-файл запустит исполняемый файл GameServer с конфигурационным файлом GameServer3.cfg при условии, что GameServer.exe и .bat-файл находятся в одной и той же директории.

 

Чтобы запустить сразу несколько экземпляров GameServer с различными конфигурационными файлами, можно написать простой .bat-скрипт:

@echo off 
start GameServer.exe GameServer.cfg
start GameServer.exe GameServer2.cfg 
start GameServer.exe GameServer3.cfg

 

Проверка соединения с игровым сервером

Для определения возможности подключения к Вашему игровому серверу из сети Интернет можно воспользоваться сервисами в Интернете, которые позволяют выполнить проверку внешнего порта сервера на доступность, например, 2ip - Проверка порта. В поле "Порт" введите внешний порт GateServer из секции ToClient конфигурационного файла GateServer.cfg. По умолчанию это порт 1973.

Нажмите кнопку "Проверить". При этом, исполняемый файл GateServer.exe должен быть запущен. Вы увидите сообщение "Порт открыт" если сервер доступен для подключения к нему, либо "Порт закрыт" в противном случае.

Еще одним способом проверки доступности игрового сервера является подключение к нему используя клиент Telnet. Для этого запустите клиент Telnet, например, встроенный в операционную систему Windows (сочетание клавиш Windows + R, открыть telnet.exe) и выполните в нем команду для подключения к игровому серверу:

open <IP-адрес> <Порт>

<IP-адрес> - это IP-адрес игрового сервера, подключение через который Вы хотите проверить;

<Порт> - внешний порт игрового сервера.

При доступности игрового сервера по указанному адресу Вы увидите строку с датой и временем подключения к серверу.

 

Правильная остановка сервера

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

  • Все экземпляры GameServer;
  • GroupServer;
  • GateServer;
  • AccountServer.

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

 

Чтобы завершить работу всех экземпляров GameServer, откройте служебное окно очередного экземпляра и введите в поле ввода команд (1) команду Stop(X), где - время в секундах, через которое текущий GameServer будет остановлен, после чего нажмите кнопку "Execute" (2).

 

Когда все экземпляры GameServer завершат свою работу, остановите поочередно GroupServer, затем GateServer и после AccountServer с помощью сочетания клавиш CTRL + C в консольном окне. Процесс завершения работы очередного сервера может занять время, то есть приложения закроются не сразу.

 

Подготовка клиента

Для подключения к серверу выбираем чистый клиент Пиратии и далее нам понадобятся 2 программы: Ip Changer и Просмотр информации о клиенте, скачать их можно по следующим ссылкам:

Так же архив клиентов можно посмотреть тут

 

Первым делом настраиваем информацию о сервере в файле ServerSet.bin, именно там хранится информации об адресе и названии сервера. Открываем ip changer и вводим название региона, название сервера и ip адрес сервера, где включен GateServer. В нашем случае - Test, Test и 127.0.0.1

image.png

 

Далее нам нужно проверить подходит ли наш сервер для выбранного клиента или наоборот выбранный клиент для сервера. Открываем GameView, вводим путь до game.exe из папки system в клиенте.  

image.png

Первое что мы видим - параметр запуска клиента, именно он нужен для правильного запуска клиента. Далее версия и порт, они нам и нужны. Они должны совпадать с той информацией, что указана в конфигурации у GateServer.exe в *.cfg файле  в разделах [Main] и [ToClient], если данные различаются мы можем перезаписать с помощью этой программы в клиенте или поменять на сервере(не забывайте перезапускать GateServer если меняете файлы конфигурации.

После всех преобразований создаем *bat файл в корне клиента с следующим содержимым 

start system/game.exe startgame

Краткая инструкция по созданию файла

Создать BAT файл очень просто. Достаточно открыть блокнот и сохранить пустой лист с расширением .bat, выбрав опцию Сохранить как... и написав в поле Имя файла что-нибудь оканчивающееся на .bat, например test.bat.

Тип файла указываете как на скриншоте ниже - Все файлы. Сохраняете и получаете BAT файл.

Редактировать BAT файл можно в блокноте или любом другом текстовом редакторе, ориентированным на работу с кодом. 

 

Создание аккаунта

Мы готовы к подключению, но у нас еще нет аккаунта на сервере. Для этого нам пригодится следующая программа Create account. Скачиваем, закидываем на сервер. В *.cfg вводим информацию для подключения к базе данных или можно настроить приложение после запуска нажав на шестеренку. После заполнения вводим логин, пароль и выбираем статус игрок\hd\gm 


image.png

 

После чего пробуем подключиться к своему серверу с настроенного клиента. 

 

Если на всех этапах вы все делали правильно и автор ничего не забыл - вы становитесь обладателем своего собственного сервера Пиратии с настроенным для дальнейшей работы серверов и клиентом.  На этом все. Мои поздравления!

 

P.S. О любых возникших проблемах пишите в этом топике - будем разбираться. 

Некоторые материалы были взяты с pkodev.net

 

 

Link to comment
Share on other sites

Доброго времени суток! 
Очень хотел запустить свой сервер для ностальгии, при том уже делал это лет 5 назад, но на msql2000

Все делаю по гайду, но при попытке запуска аккаунт сервера ловлю ошибку Main database handler create failed, AccountServer hang!
Понимаю, что она просто указывает на невозможность подключиться к бд, но может есть какие то рекомендации куда смотреть?

Пасс точно из 9 символов, пассген пробовал и старой и новой версии (которая была).
БД тоже подключал и старые и новые

Прикладываю скрины настроек, все проверил несколько раз, даже бд переустанавливал...

image.thumb.png.0d9329f4bcead8c911cc6fbde856a791.png

 

image.png.6d0abb60a7d4f67104f974fd63b2bd07.png

 

image.thumb.png.5cb2c82003e624f0f98c45105adf105f.png

 

image.png.e6759a6e0b2645b4b0effd8e6e0c81d5.png

 

image.png.2979bc812ca9f218a75906d0af651168.png

 

image.png.c9d9ebe0741cba054716e9498d5e5a7a.png

image.thumb.png.c83300f8248025fdad8c20d7c4137a5f.png

 

Link to comment
Share on other sites

  • Go-piratia changed the title to Как запустить свой сервер Пиратии 1 часть
  • 4 months later...
  • 1 month later...

GateServer выдает ошибку, когда ставлю свой IP "╬─╝■:\Item\Source\Vc2003\Project_Kop_138\Server\GateServer\src\ToClient.cpp ╨╨:21 ├ш╩Ў:ToClient listen failed"

Link to comment
Share on other sites

В 10.05.2024 в 12:38, Kolobok сказал:

GateServer выдает ошибку, когда ставлю свой IP "╬─╝■:\Item\Source\Vc2003\Project_Kop_138\Server\GateServer\src\ToClient.cpp ╨╨:21 ├ш╩Ў:ToClient listen failed"

Привет! 
Возможные причины:

  • Уже запущен сервис который слушает требуемый порт. По стандарту 1973. 
  • Возможно порт закрыт.
Link to comment
Share on other sites

  • 2 months later...
20 минут назад, IOISATANAIOI сказал:

Добрый день. Сделал все по инструкции, почему при выборе локации (после создания персонажа) выдает след... illegal birth place

Исправил, заменив в C:\Games\Пиратия Online\scripts\table\StringSet строчки городов на англ. Теперь после создания перса, при нажатии "Вовйти" выдает следующее target map cannot be reached

Link to comment
Share on other sites

40 минут назад, IOISATANAIOI сказал:

Исправил, заменив в C:\Games\Пиратия Online\scripts\table\StringSet строчки городов на англ. Теперь после создания перса, при нажатии "Вовйти" выдает следующее target map cannot be reached

В целом тоже разобрался с картами) Ну почемуто не работает аскарон (Garner)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Chat

Chat

Please enter your display name

×
×
  • Create New...