Jan Dvorak menunjukkan fungsi eksponensial dalam komentar. Saya akan jelaskan di sini.
Perhatikan bahwa operasi eksponensial (dan trigonometri) jauh lebih mahal secara komputasi daripada operasi akar kuadrat, yang itu sendiri jauh lebih buruk daripada matematika dasar, jadi Anda mungkin lebih baik dengan pendekatan Adam jika Anda akan melakukan perhitungan ini berkali-kali per detik . Jika Anda hanya menghitung nilai saat level pemain, mengganti peralatan, dll., Kecepatan tidak penting, jadi gunakan apa pun yang memberi Anda kurva terbaik.
Fungsi eksponensial adalah beberapa dasar, B , untuk beberapa kekuatan, x , y=B^x
. Matematikawan biasanya menggunakan basis e , (~ = 2.718), tetapi tidak ada alasan Anda tidak dapat menggunakan 2 atau 10 jika Anda mau.
y=e^x
terlihat seperti ini:
Perhatikan sisi kiri bergerak secara asimpot ke 0. Jadi kita dapat membalik sumbu x dengan melakukan y=e^(
-x)
, tetapi masih turun dari 1 ke 0 dan kami ingin naik. Jadi kita bisa membalikkan sumbu y dengan y=
-e^(-x)
. Sekarang naik dari -1 ke 0. Kita bisa menambahkan 1 untuk mendapatkan y=
1- e^(-x)
dan naik dari 0 ke 1.
Dari sini, itu hanya masalah penskalaan secara vertikal dan horizontal. Kita dapat mengalikan semuanya dengan beberapa nilai, sebut saja A , yang menetapkan batas asimptotik. Kemudian kita dapat mengalikan x dengan nilai laju perubahan, k , untuk menyesuaikan seberapa cepat itu mendekati batas.
Ini memberi kita persamaan akhir dari y=A*(1 - e^(-k*x))
. Dengan menggunakan nilai k=0.012
dan A=0.5
, kita dapat menetapkan batas menjadi 50% dan membiarkannya mendekati batas sekitar itu x=400
.
Sekarang, Anda dapat membuat beberapa penyesuaian untuk ini. Satu tweak yang saya buat berubah menjadi A=0.5041
, jadi jika kita membulatkan persentase dengan 2 desimal (seperti 32,23%), y (399) = 49,99% dan y (400) = 50,00%. Dari y (347) dan seterusnya, ada beberapa tempat di mana dibutuhkan dua poin untuk mendapatkan perubahan 0,01%. Tetapi poin terakhir yang mungkin masih memberikan (hampir) manfaat nyata, dan membawanya ke bahkan 50%.
Sebagai alternatif, kita dapat mengubah k
nilai untuk memiliki efek yang serupa. Pada k=0.02305
, putaran nilainya menjadi 49,99% pada y=399
dan 50,00% pada y=400
. Namun, ini memiliki masalah bahwa grafiknya sangat dangkal di akhir - dibutuhkan 48 poin untuk mendapatkan seperseratus persen terakhir (dari y(352)=49.99%
ke y(399)=49.99%
ke y(400)=50.00%
) dan peluang krit 1% terakhir membutuhkan 230 poin (dari y(170)=49.01%
ke y(400)=50.00%
) yang mungkin agak terlalu berkurang pada pengembalian.
Jika Anda mau, Anda bisa menyesuaikan A dan k sehingga berkurang ke batas yang agak lebih tinggi pada laju yang lebih lambat, untuk memberikan sesuatu antara peluruhan linier dan eksponensial. Melakukan y=0.6*(1-e^(-0.00447*x))
, Anda berakhir dengan ini:
Perhatikan bahwa kurva terus melewati 50%, tetapi karena ada batas keras peringkat 400, pemain tidak bisa melewati titik itu (dan jika mereka berhasil melewatinya, masih ada batas keras 60% krit). Dengan persamaan ini, Anda dapat menggunakan 1 tempat desimal dan masih melihat keuntungan setiap 2 hingga 3 poin, dengan centang terakhir dari y(399)=49.9%
hingga y(400)=50.0%
.
Secara matematis, persamaan sebelumnya mungkin tampak lebih baik, karena mereka sebenarnya mendekati 50%, tetapi saya pribadi berpikir kenaikan 0,1% setiap pasangan poin terasa lebih baik daripada kenaikan 0,01%. Bahkan dengan A=0.05041
dan k=0.012
, dibutuhkan 102 poin untuk beralih dari y(298)=49.00%
menjadi y(400)=50.00%
. 25% dari poin Anda menghabiskan 2% dari kritik Anda mungkin terlalu berkurang. Persamaan 60% hanya membutuhkan 20 poin untuk persen terakhir (yang masih 5 kali lebih tinggi dari 4 poin yang dibutuhkan untuk persen pertama).
Dengan beberapa persamaan terakhir ini, saya hanya menyambungkan persamaan ke dalam spreadsheet dan nilai tweak secara manual hingga terlihat bagus. Anda harus melakukan hal serupa jika menginginkan topi yang berbeda.