Фон
Предположим, что у нас есть игра, в которой монстры и оружие генерируются "случайно".
A оружие можно определить так:
- тип: топор (1.2) / меч (1.4) / копье (1) / дубина (0.7)
- диапазон: 1 - 3
- магия: лед (10) /огонь (10) / нет (1)
- состояние: резкое (2) / нормальное (1) / тусклое (0,5)
Некоторые из этих значений могут иметь зависимости (например, типи дальность).
Используя генератор случайных чисел, мы можем получить, например, Тупой Топор Огня (диапазон 2) .Тогда у нас может быть формула, которая вычисляет уровень этого оружия.Пример формулы:
level = floor(type * range * magic * state)
У тупого Топора Огня (диапазон 2) будет тогда уровень floor(1.2 * 2 * 10 * 0.5) = 12
.
Простой, но приятный!
У нас также может быть мир , где игрок все глубже и глубже опускается в опасные пещеры, начиная с пещерного уровня 1.
Вопрос
Допустим, игрок находится на уровне пещеры 12. (S) он вошел в комнату, где мы хотим поместить оружие в сундук.
Какой будет хороший алгоритм для создания уровня 12оружие? (или любой другой уровень конечно)
Т.е. у нас есть уровень и мы хотим использовать вычисление уровня (наш простой или другой более сложный) в обратном направлении для генерациихорошие значения для различных элементов оружия.
Небольшие или существенные изменения в определении оружия могут быть внесены для облегчения лучшего решения.
РЕДАКТИРОВАТЬ:
Похоже, * 1057Решение * High Performance Mark является лучшим, если набор комбинаций достаточно ограничен.Если нет, или если у нас есть непрерывные значения и «неограниченный» набор комбинаций, один из других ответов может быть более подходящим.Я говорю «может», поскольку, возможно, справочную таблицу можно использовать даже в непрерывной версии для подмножества значений, чтобы выбрать хорошую начальную точку, а затем можно добавить небольшую случайную дельту для заполнения.
Пример: диапазон непрерывен от 10 до 200. Таблица поиска содержит значения (10, 20, 30, ..., 190, 200).Алгоритм выбирает 110 для диапазона, а затем добавляет к нему случайное число (-5,0, 5,0) для конечного значения, скажем, 108,72.Тогда конечный уровень оружия будет достаточно близок к желаемому значению.Как это звучит?