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

34
Илья Вайсман технический директор проекта, департамент клиентских игр www.mail.ru Компонентная архитектура игровой механики MMORPG
  • Upload

    -
  • Category

    Career

  • view

    1.448
  • download

    0

description

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

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

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

www.mail.ru

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

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

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

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

www.mail.ru 2

Оглавление

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

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

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

Дизайн

Сервисы

Клиент

Редакторы

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

www.mail.ru 3

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

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

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

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

Дизайн

Сервисы

Клиент

Редакторы

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

www.mail.ru 4

Механика MMORPG

Классика:

RPG-система

предметы

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

навыки

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

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

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

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

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

www.mail.ru 5

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

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

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

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

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

www.mail.ru 6

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

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

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

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

www.mail.ru 7

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

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

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

www.mail.ru 8

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

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

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

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

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

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

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

www.mail.ru 9

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

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

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

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

Дизайн

Сервисы

Клиент

Редакторы

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

www.mail.ru 10

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

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

www.mail.ru 11

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

Условие

Воздействие

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

Способность

Заклинание

Предмет

Задание

Устройство

Моб

Навык

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

www.mail.ru 12

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

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

www.mail.ru 13

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

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

www.mail.ru 14

Последствия

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

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

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

Дизайн

Сервисы

Клиент

Редакторы

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

www.mail.ru 15

Дизайн

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

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

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

Дизайн

Сервисы

Клиент

Редакторы

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

www.mail.ru 16

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

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

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

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

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

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

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

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

www.mail.ru 17

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

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

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

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

www.mail.ru 18

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

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

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

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

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

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

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

www.mail.ru 19

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

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

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

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

www.mail.ru 20

Сервисы

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

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

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

Дизайн

Сервисы

Клиент

Редакторы

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

www.mail.ru 21

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

Опасности:

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

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

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

• …

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

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

www.mail.ru 22

Сюрприз

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

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

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

www.mail.ru 23

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

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

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

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

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

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

www.mail.ru 24

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

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

• шаблоны

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

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

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

www.mail.ru 25

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

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

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

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

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

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

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

www.mail.ru 26

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

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

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

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

www.mail.ru 27

Транзакции

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

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

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

www.mail.ru 28

Клиент

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

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

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

Дизайн

Сервисы

Клиент

Редакторы

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

www.mail.ru 29

Красивый бой

Заклинание

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

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

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

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

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

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

Сервер

Клиент

каст

очки

урон

уронурон

стан

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

www.mail.ru 30

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

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

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

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

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

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

www.mail.ru 31

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

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

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

www.mail.ru 32

Редакторы

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

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

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

Дизайн

Сервисы

Клиент

Редакторы

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

www.mail.ru 33

Редакторы

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

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

• карт

• предметов

• заклинаний

• заданий

• мобов

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

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

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

департамент клиентских игр[email protected]

СПАСИБО!

www.mail.ru

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

Работайте у нас[email protected]://corp.mail.ru/career/vacancies/voronezh