Câu trả lời được cung cấp bởi Grzegorz Sławecki đã là một câu hỏi hay, nhưng tôi muốn giải thích lý do đằng sau phương pháp của anh ấy và cung cấp cho bạn các công cụ để điều chỉnh các giải pháp cho nhu cầu chơi trò chơi của bạn.
Các thông số của vấn đề hiện tại là cấp độ tấn công của người chơi a , sát thương vũ khí w , tổng sát thương gây ra trong một đòn tấn công d , máu của kẻ thù H và số lần đánh tối thiểu cần thiết để tiêu diệt kẻ thù, hãy gọi nó là n .
Nếu bạn muốn người chơi giết trong n lượt truy cập, sau đó tổng thiệt hại của ông d phải được như vậy mà
(n-1) .d <H ≤ nd hay nói cách khác, n = ceil (H / d) .
d phụ thuộc vào sát thương vũ khí w và vào cấp độ tấn công của người chơi a và chúng ta có thể hy vọng vũ khí sẽ tốt hơn khi tăng cấp độ, vì vậy hãy viết d (a) và w (a) thay vì chỉ đơn giản là d và w . Kẻ thù mà người chơi phải đối mặt cũng được dự đoán sẽ khó khăn hơn, một lần nữa, H (a) . Đây là tất cả các hàm tăng của a và bạn muốn chúng thỏa mãn các bất đẳng thức trên. Những ẩn số của vấn đề là các chức năng. Bạn đặt một cái là một ràng buộc và bạn tìm thấy những cái khác. Bạn có mức độ tự do mặc dù, đó là một điều tốt.
Nếu tôi hiểu rõ câu hỏi của bạn, bạn có một lối chơi chính xác và trò chơi này chủ yếu được thể hiện ở đây bằng số lần truy cập cần thiết để tiêu diệt kẻ thù, n (a) . Do đó, đặt n (a) tùy thuộc vào lối chơi mà bạn hình dung cho trò chơi và sau đó tìm phần còn lại của các biến số của vấn đề . Đây là điều bạn nên luôn luôn làm bởi vì, như câu hỏi của bạn cho thấy, nỗ lực đầu tiên của bạn là thử một thuật toán mà bạn nghĩ có thể làm và sau đó nhận ra rằng nó dẫn đến lối chơi không mong muốn.
Ví dụ, giả sử bạn muốn người chơi phải đánh nhiều lần hơn khi anh ta tiến bộ trong trò chơi. Bạn cũng muốn rằng, khi số lần truy cập yêu cầu tăng lên, nó sẽ tăng ít hơn và ít thường xuyên hơn, do đó người chơi dành một phần dài hơn của trò chơi đánh 5 lần hơn 2 lần. Đây là những gì n (a) trông giống như:
Hàm được sử dụng là n (a) = ceil (2 / 3.sqrt (a)) .
Chúng tôi muốn H (a) / d (a) ở trong phạm vi các giá trị làm cho n (a) có giá trị mong muốn và vì n (a) = ceil (H (a) / d (a)) , các phạm vi này là các hình chữ nhật sau:
và H (a) / d (a) tự nhiên có thể được đặt thành 2 / 3.sqrt (a) để chúng ta có được biểu đồ sau, với đường cong màu đỏ là H (a) / d (a) :
Lưu ý: chúng ta có thể dễ dàng tìm thấy H (a) / d (a) ở đây vì chúng ta biết chức năng của n (a) là trần nhà, nhưng nếu đặc điểm kỹ thuật của chúng ta cho n kém hơn, chúng ta sẽ phải tự điều chỉnh chức năng sử dụng các thủ thuật khác nhau. Không phải tất cả các vấn đề là tốt đẹp này!
Vì vậy, chúng tôi muốn H (a) / d (a) giống với hàm căn bậc hai tùy chỉnh và chúng tôi biết rằng H và d phải là các hàm tăng. Giải pháp là rất nhiều. Ví dụ,
H (a) = a. 2 / 3.sqrt (a) và d (a) = a
Nhưng chúng tôi muốn sát thương và HP của kẻ thù tăng lên rất nhiều để có những con số lớn, ấn tượng ở cuối trò chơi, chỉ vì phong cách, vì vậy chúng tôi thay vào đó đặt
H (a) = a². 20 / 3.sqrt (a) và d (a) = 10.a²
Toàn bộ vấn đề và phần hay nhất là đây: bạn biết rằng các giải pháp của bạn cho vấn đề ( H (a) và d (a) ) tuân theo các thông số kỹ thuật ( n (a) ), vì vậy bạn có cùng n (a) , nhưng bạn có tự do. Bạn biết chính xác sự tự do mà bạn có, và bạn có thể sử dụng nó để tùy chỉnh trải nghiệm. Bạn nên luôn cố gắng tạo cho mình sự tự do như vậy trong khi đáp ứng những nhu cầu quan trọng nhất của bạn, bất cứ khi nào có thể.
Bây giờ chúng tôi đã chọn sát thương một lần d (a) và vì d (a) phụ thuộc vào sát thương vũ khí w (a) , chúng tôi có thể sử dụng d (a) làm thông số kỹ thuật của mình và cố gắng tìm w (a) ) cung cấp cho chúng tôi điều này d (a) . Các nguyên tắc là như nhau, vấn đề là khác nhau: chúng tôi muốn người chơi gây ra nhiều thiệt hại hơn khi cấp độ của anh ta tăng lên, ngay cả khi vũ khí vẫn giữ nguyên, và chúng tôi cũng muốn thiệt hại tăng lên khi một mình vũ khí tốt hơn và cấp độ vẫn giữ nguyên giống nhau.
Nhưng tầm quan trọng của từng yếu tố? Giả sử chúng ta muốn cấp độ quan trọng hơn vũ khí: một phần lớn hơn trong các biến thể của d (a) = a² nên độc lập với w (a) , ví dụ như với
w (a) = 22.sqrt (a) và do đó, d (a) = (22.sqrt (a)). (10 / 22.a.sqrt (a)) = w (a). (10 / 22.a.sqrt (a))
Chúng tôi nhận được biểu đồ sau cho w (a) ...
... và vẫn như nhau d (a) , bởi vì chúng tôi một lần nữa tìm thấy một giải pháp mà tuân theo đặc điểm kỹ thuật , ở đây d (a) , và chúng tôi có các tính chất nêu trên với w và một góp phần vào sự thiệt hại (giả sử chúng ta nhìn vào d là hàm của a và w : sau đó nếu a đã cố định và chúng ta có w khác nhau trong phương trình d (a, w) = a / 30.w , d vẫn sẽ là hàm tăng của w , và điều tương tự là đúng nếu bạn khắc phục w và làm cho một thay đổi).
Điều này (a) có thể cung cấp cho bạn giá trị được hiển thị trong phần mô tả ingame của vũ khí: chúng tôi sẽ nhận được "Damage Weapon: 220" với vũ khí tốt nhất trong trò chơi chẳng hạn.
Chúng tôi có thể đã sử dụng một đặc điểm kỹ thuật hoàn toàn khác cho trò chơi của mình và do đó, đối với n (a) , ví dụ như một số làm cho số lần truy cập cần thiết tăng nhanh khi trò chơi tiến triển và sau đó là cao nguyên, và các giải pháp kết quả sẽ khác.
playerAttack
chỉ số của bạn đến 100? Xem xét đây là giá trị tối đa, sẽ không giết kẻ thù trong một vài cú đánh là phù hợp? (Có phải kẻ thù 1000 HP là thứ bạn sẽ thấy khi bắt đầu trò chơi không? Một kẻ thù tiêu chuẩn? Ông chủ?)