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

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

  • Upload
    -

  • View
    1.467

  • Download
    0

Embed Size (px)

DESCRIPTION

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

Citation preview

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