RPCN отлично подходит для игр, в которых соединение происходит напрямую между игроками, например, файтинги или коопы. Но также есть игры, которые требуют ещё и выделенных серверов. Ознакомтесь сначала со списком совместимости.
⚠️ Пути установки не меняем, это облегчит жизнь в дальнейшем.
- 1.1 Git SCM Ссылка для скачивания
Все параметры установки оставляем по умолчанию.
- 1.2 Visual Studio 2022
(Сама программа не нужна, нужны её библиотеки).
Нажимаем
Win+R, затем пишем cmd и жмёмCtrl + Shift + Enter(чтобы терминал запустился от имени администратора). В терминале пишем команду:
winget install Microsoft.VisualStudio.2022.Community --override "--add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --passive"После этого надо согласиться с условиями пользователя, для этого пишем Y жмём Enter. Далее скачивание и установка произойдут автоматически.
-
1.3 Rust Ссылка для скачивания
После запуска установщика, будет предложено три параметра. Нам нужен первый, так что просто жмёмEnter.
-
1.4 SQLite Ссылка для скачивания. В названии нужного архива должно быть sqlite-tools-win-x64.
Установка не требуется, нужно распаковать файлы из архива в удобную папку, но лучше всего распаковать в C:\SQLite.
-
1.5 OpenSSL Ссылка для скачивания. Нужна полная версия.
Здесь выбираем «The OpenSSL binaries (/bin) directory».
- 1.6 Strawberry Perl Ссылка для скачивания Просто устанавливаем, ничего не меняя.
- 1.7 CMake Ссылка для скачивания. Выбираем Windows x64 Installer.
Просто устанавливаем, ничего не меняя.
- 1.8 NASM Ссылка для скачивания. Запускаем установщик от имени администратора. Выбираем «Install for everyone using this computer».
Затем оставляем все пункты отмеченными и устанавливаем.
- 1.9 Protoc Нажимаем
Win+R, затем пишем cmd и жмёмCtrl + Shift + Enter(чтобы терминал запустился от имени администратора). В терминале пишем команду:Далее просто устанавливаем.winget install --id Google.Protobuf -e --source winget
- 1.10 После установки всех необходимых программ на всякий случай перезапускаем ПК.
Теперь нужно проверить добавились ли пути к папкам с установленными программами в переменных системы (это нужно для того, чтобы команды в CMD могли работать с этими программами).
- 2.1 Жмём
Win+R, пишем sysdm.cpl и жмём «ОК».
- 2.2 Открываем вкладку Дополнительно и нажимаем на Переменные среды.
- 2.3 В открывшемся окне в верхней таблице Переменные пользователя нажимаем на переменную Path, потом на «Изменить». Там должна быть строчка:
C:\Users\%имя пользователя%\AppData\Local\Microsoft\WinGet\Links
-
2.4 В нижней таблице Системные переменные нажимаем на переменную Path, затем на кнопку «Изменить».
Убедитесь, что в списке присутствуют следующие строки:
C:\Program Files\OpenSSL-Win64\bin C:\Users\%имя пользователя%\.cargo\bin C:\Program Files\Git\cmd C:\Strawberry\c\bin C:\Strawberry\perl\site\bin C:\Strawberry\perl\bin C:\SQLite C:\Program Files\CMake\bin C:\Program Files\NASM
Если чего-то из этого нет, то нажимаем справа «Создать» и добавляем отсутствующие пути. После добавления всего необходимого нажимаем «ОК».
- 2.5 Теперь нужно добавить переменную с папкой OpenSSL. Для этого в той же нижней таблице нажимаем «Создать». Имя переменной:
OPENSSL_DIRЗначение переменной:
C:\Program Files\OpenSSL-Win64
После этого везде жмём «ОК».
- 2.6 Теперь надо проверить все ли пути указаны. Для этого открываем CMD (нажимаем
Win+R, пишем cmd и жмём «ОК»).
В терминале поочерёдно вбиваем эти команды:
git -vrustup --versioncargo --versionopenssl versionecho %OPENSSL_DIR%sqlite3 --versionperl -vcmake --versionnasm -vprotoc --version
Если всё получилось, то в командной строке должные отображаться версии установленных программ, как на скриншоте выше (в случае с OPENSSL_DIR должен указываться путь к папке с OpenSSL).
- 3.1 Создаём папку (пусть будет называться «RPCN_Custom»), где будет находится сервер, в любом удобном месте.
⚠️ Никаких кириллицы и пробелов в названии папки и пути быть не должно.
- 3.2 Заходим в созданную папку, в адресной строке удаляем путь к папке и пишем cmd (таким образом терминал будет работать именно с этой папкой). В терминале вбиваем команду:
git clone https://github.com/RipleyTom/rpcn.gitЭто нужно, чтобы скачался репозиторий с github. В папке «RPCN_Custom» появилась новая папка «rpcn», в которой находится скачанный репозиторий.
- 3.3 Открываем cmd в папке «rpcn», в терминале вбиваем команду:
cargo build --releaseДалее начнётся компиляция. Это процесс не быстрый, так что не пугаемся если покажется, что компиляция зависла, главное, чтобы в логе не было слов warning и error.
Если в конце компиляции появилась фраза Finished 'release' profile [optimized] target(s) in %m %s, значит всё прошло успешно.
- 4.1 Запускаем cmd в папке «rpcn» и вбиваем:
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3650 -nodes -subj "/CN=localhost"В терминале будет куча звёздочек, плюсиков и точек, так и задумано.
Терминал пока не закрываем.
- 4.2 Вбиваем в терминале:
openssl ecparam -name prime256v1 -genkey -noout -out ticket_private.pemЕсли после ввода команды в терминале ничего не появилось, значит, что всё получилось.
Оставляем терминал открытым.
- 4.3 Вбиваем в терминале:
openssl ec -in ticket_private.pem -pubout -out ticket_public.pemПосле этого должно появится сообщение writing EC key или ничего не появиться, что означает, что всё прошло успешно.
В папке «rpcn» должные появиться следующие файлы: cert.pem, key.pem, ticket_public.pem, ticket_private.pem.
В папке «rpcn» находим файл rpcn.cfg и открываем его. Удаляем весь текст там и вставляем этот:
CreateMissing=true
Verbosity=Info
Host=0.0.0.0
Port=31313
HostIPv6=::
EmailValidated=false
EmailHost=
EmailLogin=
EmailPassword=
SignTickets=true
SignTicketsDigest=SHA224
StatServer=false
StatServerHost=0.0.0.0
StatServerPort=31314
StatServerCacheLife=1
AdminsList=
MaxConnections=500
[database]
provider = "sqlite"
connection_string = "rpcn.db"
[tls]
certificate_path = "cert.pem"
key_path = "key.pem"
ticket_private_key_path = "ticket_private.pem"
ticket_public_key_path = "ticket_public.pem"Сохраняем файл.
⚠️ Файл конфигурации не переименовываем и не перемещаем в другую папку, иначе сервер его не найдёт.
Чтобы каждый раз не запускать сервер через терминал, нужно создать bat-файл. В папке «rpcn» создаём текстовый файл и вставляем туда это:
@echo off
title RPCN Private Server
.\target\release\rpcn.exe
pauseПосле этого надо поменять расширения файла с .txt на .bat . Теперь сервер можно запускать двойным кликом по этому файлу, также можно создать ярлык этого файла для рабочего стола.
Запускаем сервер.
⚠️ При первом запуске выскочит окно оповещения безопасности, отмечаем и частные, и общественные сети.
В терминале должна отобразиться следующая информация:
Если так и есть, то сервер работает.
Если до этого был другой аккаунт на другом сервере, то он не сработает, для каждого сервера нужен свой аккаунт.
- 8.1 Запускаем сервер, потом эмулятор. В верхней панели нажимаем на иконку RPCN.
- 8.2 Далее жмём Account.
- 8.3 Дальше нажимаем Add.
- 8.4 В Description пишем название сервера (что угодно). А в Host пишем:
127.0.0.1:31313
⚠️ Хост пишет именно эти IP и порт (это локальная петля). И так как у хоста и эмулятор, и сервер находятся на одном компьютере, локальная петля подходит лучше, потому что эмулятор будет подключаться напрямую к серверу.
В ином случае, если указать IP сети хоста, то сигнал будет проходить сначала через роутер и сетевую карту, что может увеличить его задержку.
- 8.5 Далее нажимаем Create Account. В строке Username придумываем имя пользователя.
- 8.6 Дальше придумываем пароль.
- 8.7 Потом эмулятор потребует почту для отправки токена туда, но в конфигурации сервера мы отключили подтверждение по почте, так что можно вбить что-нибудь похожее на почту жмём «ОК».
- 8.8 Затем эмулятор уточнит правильность введённых данных, нажимем «Yes».
- 8.9 Далее эмулятор спросит токен, просто оставляем строчку пустой и жмём «ОК».
В терминале сервера должно появится сообщение:
←[32m INFO←[0m New client from 127.0.0.1:2238
←[32m INFO←[0m ←[1m←[0m←[2m:←[0m Parsing command Some(Create)
←[32m INFO←[0m ←[1m←[0m←[2m:←[0m Successfully created account Test
←[32m INFO←[0m ←[1m←[0m←[2m:←[0m Failed with NoError
←[32m INFO←[0m Disconnecting client()
Это означает, что аккаунт успешно создан.
- 8.10 На всякий случай делаем тест. Нажимаем на Test Account. Если в эмуляторе выскочило сообщение Your account is valid, а в терминале сервера:
←[32m INFO←[0m ←[1m←[0m←[2m:←[0m Parsing command Some(Login)
←[32m INFO←[0m ←[1m←[0m←[2m:←[0m Authentified as Test
←[32m INFO←[0m ←[1m←[0m←[2m:←[0m Succeeded with NoError,
значит всё сработало как надо, и аккаунт подключается к серверу.
- 8.11 Теперь в настройках игры во вкладке Network выставлем как на скриншоте ниже.
При смене сервера эти настройки менять не требуется.
Далее надо проверить всё ли работает. Для этого заходим в игру, выбираем онлайн режим. Если в онлайне можно создать лобби, зайти в ранговый матч (в случае с файтингами), то это значит, что сервер работает.
Других игроков, естественно, пока не будет, так как только мы одни подключены к серверу, но игра должна позволять запускать онлайн-режимы, а не выкидывать в главное меню.
Чтобы к нам могли подключаться клиенты (люди с которыми собираемся играть), нужно создать сеть в Radmin VPN.
Эта программа создаст виртуальную локальную сеть между компьютерами и сгенерирует статичный IP, что избавит от настроек сети клиентов.
- 10.1 Качаем Radmin VPN, запускаем программу и жмём на красный круг.
Первое подключение может быть долгим
При удачном подключении круг станет голубым, рядом появится сгенерированный IP (он-то и нужен будет клиентам).
- 10.2 Сверху нажимаем на Сеть → Создать сеть. Придумываем имя сети и пароль.
Чтобы к нам мог подключится клиент делаем следующее:
- 11.1 Запускаем сначала Radmin VPN, затем запускаем сервер и сообщаем клиенту имя и пароль созданной сети в Radmin.
- 11.2 Теперь клиент должен создать аккаунт в эмуляторе так же и мы до этого делали, но с важным нюансом. В строке Host при добавлении сервера, указываем наш IP, что сгенерировал Radmin. Затем ему надо создать аккаунт точно так же, как и нам, хосту. При удачном создании и тесте выскочит то же сообщение Your account is valid, а в терминале сервера появится информация о создании нового аккаунта.
- 11.3 Далее клиенту надо в настройках игры во вкладке «Network» выставить те же настройки, что и у хоста.
Поздравляю, теперь можно наслаждаться игрой на своём сервере.
⚠️ Версии игры и эмулятора должны полностью совпадать у всех, кто подключился к серверу
Если при подключении к серверу эмулятор выдаст ошибку
Error Connecting to RPCN
Failed to Connect to RPCN server
RPCN Misc Error: Protocol Version Error (outdated RPCS3?)
это может означать, что, скорее всего, вышла новая версия сервера, и пора обновляться. Для этого заходим в папку с сервером, запускаем оттуда cmd и вбиваем поочерёдно следующие команды:
git stashgit pullgit stash popcargo cleancargo build --release
⚠️ Может быть такое, что команда git pull не скачает последнюю версию, и в итоге произойдёт компиляция текущей версии. В этом случае вместо git pull нужно вбить git checkout %ветка последней версии%. Чтобы узнать, какая ветка нам нужна, необходимо перейти сюда, найти последнюю версию, слева от неё будет дата обновления, ниже под версией и будет наша ветка (набор из семи символов).![]()
Нужно скопировать ветку и вставить после git checkout после пробела (например, с версией 1.8.1 это будет git checkout d3d47b5). Предующие и следующие команды в терминале точно такие же.
