Существуют формулы для убывающего уравнения возврата; однако, они обычно включают экспоненциальный. Какие есть еще способы придумать такое уравнение? Возьмем, к примеру, следующий контрольный пример: одна ферма производит 10 продуктов питания, на каждые 10 произведенных ферм производительность снижается на 5%.
game-design
mathematics
Extrakun
источник
источник
Ответы:
Для формулировки уравнения убывающей доходности я бы сразу подумал дроби.
Это график
y=1/F
y
будет становиться все меньше и меньшеF
. Это даст вам устойчивый спад, который никогда не достигнет 0. Из этого вы можете преобразовать его, чтобы получить вид кривой, который вы хотите. Использование чисел> 0 всегда даст положительный результат, который никогда не будет 0.Честно говоря, я бы порекомендовал пойти в WolframAlpha и вставить некоторые уравнения и посмотреть на графики, которые он рисует, чтобы увидеть, дает ли он желаемую кривую. Помимо этого, прочитайте линейные и квадратные уравнения, чтобы можно было быстро выяснить, что именно вы хотите изменить в формуле. Это потому, что моделирование графиков с помощью уравнений является большой темой, и если бы я мог объяснить это здесь идеально, я бы сначала продал это объяснение некоторым учителям математики.
В основном, для линейных графиков, помните
y=mx+c
.m
это градиент, и может быть положительным или отрицательным в зависимости от того, что вам нужно, иc
это точка, в которой он перехватываетy axis
.x
ваша входная переменная иy
ваш выход.Это график,
y=mx+c
гдеm=1
иc=0
Для квадратичных графиков это немного усложняется, поэтому я буду немного расплывчатым, и вам придется самостоятельно разбираться со спецификой. Ханская академия - действительно хороший ресурс для обучения этому. Это общего вида
y=ax²+bx+c
.c
это все еще перехват у, и вы можете настроить его, чтобы «поднять» график.a
иb
оба влияют на кривую одинаково, но в разной степени.Это
y=-x²+2x+10
. Обратите внимание на то-x²
, что делает кривую перевернутой.По сути, поиграйтесь с графиками, пока не получите то, что вы хотите, хотя я настоятельно рекомендую почитать об этом больше, если вы хотите быстро и аккуратно спроектировать процесс. Основные уравнения важны для игр и действительно интересны.
Следует также отметить экспоненциальные и логарифмические графы, то есть графы
y=e^x
иy=ln(x)
получить быстро растущие и быстро убывающие графы в зависимости от преобразования. Кроме того, векторы и преобразования полезны, так как они описывают, что вы делаете с «базовым» графом.источник
1/x
. Очевидно , что для такой кривой , вы никогда не хотите ,x
чтобы равняться нулю, хотя!y = a^x
, и вы можете добавить ползунок дляa
воспроизведения с функцией. Вы можете иметь столько, сколько хотите. Вы даже можете анимировать слайдеры. Это довольно мило, на самом деле. (Эквивалент MathematicaManipulate
.)Снижение доходности = уменьшение производной
Так что тебе нужно делать? Выберите функцию, которая соответствует вышеуказанным критериям, и интегрируйте ее.
Самый простой выбор для этой задачи -
g(t,n) = 1/(t+1)^n
гдеn=1
отмечается граница между постоянно растущими и ограниченными функциями.Вам нужен интеграл от 0 до x:
f(x,n) = ((x+1)**(1-n) - 1)/(1-n)
вот как он выглядит для разных
n
И здесь его нормализовано до того же конечного значения
Изменяя показатель степени,
n
вы можете легко отрегулировать балансировку.Примечание: здесь производной является производство на ферму, а интегралом является общее производство для ряда ферм.
источник
Как правило, линейное уравнение начинается с того
y = mx + b
, гдеb
ваше начальное значение иmx
как вы корректируете начальное значение по мереx
увеличения.Таким образом , в первой части вашего уравнения, то
b
, будет ,10
потому что вы хотите фермы , чтобы начать на 10 продуктов питания.Затем, в вашем случае, вы хотите откорректировать еду, производимую каждые десять ферм. Таким образом, вам нужно разделить на десять, чтобы получить уравнение, которое работает для каждых десяти ферм (при условии, что
x / 10
возвращает целое число, то есть13 / 10 = 1
:Итак, наконец, нам нужно выяснить, как мы хотим, чтобы еда менялась для каждой
x / 10
фермы. В вашем случае вы хотите уменьшить его на 0,5 (5% от 10), что является линейным. Итак, мы получаем:Так что для фермы
x = 5
мы получаем5 / 10 = 0, 0 * -0.5 = 0, 0 + 10 = 10
. Для фермыx = 11
мы получаем11 / 10 = 1, 1 * -0.5 = -0.5, -0.5 + 10 = 9.5
, для фермы 23 мы получим 9.0.Тогда вам просто нужно рассчитать общую еду для всех ферм.
Но, возможно, вы на 5%, вы хотели, чтобы оно уменьшилось на 5% от предыдущего значения. То есть
10, 10 * 0.95 = 9.5, 9.5 * 0.95 = 9.025
(в этом случае сумма, которую мы уменьшаем, становится все меньше и меньше). Итак, давайте изменим уравнение.5%
является экспоненциальным увеличением типа, а экспоненциальная формулаy = b*m^x
.У нас все еще есть
b = 10
, и мы должны сделать наше деление на 10 трюков. Так и естьy = 10*m^(x/10)
.m
есть0.95
, так как мы хотим каждый раз брать 95% стоимости. Так что уравнение для фермыx
естьy = 10*0.95^(x/10)
.источник
Подойдет ли линейный убывающий доход? производство на ферму = (1 - (0,05 * (f / 10))) * производительность. Это дает общий пик производства (норма * количество ферм) при f = 100.
источник
Возможно, вы захотите рассмотреть алгоритмическое решение, которое соответствует ситуации.
То есть, подумайте, почему в вашей игровой ситуации есть убытки, и смоделируйте их.
Несколько объектов одного типа могут иметь убывающую отдачу в том случае, если могут существовать другие ресурсы или объекты, от которых они зависят, или которые приводят к узким местам или другим ограничивающим ситуациям, таким как дорожная сеть, или доступные рабочие, или транспорт, или пресная вода или электричество или что-то еще.
В идеальных условиях одна ферма может производить 10 продуктов питания в день, но для этого требуется также два фермерских часа в день. Также требуется одна свежая вода на еду в день, а из собственного колодца можно получить только до 5 воды в день. Остальные должны быть взяты из соседнего ручья или реки или привезены на транспорте. И доставка еды туда, где она должна быть полезной, также может быть проблемой. И т.д. Удалите некоторые или добавьте больше в зависимости от того, что вы хотите изобразить, но это может быть гораздо более интересным и значимым фактором, который добавляет интерес и ценность вашим другим игровым системам, в отличие от искусственной математической формулы, не основанной на других игровых элементах. ,
источник
Если вы хотите, чтобы с обобщенным уравнением можно было возиться, вы можете использовать косинус-график: A * cos (Bx + C) + D
Но измените его на половину периода, чтобы он включал в себя псевдоэкспоненциальный рост в начале, затем короткий период линейного увеличения до конечной убывающей точки возврата. Единственная проблема с этим заключается в том, что потребуется создать непроходимый потолок. Таким образом, после определенного количества ферм вы не увидите увеличения.
На изображении ниже представлен график увеличения темпа в течение 30 минутных тренировок, выполняющих ту же самую тренировку в процессе подготовки. Это, очевидно, не идеально, но вы можете отработать это, чтобы найти то, что вы ищете.
источник