RunServer
ProductsNewsProjectsFilesGalleryContacts
  • English (United Kingdom)
  • Russian (CIS)
RunServer Products RunServer Middleware
middleware for huge online server development
RunServer.Math
server geometry subsystem
RunServer.Database
universal RDBMS module with in-memory OODB
RunServer.MMO
MMOG server elements including AI, update and map systems
Our partners Unigine 3D Engine
Unigine 3D Engine
WNet: World of Warcraft Syndicate of Arkon DotA WoW
Hosted By WNet Valid XHTML 1.0 Transitional
RunServer.MMO
RunServer.MMO Thursday, 12 November 2009 14:32
 
There are no translations available.

Библиотека RunServer.MMO содержит проверенные временем решения, которые подходят для использования в современных онлайн играх и схожих проектах.

Система карт (Grid-Based Map System)

Система карт, которая тут описывается, не имеет ничего общего с ландшафтом или обходом препятствий. Под словом "карта" подразумевается область мира, в которой возможны какие-либо действия игрока и в которой могут находиться объекты.
Суть системы состоит в том, что игровой мир покрывается сеткой с большим количество квадратных ячеек, так называемых тайлов. Каждый тайл взаимодействует только с 8ю окружающими тайлами. Поле видимости и взаимодействия для игрока, находящегося в тайле -  текущий тайл и 8 окружающих. Для удобства все 9 тайлов вынесены в специальную коллекцию и почти все действия с тайлами выполняются над всей коллекцией. Например, если отсылается информация о движении какого-то объекта, то ее получат все игроки в текущем и в окружающих тайлах.
Если игрок пишет сообщение, то его будут слышать только обитатели окружающих тайлов, которые находятся на определенном расстоянии от него. Проверять остальные тайлы нет смысла. Если операция затрагивает объекты на расстоянии меньше половины тайла (разговор на небольшом расстоянии, взаимодействие с объектом), используется оптимизация и обрабатывается только 4 тайла (текущий и три смежных).
Перемещение объекта между тайлами происходит с обязательной отсылкой пакетов удаления обитателям тех тайлов, которые больше не будут смежными с текущим и отсылкой пакетов создания обитателям тех, которые стали смежными с текущим. Пакеты отсылаются как о движущемся объекте, так и ему обо всех обитателях тайлов (если данный объект умеет обрабатывать такую информацию, т.е. является игроком).
Таким образом, мы отказываемся полностью от использования глобальных коллекций игроков, не игровых персонажей, объектов, заменяя их локальными коллекциями для каждого тайла. Исключение составляет коллекция игроков, которая нужна для глобальных действий вроде поиска, списков онлайна и подобных операций, но эта коллекция не используется для взаимодействия с окружающими объектами.
Система тайлов позволяет значительно уменьшить нагрузку на сервер за счет того, что активность во всех тайлах, где нет игроков, может быть отключена. Например, агрессивные компьютерные персонажи не сканируют на наличие игроков в пустых тайлах, не ходят и т.п.
Такая система карт позволяет кроме всего прочего работать с любым количеством миров, организовывать переходы между ними, обрабатывать динамические триггеры (ловушки, порталы) и т.п.
Дальнейшее развитие такой системы подразумевает автоматическое создание (спаун) игровых объектов и их удаление при полной неактивности. Максимальная реализация позволяет кроме этого создавать любое количество клонов миров (различных измерений) и навигацию по ним с автоматической очисткой неиспользуемого измерения.

Система коллективных действий

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

В современных MMOG часто случаются ситуации, когда игрок получает информацию о каком-то объекте или другом игроке, которая для него не актуальна. Например, в местах массового скопления – городах, магазинах, массовых битвах – игроку не всегда интересно знать, какой именно предмет создал другой игрок, находящийся на пределе видимости. Также зачастую в массовых битвах детализация движений противников и союзников, не замешанных напрямую в сражении игрока, имеет небольшой приоритет, но в различных MMOG передается полностью, что может значительно ухудшить качество игры. Для оптимизации подобного трафика и реализации массовых битв была разработана система адаптивной регулировки трафика. Вокруг игрока описывается сложная фигура, представляющая собой правильную полусферу перед игроком и деформированную полусферу (с уменьшенным радиусом по одной из осей) за спиной игрока. Все объекты, попадающие в область, ограниченную данной фигурой, попадают в список «объектов интереса» (Objects of Interest). Также в этот список попадает выбранная цель, текущие противники (те, с кем ведутся боевые действия в данный момент) и возможные союзники (как игроки, так и не-игровые персонажи). Данные о действиях объектов этого списка передаются игроку полностью, в то время как действия всех остальных объектов проходят через специальные фильтры. Например, большое количество пакетов, описывающих сложную траекторию движения, будет заменено несколькими пакетами с упрощенной фигурой, вспомогательные пакеты действий могут быть высланы в заархивированном виде и или отброшены.
Дальнейшим развитием этой системы будет добавление весовых коэффициентов к каждому пакету, а также формирование для каждого игрока некого значения «уровня детализации», который будет изменяться в зависимости от нагрузки. Это позволит адаптивно регулировать трафик и сохранять латентность и качественные ощущения от процесса игры на одном уровне в любой игровой ситуации.

По вопросам лицензирования данного продукта и платформы в целом обращайтесь в отдел продаж

Written by Nomad   
 
© RunServer, 2009