Одна из трудностей, с которыми я всегда сталкивался при разработке игр, - это решить, как использовать очки опыта, связанные с получением уровня. Похоже, что во многих играх, в которые я играл, нет никакого способа получить уровень, поэтому я предполагаю, что у них есть статическая словарная таблица, которая содержит очки опыта по сравнению с уровнем. например
Experience Level
0 1
100 2
175 3
280 4
800 5
... Не существует рифмы или причины, по которой 280 очков соответствуют уровню 4, это просто так.
Я не уверен, как эти уровни решаются, но это определенно не будет динамичным. Я также подумал о возможности экспоненциальных уровней, так как не нужно вести отдельную таблицу поиска, например
Experience Level
0 1
100 2
200 3
400 4
800 5
1600 6
3200 7
6400 8
... но кажется, что он довольно быстро выйдет из-под контроля, так как к верхним уровням враги в игре должны будут предоставить колоссальное количество опыта для уровня - и это будет трудно контролировать. Выравнивание станет невыполнимой задачей.
У кого-нибудь есть какие-либо указатели или методы, которые они используют, чтобы решить, как выровнять персонажа на основе опыта? Я хочу быть честным в прокачке уровней и опережать игроков, чтобы не беспокоиться о постоянном добавлении новых поисков опыта / уровней.
источник
f'(x) = c*f(x)
) . Термин «геометрический» используется, когда домен (входной) является дискретным (например, целое число). Формула для примера @ George, выше уровня 1Experience = 100 * 2^(Level-2)
, имеет экспоненциальный характер. Формула вашего прогресса выше уровня 1Experience = 100^(Level-1)
также экспоненциальная.Ответы:
Довольно часто используется квадратное отношение.
level = constant * sqrt(XP)
Или приблизительный эквивалент линейно увеличивающегося разрыва уровня.
Эти системы работают довольно хорошо, когда усиление XP примерно линейно. Если персонаж высокого уровня может заработать XP быстрее, чем персонаж низкого уровня, то это неправильная система.
источник
Вы, вероятно, найдете полезными логарифмические функции, так как они могут быть использованы для замедления роста по мере увеличения опыта. Вот две веб-страницы, которые объясняют, как они работают:
Графики логарифмических функций
http://www.analyzemath.com/Graphing/GraphLogarithmicFunction.html
Введение в построение графиков логарифмических функций
http://www.purplemath.com/modules/graphlog.htm
Вот как это выглядит на графике, который, мы надеемся, будет соответствовать вашим потребностям:
источник
level = log(XP) <=> XP = e^level
, Требование может оказаться немного крутым для последних уровней, но оно будет работать нормально с подходящим ростом накопления XP.Вот несколько способов, которые я использовал до сих пор. Они отсортированы по скорости роста (просто умножьте каждое уравнение на постоянное значение):
exp = level (эта игра может показаться странной, но в некоторых играх награда exp изменяется в зависимости от уровня игрока, например, на приграничных землях)
exp = level * log 10 (level)
exp = level ^ const_value: для моего примера я установил значение const равным 3/2
источник
Я думаю, это зависит от того, насколько легко игрок может получить опыт. Если игрок может получить 200 очков опыта на уровне 1 за 20 минут, а затем получить 200 очков опыта на уровне 2 за 2 минуты, то вам необходимо экспоненциально увеличить масштаб своего опыта.
Однако, если получение уровня лишь незначительно облегчает получение XP, то вам следует выполнить функцию XP с более высоким уровнем. (Может быть линейным с некоторым коэффициентом> 1)
источник
Часто точки, необходимые для получения уровня, основаны на кривой. Во многих ролевых играх, где есть также много других характеристик и атрибутов вашего персонажа, которые увеличиваются с вашим уровнем, они также будут на своих кривых.
Взгляните на RPGMaker, чтобы увидеть, как они работают. В частности, посмотрите на кривые параметров на скриншотах раздела «Добавьте некоторую уникальность путем настройки стартового оборудования» документа « Создание главного персонажа» .
По сути, у вас может быть кривая того, сколько XP требуется для повышения уровня, тогда разные кривые того, сколько HP, MP, выносливости, силы и т. Д. Получено на каждом уровне.
источник
Учитывать время
Сначала вам нужно выяснить, как скорость получения опыта зависит от уровня. Затем вы можете настроить свой уровень в зависимости от времени . Если каждый дополнительный уровень позволяет вам получать опыт в два раза быстрее, и вам нужно в два раза больше опыта, чтобы выровнять уровень, каждый уровень потребует одинакового количества времени.
Я предлагаю подумать о том, сколько времени игрок должен потратить, а затем адаптировать уровень к этому.
источник
Может быть, я должен просто использовать плоскую систему выравнивания, где каждый уровень потребует одинакового количества опыта.
источник