Что такое джунк в диабло?

Mar 19, 2021 11:34


Использованные ссылки:

`http://forum.diablo1.ru/index.php?showtopic=157`
`https://habr.com/ru/post/460038/`
`https://goodgame.ru/news/26730/`

Больше информации можно найти по запросу:

*"генерация предметов в диабло 2"*

О чём всё это?..

Я это сам уже немного прочитал и сделал некоторые выводы. Совсем короткие -- всего на 0.15% полноценной стены текста...

;-)

Как видно из ремайнинга Диабло 2, предметы изначально генерируется как джунк (хлам, крап) и только некоторые как итем (полезная вещь). А из Диабло 1 известно, что полезная вещь создаётся вообще зачастую всего одна на локацию целиком. Что всё это означает?

Математически, рандом в игре имеет так называемое "нормальное распределение Гаусса". В просторечье -- колокольчик распределения (из-за специфически похожей формы самого графика). Фишка в том, что **график бесконечен по ширине**.

Это означает, то в Диабло2 можно попасть в сколь угодно малую область графика с низкой вероятностью где-то сбоку, получив нереально низкие шансы выпадения предмета. Кто-то тут (вроде даже в этой теме) недавно написал, что заполняет 59-тую страницу бесконечного сундука, но последние два куска сета Короля не падают уже три(!) года.

В Диабло 3 то же самое: вчера я получил пять фейлов самоцвета с шансом 60% подряд; вероятность такого события составляет 1,024%

Поэтому, в играх диабло-серий:

* генератор случайных чисел не может быть рандомным;
* вещи изначально делятся на рандомный мусор и квестовые;
* вместо априорной вероятности нужно считать апостериорную;

**Априорная вероятность** -- это вероятность одиночного события.
**Апостериорная** -- вероятность цепочки событий любого типа.

Пример.

Бросая монету, вы имеет ровно 50% априорной вероятности получить либо орёл, либо решку.

Но если бросить монету два раза, то получится четыре комбинации: два орла, две решки и два смешанных состояния орёл-решка и решка-орёл. Т.о. апостериорная вероятность получить любую из этих четырёх последовательностей уже только 25%. Откуда такие неочевидные названия вероятностей, я не знаю. Исторически так.

Считается вероятность цепочки весьма просто: перемножением приведённых к единице шансов (40% это 0,4).

**Что нам это даёт?**

Похоже, при создании Диабло2 Брейвик прилагал огромные усилия к тому, чтобы оставить вероятность априорной (единичной) вместо апостериорной (на цепочку событий), но обойти её ограничения огромным количеством костылей, о чём и написано по ссылкм выше.

Априорная генерация на первый взгляд проще: кинул кубик -- и выдал предмет. Но потом это выливается в огромное количество нетривиальных допилок, которыми богат код всех трёх частей игры: от Диабло 1 до Диабло 3. Включая особенно Диабло 2 как "икону жанра". Кстати, уже потом сами Близзы без Брейвика наступили на ровно те же грабли в третьей части.

При апостериорной вероятности вам нужно, во-первых, хранить предысторию, а во-вторых менять в зависимости от неё текущую априорную вероятность (которая в этом случае и превращается неявно в апостериорную). Ну ладно, я понимаю, что здесь на этом форуме, no one это поймёт

;-)

Для этого:

* У графика генератора случайных чисел (того сАмого кокольчика Гаусса) обрезаются низкие хвосты по некоторой отсечке (в физике принято 3%, в бытовых применениях 15%).

* Этот генератор применяется для раздачи только джунка, то есть мусора и хорошие вещи он на локации не выдаёт вообще.

* Хорошие вещи (не-джунк) прописываются однократно: на локацию (выпадет с произвольного моба), на элитки в ней (выпадет с некоторой вероятностью, которая создаётся тем же усечённым генератором) и на босса при первом квестовом прохождении с шансом в 100%.

Тут мы приходим к пониманию концепции виртуальных вещей. Виртуальная вещь -- это например, какой-то не-джунк (а вот какой именно это предмет, заранее неизвестно). То есть вещь может создаваться таким например, способом:

1. На локации из допустим, 100 монстров, случайным образом раздаётся джунк.

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

3. Получившаяся последовательность анализируется на предмет повторяющихся величин и производятся замены, разбавляющие сплошную пустоту и сплошную удачу. **Тем самым происходит отсечение бесконечных хвостом графика.**

4. Усовершенствованная последовательность назначается монстрам сразу на всей локации целиком для выдачи предметов.

5. Для генерации не-джунк дропа с вероятностью, допустим, в 15% на локации может появляться один дополнительный, 101-й монстр.

6. Этот монстр с вероятностью -- *для примера* -- пускай тоже в 15% будет выдавать что-то ценное. Это даёт 0.15x0.15=2.25% шанса выпадения ценного предмета.

7. У героя(!) а не у монстра должна быть таблица со списком вообще всех не-джунк вещей в игре.

8. Каждая не-джунк вещь имеет строго определённую "свою" локацию для фарма (это нужно для того, чтобы не понадобились дублирующие таблицы с разными числами по разным локациям).

9. Каждый раз при НЕ-появлении монстра или НЕ-получении предмета их вероятности повышаются с исходных 0.15% до 100%, чтобы опять-таки отсечь бесконечные хвосты графика.

10. Повышенные вероятности пишутся в игровой сейв персонажа (где хранятся те самые таблицы).

Дело в том, что с указанной выше вероятностью в 2.25% вы получили бы предмет в среднем за 40..50 полных зачисток локации (что не так много). Но на бесконечном в ширину графике можно попасть в очень низкий боковой хвост; то есть **априорная вероятность неявно превратится в апостериорную** вероятность последовательности событий -- и число зачисток локации способно теоретически вырасти до бесконечности. А на практике 150 заходов получить легко и обязательно найдётся тот, кому ничего не выпало даже с 400..500 (при исходных предполагаемых геймдизайнером 40..50-ти зачисток). Потом эти несчастные вылазят на форум и начинают там вайнить -- по крайней те из их, кто после сотни-другой фейлов просто сразу не бросил такую игру.

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

Хоты бы просто потому, что не бывает двух Леориков и его корона не должна падать два раза (за исключением разных сложностей игры: нормал, найтмер и хелл).

post-scriptum

Особенно интересно рассмотреть состав любой вещи в игре. Это напрямую относится к Диабло 3.

Если бы мне было необходимо сделать такой же тип дропа, который применяется в Д3, то я бы разделил генерацию *названия вещи* и генерацию её **аффиксов**, сделав их пачкой. По концепции джунк-не-джунк.

1. То есть случайно генерился бы один только джунк на локе (как подробно расписано выше).

2. Дальше после этого в джунк-последовательность вставлялся бы редкий не-джунк (причём его количество зависело бы от парагона).

3. На третьем этапе И джунк И не-джунк вещам генерился бы виртуальный вложенный объект -- тип списка аффиксов (который бывает тоже двух типов: джунк и не-джунк).

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

5. Зависимость от парагона в данном случае буквально и математически означает, что горб колокольчика распределения будет приходится на разные его уровни (этого сАмого парагона).

Если по такой схеме нужно сделать не две градации, а три (допустим, те самые три сложности игры в Диабло 2), то можно замержить между собой списки джунковых аффиксов с нижней сложности на не-джунковые с высшей -- получится нечто среднее, то есть на медианной сложности будут выпадать, скажем так, полу-полезные вещи.

[quote]Я иногда завидую Андертакеру, причем сильно. Иметь математический склад ума и постоянно что-то анализировать, исследовать, создавать.[/quote]

Вот исследовать и понимать все эти вещи для меня тоже и есть эндгейм-контент в Диабло 3. Как для него, наверное.

Исходя из всего вышеизложенного, я реально считаю, что в Диабло 3 дроп попросту недоделан.

Аффиксы -- это префиксы и суффиксы, вместе взятые

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

Допустим, рандом изначально создавал белый (а точнее, бесцветный) меч. Но если на этом мече (тем же рандомом) добавлялось какое-то свойство, то предмет ставился *магическим* и начинал светиться таинственным фиолетовым цветом (скорее всего, по цвету фиалы с маной). А к самой вещи добавлялось свойство, причём каждая приставка имела свою собственную локализацию, которые легко объединять.

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

В итоге этот магический меч, в зависимости от качества изначального условного бесцветного превращался в какой-нибудь синий "superior sword of thorns".

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

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

Добавление третьей характеристики делало меч **золотым**. По легенде, "такие умели делать только мастера древности и всё такое прочее". Добавление четвёртой делало меч коричневым -- таким, на котором потемнело лаже золото. При этом кузнец мог скрафтить вам оранжевый (или рыжий) меч -- данный цвет в дизайне часто означает ощущение новизны.

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

**Что делать, если вам надо больше свойств, а вы уже четыре не можете раздать игроку, т.к. их нереально долго фармить?**

В самом деле, два аффикса (из списка в несколько десятков) получить легко, три -- тяжело (это уже диапазон сотен и тысяч предметов), а четыре это от тысяч до десятков тысяч. Что же говорить о гипотетическом пятом аффиксе, который переводит редкость предмета в диапазон от десяток до сотен(!) тысяч?

Всё очень просто -- и в этом главная причина того, почему я считаю так называемый "умный дроп" в Диабло 3 недоделанным. (Напомню, что "умный дроп" широко рекламировала сама Компания перед стартом Reaper of Souls).

**Если вам нужно больше характеристик, то разделите их на группы!**

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

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

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

дроп, диабло, вероятность, предметы, шансы, diablo, джунк, генерация

Previous post Next post
Up