Как сделать домашний игровой сервер
Как создать свой игровой сервер?
Наверняка вы когда-то хотели, чтобы не вы играли на сервере, а у вас играли, играли на вашем сервере. Популярность игровых серверов всегда на высшем уровне, каждый раз выходят новые игры, моды, которые с нетерпением хочется опробовать. Помимо новых игр, есть игры и проекты, которые мы знаем еще с далеких 2000 годов, вспомните к примеру игру Counter-Strike 1.6, сколько же много было создано игровых серверов и как часто мы на них играли.
На данный момент снова замечен рост создания серверов, которые собирают множество игроков по всему миру.
Если вы действительно хотели бы создать свой игровой сервер, первое что Вам нужно сделать, это определиться с выбором сервера, где вы будете размещать файлы игрового сервера. Для этого обратим внимание на ADMINVPS — это российская компания предоставляющая услуги по аренде сервера, хостинга, VPS/VDS и т.д.
Для начала, давайте зайдем на сайт и выберем услугу VPS/VDS. После этого авторизуйтесь и пройдите процедуру регистрации VPS/VDS. На данном сайте процедура регистрации и оформления очень проста и займет у вас не более 10 минут. После оформления вы получите бесплатное администрирование, бесплатное бэкап место, круглосуточную поддержку, которая может Вам в решении ваших проблем.
Сайт предоставляет множество услуг, не только сервера, но и хостинг для ваших сайтов.
К примеру, когда вы закончите с установкой и настройкой вашего сервера, то следующем шагом следует сделать (по желанию) это создать сайт, посвященный вашему серверу, на сайте вы можете выкладывать обновления, изменения на вашем сервере, так же, можете создать форум, где игроки смогут общаться на разные темы по игре. Тем самым вы сделаете свой проект более живым.
Поэтому с хостингом Вам также может помочь ADMINVPS.
Почему именно VPS/VDS сервера?
Дело в том, что гораздо дешевле создать сервер именно в ручную, без использования сервисов, которые предоставляют игровые сервера. Готовые игровые сервера, это удобный сервис, но не дешевый, зачастую вы вряд ли сможете отбить затраты по обслуживанию вашего сервера, если даже будете продавать админки по 300р. Средняя цена игрового сервера это 850р в месяц, думаем, что на первых этапах это будет серьезно бить по карману и вы захотите закрыть Ваш сервер.
Но, если вы разместите свою или скаченную сборку, которая будет грамотно настроена, то вы сможете с экономить свои средства. Найти хорошую сборку не так и сложно, просто более тщательно осуществляйте поиск, и вы обязательно найдете подходящую сборку для Вас.
Также вы можете найти человека, который сможет Вам помочь в этом и создаст сборку под ваши запросы.
Но это также затраты, зато один раз и навсегда, после, если Вам нужно будет что-то доработать на сервере, вы сможете скачивать разные плагины и устанавливать их просто и быстро.
О том, как работать с плагинами, мы поговорим в другой статье.
После выбора сборки, скачайте и распакуйте свою сборку на Ваш сервер от ADMINVPS. Если у Вас возникнут трудности, вы сможете обратить в техническую поддержку вашего сервера, и Вам с радостью в этом помогут специалисты.
Переходите по ссылки и приобретайте свой хостинг – ADMINVPS
Как запустить свой собственный игровой сервер
Вы можете разместить игровой сервер на своем ПК, иногда удобнее иметь облачный сервер, работающий 24/7. Хостинг игровых серверов может быть удивительно дешевым, особенно если вы просто хотите поиграть с несколькими друзьями. Давайте разберемся более подробно как создать сервер для игры с друзьями.
Выделенный сервер против общего хостинга
Выделенный сервер — это когда вы арендуете всю стойку сервера или зачастую часть ресурсов этой стойки. Вам часто дают подробные спецификации о том, что именно вы покупаете, и вы как правило будете платить немного больше по сравнению с общим хостингом.
Общий хостинг запускает несколько экземпляров игрового сервера на нескольких серверных стойках, что позволяет хостинг-провайдеру экономить деньги и обеспечивать низкую цену. Однако не всегда понятно, какие спецификации вы получаете, и вы можете столкнуться с проблемами перегрузки, если ваш сервер сильно загружен.
Если вы хотите настроить сервер для себя и пары друзей, мы рекомендуем вам сэкономить деньги и подключить общий хостинг. Если вы хотите, чтобы на вашем сервере играло много людей, вам следует подобрать выделенный сервер.
В зависимости от того, у какого провайдера вы покупаете сервер, вы также можете получить управляемый хостинг, когда провайдер создает инструменты для автоматической установки, настройки и управления вашим сервером, такие как автоматический перезапуск и простая установка модов.
Варианты общего хостинга
Все перечисленные здесь опции также являются управляемым хостингом. Вам не нужно будет слишком беспокоиться о настройке, так как она должна быть относительно простой.
Gameservers.com: Очень дешевые серверы для небольших проектов, так как вы платите за необходимое количество игровых слотов. Достойная панель управления, но без защиты DDOS.
Friendhosting.net: Преимущества выделенного сервера и гибкости настроек виртуального хостинга по доступной цене, а также на сёрче хорошие отзывы о Friendhosting.net.
Low.ms: компромисс между выделенным и общим сервером, но в то же время обеспечивающий хорошую панель управления для большинства игр. Вы будете знать, какие спецификации вы получаете, но вам придется доплатить за выделенную ветку. Они также добавляют брендинг в заголовок вашего сервера.
Nodecraft: поставщик общего хостинга, который не взимает плату за слот. Они имеют разные уровни, сегментированные по ОЗУ и количеству экземпляров, которые вы можете запустить. Фактически, вы можете разместить несколько серверов на одном уровне, если позволяет оперативная память.
Варианты выделенного сервера
Выделенный сервер дает вам гораздо больше свободы и контроля. Вы можете разместить несколько игровых серверов в одном боксе, а также несколько разных игр, и поскольку у вас есть полный доступ к боксу, вы даже можете разместить веб-сервер для запуска сайта вне сервера или чего-либо еще, не связанного с игрой.
OVH: только два местоположения, Канада и Франция, но предлагают очень мощные серверы по доступной цене. Если вас не интересует новейшее оборудование Gen, вы можете арендовать их старое оборудование у их дочерней компании SYS.
Gameservers.com: Хотя эта компания специализируется на общем хостинге, она также предлагает выделенные серверы в качестве опции.
Amazon Web Services: больше премиального корпоративного варианта. Если вы разработчик игр и хотите разместить серверы, вам стоит обратить внимание на AWS GameLift. Если вы ищете один универсальный сервер, EC2 будет более подходящим. А если вы студент, вы можете получить бесплатный выделенный сервер на год.
Другие игры могут иметь свою собственную серверную программу, которую вы можете скачать — для получения дополнительной информации обратитесь к официальной документации игры.
После того, как сервер настроен и запущен, вы должны убедиться, что порты на сервере открыты, чтобы люди могли получить к нему доступ. Этот шаг будет отличаться для каждого хоста, но если вы не видите ничего в панели управления вашего провайдера, вам скорее всего придется просто изменить настройки брандмауэра Windows и внести в белый список приложение сервера.
После того, как порты открыты, люди смогут подключаться к вашему серверу с IP-адресом или возможно только через браузер игрового сервера. В зависимости от игры вы можете получить доменное имя для своего сервера, чтобы вы могли легко запомнить IP-адрес.
Agones, создаем многопользовательский игровой сервер. Архитектура и установка
Agones (от др.-греч. agōn — «соревнование») позволяет развернуть кластер игрового сервера используя Kubernetes с возможностью Auto-Scaling. Этот open-source проект был создан в 2018 году, уже набрал 2500 звезд, был на Google I/O 2019, и на Хабре, к великому удивлению, еще не был упомянут. В топике описан краткий экскурс в архитектуру и инструкция по запуску тестового сервера на локальной машине. Если интересно, добро пожаловать под кат, вперед!
Описание проекта
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:
Архитектура, основные элементы
Сам по себе Agones берет на себя задачу запуска, автоматического расширения и хостинга игровых серверов используя в основе Kubernetes. Это позволяет сосредоточиться на разработке самого сервера многопользовательской игры, вместо разработки ее инфраструктуры и дальнейшей поддержки. Можно использовать любой игровой сервер, который может быть запущен на linux, причем он может быть написан на любом языке программирования.
Agones Kubernetes API делится на три основных пакета (packages), в каждом из которых находятся ресурсы: agones.dev (GameServer, GameServerSet, Fleet), allocation.agones.dev (GameServerAllocation), autoscaling.agones.dev (FleetAutoscaler). Как и в других ресурсах Kubernetes для их запуска используется yaml файлы.
Краткое описание каждого ресурса:
Диаграмма (отсюда) показывает жизненный цикл GameServer ресурса:
Фиолетовыми стрелками отмечена работа Agones SDK, красным — API пользователя, синим — контроллер игрового сервера, желтым — контроллер приложения.
Установка
В данном и последующих разделах используются команды с инструкции на официальном сайте, с некоторыми дополнениями. Рекомендуется использовать Kubernetes версии 1.12 (протестировано разработчиками). Для теста на локальном компьютере можно использовать minikube, который потребует kubectl и гипервизор (Hyper-V или VirtualBox) поддерживаемый операционной системой.
Для установки кластера и Agones необходимо запустить следующие команды:
Последняя команда скачивает конфигурационный файл Agones создающий Custom Resource Definitions (CRD) через Kubernetes API.
Запуск GameServer
Теперь можно запустить в кластере UDP сервер используя готовый тестовый сервер из примеров, который будет просто отвечать на посланный к нему запрос:
Если после запуска команды в консоли появится ответ «ACK: hello», то сервер работает, его можно выключить следующей командой, которая инициализирует :
Вносим изменения в GameServer
Используя предыдущий пример изменим ответ сервера. Для начала скопируем репозиторий проекта:
Эта команда может занять некоторое время, так как весь репозиторий проекта будет копироваться в image. Этого можно избежать, если в директории оставить только папку sdks, файл main.go и Dockerfile.
Далее в examples\simple-udp\gameserver.yaml изменим строку 28 на image: agones-go:modified и создадим новый GameServer:
Проверим изменения и выключим сервер:
Если после запуска команд в консоли появится ответ «ACKNOWLEDGED: hello», то внесенные изменения прошли успешно.
Запускаем сервер локально
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.