Khi làm bài toán và giải cho Level
điều kiện dựa trên kinh nghiệm XP
, chúng tôi có được:
Level=1+1+8×XP÷50−−−−−−−−−−−−−√2
Ví dụ: cấp độ của người chơi cho bao nhiêu?XP=300
1+1+8×300÷50−−−−−−−−−−−−−√2=4
Như yêu cầu.
Hoặc, mức độ là XP = 100000
gì?
1+1+8×100000÷50−−−−−−−−−−−−−−−−√2=63
Nói chung hơn, cho một ngưỡng bắt đầu tùy ý ở Cấp 1:
Level=1+1+8×threshold÷50−−−−−−−−−−−−−−−−−−√2
Bạn cũng có thể làm ngược lại và tính toán mức XP
cần thiết cho bất kỳ cấp độ nào bằng cách giải công thức trên cho XP.
XP=(Level2−Level)×threshold2
Lưu ý rằng công thức trên hoạt động với phân số nhưng bạn cần làm tròn xuống giá trị số nguyên tiếp theo. Ví dụ: trong C ++ / C # bạn có thể sử dụng Cấp độ (int).
Để thu được công thức dạng đóng ở trên, tôi đã sử dụng các phương trình sai khác, tổng Gauss và công thức bậc hai.
Nếu bạn quan tâm đến giải pháp của công thức này từng bước ...
Chúng tôi thực hiện một thuật toán đệ quy bằng cách bắt đầu xem xét cuối cùng Experience(next_level) = Experience(current_level) + current_level*50
.
Ví dụ: để thu được ta có:XPLevel3
XPLevel3=XPLevel2+2×50
Trường hợp, 2*50
xuất phát từ yêu cầu của OP rằng kinh nghiệm cần thiết để đạt cấp độ tiếp theo là cấp độ hiện tại * 50.
Bây giờ, chúng ta thay thế bằng logic tương tự vào công thức. Đó là:XpLevel2
Thay thế vào công thức trên:XPLevel2=XPLevel1+2×50
XpLevel3=XpLevel1+1×50+2×50
và chỉ là 50, đó là điểm khởi đầu của chúng tôi. Vì thếXpLevel1
XpLevel3=50+2×50=150
Chúng ta có thể nhận ra một mô hình để tính toán đệ quy các mức cao hơn và một chuỗi tổng kết hữu hạn.
XpLevelN=50+2×50+3×50+...+(N−1)×50=∑i=0n−1i×50
Trong đó N là mức cần đạt được. Để có được XP cho cấp độ N, chúng ta cần giải quyết cho N.
XpL e v e l N÷ 50 = Σi = 0n - 1tôi
Bây giờ, phía bên tay phải chỉ đơn giản là một tổng kết từ 1 đến N-1, có thể được biểu thị bằng tổng kết Gaussian nổi tiếng N× ( N+1)÷2−N. Hence
XpLevelN÷50=N(N+1)÷2−N
or just
2∗(XpLevelN−50)÷50=N(N+1)−2N
Finally, putting everything on one side:
0=N2−N−2×XpLevelN÷50
This is now a quadratic formula yielding a negative and positive solution, of which only the positive is relevant as there are no negative levels. We now obtain:
N=1+1+4×2×XpLevelN50−−−−−−−−−−−√2
The current level conditional on XP and linear threshold is therefore:
Level=1+1+8×XP÷threshold−−−−−−−−−−−−−−−−−−−√2
Note Knowing these steps can be useful to solve for even more complex progressions. In the RPG realm you will see besides a linear progression as here, the actually more common fractional power or square relationship, e.g. Level=XP√5.0. However, for game implementation itself, I believe this solution to be less optimal as ideally you should know all your level progressions beforehand instead of calculating them at runtime. For my own engine, I use therefore pre-processed experience tables, which are more flexible and often faster. However, to write those tables first, or, to just merely ask yourself what XP
is needed to, let's say, obtain Level 100
, this formula provides the quickest way aimed at answering the OP's specific question.
Edit: This formula is fully working as it should and it outputs correctly the current level
conditional on XP
with a linear threshold progression as requested by the OP. (The previous formula outputted "level+1" by assuming the player started from Level 0, which was my erring--I had solved it on my lunch break by writing on a small tissue! :)