Tôi đang phát triển một trò chơi chiến đấu văn bản đơn giản và gặp một số vấn đề khi tính toán số tiền XP nên kiếm được sau một trận chiến, có một vài yếu tố mà tôi muốn xem xét:
1) Người chơi tất nhiên nên kiếm được XP tốt nếu họ đánh bại ai đó cùng cấp
2) Người chơi nên kiếm được XP tuyệt vời nếu họ đánh bại ai đó ở cấp độ cao hơn
3) Người chơi nên kiếm XP kém nếu đánh bại ai đó ở cấp thấp hơn
4) Ở trên nên chia tỷ lệ độc đáo, tức là nếu người chơi A ở cấp 10 và chiến đấu với Người chơi B, cấp 9 hoặc 11, sự khác biệt không nên lớn (tất nhiên họ sẽ nhận được nhiều XP hơn khi đánh bại nhân vật cấp 11 nhưng chúng tôi sẽ không mong đợi điều này là rất lớn), nhưng nếu anh ta chiến đấu ở cấp độ 5 hoặc 15 thì sự khác biệt này sẽ rất lớn.
Chỉ gặp khó khăn khi tính toán một cái gì đó hoạt động tốt trong tất cả các kịch bản, hiện tại bảng XP của tôi trông như dưới đây:
Current Level XP Needed Increase from Last Level
1 30 0
2 65 35
3 106 41
4 154 48
5 210 56
...
10 672 123
Trong PHP, mã của tôi trông giống như bên dưới để tính XP cần thiết:
$offset = 30;
$multiplier = 1.17;
$base = $prevXp * $multiplier;
$xp = $base + $offset;
Tôi đã thử một vài thứ khác nhau nhưng tôi không ấn tượng với bất kỳ thứ nào trong số chúng, tôi muốn làm việc với việc tính toán sự khác biệt trong XP và sau đó sử dụng một số loại nhân nhưng tôi không ấn tượng với kết quả.
Bất kỳ trợ giúp / đầu vào sẽ được đánh giá cao.