Dusk World – Дневники разработки, часть 14:
О генерации предметов

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

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

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

А перед этим покажу финальный вариант, где можно посмотреть варианты генерации:


Генератор предметов


 

Чертеж

Основа предмета — это чертеж. Он определяет базовые характеристики и параметры предмета, и выглядит так (на примере кинжала):

Чертеж кинжала
   

Имя:

Кинжал

Иконка:

url к картинке

Тип предмета:

Кинжал

Магический тип:

Одноручное оружие

Ряд:

1

Тип урона:

Атака

Секция:

Правая рука

Материал:

Металл

Пол:

Мужской

Цена:

140

+

Минимальный уровень:

1

Минимальная сила:

0

+

Минимальный интеллект:

0

+

Минимальная ловкость:

20

+

Ограничения:

Скорость создания заклинаний, магическая меткость

Урон:

20

+

Шанс критического удара:

20%

Сила критического удара:

300%

Скорость атаки:

1.2

Вес:

70

+

Часть параметров имеет фиксированное значение, например скорость атаки, а часть — плавающие, например урон, и зависят от того, из какого материала они сделаны.

Последняя колонка указывает, какие параметры меняются от материала.

 

Материал

Предмет обязательно создается из какого-то материала, которых 4 вида:

  • Дерево (посохи, луки, арбалеты)
  • Кожа (легкие доспехи)
  • Ткань (роба)
  • Металлы (все остальное)

Материалы имеют следующие параметры (на примере металла Верит):

Метал Верит
   

Название:

Веритовый / Веритовая / Веритовое / Веритовые

Стихия:

Земля

Множитель цены:

3.8

Множитель требований:

2

Множитель стихии:

2

Множитель меткости:

2

Множитель магической меткости:

2

Множитель защиты:

2

Множитель магической защиты:

2

Множитель веса:

2

Соответственно, если мы делаем кинжал из Верита, то он получит следующие параметры:

Веритовый Кинжал
   

Название:

Веритовый кинжал

Урон:

40 (стихией земли)

Скорость атаки:

1.2

Шанс критического удара:

20%

Сила критического удара:

300%

Цена:

266

Вес:

140

Требование к ловкости:

40

Качество

Но, помимо этого накладывается дополнительный множитель качества:

  • Множитель 0.7 — Сломанный
  • Множитель 0.8 — Низкокачественный
  • Множитель 0.9 — Грубый
  • Множитель 1
  • Множитель 1.1 — Добротный
  • Множитель 1.15 — Качественный
  • Множитель 1.2 — Превосходный

В текущей генерации он берется случайно, а в игре будет зависеть от навыка, и, соответственно, чем выше навык, тем более качественный предмет будет получаться.

 

Магические свойства

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

  • Обычный предмет — 0
  • Магический предмет — 1
  • Зачарованный предмет — 2
  • Редкий предмет — 3
  • Мистический предмет — 4
  • Легендарный предмет — 5
  • Эпический предмет — 6
  • Артефакт — 7
  • Реликвия — 8

В текущем примере генерации предмета магическая редкость выбирается случайно, в игре, разумеется, будет по другому:

 

Правила применения магических свойств

Применение магических свойств к предметам происходит не случайно, а с применением нескольких «фильтров»:

1. Фильтр по уровню

Каждое магическое свойство имеет несколько вариаций, у каждой - свое ограничение по минимальному уровню предмета. Например, свойства на дополнительный урон огнем следующие:

  • 1+ уровень: Урон огнем +1-3
  • 5+ уровень: Урон огнем +4-6
  • 10+ уровень: Урон огнем +7-10
  • 15+ уровень: Урон огнем +11-15
  • 20+ уровень: Урон огнем +16-19
  • 25+ уровень: Урон огнем +20-28

Соответственно, если предмет 17 уровня, то свойства на 20 и 25 уровень будут исключены, и случайным образом будет выбран вариант из оставшихся.

2. Фильтр по типу предмета

Сейчас в базе 63 типа магических свойств, но на каждый тип предмета указан отдельный список свойств, которые на нем могут быть получены. Где-то по 20-30 на каждый.

3. Дополнительные фильтры

Допустим, у нас есть двуручный меч, и двуручный посох. Оба они относятся к типу двуручного оружия.

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

Чтобы таких ситуаций не было, была добавлена механика дополнительных фильтров, в соответствию с которой:

  • На оружии с типом урона огонь, может сгенерироваться только свойство на % увеличение огня (все остальные % увеличения стихийного урона будут фильтроваться);
  • На оружии с типом урона «атака» не может сгенерироваться бонус к скорости создания заклинаний или магической меткости;
  • На оружии с типом урона «заклинание» не может сгенерироваться бонус к скорости атаки и меткости;
  • На броне без защиты не может сгенерироваться бонус к защите;
  • На броне без магической защиты не может сгенерироваться бонус к магической защите.

4. Фильтр по редкости или особые свойства

Вы еще не устали читать про правила генерации магических свойств? Надеюсь, что нет, потому что все описанное выше это еще не все.

У каждого (почти каждого) типа предмета есть свои, особые магические свойства, которые могут сгенерироваться только на нем, это:

  • Бонус к максимальным сопротивлениям — только на нагрудных доспехах
  • Бонус к блоку — только на щитах
  • Бонус к регенерации здоровья — только на кольцах
  • Бонус к регенерации маны — только на амулетах
  • Бонус к находимому золоту — только на шлемах
  • Дополнительные слоты в поясе — только на штанах/поясах
  • Уменьшение расхода выносливости — только на обуви
  • Бонус к шансу быть незамеченным — только на обуви
  • Бонус к общему наносимому урону — только на перчатках

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

У обычных свойств этот параметр равен 100%, т.е. Выбрался, к примеру, из 20 доступных типов свойств бонус к здоровью — он и применяется. А вот если на кольце выбирается бонус к регенерации здоровья, который имеет параметр редкости 40%, то будет сделана дополнительная проверка, и с 60% вероятности это свойство не применится, и будет выбираться следующее.

В будущем редкие свойства на предмете будут выделены цветом.

 

Список предметов и материалов

Кому интересны детали:


Сразу скажу, что это не финальные варианты — все еще будет 10 раз обновляться, балансироваться и дополняться.

 

P.S.

Что по итогу — механику генерации предметов начал писать еще в далеком 17 году, за пару выходных сделал основной прототип. Потом возвращался к ней в 18 году, и сделал почти готовый вариант.

А в этом году, в январе, начал доделывать, как я тогда думал, почти готовый вариант. И на доделку ушло два с половиной месяца (на выходных). Не думал, что генерация предметов окажется такой сложной задачей.

При этом, это только генерация экипировки. А мне нужно будет сделать генерацию дропа, которая будет определять, при убийстве, например, скелета, что с него выпадет:

  • Ничего
  • Золото
  • Расходники
  • Материалы для крафта
  • Экипировка

Если экипировка — то какая. Будет много фильтров с разными вероятностями, плюс нужно будет придумать формулу, и какое-то значение «крутости» противника, который будет передаваться в генератор дропа, и, соответственно, если убили крысу — получить «ничего» будет 80%, а если убили босса — то это будет несколько предметов, в том числе какая-то экипировка.

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

Набросок уже сделал — получается легко и просто, посмотрим как пойдет дальше. Когда его сделаю — также дам попробовать своими руками и расскажу свое видение того, по каким принципам будет сделано дерево навыков у классов.



Комментарии

RBH 2019-03-29 19:45:17
"Пол: Средний"

кинжал? и какая разница, какой пол?

[Ответить]
↑ 0 ↓
Diablo 2019-03-29 20:42:54
Для корректности приставок к названиям:

Добротный Кинжал (мужской род)
Добротная Секира (женский род)
Добротное Кольцо (средний род)
Добротные Наплечники (множественный)

Да, кстати, у кинжала ошибка, он мужского рода. Спасибо, что обратил мое внимание)

[Ответить]
↑ 0 ↓
Leonid 2019-03-29 18:49:40
"Бонус к находимому золоту — только на шлемах"
А почему на шлемах? Это же не логично.

[Ответить]
↑ 0 ↓
Diablo 2019-03-29 19:43:16
Потому что другие предметы заняты подходящими им свойствами.
Есть другое предложение - пиши.

[Ответить]
↑ 0 ↓

Страницы: [1]

Оставить комментарий


Ваше имя:

Комментарий:



Реклама:

Наша командаПоддержать проектРеклама на сайте

Diablo и Hellfire, Diablo 2 и Lord of Destruction
2008-2019