Обзор



Overview
BongoServer – это самый быстрый из доступных на рынке многофункциональных игровых серверов. Будучи разработанным на С++, самом высокопроизводительном из высокоуровневых языков программирования, BongoServer является несомненным лидером по производительности, оставляя по этому критерию далеко позади аналогичные сервера, разработанные на более высокоуровневых и более медленных языках программирования, таких как Java, C#, или ActionScript. Несмотря на это, тщательно продуманная архитектура BongoServer и возможность использования для написания игровых модулей скриптовых языков и высокоуровневых управляемых ОО языков программирования (таких как ActionScript/JavaScript, Java, Python, Lua) делает разработку многопользовательских игр на основе BongoServer настолько легкой, что вам не только необязательно быть С++ разработчиком, но можно вообще не задумываться о низкоуровневом устройстве компьютерной программы. Прибегнув к агрессивной оптимизации нашего сервера с точки зрения распараллеливания вычислений (что позволяет серверу в полной мере использовать возможности современных многоядерных процессоров), мы добились беспрецедентных скоростных показателей, что, в свою очередь, делает BongoServer первым в истории игровой индустрии многофункциональным высокомасштабируемым сервером, позволяющим создавать полноценные реалтаймовые игры на HTML5! К примеру, хорошо известно, что многопользовательские игры типа Mortal Kombat и Street Fighter, в которых на ограниченной сцене в поле видимости находятся два персонажа, являются самыми сложными с точки зрения реализации. До сих пор ни одна компания не предлагала многопользовательского сетевого варианта подобной игры из-за ограничений, налагаемых скоростью обработки пакетов на стороне сервера. Мы решили эту проблему, и, используя BongoServer, вы сможете создать такую игру!

Итак, что же выгодно отличает BongoServer от существующих платформ для создания многопользовательских сетевых игр?

» Производительность


Высочайшая производительность BongoServer достигается в первую очередь за счет использования в качестве языка разработки С++ и применения агрессивной оптимизации, с ударением на распараллеливание выполняемых сервером задач. BongoServer обеспечивает поддержку 15000 (и более, в зависимости от аппаратной конфигурации) одновременно подключенных пользователей. Пропускная способность BongoServer - более 30000 пакетов в секунду. Там, где для обработки более 5000 пользовательских подключений приходится прибегать к кластеризации, у нас, без малейших усилий, вы сможете обойтись единственным экземпляром BongoServer. Отсюда прямая экономия средств на оборудовании и лицензиях.

» Масштабируемость


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

» Модульность


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

» Возможность разработки модулей не только на С++


Если вы не С++ разработчик, не беда, BongoServer имеет поддержку ActionScript/JavaScript, Java, .NET, Delphi и Python в качестве языков для разработки игровых модулей, что делает задачу разработки многопользовательской сетевой игры посильной даже для начинающих разработчиков. Если вы уже разрабатывали модули на Java для популярных серверов, представленных на рынке, вы с легкостью сможете адаптировать их для BongoServer. Вы как разрабатывали на Java, так и продолжаете это делать, нет никакой необходимости переучиваться, но при этом вы пользуетесь многочисленными преимуществами BongoServer. Более того, согласно исследованию, проведенному всемирно известной компанией TIOBE Software, занимающейся статистическими исследованиями уже около 10 лет, популярность таких языков, как Java, C/C++, C#, Python, Delphi, JavaScript и ActionScript среди профессиональных разработчиков программного обеспечения в сумме составляет свыше 60%. Таким образом, BongoServer является платформой для разработки многопользовательских сетевых игр, доступной 60% профессиональных разработчиков.

» Полный набор вспомогательных модулей


В комплекте с BongoServer мы БЕСПЛАТНО предоставляем все, что позволяет разработчику сфокусироваться на написании самого основного - игровой логики. Мы предоставляем:

  • универсальное лобби, которое подходит для любого вида игр и предоставляет возможности тонкой настройки для самых нестандартных ситуаций; будучи приспособленным для работы в кластерном режиме, осуществляет балансировку игр между узлами кластера, управляет количеством игроков в столах, автоматически удаляя неактивных игроков и многое другое;
  • чат, поддерживающий Unicode;
  • модуль регистрации новых пользователей;
  • модуль администрирования сервера и административная консоль;
  • модуль сбора статистики;
  • интерфейс для разработки модулей на С/С++;
  • модуль-обертка для разработки модулей на ActionScript/JavaScript;
  • модуль-обертка для разработки модулей на Java;
  • модуль-обертка для разработки модулей на Python;
  • интерфейс для разработки модулей на Delphi;
  • интерфейс для разработки модулей на .NET языках;

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

» Универсальный игровой модуль


Если вы вообще не имеете опыта работы с игровыми серверами, но имеете огромное желание разработать многопользовательскую сетевую игру - не отчаивайтесь, выход есть! Используя предоставляемый нами универсальный игровой серверный модуль, вы можете разработать полноценную многопользовательскую сетевую игру, реализовав всю игровую механику на клиентской стороне. Вам даже не надо прикасаться к серверу. Мы совершенно БЕСПЛАТНО предоставляем универсальный модуль, который осуществляет транспортировку пакетов между клиентами и может выступать в качестве серверной части любой пошаговой (а при наличии у вас фантазии и реалтаймовой) многопользовательской сетевой игры. Без каких-либо усилий, вы можете создать полноценную многопользовательскую сетевую игру, совершенно не вникая в тонкости серверной реализации.

» Разделение модулей и работающих с ними пользователей на изолированные пространства


Вы можете строить полностью изолированные друг от друга пространства модулей и ассоциированных с ними баз пользователей в рамках одного сервера. Таким образом, на одном игровом сервере можно разместить несколько независимых друг от друга игровых порталов. При этом каждый портал может иметь свою изолированную базу пользователей и специфическую процедуру аутентификации пользователей - BongoServer обеспечивает полную защиту данных. Также, если у вас несколько независимых проектов, вы легко можете разместить их на одном сервере, пользуясь данной особенностью BongoServer. Помимо этого, если вы хотите 100% изоляции игровых пространств, вы можете запускать несколько экземпляров BongoServer на одном аппаратном сервере. Конфигурируйте BongoServer так, как вам удобно!

» Конфигурируемая процедура аутентификации


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

» Кластеризация с внутренней балансировкой нагрузки


BongoServer предусматривает возможность построения кластера серверов и динамического распределения нагрузки между узлами (экземплярами BongoServer) этого кластера. При организации кластера каждый узел напрямую подключается к каждому другому узлу (fully connected topology), что исключает так называемые бутылочные горлышки и создает высокую избыточность (в случае потери игроком прямого соединения с каким-либо из узлов, пакеты от игрока направляются на этот узел через наименее загруженный узел в кластере, имеющий прямое подключение с игроком). Мы не приветствуем топологий, в которых узлам кластера отводятся узкоспецифические роли и где используется единый синхроузел, являющийся серьезным ограничителем информационных потоков, который, буферизируя сообщения, значительно увеличивает их RTT (round-trip time) характеристику. В BongoServer игровые модули имеют возможность напрямую общаться между собой. Подобная реализация дает массу преимуществ. Из основных отметим, в первую очередь, высокую скорость отклика BongoServer. Не нужно быть разработчиком, чтоб понять, что, при прочих равных условиях, сообщение попадет из пункта А в пункт Б быстрее, нежели проходя путь из пункта А в пункт В, а затем уже в пункт Б. Во-вторых, подобная архитектура позволяет размещать однородные модули на разных узлах кластера, что дает возможность создавать сложные распределенные ММО миры. Помимо всего прочего, для достижения максимальной производительности BongoServer использует ряд алгоритмов для внутрикластерной балансировки нагрузки.

» Возможность построения систем повышенной надежности


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

» Использование XML, текстовых и бинарных сообщений


Архитектура BongoServer позволяет использовать как бинарный, так и текстовый форматы представления сообщений. Как известно, бинарный протокол имеет особое преимущество – минимальный размер пакета, что приводит к более высокой скорости его передачи (т.е. меньшим задержкам). Использование же текстовых протоколов имеет свои преимущества, такие как возможность работы ваших игр через фаерволы и простота отладки. При выборе варианта использования текстового протокола, вы сможете пользоваться как стандартным XML, так и любым другим текстовым форматом представления данных, как, например, Base64 или MIME, в том числе и нестандартным, разработанным под конкретные нужды.

» Полная совместимость клиентских приложений


Только BongoServer позволяет игрокам, использующим игровые клиенты, разработанные на разных языках программирования и использующие разнородные форматы представления сообщений (текстовый и бинарный), играть в одну и ту же игру. Например, игрок может играть в бильярд дома в клиентском приложении, написанном на С++ и использующим трехмерную графику с аппаратным ускорением, соединенным с сервером по бинарному протоколу, его же оппонент в это время может играть на работе через клиентское приложение, разработанное на HTML5 и запущенное в интернет-браузере, находясь при этом за корпоративным фаерволом. Звучит неправдоподобно? Попробуйте BongoServer и вы убедитесь, что это возможно!

» Гарантированная доставка пакетов и легкость изменения транспортного протокола


В качестве транспортного протокола BongoServer использует TCP/IP, что обеспечивает гарантированную доставку пакетов в правильном порядке, а гибкая модульная архитектура BongoServer позволяет, при необходимости, использовать в качестве транспортного протокола UDP/IP.

» Работа с базами данных


Модули BongoServer могут работать с различными SQL базами данных (например MS SQL, MySQL, PostgreSQL, Oracle, Firebird/Interbase) через API BongoServer и не только с одной базой данных в один момент времени. Помимо этого, в различных версиях BongoServer мы предлагаем возможность работы либо без базы данных вообще, либо со встраиваемой базой данных.

» Автоматическая генерация cross-domain policy файла


BongoServer автоматически генерирует cross-domain policy файл для клиентских приложений, разработанных на HTML5, что дает этим приложениям возможность быть запущенными с веб-сайта, физически расположенного на компьютере, отличном от того, на котором работает BongoServer.

» Административная консоль


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

» Логирование


BongoServer производит логирование всех внутренних процессов, а также предоставляет лог-API для модулей, разрабатываемых для него. Для логирования используется общепринятый в индустрии Syslog протокол, что позволяет осуществлять мониторинг состояния BongoServer по логам как локально, так и через удаленные коллекторы логов (доступно огромное количество бесплатных третесторонних программных средств для работы с Syslog протоколом и логами в этом формате). Все эти средства в комплексе дают возможность быстро и без посторонней помощи локализовать проблему в случае ее возникновения. И, конечно же, BongoServer предоставляет возможность настройки степени детализации логирования.

» Создание минидампа по запросу


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

» Мониторинговая служба


Являясь независимо работающим приложением, служба осуществляет мониторинг работы BongoServer и автоматически уведомляет администратора по электронной почте в случае возникновения отклонений в работе сервера. Мониторинговая служба также осуществляет доставку (по запросу, либо в автоматическом режиме) минидампов, генерируемых BongoServer автоматически при возникновении исключительных ситуации во время работы сервера.

» Легкость установки и толерантность к конфигурации окружения


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

» Совместимость BongoServer как с 32, так и с 64-битовой версией Windows


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

» Поддержка альтернативных ОС


В данный момент мы ведем работу над портированием BongoServer на ОС Linux.