Ну здравствуй, обыватель интернета. Я пишу этот гайд в попытке помочь людям при настройке их Linux серверов (как тот же VPS, к примеру), которые не совсем «на вы» с миром игрового хостинга. Я постараюсь описать данный туториал как можно более понятно и направить вас в нужном направлении касательно вопроса как создать сервер в Project Zomboid Steam версии (именно ее, а не Hamachi какой-нибудь).
Содержание
Создание своего сервера в Project Zomboid используя Steam
Покупка сервера
Первое что вам необходимо сделать если вы не имеете своего VPS, правильно, купить его. Технически, у вас есть два выбора: VPS или выделенный сервер. Но… Ем… Вы не будете покупать свой сервер. Поверьте мне. Вплоть до того момента, пока ваш сервер не будет ультрапопулярный и мощности текущего сервера уже не будут позволять держать достаточное количество людей (а еще вы не введете донат).
Существует достаточно много мест, где вы можете приобрести VPS, но самое главное в этом понять, разрешают ли вообще хостить игровые сервера в месте куда вы пришли. Для этого просто читаем Правила использования и предоставления услуг, и при помощи поиска в браузере (Ctrl — F) ищем интересующую нас комбинацию слов (игровой, игры, game, game server и т.п.). Сразу учтите, что чем дешевле вы нашли сервер, тем выше вероятность, что он не принимает для хостинга игры. Все достаточно просто: чем ниже цена, тем меньше ресурсов предоставляет сервер, соответственно тут вы не сможете запустить тот минимум, что вам необходим.
Касательно настроек системы, тут идет все в зависимости от того, какой грандиозности проект вы хотите запускать. Обратите особое внимание на предоставляемый трафик. Другим ключевым моментом может стать количество оперативной памяти (RAM), ввиду того, что сервер работает на Java, а она в свою очередь весьма требовательна к ресурсам. Количество оперативки будет определять сколько слотов мы сможем захостить. К примеру 2 гб смогут держать порядка 10-20 человек перед тем как упадет. Так же вас должен интересовать процессор, но как правило, большинство из них справляются со своими задачами. Ну совсем уж древность вроде пентиума выбирать не стоит.
При выборе OS руководствуйтесь своими знаниями. Но данный гайд написан для 64 битной Debian 7, соответственно с минимальными изменениями вы сможете его адаптировать под ту же Ubuntu.
Базовая настройка
Перед тем как создать сервер нам с вами нужно будет провести начальные приготовления. Сразу после покупки системы для Project Zomboid, с большой долей вероятности ваш хостинг провайдер предоставит вам доступ через ssh и логин вида root с соответствующим паролем. Через данный протокол мы и будем все устанавливать, включая Steam. Для подсоединения к серверу по SSH нам потребуется соответствующая программа, под названием PuTTY. Для передачи и редактирования файлов на сервере вы можете использовать WinSCP.
После скачивания и установки PuTTY открываем ее. В поле “Host Name (or IP address)” вводим данный провайдером ИП адрес сервера. Порт оставьте такой как есть. Для того чтобы не вводить эти данные каждый раз, нажмите на кнопку «Save» ниже. Теперь при следующем заходе в программу вы можете выбрать из списка ваш сервер и просто подключиться к нему. Нажмите на кнопку «Open».
При первом подсоединении вас попросят сверить ключи. Просто нажмите Да. После присоединения вы увидите строчку «login as:». Вводим ваш логин «root» и нажимаем Enter. Далее у вас запросит пароль. Просто скопируйте присланный вам хостером пароль, нажмите ОДИН РАЗ возле поля пароль правой кнопкой мыши. Ваш пароль скопируется, но вы не увидите изменений. Это нормально. Нажмите Enter.
Если все сделано правильно, вы попадете в систему. Вы можете провести первую ее настройку, обновить пакеты. Все что вашей душе угодно. Можете погуглить «Первоначальная настройка VPS» и тому подобное. Но эти шаги не обязательны.
Итак, для начала мы установим Java и screen. Первый нужен потому что сервер не работает без него, второй для того чтобы он работал в фоновом режиме.
apt-get install default-jdk
apt-get install screen
Если у вас 64 битная версия системы, сразу установим 32 битные библиотеки, которые потребуются для запуска SteamCMD:
apt-get install lib32gcc1
Так же, в 80% случаев нам потребуется библиотека glibc более новой версии, чем представлена в стандартных репозиториях. Мы добавим новый репозиторий в соответствующий файл, обновим пакеты, и установим нужные, после же просто удалим экспериментальный репозиторий.
nano /etc/apt/sources.list
Добавляем в конец строчку:
deb http://ftp.debian.org/debian sid main
Через CTRL — X выходим сохраняя изменения. Обновляем список репозиториев и устанавливаем нужные для Project Zomboid пакеты:
apt-get update
apt-get -y -t sid install libc6 libc6-dev libc6-dbg linux-libc-dev gcc
Соглашаемся на установку. После с помощью той же nano удаляем добавленную ранее строку в файле.
Пользователь, SteamCMD и прочие прелести
Теперь мы приступим к скачиванию SteamCMD для того чтобы слить последнюю версию Project Zomboid сервера. Запуск этого софта рекомендуется отдельным пользователем, по-этому мы добавим его:
adduser projectzomboid
Пользователь назван projectzomboid, придумываем ему пароль, остальную информацию можно оставить пустой. Соглашаемся со всем. Переходим с пользователя root к пользователю projectzomboid:
su projectzomboid
Переходим в домашний каталог нашего пользователя и создаем отдельную директорию для софта, чтобы все было структурировано.
cd /home/projectzomboid
mkdir steamcmd
cd steamcmd
Начинаем скачивание архива SteamCMD и его дальнейшую распаковку:
wget http://media.steampowered.com/installer/steamcmd_linux.tar.gz
tar -xvzf steamcmd_linux.tar.gz
После всех проведенных действий мы можем успешно начать запуск скачанной программы для создания сервера project zomboid. Запускаем стим следующим:
./steam.sh
Дожидаемся процесса первого обновления. Теперь заходим под нашим логином и паролем, где куплена игра:
login user pass
Возможно потребуется введение кода пришедшего вам на почту от Steam Guard. Выбираем директорию для установки сервера и выполняем скачивание project zomboid :
force_install_dir /home/projectzomboid/server
app_update 108600 validate
exit
Все вышеперечисленное в дальнейшем мы можем воспроизводить и обновлять одной командой:
./steamcmd.sh +login user pass +force_install_dir /home/projectzomboid/server +app_update 108600 validate +exit
Или же если вы хотите запустить бета версию сервера Project Zomdoid добавьте к директиве следующие параметры:
./steamcmd.sh +login user pass +force_install_dir /home/projectzomboid/server +app_update 108600 -beta iwillbackupmysave -betapassword iaccepttheconsequences validate +exit
Первый запуск
К сожалению, даже для первого запуска нам необходимо провести первые приготовления. Сначала мы должны создать папку Zomboid и внутри нее db. Переходим в наш домашний каталог.
cd /home/projectzomboid
mkdir Zomboid
cd Zomboid
mkdir db
Теперь в эту директорию мы должны залить следующий файл при помощи того же WinSCP или Filezilla например.
Теперь, так как мы ранее говорили о том, что сервера на джаве потребляют достаточное количество оперативной памяти, мы должны ограничить ее использование в конфигурации. Количество, выделяемой памяти зависит от того, сколько ее изначально доступно на вашем хостинге. Если у вас он используется исключительно для сервера Project Zomdoid, тогда можно выделить от 50% от номинальной, но не больше 80%. Для редактирования мы должны найти файл projectzomboid-dedi-server.sh, для этого переходим в папку сервера:
cd /home/projectzomboid/Steam/SteamApps/common/ProjectZomboid
nano projectzomboid-dedi-server.sh
Ищем две следующих строчки:
-Xms1024m \
-Xmx1024m \
И меняем их на значения, которые мы определили для своей машины.
И наконец выполняем первый запуск:
./projectzomboid-dedi-server.sh
Это стартует сервер. При первом запуске нас могут спросить о вводе вашего админ пароля. Выберите тот, который будете использовать и запомните.
Но не стоит праздновать. Закройте сервер командой Ctrl — C. Заходим через WinSCP или Filezilla в директорию Zomboid, которую мы создали, теперь там должно быть гораздо больше файлов чем раньше. Редактируем файл serverOptions.ini. Он будет иметь следующее содержание:
- PVP=true // Разрешает или запрещает игрокам повреждать/убивать друг друга
- PauseEmpty=true // Останавливает сервер, если на нем нет игроков
- GlobalChat=true // Разрешает или запрещает игрокам говорить друг с другом используя /all команду.
- Open=true // Работает ли сервер через whitelisting.
Редактируем в зависимости от наших потребностей. Более подробная таблица настроек будет далее. Теперь переходим к запуску нашего сервера в фоновом режиме.
screen
cd /home/projectzomboid/Steam/SteamApps/common/ProjectZomboid
./projectzomboid-dedi-server.sh
Ожидаем надписи "*** SERVER STARTED ****".
Нажимаем Ctrl-a и d
Теперь окно PuTTY при желании можно закрывать и играть на нашем сервере. Для того чтобы вернуться в наш сервер используем команду screen -dr, а для того чтобы вовсе выключить его Ctrl — C.
Команды для серверной конфигурации Project Zomboid
После редактирования serverOptions.ini сохраняем изменения и перезапускаем сервер. Вы также можете поменять эти настройки прямо в игре (когда зашли под амином) используя переменную /changeoption optionName=*значение* и после введя /reloadoptions для перезагрузки параметров.
Название | По-умолчанию | Описание |
---|---|---|
PVP | true | Включает PVP. |
PauseEmpty | false | Если значение true сервер не производит никаких действий при отсутствии игроков (фарминг не происходит и т.п.) |
GlobalChat | true | Включение глобального чата (/all команда в чате). |
Open | true | Открыт для всех (нет whitelist) |
ServerWelcomeMessage | <RGB:1,0,0> Добро пожаловать на сервер Project Zomboid! Для локального чата нажмите \»t\», для глобального \»y\» или добавьте \»/all\» перед начало сообщения <LINE> Введите /help для получения списка команд сервера <LINE> <RGB:1,1,1> | Приветственное сообщение в глобальном чате, при подсоединении игрока. |
LogLocalChat | false | Сохранять ли локальный чат в окне (со стороны клиента). |
AutoCreateUserInWhiteList | false | Если ваш сервер открыт, эта опция позволяет сохранять пользователя в вашем whitelist с паролем, которым он будет защищен. |
DisplayUserName | true | False = вы не увидите имена других игроков над их головами + их имена не будут указываться в локальном чате. |
SpawnPoint | 0,0,0 | Используйте эту переменную для указания произвольной точки возрождения взамен рандомно сгенерированной. |
SafetySystem | true | Позволяет пользователю изменить настройки безопасности (если значение false, а PVP=true, тогда режим безопасности будет постоянно отключен). |
ShowSafety | true | Позволяет другим игрокам видеть находиться ли игрок в режиме безопасности при помощи иконки черепа. |
SafetyToggleTimer | 100 | Если игрок отключит режим безопасности потребуется некоторое время перед тем как он включит его вновь. Тут определяем это время. |
SafetyCooldownTimer | 120 | Каждый раз когда вы ударяете кого-то, добавляет указанное количество времени к вашему таймеру перед тем как вы сможете опять включить режим безоспасности. |
SpawnItems | none | Добавляет вещи, которые выдаются игроку при спауне, например: Base.Axe,Base.WaterBottleFull… (каждая вещь должна быть отделена знаком «,») |
DefaultPort | 16261 | Стандартный порт, который использует сервер |
Mods | BedfordFalls;Etc | Используйте, для того чтобы добавить моды на свой сервер, такие как карты или другие вещи. Игрок ДОЛЖЕН так же иметь эти моды установленные у себя на клиенте. |
DoLuaChecksum | true | Проверять checksum lua скриптов. Игроки с модифицированными Lua файлами, отличимыми от файлов на сервере не смогут присоединиться к серверу. |
Public | false | При значении true отправляет данные сервера к pz.com для того, чтобы он отображался в публичном сервер листе. |
PublicName | GmHb.ru | Название сервера. Обязательно. |
PublicDescription | GameHub Project Zomboid Server | Описание сервера. Опционально. |
MaxPlayers | 64 | Максимальное количество слотов на сервере (не касается админа). |
PingFrequency | 10 | Время, через которое каждый клиент пингуется, в секундах. |
PingLimit | 400 | Пинг лимит перед тем, как игрок будет кикнут. Производится 5 попыток к пингу, с указанным интервалом в миллисекундах. 0 для того чтобы отключить. |
HoursForLootRespawn | 0 | Включить респаун вещей, если > 0, тогда зона должны быть невидима на протяжении X (этот параметр) часов, перед тем как вещи зареспаунятся на ней. |
MaxItemsForLootRespawn | 4 | Для респауна вещей, если контейнер имеет больше вещей чем указанное число, он не будет респаунить их (используйте это для лимитирования респауна в укрытии, например). |
HoursForZombiesRespawn | 0 | Включить респаун зомби, если > 0, тогда зона должна быть невидима не протяжении X (этот параметр) часов, пока зомби не зареспаунятся на ней, только на дороге. |
IncreaseZombieRespawnBy | 0 | Количество дополнительных зомби, которые вы хотите чтобы спаунились если HoursForZombiesRespawn > 0. Например, область по умолчанию спаунить 10 зомби. У вас указано IncreaseZombieRespawnBy=20 -> Теперь эта зона спаунит 30 зомби (10 своих и 20 исходя из настройки). |
PlayerSafehouse | false | |
AdminSafehouse | false | |
SafehouseAllowTrepass | true | |
SafehouseAllowFire | true | |
SafehouseAllowLoot | true | |
SafehouseAllowRespawn | true | |
SafehouseDaySurvivedToClaim | 0 | |
SafeHouseRemovalTime | 144 | |
AllowDestructionBySledgehammer | true |
Команды доступные для админа
Название | Описание |
---|---|
adduser | Добавляет пользователя, в случае, если сервер использует вайтлист, пример: /adduser username=pwd |
save | Сохранить текущий мир |
quit | Выключение сервера (с сохранением его) |
chopper | Запустить вертолеты (шум) |
gunshot | Выстрел (шум) |
startrain | Включить дождь на сервере |
stoptrain | Выключить дождь на сервере |
grantadmin | Дать игроку права админа, пример: /grantadmin username |
removeadmin | Снять с игрока права админа, пример: /removeadmin “username” |
reloadoptions | Перезагрузить конфигурацию сервера (ServerOptions.ini) и отправить ее клиентам |
banuser | Забанить игрока, причина не обязательна, пример: /banuser username=причина ip=true/false, например /banuser rj=pvp ip=true |
unbanuser | Анбан игрока, пример: /unbanuser username |
kickuser | Кик игрока, причина не обязательна. Пример: /kickuser username=причина |
addalltowhitelist | Добавить всех текущих игроков, которые присоединились с паролем в вайтлист, так, что их аккаунты защищены. |
addusertowhitelist | Добавить определенного игрока, который присоединен с паролем в вайтлист, пример: /addusertowhitelist username |
removeuserfromwhitelist | Убрать игрока из вайтлиста, пример: /removeuserfromwhitelist username |
showoptions | Отобразить список всех настроек сервера с их значениями. |
changeoption | Используйте эту переменную, чтобы изменить настройку сервера, пример: /changeOption optionName=newValue |
godmod | Сделать игрока неуязвимым, пример: /godmod username=true/false, например /godmod rj=true |
invisible | Сделать игрока невидимым, пример: /invisible username=true/false, например /invisible rj=true |
additem | Дать игроку вещь, имя игрока не обязательно, если вы не укажите его, вещь будет дана вам, пример: /additem username module.item, например : /additem rj Base.Axe. |
createhorde | Спаунит орду рядом с вами/игроком, пример: /create horde count, например /createhorde 150 |
changepwd | Используйте эту команду чтобы изменить ваш пароль, например: /changepwd старыйпароль новыйпароль. |
Допольнительные параметры запуска сревера
Вы можете отредактировать файл projectzomboid-dedi-server.sh и добавить в нем соответствующие параметры.
Параметр | Описание |
---|---|
-adminpassword | Опция для того, чтобы обойти ранее определенный пароль админа. Пример: -adminpassword Вашпароль |
-servername | Определяет имя сервера. Например: -servername GameHub.ru |
-ip <ip> | Опция для определения ip адреса (если у вас несколько сетевых карт или внешних ип). Например: -ip 127.0.0.1 |
-port <port> | Опция, которая меняет установленный в настройках дефолтный порт. Например: -port 16261 |
-steamvac <true/false> | Опция для включения/выключения VAC на Steam серверах. Можно использовать и в файле конфигурации переменной SteamVAC=true/false. |
-steamport1 <port> -steamport2 <port> | Steam сервера требуют два дополнительных порта для полноценной работы (предположительно, они оба UDP, но возможно так же потребуются TCP). Так же есть параметр для конфигурационного файла: SteamPort1= и SteamPort2=. |
FAQ
Q: “У меня появляеться ошибка missing file/folder при загрузке сервера.”
A: Обычно это значит, что папка “Zomboid” у вас расположена не в том месте. Так же не забывайте создать папку “db” и поместить в нее “world.db” файл.
Q: “Появляются какие-то сообщения об ошибке связанной с RakNet. Что это?”
A: Скорее всего это связано с неправильной установкой библиотек glibc, тех что выше из экспереминтального репозитория.
Q: «Если вышло обновление, как его установить?»
A: Выключите сервер (Ctrl-C), и запустите заново команду установки.
Вот и все, надеюсь я помог вам в вопросе как создать сервер в Project Zomboid Steam. Если у вас появяться какие-либо проблемы или предложения по улучшению статьи, буду рад услышать их в коментариях. Stay tuned.