Весь математический анализ здесь очень важен по разным причинам, некоторые из которых применимы к разработке игр.
НО
Это сайт по разработке игр, а не сайт по математике. Итак, давайте обсудим, как эти вещи работают не как алгоритмические ряды, а как наборы , потому что это та математика, которая применима к прокачке в играх, которые вы действительно можете разработать для продажи, и именно эта система лежит в основе большинства (но не всех) прокачки системы (по крайней мере, исторически).
Игроки, как правило, предпочитают красивые круглые числа, которые легко запомнить и визуализировать, и нигде это не является более важным, чем в игровой системе, основанной на уровнях, где игроку требуется X сумм очков опыта, чтобы перейти к уровню Y.
Есть две веские причины для выбора круглых чисел:
- Сам уровень опыта - это хорошее круглое число «100; 200; 1 000 000; и т. Д.»
- Дельта между уровнями имеет тенденцию быть еще одним хорошим круглым числом, на которое игрок может взглянуть и вычислить в своей голове.
Круглые числа приятны. Цель игр - быть приятным. Приятность очень важна, тем более что игровые дилеммы зачастую не очень приятны по дизайну.
Почему это важно иметь в виду?
Большинство алгоритмов составных рядов не дают хороших круглых чисел
Большинство серий не останавливаются на красивой точке (каждый ответ, который я видел здесь до сих пор, продолжается вечно). Так что же нам делать? Мы приближаемся, а затем определяем, какой набор уровней должен применяться к игровой системе .
Как мы узнаем, какие приближения являются подходящими? Мы рассмотрим, в чем смысл прокачки игровой системы.
В большинстве игр есть ограничения уровня, которые в какой-то момент вступают в силу. Есть несколько способов, которыми это может сыграть:
- Ограничение встречается относительно рано, когда система уровней существует только для того, чтобы помочь игрокам пройти первый этап игры целенаправленным образом, чтобы заставить их изучить полную игровую систему. Как только они «полностью выросли», начинается длинная игра.
- Усиление XP против уровня сложности имеет определенную экономию, где да, есть ограничение уровня, но оно настолько далеко, что мы ожидаем, что игроки завершат игру примерно на полпути через график уровней. В ролевых играх в стиле DQ / FF с несколькими персонажами / классами более распространено сделать так, чтобы разные персонажи / классы делались более легкими, получая опыт с разными скоростями, чем изменяя требуемое количество очков опыта для каждого уровня для каждого класса символов . Таким образом, игроки могут легко запомнить милые маленькие круглые числа как универсальные цели и знать, что каждый персонаж движется к ним с некоторой произвольной скоростью, установленной игровой системой (
XP + (XP * Modifier)
или чем-то еще).
- Ограничения уровня основаны на категории внешних персонажей. То есть какой-то фактор вне игровой системы диктует, как выглядит система уровней. Это становится все более распространенным, так как многие игры платные, но бесплатные. Бесплатный игрок может быть ограничен до 70-го уровня, подписчик может быть ограничен до 80-го уровня, одноразовая покупка может продвинуть кого-то на уровень выше некоторого универсального предела и т. Д.
- Ограничения уровня универсальны и так или иначе связаны с игровым миром. Эта система была популяризирована WoW.
- Любая другая система ограничения уровней, которую вы могли бы придумать, которая улучшает игровой процесс более умным способом, чем просто вознаграждение игроков за то, что они потратили больше времени на жизнь в вымышленном мире, чем другие игроки.
Там являются некоторыми игровыми системами , где нет никакого максимального уровня и система алгоритмический определяется. Обычно системы, подобные этой, используют какую-то систему X-powers-of-Y, чтобы числа быстро взрывались. Это позволяет очень легко добраться до уровня L-1, при этом разумно ожидается, что большинство игроков попадут на уровень L, чрезмерно трудно добраться до уровня L + 1, а игроки постареют и умрут до достижения уровня L + 2. В этом случае «L» - это уровень, который, как вы решили, является целевым уровнем, подходящим для игры, и на котором, как правило, он ограничил бы систему, но оставил бы возможность для людей ввести себя в заблуждение, думая, что это хорошая идея для XP навсегда. (Зловещий!) В такой системе математика, найденная здесь, имеет смысл. Но это очень узкий и редко встречающийся случай в реальных играх.
Так что же нам делать?
Рассчитать уровни и XP? Нет . Определить уровни и XP? Да.
Вы определяете, что означают уровни, а затем решаете, какой доступный набор уровней должен быть доступен. Это решение сводится либо к гранулярности в игровой системе (есть ли огромная разница в силе между уровнями? Каждый уровень дает новую способность? И т. Д.), А также используются ли уровни в качестве системы гейтинга («Не могу» ходите в следующий город, пока не достигнете 10-го уровня, детка. ", или в соревновательной лестничной системе применяются уровни на уровне и т. д.).
Код для этого довольно прост, и это просто определение диапазона:
level(XP) when XP < 100 -> 1;
level(XP) when XP < 200 -> 2;
level(XP) when XP < 500 -> 3;
level(XP) when XP < 1000 -> 4;
% ...more levels...
level(XP) when XP > 1000000 -> 70. % level cap
Или с оператором if, или case, или цепочкой if / elif, или с тем языком, который вы используете, поддерживает (эта часть является наименее интересным элементом любой игровой системы, я просто предоставляю два пути, потому что я случайно прямо сейчас в режиме Erlang, и приведенный выше синтаксис может быть не очевиден для всех.):
level(XP) ->
if
XP < 100 -> 1;
XP < 200 -> 2;
XP < 500 -> 3;
XP < 1000 -> 4;
% ...more levels...
XP > 1000000 -> 70 % level cap
end.
Это удивительная математика? Нет, совсем нет. Это ручная реализация определения заданного элемента? Ага. Это все , что есть, и это в значительной степени так , как я видел , что это на самом деле сделано в большинстве игр на протяжении многих лет.
Как примечание стороны, это не должно быть сделано каждый раз, когда игрок получает опыт. Обычно вы отслеживаете «XP to go» как одно значение, и как только игрок исчерпывает или превосходит «to go» значение (в зависимости от того, как вы это делаете), вы вычисляете это один раз, чтобы выяснить, где игрок на самом деле at, сохраните это, вычислите следующее «идти» минус остаток (если перенос XP вперед разрешен) и повторите.