Как из компьютера сделать хостинг для игры

Обновлено: 07.07.2024

Привет дорогие кубхаковцы, это моя первая статья которую я не спиздил))
Сегодня мы будем учиться делать свой игровой хостинг, на котором можно будет размещать сервера
MINECRAFT, SAMP, CRMP, MTA и другие
Начнем-же.

Часть I
Для начала нам нужен VDS ибо на нем будет стоять наша панелька. Желательно брать 2 ВДСа - для панельки и для локаций.
Я рекомендую брать VDS-ки на этом сайте:

(не реклама) но я брал на таймвебе (не реклама) ибо на мск денег не хватило))
Ладно, ближе к делу: покупаем вдску и ставим там операционную систему Debian 8 ( обязательно ) и ждем пока она установится, пока она устанавливается мы качаем нашу панель. Я возьму панель HostinPL 5.4 PRO
DL:

Заходим в FTP нашей VDS-ки и сразу в первоначальную папку закидываем наш install.sh потом тыкаем правой кнопкой мыши и установить права(или как то по-другому, не помню) даем ему права 777. Далее заходим в консоль VDS-ки и выполняем команду sh install.sh и дожидаемся конца установки.

На этом первая часть окончена, если увижу актив то продолжим серию создания хостинга :D

SashaOmega

Резидент

SashaOmega

Резидент

SashaOmega

Резидент

Привет дорогие кубхаковцы, это моя первая статья которую я не спиздил))
Сегодня мы будем учиться делать свой игровой хостинг, на котором можно будет размещать сервера
MINECRAFT, SAMP, CRMP, MTA и другие
Начнем-же.

Часть I
Для начала нам нужен VDS ибо на нем будет стоять наша панелька. Желательно брать 2 ВДСа - для панельки и для локаций.
Я рекомендую брать VDS-ки на этом сайте:

(не реклама) но я брал на таймвебе (не реклама) ибо на мск денег не хватило))
Ладно, ближе к делу: покупаем вдску и ставим там операционную систему Debian 8 ( обязательно ) и ждем пока она установится, пока она устанавливается мы качаем нашу панель. Я возьму панель HostinPL 5.4 PRO
DL:
*** Скрытый текст не может быть процитирован. ***
Заходим в FTP нашей VDS-ки и сразу в первоначальную папку закидываем наш install.sh потом тыкаем правой кнопкой мыши и установить права(или как то по-другому, не помню) даем ему права 777. Далее заходим в консоль VDS-ки и выполняем команду sh install.sh и дожидаемся конца установки.

На этом первая часть окончена, если увижу актив то продолжим серию создания хостинга :D

l1von

l1von

l1von

Привет дорогие кубхаковцы, это моя первая статья которую я не спиздил))
Сегодня мы будем учиться делать свой игровой хостинг, на котором можно будет размещать сервера
MINECRAFT, SAMP, CRMP, MTA и другие
Начнем-же.

Часть I
Для начала нам нужен VDS ибо на нем будет стоять наша панелька. Желательно брать 2 ВДСа - для панельки и для локаций.
Я рекомендую брать VDS-ки на этом сайте:

(не реклама) но я брал на таймвебе (не реклама) ибо на мск денег не хватило))
Ладно, ближе к делу: покупаем вдску и ставим там операционную систему Debian 8 ( обязательно ) и ждем пока она установится, пока она устанавливается мы качаем нашу панель. Я возьму панель HostinPL 5.4 PRO
DL:
*** Скрытый текст не может быть процитирован. ***
Заходим в FTP нашей VDS-ки и сразу в первоначальную папку закидываем наш install.sh потом тыкаем правой кнопкой мыши и установить права(или как то по-другому, не помню) даем ему права 777. Далее заходим в консоль VDS-ки и выполняем команду sh install.sh и дожидаемся конца установки.

На этом первая часть окончена, если увижу актив то продолжим серию создания хостинга :D

Игровой сервер - это вещь упрямая. Он требует как можно больше оперативной памяти. Так, для хостинга серверов San Andreas Multiplayer, Counter Strike и Rust нужно от 8 ГБ, для Minecraft уже от 16 и выше. При этом нужно знать, что это затраты только на саму операционную систему. Процессоры лучше использовать E3 Series и E5 Series, но сгодится и i7 Series.

  • Панель TCadmin - она стоит от 500 рублей;
  • Выделенный сервер для панели (не VPS!) - от 5000 рублей;
  • Выделенный сервер для игровых серверов - от 5000 рублей;
  • Если собираетесь MySQL выносить отдельно - еще один выделенный сервер, можно от 1500 рублей;
  • WHMCS - в случае Nulled 0 рублей, в случае лицензионки - стоимость лицензии, от 1184 рублей;
  • Затраты на рекламу.

Что нельзя делать:

  • Продвигать проект спамом.
  • Делать черный пиар.
  • Атаковать конкурентов.
  • Стремиться к монополии.

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

Дальше. Вы не можете все время принимать тикеты даже всей командой. Создайте специальную базу знаний с основными вопросами. К примеру, заносите туда вопросы пользователей. Это сильно облегчит задачу. Также постарайтесь .чтобы игрокам было удобно играть. Найдите датацентр, доступ к которому одинаков для всех. Пинг должен быть не менее 15 мс, а с высокой нагрузкой - 30 мс. Пинг выше 30 мс уже будет мешать играть, как и слабый процессор сервера. Канал лучше найти от 500 Мбит/с до 1 Гбит/с. Чем выше пропускная способность, тем больше игроков сможет подключиться.

Наркоманством будет, если станете использовать панель типа GamePL, LitePanel или такую же. Они просто не рассчитаны на большое качество посетителей, так как используя screen запускают для каждого сервера отдельный процесс, который кушает память. А ведь игровой сервер - это не VPS/VDS, его не ограничишь жестко.

Теперь о том, почему нельзя брать VPS/VDS. Такие сервера всегда привязаны к провайдеру - например, к FistVDS, и нагрузка на них значительно усилит давление на выделенный сервер провайдера. В результате в один прекрасный момент провайдер отключит сервер вообще, чтобы сохранить ресурсы. И все клиенты, а точнее, их сервера, у Вас скажут "Айлюлю". Как показывает практика, при достаточно сильной нагрузке сервера не восстанавливают вообще.

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

Agones (от др.-греч. agōn — «соревнование») позволяет развернуть кластер игрового сервера используя Kubernetes с возможностью Auto-Scaling. Этот open-source проект был создан в 2018 году, уже набрал 2500 звезд, был на Google I/O 2019, и на Хабре, к великому удивлению, еще не был упомянут. В топике описан краткий экскурс в архитектуру и инструкция по запуску тестового сервера на локальной машине. Если интересно, добро пожаловать под кат, вперед!


Agones logo

Описание проекта

Agones представляет собой Custom Resource (расширение Kubernetes API).

Проект в действительности требует большего внимания, так как позволяет запускать единичный игровой сервер (GameServer) или же целый "флот" серверов (Fleets) посредством конфигурационных yaml файлов, через Agones API. В свою очередь, каждый сервер дает оповещения о его жизненном цикле (GameServer lifecycles), описывая текущий статус (health checking, connection information). Сервера в кластере имеют возможность автоматического масштабирования (Fleet Autoscaling), которые интегрированы с базовыми возможностями Kubernetes. В дополнение, есть вывод статистики на панели (dashboard) с помощью Prometheus, Grafana или Stackdriver, экспортируются метрики посредством OpenCensus, что позволяет добавить собственный экспортер. Пример dashboard'a в Stackdriver:

image

Архитектура, основные элементы

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

Agones Kubernetes API делится на три основных пакета (packages), в каждом из которых находятся ресурсы: agones.dev (GameServer, GameServerSet, Fleet), allocation.agones.dev (GameServerAllocation), autoscaling.agones.dev (FleetAutoscaler). Как и в других ресурсах Kubernetes для их запуска используется yaml файлы.

Краткое описание каждого ресурса:

  • GameServer — создает некий шаблон, который позволяет использовать обычные Pod параметры, с некоторыми дополнениями, такие как hostPort и containerPort для игрового сервера. Agones SDK предоставляет дополнительный контейнер "помощник" (sidecar), с которым GameServer в процессе будет постоянно общаться
  • GameServerSet — структура данных для нескольких GameServer, очень схоже с отношением между Depoyment и ReplicaSet
  • Fleet — создает несколько готовых GameServer, используется GameServerAllocation для распределения ресурсов
  • GameServerAllocation — запрашивает GameServer из Fleet для использования и помечает, что он готов для использования игроками, благодаря этому GameServer не будет автоматически удален
  • FleetAutoscaler — автоматически расширяет или, наоборот, уменьшает количество серверов во Fleet

Диаграмма (отсюда) показывает жизненный цикл GameServer ресурса:


Фиолетовыми стрелками отмечена работа Agones SDK, красным — API пользователя, синим — контроллер игрового сервера, желтым — контроллер приложения.

Установка

В данном и последующих разделах используются команды с инструкции на официальном сайте, с некоторыми дополнениями. Рекомендуется использовать Kubernetes версии 1.12 (протестировано разработчиками). Для теста на локальном компьютере можно использовать minikube, который потребует kubectl и гипервизор (Hyper-V или VirtualBox) поддерживаемый операционной системой.

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

Последняя команда скачивает конфигурационный файл Agones создающий Custom Resource Definitions (CRD) через Kubernetes API.

Запуск GameServer

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

Для подтверждения того, что сервер работает можно использовать NetCat, для linux программа обычно идет в поставке с системой, для windows её нужно скачать, к примеру здесь. NetCat нужно запустить с параметром -u (UDP запрос), указывая адрес minikube (лучше скопировать адрес с команды minikube ip ) и активный порт GameServer:

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

Статус сервера проверяется командой kubectl describe gameserver , он должен поменяться на Shutdown.

Вносим изменения в GameServer

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

Из корневой папки проекта запустим следующее, чтобы создать docker image и сохранить его в minikube. Для windows предварительно нужно запустить minikube docker-env | Invoke-Expression , для linux eval $(minikube docker-env) . Это позволит создавать docker images напрямую в minikube.
Создадим docker image:

Эта команда может занять некоторое время, так как весь репозиторий проекта будет копироваться в image. Этого можно избежать, если в директории оставить только папку sdks, файл main.go и Dockerfile.

Далее в examples\simple-udp\gameserver.yaml изменим строку 28 на image: agones-go:modified и создадим новый GameServer:

Проверим изменения и выключим сервер:

Если после запуска команд в консоли появится ответ "ACKNOWLEDGED: hello", то внесенные изменения прошли успешно.

Запускаем сервер локально

Итерировать изменения для удобной разработки можно и без Kubernetes, используя только Agones SDK. Во время работы игрового сервера SDK общается через TCP с маленьким gRPC сервером, который Agones запускает в контейнере под тем же namespace. Такой контейнер в Kubernetes называется sidecar. Поэтому, для локальной разработки необходимо запустить процесс SDK. Для этого потребуется запустить его исходный файл с параметром -local , который включает режим 'local mode'. Этот режим говорит процессу быть в пассивном режиме и никуда не подсоединяться, только лишь выводить логи в консоль, чтобы можно было видеть, что делает SDK во время работы игрового сервера.

компьютерный игровой салон

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также: