Компонентная архитектура игровой механики MMORPG

  • View
    1.470

  • Download
    0

  • Category

    Career

Preview:

DESCRIPTION

Докладчик: Илья Вайсман, глава команды игровой механики на проекте «Аллоды Онлайн», технический директор проекта.

Citation preview

www.mail.ru

Илья Вайсмантехнический директор проекта,

департамент клиентских игр

Компонентная архитектура игровой механики MMORPG

www.mail.ru 2

Оглавление

1. Постановка задачи

2. Компонентная модель

3. Последствия

Дизайн

Сервисы

Клиент

Редакторы

www.mail.ru 3

Постановка задачи

1. Постановка задачи

2. Компонентная модель

3. Последствия

Дизайн

Сервисы

Клиент

Редакторы

www.mail.ru 4

Механика MMORPG

Классика:

RPG-система

предметы

заклинания и пассивные способности

навыки

интерактивные объекты – мобы и устройства

система спавна

задания и скриптование зон

Специфика – всё, что угодно

www.mail.ru 5

Особенности MMO

Большое количество компонентов

Распределённые вычисления

Защита от жульничества

www.mail.ru 6

Вопросы реализации

Традиция. Дизайнеры не занимаются вопросами производительности.

Гарантия производительности Свобода дизайнеров

www.mail.ru 7

Размер кирпичика

Баланс между крайностями регулируется размером кирпичиков, из которых дизайнер собирает игру

www.mail.ru 8

Аргументация

Большие кирпичики Маленькие кирпичики

• Меньше работы дизайнерам.• Рост гарантии эффективности работы игры.• Риски, связанные с большим количеством типов компонентов.

• Код состоит из небольших независимы кусочков.• Большие возможности для повторного использования.• Отсутствие дублирования функциональности.

Низкая квалификация дизайнеров

Высокая квалификация дизайнеров

www.mail.ru 9

Компонентная модель

1. Постановка задачи

2. Компонентная модель

3. Последствия

Дизайн

Сервисы

Клиент

Редакторы

www.mail.ru 10

Пример сборки – заклинание

www.mail.ru 11

Универсальные компоненты

Условие

Воздействие

Долговременный эффект

Способность

Заклинание

Предмет

Задание

Устройство

Моб

Навык

www.mail.ru 12

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

www.mail.ru 13

Непредвиденные ожиданияПример. Элементы типа «условие» легко проверять.Однако для реакции на их изменение каждый раз потребуется новый код.

www.mail.ru 14

Последствия

1. Постановка задачи

2. Компонентная модель

3. Последствия

Дизайн

Сервисы

Клиент

Редакторы

www.mail.ru 15

Дизайн

1. Постановка задачи

2. Компонентная модель

3. Последствия

Дизайн

Сервисы

Клиент

Редакторы

www.mail.ru 16

Заказана функциональностьЭто происходит со скоростью примерно одна задача на программиста в день.

Заказ в текстовом виде

Декомпозиция

Обобщение компонентов

Реализация недостающих Использование существующих

Объяснение заказчикам, как этим пользоваться

Сборка примера

www.mail.ru 17

Документация

КомпонентыУстроены просто, документируются именем и кратким описанием.

СхемыИмеют сложный дизайн, требуют подробного описания. Их немного и меняются они редко.

www.mail.ru 18

Сложная функциональность

Специфичного кода нет

Триггер на сопровождаемомЗаставляет идти по маршруту, меняет поведение на агрессивное.Считает число сопровождающих, уничтожает носителя при обнулении.

ЗаданиеИнициализирует ситуацию – развешивает триггеры на всех участников.По-разному обрабатывает ситуации «начать сопровождение» и «присоединиться к сопровождению». Триггер на сопровождающем

Следит за удалением от сопровождаемого, за достижением им конца пути, за смертью всех участников.

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

www.mail.ru 19

Повторное использование

А теперь – много заданий сопровождения, отличающихся деталями.Если никак не подпирать, число дизайнерских ошибок в заданиях сопровождения

будет пропорционально числу заданий сопровождения.Выходы.1. Специальный код в редакторе (частное решение).2. Шаблоны ресурсов.

www.mail.ru 20

Сервисы

1. Постановка задачи

2. Компонентная модель

3. Последствия

Дизайн

Сервисы

Клиент

Редакторы

www.mail.ru 21

Ресурсоёмкие сервисы

Опасности:

• подписка на перемещение,

• запрос поиска пути,

• неограниченное количеств сохраняемых или реплицируемых объектов,

• …

Решение – комбинированные элементы

www.mail.ru 22

Сюрприз

Требуется элемент, создающий высокую нагрузкуИмеет универсальный вид, обещается редкая применимость.

Решение – со стороны сервиса, предоставляющего опасный интерфейс, делается ограничение на уровне кода.

www.mail.ru 23

Ещё один сюрприз

Задача: найти конкретного моба и применить к нему воздействие

Правильное решение. Присвоить мобу скриптовый идентификатор и отправить воздействие по этому идентификатору.

Неправильное решение.Найти всех вокруг в радиусе ста метров и проверить не наш ли это моб. В случае успеха – применить воздействие.

Придётся проводить инспекцию данных и разъяснительную работу по факту найденных ошибок

www.mail.ru 24

Статическая БД

Необходимая функциональность:• полиморфные типы данных

• шаблоны

• специфическая обработка на этапе загрузки – проверка корректности, предварительные оптимизационные вычисления

• чисто серверные, чисто клиентские и разделяемые поля в одном ресурсе

www.mail.ru 25

Динамическая БД

Главное отличие: требуется запись

Нельзя хранить свой экземпляр на каждой машине, постоянные операции с диском

Существенные ограничения по производительности

Используется реляционная БД

Никакого полиморфизма

www.mail.ru 26

Плоские таблицы

Как сохранить полиморфные данные в плоские таблицы?

Надо проектировать так, чтобы сохранять полиморфные данные было не надо. В сложных случаях – сериализация.

www.mail.ru 27

Транзакции

Покупка товара у торговца Один элемент списывает деньги, второй выдаёт купленный предмет. По независящим от механики причинам одно изменение может сохраниться в БД, а второе – нет.

Варианты• Обёрточное воздействие-транзакция.• Цельные компоненты, транзакция – внутри.

www.mail.ru 28

Клиент

1. Постановка задачи

2. Компонентная модель

3. Последствия

Дизайн

Сервисы

Клиент

Редакторы

www.mail.ru 29

Красивый бой

Заклинание

Условия на кастере

Воздействия на кастера

Условия на целях

Воздействия на цели

Дополнительные условия на целях

Дополнительные воздействия на целях

Сервер

Клиент

каст

очки

урон

уронурон

стан

www.mail.ru 30

Код на стороне клиента

Часть кода придётся сдублировать на клиенте.• Отзывчивость интерфейса

• Экономия трафика

• Повышение информативности интерфейса

Сложные алгоритмы Полиморфные условия

www.mail.ru 31

Секретные данныеА что делать, когда на клиенте нет данных, необходимых для отображения интерфейсных элементов?

Вычислить на сервере!

www.mail.ru 32

Редакторы

1. Постановка задачи

2. Компонентная модель

3. Последствия

Дизайн

Сервисы

Клиент

Редакторы

www.mail.ru 33

Редакторы

Универсальные данные редактируются универсально.Но универсальный инструмент сложно сделать удобным.

Специализированные редакторы:

• карт

• предметов

• заклинаний

• заданий

• мобов

Неуниверсальные редакторы чувствительны к формату данных.

Вайсман Ильятехнический директор проекта,

департамент клиентских игрvaysman@corp.mail.ru

СПАСИБО!

www.mail.ru

Mail.RuРазработчик игр и сервисов №1Крупнейший работодатель в отрасли

Работайте у нас!job.gamedev@corp.mail.ruhttp://corp.mail.ru/career/vacancies/voronezh

Recommended