Saya sedang mengembangkan RPG 2d klasik (dalam nada yang mirip dengan fantasi akhir) dan saya bertanya-tanya apakah ada yang punya saran tentang cara melakukan kerusakan rumus / tautan ke sumber daya / contoh? Saya akan menjelaskan pengaturan saya saat ini. Mudah-mudahan saya tidak berlebihan dengan pertanyaan ini, dan saya minta maaf jika pertanyaan saya terlalu besar / luas
Statistik Karakter Saya terdiri dari yang berikut ini:
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,
};
Vitalitas pada dasarnya adalah pertahanan terhadap serangan fisik dan roh adalah pertahanan terhadap serangan sihir.
Semua statistik memiliki maksimum tetap (9999 untuk HP, 999 untuk MP / SP dan 255 untuk sisanya). Dengan kemampuan, maksimum dapat ditingkatkan (99999 untuk HP, 9999 untuk HP / SP, 999 untuk sisanya) dengan nilai-nilai tipikal (pada level 100) sebelum / sesudah kemampuan + peralatan + dll akan menjadi 8000 / 20.000 untuk HP, 800 / 2000 untuk SP / MP, 180/350 untuk statistik lainnya
Game Terlambat Musuh HP biasanya akan berada dalam jutaan yang lebih rendah (dengan bos super memiliki maksimum ~ 12 juta).
Saya bertanya-tanya bagaimana orang benar-benar mengembangkan formula kerusakan yang tepat dengan skala yang benar? Misalnya, berdasarkan data ini, menggunakan rumus kerusakan untuk Final Fantasy X sebagai basis tampak sangat menjanjikan. Referensi lengkap di sini http://www.gamefaqs.com/ps2/197344-final-fantasy-x/faqs/31381 tetapi sebagai contoh cepat: Str = 127, perintah 'Attack' digunakan, musuh 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
Saya hanya memodifikasi pembagi untuk memasukkan peringkat serangan senjata dan peringkat baju besi baju besi.
Kerusakan Sihir dihitung sebagai berikut: Mag = 255, Ultima digunakan, musuh 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
Masalahnya adalah bahwa formula benar-benar berantakan begitu statistik mulai berjalan di atas 255. Khususnya nilai Pertahanan lebih dari 300 atau lebih mulai menghasilkan perilaku yang sangat aneh. Statistik Kekuatan Tinggi + Pertahanan menyebabkan nilai negatif besar-besaran misalnya. Meskipun saya mungkin dapat memodifikasi rumus agar berfungsi dengan benar untuk kasus penggunaan saya, mungkin akan lebih mudah hanya menggunakan rumus yang sama sekali baru. Bagaimana orang mengembangkan formula kerusakan? Saya sedang mempertimbangkan membuka excel dan mencoba membangun formula seperti itu (memetakan Statistik Serangan vs Statistik Pertahanan misalnya) tetapi saya bertanya-tanya apakah ada cara yang lebih mudah? Meskipun saya tidak dapat menyampaikan mekanisme permainan lengkap dari permainan saya di sini, mungkinkah seseorang dapat menyarankan tempat awal yang baik untuk membangun formula kerusakan?
Terima kasih