Thuật toán cho một công cụ để thống kê lý thuyết dựa trên một trò chơi (liên minh huyền thoại)


10

Tôi muốn tạo một trình giả lập (về cơ bản cho mục đích thử nghiệm) cho một trò chơi (Liên minh huyền thoại).

Những điều cơ bản của trò chơi:

bạn có một anh hùng có một số chỉ số:

  • Điểm sức khỏe
  • Tấn công sát thương
  • Tốc độ tấn công
  • Giáp
  • Giáp giáp
  • Tôc độ di chuyển

Hero có thể có 4 kỹ năng (bạn nhận được một điểm kỹ năng ở mỗi cấp độ) (Chúng được kích hoạt bằng tay, hầu hết thời gian, có thời gian hồi chiêu, sát thương, tỷ lệ quy mô tấn công / tấn công và cấp độ kỹ năng) + một kỹ năng bị động

Bạn có thể tiêu diệt tướng địch hoặc quái vật trung lập, chúng có cùng chỉ số:

  • Điểm sức khỏe
  • Tấn công sát thương
  • Tốc độ tấn công
  • Giáp

Những gì tôi muốn làm:

Tạo một công cụ để kiểm tra nếu một vật phẩm cụ thể, hoặc tăng chỉ số cụ thể sẽ tăng tốc độ / tốc độ giết chóc của bạn.

bản đồ: http://evtron.com/Evtron-Alpha/wp-content/uploads/2011/02/Summoners-Rift.jpg

Ví dụ thống kê:

  • Hp: 420
  • Quảng cáo: 55
  • AttackSpeed: 0,613 (tấn công / s -> mỗi lần tấn công ở mức 1 / 0,613 giây)
  • xuyên giáp: 25

Nhân vật sẽ tự động tấn công kẻ thù bằng 1 / tốc độ tấn công và gây sát thương bằng đòn tấn công (có một công thức để tính toán thiệt hại, nhưng điều đó không quan trọng trong giai đoạn này tôi đoán), một khi họ đã chết, di chuyển sang người tiếp theo bằng chuyển động ( bạn có thể thấy các trại trên bản đồ, những chiếc đầu lâu màu vàng)

Tôi đã suy nghĩ về thuật toán:

  1. Tôi nghĩ rằng nếu tôi chỉ thực hiện một từ i = 0 đến i = 30000 (tính ms), vì vậy tôi chỉ có thể kiểm tra hp của kẻ thù và hp của tôi cũng như vậy trong mỗi ms trở nên rất tệ (khá nặng cpu, và tôi muốn để đặt một số ngẫu nhiên trong đó, vì vậy tôi có thể tổng hợp 1k lần lặp, điều này là không thể)

  2. Thứ hai, tôi nghĩ rằng tôi chỉ nên làm một từ i = 1 đến 30, và kiểm tra từng giây, và kiểm tra xem điều gì đã xảy ra trong giây cuối cùng, nhưng một số quái vật trung lập đang ở trong một trại lớn (tối đa 4 quái vật), và cách này mã đã trở nên phức tạp và phức tạp.

  3. Tôi sẽ tạo chủ đề cho mỗi người chơi / quái vật, và một khi họ hoàn thành việc tìm kiếm khi họ chết, và giảm hp của người chơi.

Câu hỏi của tôi, đây có phải là con đường đúng đắn?

TLDR: Tôi muốn tạo ra một công cụ để tạo phân tích (lặp lại 1k và tính trung bình) về một trò chơi tăng chỉ số sẽ khiến nhân vật tiêu diệt quái vật trung tính nhanh hơn.

Tôi thích java, nhưng atm tôi bị kẹt ở thuật toán.


@Karoly S: Đúng, đó là xấu của tôi, .com -> .eu

Tôi đã làm việc về điều này:

Tôi đang kiểm tra thời gian còn lại trên mỗi đối tượng (kỹ năng người chơi, tự động tấn công, buff) và luôn chọn thời gian ngắn nhất và lưu trữ thời gian cuối cùng và thêm thời gian, vào vòng tiếp theo tôi tính thời gian theo (thời gian- lần cuối cùng)

Nếu đối tượng có thời gian còn lại 0, nó sẽ làm bất cứ điều gì nó cần làm.

Tôi không biết liệu nó có hiệu quả hay không, nhưng đó là cách tốt nhất tôi có thể làm.


1
Bạn có thể may mắn hơn khi hỏi về phần / trang web Phát triển trò chơi của Stack Exchange, hãy thử lấy Mod để di chuyển nó, mặc dù rất có thể họ sẽ làm được. Một trình giả lập trong rừng sẽ rất thú vị, tôi sẽ suy nghĩ và xem những gì tôi nghĩ ra.
Karoly S

Cảm ơn câu trả lời nhanh chóng, sự giúp đỡ của bạn được nhiều đánh giá cao. Tôi đoán đúng là bạn cũng là người Thượng?

Hoàn toàn có thể, đây là điều mà tôi đã nghĩ đến mặc dù không sâu về vấn đề này, nhưng tôi sẽ quan tâm. Cách tiếp cận ban đầu của tôi sẽ là xem liệu phiên bản số 2 hiệu quả mặc dù đơn giản hơn của bạn có khả thi hay không. Tôi rất thích thảo luận điều này với bạn ở độ dài lớn hơn. Và vâng, dự đoán của bạn sẽ đúng :)
Karoly S

Âm thanh tuyệt vời cho tôi, tôi sẽ để chủ đề mở, có lẽ ai đó đã có ý tưởng về nó. email của tôi (etheld tại gwelican dot com)

Nghe có vẻ hay, tôi sẽ suy nghĩ một chút về nó và gửi email cho bạn sau một ngày hôm nay.
Karoly S

Câu trả lời:


1

Các lựa chọn thay thế cho mô phỏng theo từng khung hình:

Bạn có thể lấy loại xấp xỉ hợp lý để mô phỏng theo một công thức như

rawDamage = <some function of strength?)
Damage = rawDamage - enemyArmorReduction
DPS = (attackSpeed * Damage) * enemyArmorMod
myRemainingHP = myDPS / theirHP  - theirDPS / myHP

Bạn cũng có thể duy trì hàng đợi di chuyển, để bạn mô phỏng mỗi lần di chuyển, không phải mỗi lần đánh dấu:

// my aspd = 4 attacks per second, his aspd = 3 attacks per second
0.0s : start battle
0.25s: I attack
0.33s: He attacks
0.50s: I attack again
...
1.00s: I attack
1.00s: He attacks
...

Hàng đợi di chuyển sẽ chính xác hơn, vì nó xử lý chính xác với thực tế là thiệt hại là rời rạc, không liên tục. Ví dụ: nếu tôi gây 50 sát thương trong 0 giây và thêm 50 giây trong 1 giây, DPS của tôi sẽ là 50, nhưng tôi sẽ giết mục tiêu 100 HP trong 1 giây.

@hammar: đúng vậy cuộc chiến càng ngắn, ước tính dựa trên DPS sẽ càng kém chính xác.
Jimmy

Việc trò chơi gây choáng và các bản sửa lỗi khác sẽ khiến một công cụ như vậy thực sự khó đạt được, bởi vì những người chơi khác nhau có thể có kết quả khác nhau trong tỷ lệ tiêu diệt. Dù sao cũng trả lời tốt.
Grimshaw
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.