Thuật toán tính toán động một cấp dựa trên điểm kinh nghiệm? [đóng cửa]


41

Một trong những cuộc đấu tranh mà tôi luôn gặp phải trong quá trình phát triển trò chơi là quyết định cách triển khai các điểm kinh nghiệm được cho là để đạt được cấp độ. Dường như không có một mô hình nào để đạt được cấp độ trong nhiều trò chơi tôi đã chơi, vì vậy tôi cho rằng họ có một bảng từ điển tĩnh chứa điểm kinh nghiệm so với cấp độ. ví dụ

Experience   Level
0            1
100          2
175          3
280          4
800          5

... Không có một vần điệu hoặc lý do tại sao 280 điểm bằng với cấp 4, nó chỉ là.

Tôi không chắc những mức đó được quyết định như thế nào, nhưng chắc chắn nó sẽ không năng động. Tôi cũng đã nghĩ về khả năng của cấp số mũ, vì không phải giữ một bảng tra cứu riêng, ví dụ:

Experience   Level
0            1
100          2
200          3
400          4
800          5
1600         6
3200         7
6400         8

... nhưng có vẻ như nó sẽ vượt khỏi tầm kiểm soát khá nhanh, vì đối với cấp trên, kẻ thù trong trò chơi sẽ phải cung cấp một lượng kinh nghiệm khổng lồ để lên cấp - và điều đó sẽ khó kiểm soát. San lấp mặt bằng sẽ trở thành một nhiệm vụ bất khả thi.

Có ai có bất kỳ con trỏ, hoặc phương pháp họ sử dụng để quyết định làm thế nào để cấp một nhân vật dựa trên kinh nghiệm? Tôi muốn công bằng trong việc lên cấp và tôi muốn đi trước các cầu thủ vì không phải lo lắng về việc liên tục thêm kinh nghiệm / tra cứu cấp độ mới.


4
Không, đó chỉ là một số mũ chậm hơn (nhân với 10 mỗi ~ 3,3 cấp, hoặc 100 mỗi ~ 6,6 cấp, thay vì mỗi cấp). Hình học sẽ giống như 1 [00], 4, 9, 25, 36, v.v. Thậm chí 1100 1210 1331 1464 là một chuỗi số mũ, nhân với 1.1.
Random832


1
@Stephen: @ Random832 là chính xác, cả tăng trưởng "hàm mũ" và "hình học" đều đề cập đến việc có tỷ lệ không đổi giữa các thuật ngữ liên tiếp / tương đương (có nghĩa là tốc độ tăng trưởng tỷ lệ thuận với giá trị hiện tại - theo tính toán này được nêu bằng cách nói hàm số mũ có f'(x) = c*f(x)) . Thuật ngữ "hình học" được sử dụng khi tên miền (đầu vào) rời rạc (ví dụ: số nguyên). Công thức cho ví dụ của @ George, trên cấp 1, là Experience = 100 * 2^(Level-2), theo cấp số nhân. Công thức cho sự tiến bộ của bạn, trên cấp 1 Experience = 100^(Level-1), cũng, theo cấp số nhân.
BlueRaja - Daniel Pflughoeft

Câu trả lời:


36

Nó khá phổ biến để sử dụng một mối quan hệ vuông.

level = constant * sqrt(XP)

Hoặc tương đương gần đúng của một khoảng cách mức tăng tuyến tính.

Level   XP      Difference
1       0       -
2       100     100
3       300     200
4       600     300
5       1000    400

Các hệ thống này hoạt động khá tốt khi mức tăng XP xấp xỉ tuyến tính. Nếu một nhân vật cấp cao có thể kiếm XP nhanh hơn một nhân vật cấp thấp thì đây không phải là hệ thống phù hợp.


3
Đối với những người chơi loại Achiever, tôi nghi ngờ có một kỳ vọng mạnh mẽ về mức tăng XP lớn hơn khi nhân vật của họ tiến triển. Tôi thấy giải pháp của bạn rất thú vị và có lẽ tôi chỉ điều chỉnh nó một chút để tạo ra sự khác biệt như 107-214-321-428, do đó ngăn người chơi chỉ nhìn thấy số tròn và với hy vọng rằng điều này có thể thêm vào để làm cho trò chơi cảm thấy chỉ là một chút "hữu cơ" (Tôi đang cố gắng đưa ra một từ tốt hơn thế này, nhưng "hữu cơ" là tất cả những gì tôi có tại thời điểm này).
Randolf Richardson

1
+1 đây chính xác là những gì tôi đã làm trong quá khứ, hoạt động rất tốt
BlueRaja - Danny Pflughoeft

3
Phương trình cho khoảng cách mức tăng tuyến tính. level = (sqrt (100 (2experience + 25)) + 50) / 100 và kinh nghiệm = (level ^ 2 + level) / 2 * 100- (level * 100)
C9HDN

3
Câu trả lời tuyệt vời và tôi thích đường cong này tạo ra. Tôi đã kết thúc bằng cách sử dụng hằng số 0,04. Đối với những người thắc mắc, mặt trái của công thức này để tính cho XP là: XP = level ^ 2 / hằng số.
BradH

3
@BradH Trên thực tế, có vẻ như là XP = (mức / hằng) ^ 2. Trong php, điều này có thể được biểu diễn dưới dạng XP = pow (level / hằng, 2) hoặc trong các phiên bản sau, (level / hằng) ** 2
Taylor Dondich

17

Bạn có thể sẽ thấy các hàm logarit hữu ích vì chúng có thể được sử dụng để làm chậm sự gia tăng khi có nhiều điểm kinh nghiệm hơn. Đây là hai trang web giải thích cách thức hoạt động của chúng:

  Đồ thị của các hàm logarit
  http://www.analyzemath.com/Graphing/GraphLogarithmicFunction.html

  Giới thiệu về đồ thị hàm logarit
  http://www.purplemath.com/modules/graphlog.htm

Đây là những gì nó trông giống như trên một biểu đồ, hy vọng sẽ đáp ứng nhu cầu của bạn:

nhập mô tả hình ảnh ở đây


1
@George Bằng cách chơi xung quanh với các đồng hiệu quả, bạn có thể dễ dàng sử dụng hàm logarit để mở rộng quy mô của người chơi. +1 khi sử dụng toán học
Stephen

2
Lưu ý rằng đây là việc thực hiện yêu cầu XP theo cấp số nhân. level = log(XP) <=> XP = e^level. Yêu cầu có thể hơi dốc đối với các cấp cuối cùng, nhưng nó sẽ hoạt động tốt với sự tăng trưởng phù hợp trong tích lũy XP.
aaaaaaaaaaaa

@eBusiness: Điểm tốt, nhưng điều này có thể không thành vấn đề vì các nhân vật cấp cao hơn có xu hướng kiếm được nhiều điểm dễ dàng hơn và trong khoảng thời gian ngắn hơn (ví dụ: bằng cách tấn công / giết quái vật mạnh hơn với tốc độ đánh nhanh hơn). Đây là một lý do tại sao tôi nghĩ toán học này có thể phù hợp với các trò chơi video (đặc biệt là trong bối cảnh MMORPG).
Randolf Richardson

2
Tôi chỉ thấy hơi kỳ quặc khi OP đặc biệt lo lắng về sự tăng trưởng theo cấp số nhân và sau đó chấp nhận một câu trả lời chỉ mô tả điều tương tự theo một cách khác. Nhưng tôi đoán đó là vấn đề của anh ấy.
aaaaaaaaaaaa

1
@eBusiness: Có lẽ câu trả lời của tôi đã làm rõ điều gì đó về tăng trưởng theo cấp số nhân mà trước đây không rõ ràng? Có nhiều cách khác nhau để áp dụng toán học, và tôi không chắc rằng ngay cả giáo viên toán giỏi nhất cũng có thể biết tất cả (dù sao, có thể là giáo viên toán giỏi thứ hai).
Randolf Richardson

9

Đây là một số cách tôi đã sử dụng cho đến nay. Chúng được sắp xếp theo tốc độ tăng trưởng (chỉ cần nhân mọi phương trình với một giá trị không đổi):

  1. exp = level (cái này có vẻ lạ nhưng đối với một số game thưởng exp thay đổi theo cấp độ người chơi như Borderlands thì cái này có thể phù hợp với)

  2. exp = level * log 10 (level)

    1   0
    2   0.6
    3   1.4
    4   2.4
    5   3.5
    6   4.6
    
  3. exp = level ^ const_value: ví dụ của tôi, tôi đặt giá trị const thành 3/2

    1   1
    2   2.8
    3   5.1
    4   8
    5   11.2
    6   14.7
    

4

Tôi nghĩ nó phụ thuộc vào mức độ dễ dàng của người chơi có thể có được trải nghiệm. Nếu người chơi có thể nhận 200 xp ở lv 1 trong 20 phút và sau đó nhận 200 xp ở lv 2 trong 2 phút, thì bạn cần phải chia tỷ lệ xp của mình theo cấp số nhân.

Tuy nhiên, nếu đạt được một cấp độ chỉ làm cho nó dễ dàng hơn để đạt được xp, thì bạn nên thực hiện một chức năng xp cấp độ hơn. (Có thể tuyến tính với một số hệ số> 1)


4

Thông thường các điểm cần thiết để đạt được một mức độ dựa trên một đường cong. Trong rất nhiều game nhập vai, cũng có rất nhiều đặc điểm và thuộc tính khác của nhân vật của bạn tăng theo cấp độ của bạn, họ cũng sẽ có những đường cong riêng.

Hãy xem RPGMaker để xem cách họ làm mọi thứ. Cụ thể xem các đường cong tham số trong ảnh chụp màn hình của phần "Thêm một số tính duy nhất vào bằng cách tùy chỉnh thiết bị khởi động" trong tài liệu Tạo nhân vật chính .

Về cơ bản, bạn có thể có một đường cong về mức độ cần thiết của XP để tăng cấp, sau đó các đường cong khác nhau về mức độ HP, MP, sức chịu đựng, sức mạnh, vv đạt được mỗi cấp độ.

nhập mô tả hình ảnh ở đây


2

Cân nhắc thời gian

Trước tiên bạn cần tìm hiểu làm thế nào tỷ lệ kinh nghiệm đạt được thang điểm với cấp độ. Sau đó, bạn có thể điều chỉnh mức độ của bạn theo thời gian cần thiết . Nếu mỗi cấp độ bổ sung cho phép bạn có được kinh nghiệm nhanh gấp đôi và bạn cần gấp đôi kinh nghiệm để lên cấp, thì mọi cấp độ sẽ yêu cầu cùng một lượng thời gian.

Đề nghị của tôi là suy nghĩ về việc người chơi nên dành bao nhiêu thời gian , sau đó điều chỉnh mức độ phù hợp với điều đó.


-3

Có lẽ tôi chỉ nên sử dụng một hệ thống cân bằng phẳng, trong đó mỗi cấp độ sẽ yêu cầu chính xác cùng một lượng kinh nghiệm.


3
Câu trả lời nên có một chút xác thịt hơn chỉ là một gợi ý đơn giản. Hãy thử liên quan đến một số lợi ích của chiến lược này so với việc có một hệ thống năng động như hệ thống được yêu cầu.
MichaelHouse

Cũng lưu ý rằng thông tin bổ sung nên được đăng bởi tác giả gốc ; nếu người dùng khác có nhiều thứ để thêm, họ nên xem xét đăng một câu trả lời riêng.
Gnemlock
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.