Псевдослучайные последовательности

Пускай в некоторой игре есть монстр — ящер, и, охотясь на него, можно получить его шкуру. В общем случае здесь есть два варианта:
1) шкура дается за каждого ящера;
2) шкура дается за нескольких ящеров.

Естественно, ящеры и шкуры — это только пример, речь не только о монстрах и охоте.

Так вот, в первом варианте все просто, если в игре нет никаких охотничьих навыков — но если навык, отвечающий за снятие шкур, есть, предсказать его поведение уже сложнее. (Очень может быть, что подобный навык может оказаться либо однозначно нужным или однозначно ненужным. При этом, если такой навык можно относительно легко получить в процессе игры, или если «снятие шкур» является дополнением к какому-нибудь другому навыку, то все нормально. Если же игрок в самом начале выбирает навыки персонажу, ситуация гораздо сложнее.) Кроме этого, нам может хотеться, чтобы игрок всегда мог получить шкуру, независимо от навыков персонажа.

Переходим ко второму варианту. Здесь несколько способов:
А. За ящера дается шкура с некоторым шансом. Например, 20% если нету навыка снятия шкур, 50% — если есть. Все просто.
Б. Тоже что и А, только шанс зависит от псевдослучайных чисел. Под этим я подразумеваю то, что если сохранить игру, проделать некоторые действия, результат которых случаен, а потом загрузить игру и проделать те же самые действия, результат будет тем же.
(В обоих способах навык охоты увеличивает шанс получения шкуры. Также, способы А и Б можно считать традиционными.)
В. Получение шкур зависит от предварительно заданной последовательности чисел. Пускай для ящеров задана такая последовательность: 3,4,7,5,4. Тогда, убив третьего ящера, игрок получит его шкуру. Следующую шкуру он получит, убив еще четверых. И так далее. Навык охоты в этом случае уменьшает числа в последовательности.
Частный случай такой последовательности — одно число. Например, шкура всегда дается за пятерых ящеров. Последовательности длиннее нужны для того, чтобы получение шкур выглядело случайным.

Я уже писал раньше, что сохранения — слишком сложная для меня тема, и я не готов ее пока разбирать. Однако тут можно вспомнить пещеру с драконом в начале Might and Magic 7 — воистину, этот момент можно считать каноническим примером сейв-лоадов. Одно из самых первых заданий: героям нужно забраться в логово дракона, забрать оттуда два предмета и убежать. При этом, если очень постараться, дракона можно убить. Подобрав его труп, вполне возможно, вы получите жалкий красный реагент, а может быть, и вообще ничего. Если же сохранить игру перед взятием трупа, с дракона можно собрать вообще любое количество предметов, в том числе и уникальных.

Хотелось бы, чтобы награда за такого сложного дракона была приличной. Однако потом, когда персонажи будут сражаться с драконами без особого труда, а самих драконов будет много, получать разнообразные предметы (и иногда не слишком ценные) будет уже нормальным. Последовательность получения предметов может быть применена и здесь, но в несколько ином виде. Выглядеть она будет примерно так: артефакт 1, предмет 1, предмет 2, ничего, предметы 3 и 4, артефакт 2, ничего (и так далее, последовательность для драконов все-таки должна быть длинной).

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









Смотрите также:

No related posts.