Ян Дворак в коментарі вказує на експоненційну функцію. Я поясню це тут.
Зауважте, що експоненціальні (і тригельні) операції значно дорожче обчислювальних, ніж навіть квадратні кореневі операції, які самі по собі набагато гірші, ніж основна математика, тому вам, мабуть, краще з підходом Адама, якщо ви будете робити ці обчислення багато разів в секунду . Якщо ви просто розраховуєте значення, коли рівень гравця, зміна обладнання тощо, швидкість не важлива, тому використовуйте все, що дає найкращу криву.
Експоненціальна функція певний грунт, Б , в деякій мірі, х , y=B^x
. Математики зазвичай використовують базу e , (~ = 2.718), але немає причин, якщо ви не хочете використовувати 2 або 10.
y=e^x
виглядає так:
Зверніть увагу , що ліва сторона asympotically рухається в 0. Таким чином , ми можемо перевернути вісь х, роблячи y=e^(
-x)
, але це все ще спускався від 1 до 0 , і ми хочемо його піднятися. Тож ми можемо перевернути її по осі у за допомогою y=
-e^(-x)
. Тепер він зростає від -1 до 0. Ми можемо додати 1, щоб отримати y=
1,- e^(-x)
і це зростання від 0 до 1.
Звідси просто питання масштабування її вертикально та горизонтально. Ми можемо помножити всю річ на якесь значення, назвемо це A , що задає асимптотичну межу. Тоді ми можемо помножити x на значення швидкості зміни k , щоб відрегулювати, як швидко він закривається на межі.
Це дає нам остаточне рівняння y=A*(1 - e^(-k*x))
. Використовуючи значення k=0.012
і A=0.5
, ми можемо встановити обмеження на 50% і дозволити йому наблизитися до цієї межі навколо x=400
.
Тепер ви можете зробити декілька підправлень до цього. Один твіт, який я зробив, змінився A=0.5041
, тому якщо ми округлимо до відсотка 2 десяткові дроби (наприклад, 32,23%), у (399) = 49,99% і у (400) = 50,00%. Від y (347) далі є кілька місць, де потрібно два бали, щоб отримати зміну 0,01%. Але останній можливий момент все-таки дає (ледь) відчутну користь і приводить її до навіть 50%.
Крім того, ми могли налаштувати k
значення, щоб мати подібний ефект. Окрім того k=0.02305
, величина становить 49,99% y=399
та 50,00% y=400
. Однак у цьому проблема полягає в тому, що графік в кінці дуже дрібний - для отримання останньої сотої частини відсотка (від y(352)=49.99%
до y(399)=49.99%
до y(400)=50.00%
) потрібно 48 очок, а останній критичний шанс на 1% приймає колосальні 230 балів (від y(170)=49.01%
до y(400)=50.00%
) що, мабуть, трохи зменшує прибуток.
Якщо ви хотіли, ви можете налаштувати як A, так і k, щоб зменшити його до дещо вищої межі з меншою швидкістю, щоб дати щось між лінійним та експоненціальним розпадом. Виконуючи це y=0.6*(1-e^(-0.00447*x))
, ви закінчуєте це:
Зауважте, що крива триває минуле 50%, але оскільки існує жорсткий межа рейтингу 400, гравець не може пройти цю точку (і якщо їм все-таки вдасться її пройти, все ще існує жорстка межа 60% критики). За допомогою цього рівняння ви можете використовувати 1 десяткове місце і все ще бачити приріст кожні 2 - 3 бали, остаточним галочкою від y(399)=49.9%
-y(400)=50.0%
.
Математично більш ранні рівняння можуть здатися кращими, оскільки вони насправді наближаються до 50%, але я особисто думаю, що приріст 0,1% на кожну пару балів почуває себе краще, ніж приріст 0,01%. Навіть з A=0.05041
і до k=0.012
цього потрібно 102 бали, щоб перейти з y(298)=49.00%
до y(400)=50.00%
. 25% ваших балів витрачаються на 2% від вашого критичного, ймовірно, занадто зменшене. Рівняння 60% займає лише 20 балів за останній відсоток (що все ще в 5 разів перевищує 4 бали, необхідні для першого відсотка).
За допомогою цих останніх кількох рівнянь я просто підключив рівняння до електронної таблиці та змінив значення вручну, поки вони не виглядали добре. Вам потрібно було б зробити щось подібне, якби ви хотіли іншу шапку.