Go-piratia Posted November 5, 2023 Share Posted November 5, 2023 Содержание Введение. Выбор хостинга. Выбор сервера. Архитектура серверов Пиратии. Подготовка сервера. Установка СУБД. Настройка СУБД. Установка Git. Установка VScode. Установка GitClient. Изучение конфигов. Генерация пароля к БД. Включаем Accountserver. Включаем GroupServer. Включаем GameServer. Включаем GateServer. Открытие портов снаружи. Запуск сервера. Проверка соединения извне. Остановка сервера. Подключение клиента к серверу. Создание аккаунта. Введение Если вы хотели запустить свою игру - вам сюда! В этом пособии вы узнаете как запустить собственный приватный сервер Пиратии. В примере будет использована стабильная сборка от MrSharp, мы разберем какие шаги нужно предпринять для того чтобы запустить свой сервер и начать на нем играть. Это будет тернистый путь из тени к звездам Выбор хостинга Для начала нам нужно выбрать хостинг, на котором мы хотим запустить свой сервер, потому что запускать свой сервер на домашнем ПК стоит только для тестов, если вы хотите дать доступ для других игроков лучше использовать промышленные сервера. Приступим к поиску: первое на что стоит обратить внимание - кто является хостером и где располагаются сервера этого хостинга. Если мы рассматриваем Европу, то стоит обратить внимание на хостинги: Hetzner.com Ovhcloud.com Если рассматриваем РФ: Selectel.ru Fastvps.ru Можно рассматривать и другие хостинги, тут уж на вкус и цвет, а так же смотря сколько денежных средств вы готовы оставить. Выбор сервера Хостинг выбрали - пошли дальше, теперь выбираем сервер. На что обратить внимание при выборе сервера: На сервер должна быть возможность установить Windows/Windows Server - все сервера сделаны для windows + у вас должна быть возможность подключаться по RDP. Процессор должен быть частотой выше 2Ггц, но лучше 3.2Ггц и больше. Чем быстрей процессор - тем быстрей работает ваш сервера. Оперативной памяти много не требуется, для маленького сервера достаточно 8GB RAM, для среднего сервера будет достаточно 16GB RAM, а на 32GB RAM вы сможете позволить себе запустить 2 полноценных сервера или очень стабильный 1. Главное чтоб хватило ядер. Жесткий диск желательно SSD, но можно и HDD от 100 GB, память нужна в основном для логов и БД. Главное вовремя чистить логи. Почему SSD лучше чем HDD - сервера будут меньше ждать от сервера разрешения на запись, а значит сервер будет быстрее работать. И одно из самых важных сеть. Вообще для сервера и 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 Выбираем базовую установку. Соглашаемся с условиями лицензии Ждем пока скачиваются все необходимые пакеты Далее происходит установка компонентов Далее мастер установки показывает нам где лежат файлы сервера, версию и конфигурационные настройки. На этом установка закончена. Помимо установки самой базы, нам нужно будет установить и менеджмент студию - Скачать SQL Server Management Studio (SSMS) или установить из предыдущего шага. Устанавливаем либо на свой ПК, либо на сервере. Через это приложение мы и будем общаться с базой данных. Нас перебросит на сайт, где нужно найти следующую ссылку Выбираем расположение приложения Ждем скачивания и установки компонентов После всех этих процедур необходимо найти Диспетчер серверов Выбрать службы SQL Server Затем включить обозреватель SQL Далее переходим в раздел "Сетевая конфигурация" и включаем протоколы: После данного шага стоит перезапустить Сервер. А после перезапуска открываем SSMS Локально мы сразу можем подключиться к серверу Сразу же заходим в настройки сервера Разрешаем подключение по SQL и Windows После перезапускаем сервер и снова заходим Сразу создадим пользователя для дальнейшей работы с базой Убираем требование обновлять пароль раз в 3 месяца и ставим способ аутентификации SQL (по логину и паролю). Из-за особенностей шифрования паролей пользователей баз данных в конфигурационных файлах сервера Пиратии, пароль каждого пользователя должен быть длиной ровно 9 символов. После чего пользователь после обновления должен появиться и можно проверить подключение На этом настройка SQL Server пока закончена. Далее для продуктивной работы нам понадобится среда разработки. Вся сборка севера написана на Lua. А значит нам понадобится IDE(Интегрированная среда разработки). Совет автора - VScode. После установки ставим расширение Lua Server и получаем супер-мега помощника, который будет с нами весь дальнейший путь. Чем еще хорош VScode - он позволяет установить еще кучи расширений, которые помогут нам в разработке это и SSH консоль, и SSMS для работы с MSSQL и Git(систему контроля версий) и еще кучу полезных вещей, которые будут нужны при разработке. Принимаем лицензионное соглашение Выбираем куда будет установлено приложение Далее для удобства ставим тут галочки Ожидаем завершения установки и запускаем приложение. Затем переходим к настройке приложения В появившемся окне вводим encod для изменения кодировки по умолчанию. Все файлы lua в кодировке win1251 Выбираем кодировку WIN1251 Приступаем к установке LuaServer Вводим в поиске Еще добавляем заранее git history Мои поздравления, мы завершили подготовку второго приложения. При желании можно в поиске расширений посмотреть расширения для SSH/MSSQL. Для безопасной работы над проектом нам понадобится Git и приложение для взаимодействия с системой контроля версий. Для новичков просьба ознакомиться с этим пособием. Скачиваем базовый git клиент Читаем лицензионное соглашение Выбираем где будет располагаться приложение Добавляем на рабочий стол и убираем GUI из контекстного меню Далее соглашаемся со всем вплоть до окончания установки Далее вводим ssh-keygen.exe и нажимаем Enter много раз В итоге должно получиться вот так Теперь немного информации что сейчас произошло - мы сгенерировали уникальный ssh-ключ для дальнейшей работы с gitlab/github. С этим приложением пока закончили. Мы ведь не про специалисты-хакеры. Ставим приложение, которое будет помогать работать с Git таких несколько, есть платные, есть бесплатные. Совет автора - Sourcetree или GitKraken. В примере разберем Sourcetree: Скачиваем с сайта сетапник Скипаем Далее ничего не прожимаем Ожидаем завершение установки Вписываем данные, как мы будем предоставлять этот сервер для Git В появившемся окне нажимаем Нет После запуска приложения заходим в настройки Меняем настройки SSH клиента Еще можно поменять цвет интерфейса и кодировку, это уже по усмотрению. С этим покончено. Теперь, наконец приготовления закончились, теория прочитана и начинается самое интересное, то для чего мы это делали. Скачиваем сборку https://gitlab.com/pko-base/udio-piratia-server Распаковываем в понравившуюся папку. И получаем следующий результат Открываем SSMS и подключаем базы данных к серверу. Добавить Выбираем файлы БД, желательно положить туда, где сервер будет видеть директорию(в примере лежит на диске C) После чего видим такую картину Далее ранее созданному пользователю нужно дать права на подключение Щелкаем галочки напротив БД и у каждой БД выставляем owner Получится вот так На этом пока заканчивается наша настройка в БД. Переходим к конфигам. Скачиваем приложение из этой темы, оно нам понадобится для шифрования пароля, которым будут пользоваться сервера. В *ini файле вводим пароль от piratia, который мы задавали пользователю БД и после запуска получаем строчку, которую позже нужно будет использовать для конфига. Открываем конфиг AccountServer.cfg и вписываем информацию о пользователе и пароль из шифровальщика. Сохраняем файл. Если ранее вы все делали правильно, то после запуска AccountServer.exe у вас будет вот такая картина Далее делаем тоже самое с GroupServer.cfg, сохраняем файл. После запуска GroupServer.cfg мы должны лицезреть вот такую консоль На пусти у нас остался последний сервер который работает с БД - GameServer. Открываем GameServer.cfg и добавляем по аналогии с предыдущими файлами информацию о подключении к БД. Не забываем сохранять файл после редактирования. Получаем вот такую консоль после запуска GameServer.exe Ну и наконец запускаем GateServer.exe и проверяем, что GroupServer соединился с GateServer. На данный момент у нас работает целиком весь сервер с 1 картой garner. Нам необходимо открыть порт для подключения, а именно 1973 (см. конфиг GateServer раздел ToClient). Для этого заходим в панель управления Поверяем что у нас есть правила во входящих подключениях. Если что редактируем их и вписываем порт 1973. Если вы все делали правильно, то сейчас имея клиент вы сможете подключиться к серверу введя 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), где X - время в секундах, через которое текущий GameServer будет остановлен, после чего нажмите кнопку "Execute" (2). Когда все экземпляры GameServer завершат свою работу, остановите поочередно GroupServer, затем GateServer и после AccountServer с помощью сочетания клавиш CTRL + C в консольном окне. Процесс завершения работы очередного сервера может занять время, то есть приложения закроются не сразу. Подготовка клиента Для подключения к серверу выбираем чистый клиент Пиратии и далее нам понадобятся 2 программы: Ip Changer и Просмотр информации о клиенте, скачать их можно по следующим ссылкам: Ip changer Просмотр информации о клиенте Так же архив клиентов можно посмотреть тут Первым делом настраиваем информацию о сервере в файле ServerSet.bin, именно там хранится информации об адресе и названии сервера. Открываем ip changer и вводим название региона, название сервера и ip адрес сервера, где включен GateServer. В нашем случае - Test, Test и 127.0.0.1 Далее нам нужно проверить подходит ли наш сервер для выбранного клиента или наоборот выбранный клиент для сервера. Открываем GameView, вводим путь до game.exe из папки system в клиенте. Первое что мы видим - параметр запуска клиента, именно он нужен для правильного запуска клиента. Далее версия и порт, они нам и нужны. Они должны совпадать с той информацией, что указана в конфигурации у GateServer.exe в *.cfg файле в разделах [Main] и [ToClient], если данные различаются мы можем перезаписать с помощью этой программы в клиенте или поменять на сервере(не забывайте перезапускать GateServer если меняете файлы конфигурации. После всех преобразований создаем *bat файл в корне клиента с следующим содержимым start system/game.exe startgame Краткая инструкция по созданию файла Создать BAT файл очень просто. Достаточно открыть блокнот и сохранить пустой лист с расширением .bat, выбрав опцию Сохранить как... и написав в поле Имя файла что-нибудь оканчивающееся на .bat, например test.bat. Тип файла указываете как на скриншоте ниже - Все файлы. Сохраняете и получаете BAT файл. Редактировать BAT файл можно в блокноте или любом другом текстовом редакторе, ориентированным на работу с кодом. Создание аккаунта Мы готовы к подключению, но у нас еще нет аккаунта на сервере. Для этого нам пригодится следующая программа Create account. Скачиваем, закидываем на сервер. В *.cfg вводим информацию для подключения к базе данных или можно настроить приложение после запуска нажав на шестеренку. После заполнения вводим логин, пароль и выбираем статус игрок\hd\gm После чего пробуем подключиться к своему серверу с настроенного клиента. Если на всех этапах вы все делали правильно и автор ничего не забыл - вы становитесь обладателем своего собственного сервера Пиратии с настроенным для дальнейшей работы серверов и клиентом. На этом все. Мои поздравления! P.S. О любых возникших проблемах пишите в этом топике - будем разбираться. Некоторые материалы были взяты с pkodev.net Quote Link to comment Share on other sites More sharing options...
pavzyr Posted November 13, 2023 Share Posted November 13, 2023 Доброго времени суток! Очень хотел запустить свой сервер для ностальгии, при том уже делал это лет 5 назад, но на msql2000 Все делаю по гайду, но при попытке запуска аккаунт сервера ловлю ошибку Main database handler create failed, AccountServer hang! Понимаю, что она просто указывает на невозможность подключиться к бд, но может есть какие то рекомендации куда смотреть? Пасс точно из 9 символов, пассген пробовал и старой и новой версии (которая была). БД тоже подключал и старые и новые Прикладываю скрины настроек, все проверил несколько раз, даже бд переустанавливал... Quote Link to comment Share on other sites More sharing options...
Go-piratia Posted November 13, 2023 Author Share Posted November 13, 2023 @pavzyr это точно сделано? Разрешаем подключение по SQL и Windows Quote Link to comment Share on other sites More sharing options...
pavzyr Posted November 13, 2023 Share Posted November 13, 2023 @Go-piratia точно, перепроверял несколько раз. я максимально все сделал как в гайде 2 раза подряд с нуля Quote Link to comment Share on other sites More sharing options...
Go-piratia Posted November 13, 2023 Author Share Posted November 13, 2023 @pavzyr проверьте, что вот тут все включено По логину и паролю подключение к серверу точно проходить из SSMS? Quote Link to comment Share on other sites More sharing options...
pavzyr Posted November 14, 2023 Share Posted November 14, 2023 Дело было именно в протоколах, все были выключены. Предлагаю добавить проверку протоколов в гайд Quote Link to comment Share on other sites More sharing options...
Go-piratia Posted November 14, 2023 Author Share Posted November 14, 2023 2 часа назад, pavzyr сказал: Дело было именно в протоколах, все были выключены. Предлагаю добавить проверку протоколов в гайд Конечно, добавим. Quote Link to comment Share on other sites More sharing options...
Иван Posted March 24 Share Posted March 24 Помогите, не аттачатся базы Quote Link to comment Share on other sites More sharing options...
Иван Posted March 24 Share Posted March 24 Аттач прошел, когда сменил на авторизацию входа в sql через виндовс Quote Link to comment Share on other sites More sharing options...
Kolobok Posted May 10 Share Posted May 10 GateServer выдает ошибку, когда ставлю свой IP "╬─╝■:\Item\Source\Vc2003\Project_Kop_138\Server\GateServer\src\ToClient.cpp ╨╨:21 ├ш╩Ў:ToClient listen failed" Quote Link to comment Share on other sites More sharing options...
Go-piratia Posted May 11 Author Share Posted May 11 В 10.05.2024 в 12:38, Kolobok сказал: GateServer выдает ошибку, когда ставлю свой IP "╬─╝■:\Item\Source\Vc2003\Project_Kop_138\Server\GateServer\src\ToClient.cpp ╨╨:21 ├ш╩Ў:ToClient listen failed" Привет! Возможные причины: Уже запущен сервис который слушает требуемый порт. По стандарту 1973. Возможно порт закрыт. Quote Link to comment Share on other sites More sharing options...
IOISATANAIOI Posted July 24 Share Posted July 24 Добрый день. Сделал все по инструкции, почему при выборе локации (после создания персонажа) выдает след... illegal birth place Quote Link to comment Share on other sites More sharing options...
IOISATANAIOI Posted July 24 Share Posted July 24 20 минут назад, IOISATANAIOI сказал: Добрый день. Сделал все по инструкции, почему при выборе локации (после создания персонажа) выдает след... illegal birth place Исправил, заменив в C:\Games\Пиратия Online\scripts\table\StringSet строчки городов на англ. Теперь после создания перса, при нажатии "Вовйти" выдает следующее target map cannot be reached Quote Link to comment Share on other sites More sharing options...
IOISATANAIOI Posted July 24 Share Posted July 24 40 минут назад, IOISATANAIOI сказал: Исправил, заменив в C:\Games\Пиратия Online\scripts\table\StringSet строчки городов на англ. Теперь после создания перса, при нажатии "Вовйти" выдает следующее target map cannot be reached В целом тоже разобрался с картами) Ну почемуто не работает аскарон (Garner) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.