Проектирование игровой системы
Итак, мы решили, что проще всего будет рассматривать игровую систему как систему, состоящую из трёх основных компонент:
На рисунке изображена обобщённая схема игровой системы
Как видно из рисунка, игровой сервер - наиболее сложная часть игровой системы, состоящая из нескольких компонентов. Установку, настройку и работу каждого из компонентов игрового сервера мы рассмотрим лишь поверхностно в соответствующих разделах сайта. А подробнее остановимся на создании web-сервера.
Клиенты и web-сервер взаимодействуют с игровым сервером через Интернет (или реже через локальную сеть). Если вы хотите, чтобы пользователи Интернета могли играть на вашем сервере, кроме компьютера, на котором будет установлен сервер вы должны располагать:
Если вы не знаете, вам следует уточнить у вашего провайдера эти требования
Сервер и клиент
Установив на ваш компьютер необходимое програмное обеспечение, настроив его и подключив к Интернет, вы получаете игровой сервер. Пользователи, желающие играть на вашем сервере, так же должны установить на своём компьютере соответствующее програмное обеспечение - клиент. Клиенты, зная IP адрес вашего сервера смогут подключиться к нему (к вашему компьютеру) и, войти в игру.
WEB-сайт
Для того, чтобы клиент смог играть на сервере, в базе данных сервера должна быть создана учётная запись. Создать её может администратор сервера "вручную", а затем, сообщить учётные данные (логин и пароль) клиенту. Это крайне неудобно, поэтому надо сделать автоматическую систему регистрации в БД сервера. В этом процессе будет участвовать WEB-сайт. Если на игровом сервере зарегистрируется достаточно большое количество игроков, среди них точно найдутся те, кто забудет свои учётные данные. Поэтому необходимо, чтобы сервер автоматически мог "напоминать" клиенту эти данные. В процессе игры клиенты набирают очки, повышают уровень, совершенствуют персонажа и т.п. Очен полезно было бы опубликовать в Интернете эти параметры игроков (точнее их персонажей). Кроме того, очень удобно оперативно показывать сатус сервера ("Вкл" или "Выкл"). Все эти функции осуществимы с помощью WEB-сайта, тесно взаимодействующего с игровым сервером.
Взаимодействие
Зная IP адрес сервера, клиент может подключиться к нему откуда угодно, посредством глобальной сети. Что касается WEB-сайта, есть два варианта:
Вариант 1.
Разместить WEB-сайт на том же компьютере, что и игровой сервер. При этом отпадает необходимость поиска хостинга для сайта, соединение с игровым серверм будет в этом случае очень надёжным. Но, этот способ рассмотрен исключительно как один из возможных вариантов, и не рекомендуется из-за его явных недостатков.
Во-первых: IP адресу вашего игрового сервера не соответствует доменное имя, поэтому обращаться к сайту придётся по IP адресу.
Во-вторых: в случае выключения игрового сервера сайт станет недоступным.
(Стоит сделать оговорку. Для IP сервера можно зарегистрировать доменное имя, установив два DNS сервера в разных сетях. Это потребует намного больше сил и средств, чем второй вариант).
Вариант 2.
Сайт размещается на платном хостинге. Требования к хостингу: поддержка PHP, внешних исходящих соединений и исходящих MySQL соединений (эти возможности можно уточнить у сотрудников технической поддержки перед покупкой хостинга). Этот способ и надо использовать. В этом случае расходы будут минимальными. А именно, покупка хостинга и регистрация домена. Хостинг предоставит сервер для сайта, доступный круглосуточно. Поэтому доступность сайта не будет зависеть от того, работает игровой сервер или нет.
Итак, мы пришли к выводу, что WEB сайт лучше всего разместить на платном хостинге.
Теперь о том, как именно будет осуществляться взаимодействие сайта и игрового сервера.
Будет использовано два исходящих соединения:
1. Подключение к БД MySQL
2. Пинг игрового сервера
1) Здесь нет ничего сложного - взаимодействие будет осуществляться через подключение к MySQL серверу вашего компьютера (на котором установлен игровой сервер). Все необходимые для такого взаимодействия функции поддерживаются языком PHP. Этим способом будет будет реализован обмен данными между сайтом и игровым сервером.
2) Пинг сервера будет необходим для того, чтобы проверять его статус (ОффЛайн/ОнЛайн). Для этого будет использована функция PHP fsockopen с установкой тайм-аута подключения 3-5 секунд.
Работать пинг будет так: если в течении 3-5 секунд функция fsockopen не сможет установить подключение к игровому серверу, следует считать, что статус сервера - ОффЛайн. И, соответственно, наоборот: если в течении этого времени соединение будет установлено, следует считать, что статус сервера - ОнЛайн.