Серверное решение, на основе CrystalEngine, легко создается и быстро масштабируется. Все действия по построению выполняются с помощью визуальных редакторов, и администрирует через Admin Control Panel.Структурная схема серверов проекта
Обычно реализуется минимум 3 подсети для разработки проекта 1) Подсеть разработчика (в ней происходит разработка структуры и модулей логики) 2) Подсеть тестирования - происходит тестирование проекта клиент-сервер 3) Рабочая подсеть с реальными клиентами
Состав пакета
В полной версии в состав пакета входят приложения:
SuperAdminServer.exe- предназначен для администрирования подсетей, работы с редактором серверной части (ProjectBuilder), администрирования серверов
AdminServer.exe-служитдля администрирования свой подсети
StarterServer.exe- для запуска и остановки рабочих приложений (серверов)
PeerServer.exe- основной, рабочий сервер, запускает и останавливает модули логики, предоставляет транспортные протоколы и сокеты (TCP UDP), в нем происходит работа логики проекта
ProjectBuilder.exe - основной редактор серверной части, позволяет визуально, без написания кода создать структуру данных всего проекта, автоматически создает таблицы в базе данных SQL и файловые хранилища, команды работы с клиентом и межмодульная коммуникация
AdminCP.exe - визуальный редактор для администрирования серверов всего решения, создание рабочих серверов (PeerServer), подключение модулей логики, назначение нужной версии серверной библиотеки для подсетей, работа с архивом. Все приложения могут запускаться как windows сервисы так и как обычные приложения. Для понимания серверной иерархии обратите внимание на схему ниже
На самом верху находится Супер админ сервер, который производит администрирование всей серверной части и работает с редакторами. Он дает указания Админ серверам а те в свою очередь администрируют своими рабочими серверами. Рабочие сервера управляют своими модулями логики. Такая структура позволяет очень быстро масштабировать серверную часть вне зависимости, где находятся сервера физически. Например, при большом наплыве пользователей админ-сервер дает указания и его стартер-сервера запустят дополнительное количество рабочих серверов для обработки клиентов. Либо система может находиться в "облаке" например, Amazon и в этом случает - Админ сервер напрямую взаимодействуете АПИ Amazon и запускает дополнительные мощности. Точно также и при оттоке пользователей.
Порядок разработки
1) Разработчик устанавливает SuperAdminServer и редактор ProjectBuilder.
2) С помощью редактора ProjectBuilder создает структуру объектов и команды (все структуры и исходные коды хранятся в месте где установлен SuperAdminServer).
3) Нажатием на одну кнопку "Build" происходит компиляция объектов и команд в библиотеку "ServerEngine.dll" при этом библиотека автоматически подгружается на ПК разработчика. Разработчик подключает библиотеку в Microsoft Visual Studio и с помощью этого лучшего на сегодняшний день отладчика пишет скрипты логики проекта.
4) После создания модулей логики ".dll" разработчик опять же с помощью визуального редактора (AdminCP) подгружает созданные модули на свой сервер и запускает их в работу Цепочка создания серверного кода Использованием визуальных редакторов, генераторов кода (код на выходе уже отлажен и стабилен) и применение мощного инструмента Visual Studio для написания скриптов логики достигается высокая надежность серверного кода и снижаются риски проекта со стороны серверной части.
Редактор объектов "Project Builder". При наличии множества настроек, создание объекта происходит очень быстро благодаря уже приготовленным шаблонам и "мастера" создания объектов (Wizard). При этом создание объекта сводится лишь к написанию его имени и выбора его типа, все остальные параметры генерируются автоматически. В дальнейшем при необходимости можно изменить любой параметр. Все редакторы сведены в одно окно и переключаются кнопками сверху. Все редакторы модульные и написаны с учетом структуры движка.
Редактор "AdminCP" с открытой закладкой Монитор сервера Реег55 слева находится дерево серверов, где сразу можно видеть все сервера системы и определить работает в данный момент сервер (подсвечен) или нет (затенен). Путем простого нажатия на кнопки старт и стоп можно запустить или остановить любой сервер. Также можно запустить в работу или перегрузить любой модуль логики на сервер, при этом не останавливая сервер - "горячий рестарт", что особенно важно, когда необходимо обновить модуль и при этом не сбрасывая в офлайн всех подключённых клиентов. Также в каждом модуле показаны все команды, которые он обрабатывает.
Структура модулей логики
Все модули логики представляют собой библиотеки dll (сборки .NET) Каждый модуль логики реализует функции обработки данных, которые доставляются сгенерированной ProjectBuilder библиотекой "ServerEngine.dll". Вызов в работу каждой функции происходит через команды, приходящие от клиента либо от других модулей логики. Если говорить по-простому,то модуль логики подключается к нужным командам и ждет их срабатывания.
При старте -модуль подключается к нужным командам и ждет сигнала кобработке. При остановке -отключается. Через статический класс Root (виден отовсюду) можно получить любые данные:
Из кэша Из SQL Из файлового хранилища
Всего одной строкой кода Можно отправить любую команду любому клиенту или другому модулю, любому объекту данных.
Перечень основных достоинств движка
Очень гибкая структура, позволяющая создавать самые различные решения. Например, легко можно сделать оптимальный сервер, как для локационных игр, так и для больших бесшовных игровых миров. Любая клиентская часть. Возможность использования в качестве клиентской части любого игрового движка Unity3D, Flash, UDK, и др. На любой платформе Windows, MacOS, Linux.
Нет ограничений в создании логики проекта. Разработчик может использовать любые инструменты среды .NET либо других компиляторов (C++, Delphi).
Транспортная система, система хранения данных отделены от логики, поэтому можно легко менять логику проекта, не изменяю структуру транспорта и хранения данных
Использование быстрой, распределенной базы IS'oSQL в RAM как оперативное хранилище данных (с которыми непосредственно работает логика проекта), позволяет достигнуть высокой скорости работы с данными. Данные просто хранятся в памяти, непосредственно в сервере. База данных SQL используется только как постоянное хранилище объектов
Лекальная транспортная система (связь между серверами) построена на динамических пулах подключений, которые при увеличении нагрузки автоматически добавляют новые подключения, а при уменьшении закрывают. Подключения являются полностью дуплексными, то есть могут одновременно передавать и принимать данные. Отдельно на прием и на передачу.
Сайт - CrystalEngine.ru |