Во многих играх вы повышаете уровень, когда набираете определенный счет, и более поздние уровни труднее достичь, чем в начале.
Я подозреваю, что это какая-то экспоненциальная функция, которая используется, например, в WoW.
Кто-нибудь знает хорошую экспоненциальную функцию для этой цели?
mathematics
software-engineering
levels
leaderboards
Сандра Шлихтинг
источник
источник
Ответы:
Там нет никаких стандартов, и нет никаких причин для этого. Похоже, людям нравится экспоненциальный рост, поскольку он заставляет их чувствовать, что они становятся все более сильными и сталкиваются с пропорционально более сложными задачами каждый раз, но на самом деле это верно только в том случае, если способ, которым вы набираете баллы, также не изменяется пропорционально, а также , Если опыт опыта за победу возрастает с той же скоростью, что и опыт опыта за уровень, то нет никакого смысла в повышении - они оба могут просто оставаться постоянными.
Кроме того, это означает, что вы не можете просто выбрать функцию для того, как вы хотите, чтобы ваша кривая опыта проходила, не зная, как вы хотите, чтобы накопление опыта происходило. И это решение по дизайну игры, основанное на том типе опыта, который вы хотите, а не тот, который мы можем предоставить для вас.
Тем не менее, чтобы ответить на ваш вопрос: тип функции, которую вы видели в другом месте, просто что-то вроде этого, тривиальный полином с масштабным коэффициентом:
threshold_for_next_level = x * current_level y
Типичные значения могут быть х = 1000, у = 1,5. например:
Если вы хотите, чтобы уклон был круче, вы увеличиваете y. Если вы хотите, чтобы числа были больше, вы увеличиваете x.
Возможно, вы захотите иметь более округлые числа, и в этом случае просто в итоге получите до 2 или 3 значащих цифр или до ближайшей тысячи, как вам угодно.
Просто помните, что эти ценности бессмысленны в изоляции. Если для перехода с 15-го на 16-й уровень требуется 15000 опыта, то вы должны убедиться, что ваш игровой дизайн делает практичным, чтобы персонаж 15-го уровня набирал 15000 очков опыта во время обычной игры. Нет смысла просто настраивать кривую после тестирования, потому что это, как правило, занимает слишком много времени - вы должны начать с кривой, которая соответствует наградам, которые ваша игра выдает таким образом, который соответствует вашему предполагаемому дизайну.
источник
Мориа / Ангбанд (и все их побочные продукты, включая - по сомнению - Diablo) основывают свои системы на сопоставлении уровня монстров с уровнем игрока, чтобы увидеть, что вы зарабатываете, с повышением требований к уровню XP за пределы этого.
В Diablo есть оптимальные уровни монстров, которых вы можете убить, в пределах 5 уровней от вас как положительные, так и отрицательные. Это выглядит примерно так (извиняюсь, если это не так, фанаты Diablo):
Примеры для персонажа Уровень 16: Уровень монстра A: 16. Получите 100% от базового опыта монстра. Уровень монстра B: 13. Получите 40% от базового опыта монстра. Уровень монстра C: 20. Получите 20% от базового опыта монстра. Уровень монстра D: 23. Получите 0% от базового опыта монстра.
В Angband (модель, которую я предпочитаю) это примерно так:
Поэтому, если вы убили монстра 50-го уровня, когда вы были 5-го уровня, вы получили бы в 10 раз больше опыта, чем персонаж 50-го уровня, убивший того же монстра. Мне нравится это, это высокий риск, высокая награда. Я потерял тысячи и тысячи персонажей в Ангбанде из-за этого. Но те, кто делают это, ну, они легендарные. Думаю, однажды я сразу же достиг уровня 29 с уровня 1;) Аналогично, персонаж 50-го уровня, убивший монстра 5-го уровня, получит 1/10 от XP, полученного персонажем первого уровня за убийство этого монстра. Кроме того, поскольку базовые XP также повышаются, это означает, что убийство низкоуровневого монстра все еще может принести вам некоторую награду, но зайти слишком далеко и стать совершенно бессмысленным.
В обеих играх они дополнительно используют необходимые множители для XP (в возрастающем масштабе), и соотношение между этим и оптимальным уровнем, полученным для монстра XP, постепенно становится круче.
Простейшей формой этой идеи является следующее. Решите, сколько монстров одного уровня с вами, вы должны убить каждый уровень, чтобы получить оценку (игнорируя награды за квесты и т. Д.). Допустим, 100 - независимо от вашего уровня. Скажите, что если игрок убил монстра равного уровня с собой, он получает 1XP.
Используя формулу, подобную Angband, чтобы вознаграждать увеличение и уменьшение в соответствии с уровнем монстра, ваша таблица выравнивания линейна:
...И так далее. Я считаю, что это самая легкая отправная точка - подстройка в зависимости от ситуации, включение базовых очков опыта монстров, отсечки уровней и т. Д. К вашему сердцу.
источник