Руководство по хостингу

Запутаны с вариантами хостинга? Добро пожаловать в наше практичное руководство по хостингу.

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

Это руководство предназначено для тех, кто хочет сосредоточиться на создании игр. Команды для взлома на ssh-терминалах может быть и весело, но жизнь коротка. Приоритет №1 для данного руководства это доступность в использовании, потому что мы должны публиковать наши проекты!

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

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

Практичное руководство по хостингу

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

1.) Хостинг на вашем собственном компьютере

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

  1. Uptime: ваш компьютер должен работать 24/7.

  2. Безопасность: что, если кто-то обнаружит эксплойт и получит доступ к вашим личным данным?

  3. Performance: возможно, ваш компьютер / пропускная способность / задержка недостаточно хороши.

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

  5. Связь: другие игроки могут не зайти в вашу игру из за вашего маршрутизатора, брандмауэра и т.д.. Связи между игроками всегда сложны.

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

2.) Хост-игрок + ретрансляция / NAT

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

  • NAT: хитрый способ "пробить все" через ваш маршрутизатор / брандмауэр, чтобы другие могли подключиться к вашей игре. Для этого игрокам требуется один центральный сервер, к которому они могут подключиться один раз. После первоначального подключения к центральному серверу ваш маршрутизатор / брандмауэр, скорее всего, будет разрешать внешние пакеты от других игроков напрямую. Это работает примерно 70% всего времени.

  • Relay: чтобы избежать головной боли, вы можете предложить свой собственный (или арендовать) ретрансляционный сервер, который в основном пересылает трафик между игроками. Вместо того чтобы разговаривать друг с другом, все ваши игроки общаются через центральный ретранслятор. Это решает наши проблемы с маршрутизатором и брандмауэром в 100% случаев. Однако обычно вам придется платить за пропускную способность.

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

Edgegap как раз является Ретранлятором который может дать вам отличный уровень задержки (платно). Epic Relay является бесплатным, но с более высокой задержкой и довольно плохим C# API.

3.) Выделенные сервера

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

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

Выделенные сервера работают для всех игр. Однако они не идеальны для всех игр.

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

Это лучше всего подходит для целых миров: Minecraft, MMORPG по типу World of Warcraft и другие.

Hetzner рекомендуется чаще всего. У них отличные цены и отличное оборудование. Namecheap тоже неплох.

4.) Облачный хостинг

Возможно, вы слышали об Amazon AWS, Google Cloud, Microsoft Azure и т.д. Они предлагают виртуальные серверы, которые вы можете запускать и удалять всего несколькими щелчками мыши, не подписывая контракты вручную и не отменяя их каждый раз.

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

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

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

Облачный хостинг также работает для всех игр. Однако имейте в виду, что:

  • Виртуальные процессоры работают на ~20% медленнее, чем выделенные процессоры.

  • Цены заметно выше, чем на выделенные серверы.

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

Если вы цените удобство, то облачный хостинг - хороший выбор по сравнению с выделенными серверами.

Google Cloud, Amazon AWS и Microsoft Azure это самый популярный выбор. Руководства по размещению для каждого из них вы найдете в нашей документации. В Mirror мы используем Google Cloud для наших тестов CCU и ботов Discord.

5.) Оркестровка

Оркестровка нацелен на автоматизацию хостинга сессионных игр.

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

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

  1. Вы создаете облегченный образ Docker: настраиваете текстовый файл (".Dockerfile") с вашим дистрибутивом Linux, пакетами, открытыми портами и т.д., а затем компилируете весь ваш проект в "Образ Docker". Если вы не знакомы с Docker, не бойтесь. Это намного облегчает вашу жизнь. Просто выучите его один раз, и впоследствии вы будете использовать его для всего своего хостинга. Больше никакой ручной настройки серверов Linux, никакого apt-get, никакого обслуживания и т.д..

  2. Загрузите свой образ в службу оркестровки.

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

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

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

Multiplay, Edgegap и AWS Gamelift довольно популярны. Мы используем EdgeGap потому что это довольно легко в использовании с самой передовой сетью.

Last updated