Tôi đang phát triển một game nhập vai 2d cổ điển (trong một mạch tương tự như tưởng tượng cuối cùng) và tôi tự hỏi liệu có ai có lời khuyên nào về cách thực hiện các công thức / liên kết đến tài nguyên / ví dụ không? Tôi sẽ giải thích thiết lập hiện tại của tôi. Hy vọng rằng tôi không làm quá với câu hỏi này và tôi xin lỗi nếu câu hỏi của tôi quá lớn / rộng
Số liệu thống kê nhân vật của tôi bao gồm:
enum Stat
{
HP = 0,
MP = 1,
SP = 2,
Strength = 3,
Vitality = 4,
Magic = 5,
Spirit = 6,
Skill = 7,
Speed = 8, //Speed/Agility are the same thing
Agility = 8,
Evasion = 9,
MgEvasion = 10,
Accuracy = 11,
Luck = 12,
};
Vitality về cơ bản là phòng thủ trước các đòn tấn công vật lý và tinh thần là phòng thủ trước các đòn tấn công ma thuật.
Tất cả các số liệu thống kê có mức tối đa cố định (9999 cho HP, 999 cho MP / SP và 255 cho phần còn lại). Với các khả năng, mức tối đa có thể tăng (99999 cho HP, 9999 cho HP / SP, 999 cho phần còn lại) với các giá trị điển hình (ở cấp 100) trước / sau khả năng + thiết bị + vv sẽ là 8000 / 20.000 cho HP, 800 / 2000 cho SP / MP, 180/350 cho các số liệu thống kê khác
Enemy HP vào cuối game thường sẽ ở hàng triệu người thấp hơn (với một siêu trùm có tối đa ~ 12 triệu).
Tôi đã tự hỏi làm thế nào để mọi người thực sự phát triển các công thức thiệt hại thích hợp có tỷ lệ chính xác? Chẳng hạn, dựa trên dữ liệu này, sử dụng các công thức gây sát thương cho Final Fantasy X làm căn cứ có vẻ rất hứa hẹn. Một tài liệu tham khảo đầy đủ ở đây http://www.gamefaqs.com/ps2/197344-final-fantasy-x/faqs/31381 nhưng như một ví dụ nhanh: Str = 127, lệnh 'Tấn công' được sử dụng, kẻ thù Def = 34.
1. Physical Damage Calculation:
Step 1 ------------------------------------- [{(Stat^3 ÷ 32) + 32} x DmCon ÷16]
Step 2 ---------------------------------------- [{(127^3 ÷ 32) + 32} x 16 ÷ 16]
Step 3 -------------------------------------- [{(2048383 ÷ 32) + 32} x 16 ÷ 16]
Step 4 --------------------------------------------------- [{(64011) + 32} x 1]
Step 5 -------------------------------------------------------- [{(64043 x 1)}]
Step 6 ---------------------------------------------------- Base Damage = 64043
Step 7 ----------------------------------------- [{(Def - 280.4)^2} ÷ 110] + 16
Step 8 ------------------------------------------ [{(34 - 280.4)^2} ÷ 110] + 16
Step 9 ------------------------------------------------- [(-246)^2) ÷ 110] + 16
Step 10 ---------------------------------------------------- [60516 ÷ 110] + 16
Step 11 ------------------------------------------------------------ [550] + 16
Step 12 ---------------------------------------------------------- DefNum = 566
Step 13 ---------------------------------------------- [BaseDmg * DefNum ÷ 730]
Step 14 --------------------------------------------------- [64043 * 566 ÷ 730]
Step 15 ------------------------------------------------------ [36248338 ÷ 730]
Step 16 ------------------------------------------------- Base Damage 2 = 49655
Step 17 ------------ Base Damage 2 * {730 - (Def * 51 - Def^2 ÷ 11) ÷ 10} ÷ 730
Step 18 ---------------------- 49655 * {730 - (34 * 51 - 34^2 ÷ 11) ÷ 10} ÷ 730
Step 19 ------------------------- 49655 * {730 - (1734 - 1156 ÷ 11) ÷ 10} ÷ 730
Step 20 ------------------------------- 49655 * {730 - (1734 - 105) ÷ 10} ÷ 730
Step 21 ------------------------------------- 49655 * {730 - (1629) ÷ 10} ÷ 730
Step 22 --------------------------------------------- 49655 * {730 - 162} ÷ 730
Step 23 ----------------------------------------------------- 49655 * 568 ÷ 730
Step 24 -------------------------------------------------- Final Damage = 38635
Tôi chỉ đơn giản là sửa đổi các dải phân cách để bao gồm xếp hạng tấn công của vũ khí và xếp hạng áo giáp của áo giáp.
Sát thương phép được tính như sau: Mag = 255, Ultima được sử dụng, kẻ thù MDef = 1
Step 1 ----------------------------------- [DmCon * ([Stat^2 ÷ 6] + DmCon) ÷ 4]
Step 2 ------------------------------------------ [70 * ([255^2 ÷ 6] + 70) ÷ 4]
Step 3 ------------------------------------------ [70 * ([65025 ÷ 6] + 70) ÷ 4]
Step 4 ------------------------------------------------ [70 * (10837 + 70) ÷ 4]
Step 5 ----------------------------------------------------- [70 * (10907) ÷ 4]
Step 6 ------------------------------------ Base Damage = 190872 [cut to 99999]
Step 7 ---------------------------------------- [{(MDef - 280.4)^2} ÷ 110] + 16
Step 8 ------------------------------------------- [{(1 - 280.4)^2} ÷ 110] + 16
Step 9 ---------------------------------------------- [{(-279.4)^2} ÷ 110] + 16
Step 10 -------------------------------------------------- [(78064) ÷ 110] + 16
Step 11 ------------------------------------------------------------ [709] + 16
Step 12 --------------------------------------------------------- MDefNum = 725
Step 13 --------------------------------------------- [BaseDmg * MDefNum ÷ 730]
Step 14 --------------------------------------------------- [99999 * 725 ÷ 730]
Step 15 ------------------------------------------------- Base Damage 2 = 99314
Step 16 ---------- Base Damage 2 * {730 - (MDef * 51 - MDef^2 ÷ 11) ÷ 10} ÷ 730
Step 17 ------------------------ 99314 * {730 - (1 * 51 - 1^2 ÷ 11) ÷ 10} ÷ 730
Step 18 ------------------------------ 99314 * {730 - (51 - 1 ÷ 11) ÷ 10} ÷ 730
Step 19 --------------------------------------- 99314 * {730 - (49) ÷ 10} ÷ 730
Step 20 ----------------------------------------------------- 99314 * 725 ÷ 730
Step 21 -------------------------------------------------- Final Damage = 98633
Vấn đề là các công thức hoàn toàn sụp đổ một khi các số liệu thống kê bắt đầu vượt quá 255. Cụ thể là các giá trị Phòng thủ trên 300 hoặc hơn bắt đầu tạo ra hành vi thực sự kỳ lạ. Chẳng hạn, chỉ số Sức mạnh + Phòng thủ cao dẫn đến các giá trị âm lớn. Mặc dù tôi có thể sửa đổi các công thức để hoạt động chính xác cho trường hợp sử dụng của mình, nhưng có lẽ sẽ dễ dàng hơn khi sử dụng một công thức hoàn toàn mới. Làm thế nào để mọi người thực sự phát triển các công thức thiệt hại? Tôi đã xem xét việc mở excel và cố gắng xây dựng công thức theo cách đó (ví dụ ánh xạ Chỉ số tấn công so với Chỉ số phòng thủ) nhưng tôi tự hỏi liệu có cách nào dễ hơn không? Trong khi tôi không thể truyền tải toàn bộ cơ chế trò chơi của trò chơi của mình ở đây, ai đó có thể đề xuất một nơi khởi đầu tốt để xây dựng công thức sát thương không?
Cảm ơn