Tôi muốn nói rằng nó phụ thuộc, ít nhất là một phần, vào loại trải nghiệm bạn muốn tạo cho người chơi. Hãy xem xét hai ví dụ, trong đó đầu tiên là một game nhập vai đánh theo lượt cổ điển, thứ hai là một game bắn súng loại Gradius III , trong đó bạn muốn sức mạnh của người chơi mở rộng dựa trên tiến trình kể từ khi anh ta chết trong danh sách, không phải trên powerups (không phải để nói rằng đó là một hệ thống tốt, chỉ là một ví dụ).
Trong trường hợp của game nhập vai, hệ thống của bạn có thể hoạt động dựa trên giả định rằng người chơi không bao giờ mất kinh nghiệm. Tương tự như vậy, có lẽ họ sẽ muốn hành động dựa trên giả định rằng việc đạt được mức độ thành thạo một thứ gì đó tương đối dễ dàng, nhưng khó để làm chủ nó (giống như hầu hết mọi thứ trong thế giới thực). Trong trường hợp này, bạn có thể muốn phát triển một công thức (như coderanger đã đề xuất) theo cấp số nhân trong một số vấn đề. Trường hợp số lượng kinh nghiệm cần thiết để đạt đến cấp độ tiếp theo bằng cách nào đó theo cấp số nhân dựa trên cấp độ hiện tại của bạn. Điều quan trọng cần xem xét, tuy nhiên tốc độ mà người chơi của bạn sẽ nhận được kinh nghiệm trong khi chơi. Chẳng hạn, một người chơi giết một Fire Demon cấp 63 sẽ mong nhận được nhiều kinh nghiệm hơn cho việc giết anh ta hơn là anh ta đã giết được một Lady Bug cấp 2. Vì vậy, khi thiết kế công thức của bạn, hãy chắc chắn rằng bạn tính đến hệ thống XP của bạn. Đặc biệt là nếu bạn không làm như vậy, thì việc giết bọ bọ sẽ có lợi như giết những kẻ thù khó hơn.
Ví dụ 1 (Có thể không phải là biểu mẫu bạn sẽ sử dụng): XP_TO_LEVEL = ((CURRENT_LEVEL + 1) ^ SCALE) * XP_BASE
Ví dụ 2: XP_TO_LEVEL = (XP_BASE * CURRENT_LEVEL) ^ SCALE
Trong đó XP_TO_LEVEL là XP cần thiết để đạt cấp độ tiếp theo. CURRENT_LEVEL là cấp độ hiện tại của người chơi. XP_BASE là một số tùy ý để quyết định mỗi cấp có giá trị bao nhiêu trong XP. SCALE là số mũ xác định mức độ nhanh chóng để nhân rộng XP cần thiết để lên cấp. Nếu SCALE là 1 thì mỗi cấp sẽ có trải nghiệm XP_BASE. Nếu SCALE nhỏ hơn 1 thì mỗi cấp sẽ mất ít kinh nghiệm hơn cấp trước. Nếu SCALE lớn hơn 1 thì mỗi cấp sẽ có nhiều kinh nghiệm hơn cấp cuối cùng.
Bảng sau đây giả sử SCALE là 1.1 và XP_BASE là 100 bằng ví dụ 2.
Current Level XP Needed Increase from Last Level
1 158 0
2 339 181
3 530 191
4 728 198
5 930 202
...
10 1995 218
Ví dụ 3: XP_TO_LEVEL = ((CURRENT_LEVEL * SCALE) ^ 1.5) * XP_BASE
Trong đó SCALE vẫn đang xác định mức độ nhanh để chia tỷ lệ XP_TO_LEVEL, nhưng nó hoạt động hơi khác một chút.
Bảng sau đây giả sử SCALE là 22 và XP_BASE là 10 bằng ví dụ 3.
Current Level XP Needed Increase from Last Level
1 28 0
2 80 52
3 146 66
4 226 80
5 316 90
...
10 894 130
Trong trường hợp bản sao Gradius, bạn có thể thực hiện một chiến lược khác. Bạn có thể muốn người chơi tăng cấp liên tục, nói cứ sau hai phút. Ngoài ra, sau khi một vở kịch bị mất mạng và do đó mất tất cả sức mạnh có được của anh ta, bạn có thể muốn giúp anh ta bằng cách tăng cấp cho anh ta / cô ta nhanh hơn cho đến khi anh ta đạt được một mức độ phù hợp cho sự tiến bộ của mình thông qua trò chơi. Trong trường hợp này, công thức của bạn có thể sẽ tuyến tính hơn, đặc biệt là khi người dùng không nhận được bao nhiêu kinh nghiệm anh ta nhận được mỗi lần giết. Một cái gì đó giống như, phải mất 50 XP để đạt đến cấp độ mới và mỗi kẻ thù có giá trị 1 XP. Điều này hoạt động rất tốt với điều kiện bạn đang cung cấp cho anh ta một luồng kẻ thù tương đối ổn định. Nhưng, khi người chơi chết, anh ta mất tất cả! Bây giờ bạn làm gì Mỗi kẻ thù nên có giá trị lớn hơn 1 XP để đáp ứng mục tiêu bắt kịp anh ta để trò chơi được công bằng trở lại.
Ví dụ: XP_FROM_EACH_ENEMY = BASE_XP + (CURRENT_LEVEL - DESIRED_LEVEL) Trong đó XP_FROM_EACH_ENEMY là bao nhiêu XP mà kẻ thù sẽ thưởng khi bị giết. BASE_XP theo mặc định, kẻ thù có giá trị bao nhiêu XP (có thể thay đổi theo loại kẻ thù). CURRENT_LEVEL là cấp độ của người chơi DESIRED_LEVEL là cấp độ mà bạn nghĩ người chơi nên ở.