Проектирование игровой системы

Итак, мы решили, что проще всего будет рассматривать игровую систему как систему, состоящую из трёх основных компонент:

  • Сервер
  • Клиент
  • WEB сервер (Сайт)


    На рисунке изображена обобщённая схема игровой системы

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

    Клиенты и web-сервер взаимодействуют с игровым сервером через Интернет (или реже через локальную сеть). Если вы хотите, чтобы пользователи Интернета могли играть на вашем сервере, кроме компьютера, на котором будет установлен сервер вы должны располагать:

  • выделенным статическим IP адресом
  • подключением к Интернет по выделенной линии (желателен безлимит)
    Если вы не знаете, вам следует уточнить у вашего провайдера эти требования

    Сервер и клиент
    Установив на ваш компьютер необходимое програмное обеспечение, настроив его и подключив к Интернет, вы получаете игровой сервер. Пользователи, желающие играть на вашем сервере, так же должны установить на своём компьютере соответствующее програмное обеспечение - клиент. Клиенты, зная 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 не сможет установить подключение к игровому серверу, следует считать, что статус сервера - ОффЛайн. И, соответственно, наоборот: если в течении этого времени соединение будет установлено, следует считать, что статус сервера - ОнЛайн.

    Получаемая модель взаимодействия сайта и сервера: