Размещение сервера для онлайн игры в интернете

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

Итак, мы (или вы) допилили наконец свою новую (первую) игру. Отловили баги, отладили работу на локальном сервере. Следующий шаг – тесты в онлайне. По своему опыту скажем, что обязательно полезут новые баги. Особенно, если это ваша первая онлайн игра. :) Но это ничего – баги фиксятся, и игра начинает работать четко. В конце концов, для того и нужно тестирование в онлайне.

Вернемся к нашим серверам. Наша задача – получить площадку для онлайн-тестирование, а за одно и площадку для запуска под небольшим онлайном. Два в одном. Мы ведь начинающие разработчики, и лишних денег на аренду физического сервера у нас нет. А если и есть, то жалко. :) Наиболее удачный вариант, по нашему мнению, аренда виртуального выделенного сервера – VPS. Технически – это часть аппаратного сервера, выделенная исключительно для вас. Часть процессорного времени, часть оперативной памяти, часть пространства на жестком диске.

VPS бывают двух типов (соответственно ПО, при помощи которого они организуются) – KVM и OpenVZ. Оба варинта создают на аппаратном сервере множество виртуальных машин, одна из которых вам и нужна в аренду. Первый вариант (KVM) предпочтительнее из-за того, что позволяет гарантированно выделять ресурсы под каждую отдельную виртуальную машину, в отличие от второго (OpenVZ), где ресурсы выделяются динамически, и одна виртуалка, теоретически, может выжрать все ресурсы железки единолично – нам такого счастья не надо. :)

По нашим данным цены на KVM-VPS у хостеров начинаются от $10-15 в месяц – в зависимости от выделяемых ресурсов и предлагаемых сопутствующих сервисов. Обычно это 512 Мб ОЗУ и 10-15Gb места на диске. Для задач отладки и небольшого онлайна такого сервера вполне хватит, но если количество пользователей в вашей игре начнет расти, потребуются новые ресурсы. Если сервер написан на Java, ему нужно выдать с запасом оперативной памяти. Для нормального стартаобъем памяти VPS лучше выбрать хотябы 2Gb. Этого хватит для работы СУБД, Апача и самого игрового сервера.

Безусловно, желательно заранее постараться рассчитать, сколько памяти понадобится вашему серверу на одного пользователя онлайн, чтобы не было сюрпризов. Сразу можно сказать, что точно это вычислить невозможно. Слишком много неизвестных. Но некоторую оценку сделать вполне реально. Умножте эту оценку минимум на 1.5, нам ведь надо, чтобы сервер не просто “держал” онлайн, а еще и обеспечивал комфортную игру, без лагов и обрывов связи по таймауту. Полученную цифру умножьте на предполагаемый пиковый онлайн – получите необходимый объем ОЗУ, который понадобится игровому серверу. Добавьте хотябы 500Мб на все остальные сервисы… Короче говоря, примерные цифры вы получили. Пора заказывать сервер.

Мы рекомендуем вам арендовать сервер у компании aghost.biz. С этой компанией мы сотрудничаем уже третий год, довольны как качеством предоставляемых услуг, так и скоростью работы их тех.поддержки. Хотя, если честно, к общению с поддержкой приходилось прибегнуть всего 2-3 раза за все время работы с ними – очень высокий уровень надежности. На сколько нам известно – компания небольшая, поэтому дорожат каждым клиентом. Да и цены у них вполне адекватные. Рекомендуем! :)

После получения доступов к серверу, вы либо сами устанавливаете там нужные сервисы, либо заказываете первоначальную настройку у самой хостинговой компании – они всегда рады помочь. Безусловно, большим плюсом для вас будет минимальное знание *nix-систем – немного консоли, заветная команда “mc”… Если таких знаний у вас нет – есть смысл почитать пару статеек на эту тему.

Далее, обычная схема работы выглядит так: на сервере запускается ваш сервис (написан он на Java, PHP или Python, а может быть C++), затем в клиенте прописываются нужные реквизиты сервера, обычно это IP адрес (или URL) и порт. Клиент закачивается либо на этот же сервер в public_html (например), либо размещается на сторонней площадке, например на вконтакте. Хотя, только контакт позволяет такое, остальные социалки заставляют вас самих заботиться о хостинге для клиента и всей статики, но это уже тема для следующей статьи. :)

В качестве напутствия… Невозможно заранее учесть все детали и предусмотреть все исходы, но вполне реально настроить сервер и начать тестирование, чем быстрее, тем лучше. Не бойтесь ошибиться. Любую ошибку всегда можно исправить, а не ошибается тот, кто ничего не делает. Все приходит с опытом, а опыт – с набитыми шишками.
Удачи вам и вашим проектам! :)

Эта запись была опубликована в рубрике Мысли о разработке и отмечена метками , , , , , . Добавить в закладки ссылку.

Комментирование закрыто.