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
sumber
Jawaban:
Membuat rumus seperti ini membutuhkan pengetahuan fungsi matematika dasar - hal-hal yang Anda pelajari di kelas Aljabar dan Pra-kalkulus.
Setelah Anda menguasai, tanyakan pada diri sendiri (ganti "nilai" dengan "kerusakan," atau "kesehatan," atau "kecepatan" atau apa pun) :
Kemudian hanya men-tweak-nya (tambahkan / gandakan item, ubah nilai dasar, dll) sampai terasa benar. Kalkulator grafik akan membantu Anda memvisualisasikan bagaimana perubahan pada parameter akan memengaruhi fungsi.
Omong-omong, masalah yang Anda alami adalah karena bilangan bulat bilangan bulat .
Gunakan tipe variabel yang cukup besar untuk menampung angka yang sedang Anda kerjakan. Ukuran berbeda menurut platform dalam C ++, tetapi menggunakan kompiler Visual Studio
unsigned int
32-bit, adalah 32-bit, sedangkanunsigned __int64
(spesifik MS) adalah 64-bit. Juga pertimbangkan untuk menggunakan adouble
.Selain itu, coba atur ulang operasi Anda sehingga Anda tidak menemukan angka besar di tempat pertama (misalnya, daripada
MDef * MDef / 110
, lakukan(int)((float)MDef / 110 * MDef)
) .sumber
__int64
lebihuint64_t
karenastdint.h
tidak tersedia di Visual Studio 2008 dan di bawah, dan saya tidak ingin membingungkan anak miskin lebih dari yang dia sudah ada.Ada masalah nyata Anda: Anda mendefinisikan statistik Anda sebelum menentukan apa yang orang-orang statistik sebenarnya berarti . Anda meletakkan kereta di depan kuda.
Lihatlah bagaimana D & D (meja) bekerja. "Kekuatan" tidak berarti apa-apa dengan sendirinya; itu hanya berarti sesuatu karena ada aturan yang mengatakan, "Tambahkan bonus kekuatan Anda untuk serangan jarak dekat Anda." Aturan itu adalah bagian dari aturan pertempuran D&D. Tanpa aturan tempur, "Kekuatan" umumnya merupakan jumlah yang tidak berarti.
Pertanyaan pertama yang perlu Anda tanyakan pada diri sendiri adalah ini: berapa banyak perbedaan yang saya inginkan antara karakter? Sekali lagi, lihat D & D. Di sana, mereka memiliki 6 statistik dasar. Statistik ini menentukan berbagai dimensi permainan untuk karakter. Karakter dengan Keluwesan tinggi akan memiliki opsi berbeda dari karakter dengan Keluwesan rendah.
Tapi alasan untuk perbedaan itu semua kembali ke aturan. Kecekatan tinggi berarti bonus untuk serangan jarak jauh; Anda dapat memukul lebih sering dengan serangan jarak jauh. Jadi hanya antara Strength dan Dexterity, Anda memiliki dua dimensi permainan: berkisar vs jarak dekat.
Kecerdasan dan Kebijaksanaan juga membentuk sesuatu yang berpasangan, tetapi ini lebih banyak berinteraksi dengan kelas-kelas tertentu. Int membuat Penyihir dan perapal mantra misterius lainnya menjadi lebih baik (atau mungkin berdasarkan beberapa aturan), Kebijaksanaan sangat penting bagi Ulama dan perapal mantra Tuhan lainnya. Karena mantra ilahi dan misterius memiliki daftar mantra yang berbeda, kedua statistik ini terlibat dalam dimensi permainan yang berbeda.
Anda perlu menentukan aturan dasar seputar statistik sebelum Anda dapat menentukan fungsi perkembangan pertumbuhan dan sejenisnya. Anda tidak perlu spesifik; Anda tidak perlu mengatakan bahwa "setiap titik kekuatan ditambahkan ke dalam gulungan acak untuk menentukan apakah serangan jarak dekat hits." Yang Anda butuhkan adalah aturan meta seperti "ketangkasan membuat penyerang jarak jauh lebih baik." Anda bisa mengetahui dengan tepat bagaimana hal itu membuat mereka lebih baik nantinya.
Ada berbagai cara untuk mengembangkan karakter. Trik Final Fantasy jadul yang umum adalah dengan menggunakan level karakter sebagai bagian dari perhitungan kerusakan mereka. Ini bisa saja mengalikan level dengan stat yang sesuai, atau itu bisa berarti menerapkan fungsi ke level karakter. Katakanlah, perkembangan kuadratik, sehingga laju kerusakan karakter akan meningkat per level.
Bagaimanapun Anda ingin fungsi tempur Anda bekerja, mereka harus memperhitungkan perkembangan akun. Fungsi Anda memerlukan kait untuk kemajuan.
D & D memiliki cara perkembangan yang lucu. Itu adalah bagian berbasis kelas; setiap kali Anda naik level, Anda mendapatkan fitur kelas baru dan bonus flat untuk hit Anda, berdasarkan kelas karakter Anda. Namun, beberapa fitur kelas menjadi lebih baik sendiri. Mantra di D & D akan memiliki perkembangan ke dalamnya. Mantra mungkin membuat kerusakan 1d4 per 2 level pemeriksa ejaan di atas yang pertama. Jadi setiap level penyihir lainnya membuat mantra itu lebih baik.
D&D juga menggunakan progresi berbasis item dengan sangat. Hingga edisi ke-4, pengembangan berbasis item terutama untuk karakter bertarung, tetapi bahkan dalam edisi yang lebih lama, perapal mantra memiliki item yang memberi mereka buff stat atau penyesuaian lainnya (atau flat out memberi mereka mantra).
Jadi item adalah hal lain yang perlu diperhitungkan fungsi tempur Anda. Apakah item hanya buff satu atau lebih statistik saat dilengkapi, atau apakah mereka melakukan hal-hal lain juga? D & D agak aneh, karena statistik jarang berubah; Senjata hanya merusak XdY, mungkin dengan bonus berdasarkan pada salah satu statistik Anda. Dan itu tadi. Jadi satu-satunya cara Anda untuk melakukan lebih banyak kerusakan dalam pertempuran adalah menemukan senjata yang lebih baik. Di banyak RPG videogame, mereka memperhitungkan level selain senjata.
sumber
Rumus Anda sepertinya cukup rumit. Saya tidak yakin bagaimana pengembang RPG profesional menangani ini, tetapi saya akan merekomendasikan untuk berfokus pada kesederhanaan. Cobalah untuk menemukan formula sesederhana mungkin yang masih dapat Anda gunakan dengan kisaran statistik yang ingin Anda gunakan. Misalnya, dapatkah Anda membuat statistik saling memodifikasi sebelum perhitungan kerusakan, daripada memodifikasi kerusakan selama perhitungan? Setelah Anda memiliki formula dalam pikiran, saya akan mencoba membuat grafik untuk berbagai nilai yang mungkin untuk melihat bagaimana itu akan berperilaku sebagai pemain naik level. Jelas semakin sedikit variabel yang Anda miliki, mereka akan lebih layak.
Selain itu, BlueRaja memberikan penjelasan penting tentang mengapa Anda mungkin melihat nilai tak terduga di tingkat stat yang lebih tinggi. Menggunakan tipe yang tidak ditandatangani dan memeriksa luapan akan menjadi penting.
sumber
Ini saya punya masalah dengan. Anda harus membangun bos di sekitar apa yang menurut Anda harus bisa ditangani oleh pemain Anda. Anda sedang membangun pemain dan formula pertarungan sesuai keinginan bos Anda.
Setelah Anda membangun mekanisme dan peran tempur Anda, maka Anda dapat memutuskan bagaimana Anda ingin merancang bos Anda karena itu harus merupakan keseimbangan yang baik antara kerusakan yang dapat ditangani / diserap pemain dibandingkan apa yang bisa ditangani / diserap bos.
sumber
Angka-angka yang Anda kutip kemungkinan berasal dari simulasi hanya tweaker, lebih dari ribuan berjalan.
Jadi, Anda harus menulis simulasi, membuat karakter level 20, dan melihat bagaimana ia bertarung melalui 200 pertempuran atau lebih melawan tipe musuh yang seharusnya ia lawan pada saat itu. Lakukan lagi untuk karakter level 30 (agaknya bagian dunia berikutnya).
Butuh beberapa saat untuk memperbaikinya, tetapi menulis simulasi otomatis pasti akan membuat ini lebih mudah daripada hanya menebak dan secara manual memainkannya.
sumber
Saya pikir Anda membuat kesalahan bahwa Anda ingin membuat formula tanpa memikirkan desain yang tepat.
Pertama-tama mulailah dengan desain, lalu mulailah berpikir untuk mewakili desain dalam formula. Semakin jelas desain Anda, semakin mudah menemukan formula yang sederhana dan / atau tepat.
Cobalah untuk mengimplementasikan "tipe" musuh, mis. "Lapis baja" => serangan pemain jika tipe fisiknya dikurangi 50%. Jangan membuat aliran pertempuran menjadi abstrak, pikirkan apa yang relevan dan apa yang tidak.
Jika desain Anda mengatakan "musuh lapis baja" lemah terhadap sihir tetapi kuat terhadap kerusakan fisik, sebutkan itu dalam kode. Tetapi ingat bahwa Anda telah melakukan banyak pengujian, karena nilainya tidak akan berfungsi secara ajaib saat pertama kali Anda menulis kode. Cobalah untuk membuat desain, masukkan logika ke dalam kode, selalu periksa apakah ini representasi teknis dari apa yang ada dalam pikiran Anda dan jika tidak mengubah nilainya sampai sekarang.
sumber
Meskipun desain saya belum meninggalkan fase Spreadsheet, saya sampai pada satu kesimpulan tentang merancang matematika untuk RPG:
Buat mereka sesederhana mungkin. Dalam desain yang sedang saya kerjakan, saya menggunakan rumus yang sangat sederhana, yang memadai untuk sistem semi-kurang kelas. Yaitu. Mantra Fireball memiliki kerusakan 30. Forumal adalah:
Kami juga dapat menambahkan pengubah seperti ini:
Jadi hasil akhirnya akan menjadi 45 kerusakan. Saya menemukan bahwa menggunakan pengganda prapentase sangat mudah, dan solusi yang sangat terukur untuk bekerja dengannya. Alih-alih datang dengan beberapa angka ganjil dengan matematika yang rumit untuk mencari tahu hasil yang kita inginkan.
Sekarang kita dapat menghitung reseistance kerusakan, yang hanya akan menghitung pertahanan terhadap jenis kerusakan yang ditetapkan. Ada dua pendekatan dan saya jujur belum memutuskan mana yang lebih baik, tetapi keduanya sederhana dan layak:
Jadi hasil akhirnya akan diambil 22 kerusakan (saya hanya memotong hasil parsial).
Formula lain:
Jadi hasil akhirnya akan menjadi 23. Jika itu terjadi bahwa perlawanan lebih besar dari kerusakan yang diambil maka karakter tidak menerima kerusakan. Tentu saja terserah Anda untuk memastikan bahwa situasi seperti itu tidak memiliki tempat, kecuali ketika Anda menginginkannya.
Meskipun saya harus mengakui bahwa penskalaan prosentase agak lebih mudah untuk diseimbangkan dan diukur. Tetapi ini juga tergantung pada angka dasar Anda. Penskalaan persentase akan bekerja paling baik jika Anda mulai dari 100 ke atas. Jika Anda beroperasi pada angka kecil (apa pun di bawah 100 jujur), itu bisa menjadi awkard karena Anda akan mulai mendapatkan hasil floating point, yang akan sulit untuk diseimbangkan dan benar-benar melakukan sesuatu yang menarik dengan mereka.
Mungkin solusi optimal dalam hal ini adalah menggunakan kedua pendekatan ketika mereka cocok. Atau jika Anda penggemar jumlah besar mulai dari 1000.
Dan pada saat penutupan berakhir. Saya belum sampai pada kesimpulan ini secara lengkap. Saya sebenarnya telah menghabiskan beberapa waktu membaca berbagai manual RPG (Hero, DnD). Terutama DnD sangat membantu, karena beroperasi pada prinsip yang sama tetapi alih-alih atribut itu menggunakan level untuk formula itu, mereka kadang-kadang bisa lebih kompleks. Dari apa yang saya sajikan di sini.
Dalam tas apa pun, saran terbaik adalah: cobalah untuk membuatnya sesederhana mungkin. Jangan menggunakan matematika tingkat lanjut, atau persamaan panjang, karena mereka rentan terhadap kesalahan, yang sulit dikenali, ketika Anda harus berurusan dengan 87234 hal lain pada saat yang sama.
sumber
Seperti yang telah disebutkan orang lain, rumus Final Fantasy X cukup rumit. Umumnya untuk seri itu nanti gim, semakin rumit rumusnya. Mungkin lebih mudah untuk mendasarkan formula kerusakan Anda pada game lain sepenuhnya. Tapi secara umum, saya pikir ada baiknya membahas dari tingkat yang sangat umum seperti apa formula kerusakan yang dapat Anda temukan di dunia, dan bagaimana Anda bisa membuat game berbasiskannya. Hal pertama yang perlu Anda putuskan adalah berapa banyak kerusakan yang ingin Anda bisa lakukan di akhir pertandingan, dan statistik seperti apa yang Anda inginkan agar pemain dapat miliki? Setelah memilikinya, Anda dapat memilih sistem rumus, dan kemudian mengoptimalkan nilai rumus dan senjata untuk mencerminkan rentang tersebut dari waktu ke waktu.
Berbasis Stat Murni
Ini adalah ide yang bagus jika Anda ingin karakter Anda fleksibel dalam hal level musuh yang dapat mereka tantang. Formula seperti ini hanya akan bergantung pada statistik pemain, peralatan mereka, dan statistik musuh. Formula ini biasanya cukup sederhana. Final Fantasy Legend II (Lihat http://www.shenafu.com/ffl2/weapon.php misalnya, memiliki senjata yang melakukan kerusakan berdasarkan pada rumus sederhana:
Formula seperti ini bagus jika Anda menginginkan metode yang sangat sederhana dalam memperkirakan kerusakan, atau titik lompat cepat untuk memodifikasi kerusakan berdasarkan faktor-faktor lain seperti keterampilan dan kelemahan unsur.
Untuk menunjukkan seberapa luas formula seperti ini benar-benar dapat berjalan, pertimbangkan rumus kerusakan untuk Inflasi RPG, sebuah game Android dan iOS (Lihat http://inflation-rpg.wikia.com/wiki/Calculations ). Formula sangat bergantung pada stat dan peralatan. Setiap peralatan memiliki dua statistik - bonus untuk stat ATK, dan nilai pengganda. Beberapa peralatan memiliki pengganda rendah, tetapi bonus tinggi, yang lain memiliki bonus rendah tetapi pengganda tinggi. Untuk karakter dengan hanya 10 ATK, Battle Axe dengan 5000 ATK Bonusnya tetapi pengganda rendah 145% adalah pilihan yang bagus. Kerusakan total
(10+5000)*1.45 = 7264
, tapi Estoc, dengan 0 bonus dan pengganda 300% adalah pilihan yang buruk - kerusakan itu(10+0)*3 = 30
. Kemudian dalam permainan, karakter dengan 5000 serangan akan lebih suka berganti senjata.Berbasis Stat dan Level:
Contoh yang baik dari ini adalah Final Fantasy V, VI, dan Final Fantasy XII (Lihat http://www.gamefaqs.com/ps2/459841-final-fantasy-xii/faqs/45900 , misalnya). Formula untuk pedang di FFXII adalah:
dan formula kerusakan untuk stave adalah:
Mereka sangat mirip, tetapi perhatikan bahwa formula pedang hanya tergantung pada kekuatan dan level, sedangkan formula staf tergantung pada kekuatan, sihir dan level. Keuntungan dari formula semacam ini adalah memungkinkan formulasi pemain dua jalan pertumbuhan - membangun statistik mereka, atau membangun level mereka. The downside adalah bahwa ia juga menghukum karakter kedua cara juga. Apa yang akhirnya dilakukan adalah memungkinkan pemain untuk naik level untuk meningkatkan output kerusakan mereka (untuk FFXII jumlah ini meningkatkan output kerusakan mereka ~ 4% per level di sekitar level 50 ketika Anda memasukkan keuntungan stat) untuk membantu menyesuaikan kesulitan dengan tingkat kenyamanan.
Kerusakan tetap:
Formula kerusakan tetap tidak tergantung pada statistik atau level karakter, mereka hanya bergantung pada rumus kerusakan internal senjata itu sendiri. Mereka masih dapat bervariasi pada rentang, tetapi mereka memberikan kerusakan yang sama terlepas dari pengguna (kecuali efek khusus atau karakter karakter). Mereka paling baik digunakan jika senjata akan melakukan kerusakan tetap dan kemampuan untuk melengkapi senjata tergantung pada statistik dan / atau level. Diablo 2, misalnya, melakukan ini, seperti halnya banyak roguelikes yang memiliki senjata yang bergantung pada gulungan mati. Yang sedang berkata, 'kerusakan tetap' tidak menyiratkan "non-acak" - dan pada kenyataannya biasanya ada beberapa elemen keacakan untuk kerusakan yang dilakukan.
Ini adalah metodologi yang baik jika Anda ingin memiliki senjata yang mudah ditransfer antar karakter atau dengan hati-hati mengontrol hasil kerusakan yang dapat dilakukan karakter pada titik-titik tertentu dalam permainan jika Anda tahu peralatan apa yang mereka miliki aksesnya (melalui drop table, chests , dan mencuri tabel).
Tempat lain yang akan Anda temui adalah dengan jenis peralatan atau item tertentu dalam Final Fantasy. 1000 Jarum, misalnya, selalu memberikan 1000 kerusakan. Dalam Final Fantasy Legend II, seni bela diri menangani kerusakan berdasarkan pada rumus:
Final Fantasy XII memiliki kerusakan yang agak tetap untuk senjata juga, memberikan kerusakan sesuai dengan rumus:
Meskipun kerusakannya agak acak, itu hanya bervariasi 26,5 persen dari total jangkauan, jadi Anda dijamin akan melakukan tingkat kerusakan rata-rata dari waktu ke waktu. Jenis serangan ini berguna untuk karakter yang memiliki statistik rendah dan level rendah dalam permainan yang biasanya memperhitungkan faktor-faktor tersebut dalam menangani kerusakan. Plus, mereka mengabaikan pertahanan target (meskipun formula dapat dengan mudah dikerjakan ulang agar sesuai dengan pertahanan jika Anda inginkan).
sumber
semua gim dalam seri fantasi terakhir memiliki batas stat 255 karena masalah yang Anda temui. pada level 100 statistik akan menjadi 255.
Anda mengatakan tentang peningkatan statistik dengan kemampuan dan peralatan dan saya ingat melihat ini di permainan tetapi cara ini dilakukan adalah dalam formula. ada langkah tambahan yang memeriksa kemampuan dan pengubah peralatan dan menerapkannya setelah statistik digunakan.
dalam kasus Anda itu akan menjadi langkah 21: terapkan pengubah kemampuan langkah 22: terapkan pengubah peralatan step23: kerusakan akhir.
jika Anda tertarik google untuk formula fantasi akhir, mereka di luar sana. Saya memiliki copys dari mekanisme pertarungan yang sebenarnya termasuk AI untuk fantasi final 4, 6, 7 dan 9. orang-orang memecahkannya dari game asli ketika mereka membuat ROM untuk emulator. Tidak ada yang sulit ditemukan jika Anda terlihat cukup keras.
hal terbesar untuk membuat rumus adalah pengujian. membuat skrip untuk menjalankan pertempuran dengan kecerdasan di kedua sisi dan menjalankan beberapa ratus pertempuran. variasikan monster dan statistik dan lihat apakah berhasil atau jika lv 40 membunuh semuanya, sangat mungkin bahwa bos sebenarnya tidak mungkin untuk membunuh lol. tipnya adalah mematikan semua animasi karena mengesankan seberapa cepat AI dapat bertarung ketika tidak ada yang menonton.
sumber
2 hal pertama adalah:
Setelah Anda tahu itu, Anda memiliki informasi yang cukup untuk menggunakan rumus matematika yang disebutkan BlueRaja dalam jawabannya . Ingat saja tidak ada yang namanya formula kerusakan 'tepat' - hanya satu yang cocok dengan desain Anda untuk jenis pengalaman yang Anda inginkan untuk pemain Anda miliki.
sumber
secara alternatif, jika Anda mencari formula yang sangat sederhana, Lakukan hal berikut:
(Perhatikan bahwa ini adalah ide saya untuk formula,)
Pertama, untuk formula serangan sederhana, Anda hanya perlu beberapa statistik. Stat Serangan pemain (ini bisa Kekuatan, atau Sihir, tergantung pada jenis gerakan.)
Kemudian, buat variabel, yang disebut MovePower. Ini akan tergantung pada gerakan, dan langkah yang lebih baik akan memiliki MovePower yang lebih baik. Untuk rumus saya, perintah "Serangan" umum memiliki MovePower 5.
Kemudian, buat pertahanan menjadi stat berbasis persen, (dan, tentu saja, buat itu tidak mungkin untuk mencapai pertahanan 100% pada kerusakan)
Kemudian, selama fase serangan, cukup gandakan stat serangan dengan kekuatan bergerak, dan singkirkan kerusakan berdasarkan pertahanan musuh! sederhana!
Anda juga dapat memilih untuk memiliki pengubah lain, seperti jika gerakan akan menekan (Akurasi), jika langkah tersebut memiliki efek tambahan lainnya (Bio, menimbulkan racun,) dan memilih untuk memukul, (Akurasi lagi,) mengalami kerusakan pemutakhiran / penurunan peringkat bergerak yang mengubah statistik, dll. Bersenang-senanglah dengan itu!
sumber
Intinya, Anda perlu memikirkan dua hal.
1
Anda dapat pengguna
double
atau pustaka angka besar. Melakukan perhitungan dengan angka besar (seperti mengklik / gim idle sering mengandalkan pustaka angka besar). Dalam kasus Anda, angkanya relatif kecil sehingga menggunakan floating point 64-bit akan memungkinkan fleksibilitas yang dibutuhkan.2
Bagaimana Anda ingin permainan berperilaku? beberapa contoh:
ATK
untuk memutuskan apakah Anda memukul atau tidak dan melempar mati dengan peringkat kerusakan yang diketahui tergantung pada senjatanya: misalnya pedang panjang 1d8, pedang dua tangan 1d10, belati 1d4. Ini tidak akan skala dengan sangat baik jika hp dapat tumbuh dan terus. Jika Anda menggunakanATK
untuk menentukan apakah karakter mengenai atau gagal, Anda dapat melakukan lemparan lain setelah sukses denganATK
* 80% untuk menentukan angka.(ATK - DEF) +/- 20%
yang dilakukan di World's End (permainan strategi RPG). Ini berarti bahwa serangan terhadap lawan yang kuatDEF
tidak akan merusak sama sekali. Untuk instaceATK = 10
,ENEMY DEF = 12
,(ATK - DEF) = -2
dan itu juga berarti bahwa serangan tinggi vs def sedikit lebih rendah, bisa melakukan kerusakan kecil, berpotensi membuat pertempuran lebih lama dengan meningkatnya HP. Misalnya denganATK = 1010
,,ENEMY DEF = 1005
kerusakan akan menjadi 5. Kerusakan juga akan meningkat secara dramatis sekarang jikaATK
ditingkatkan dengan persentase kecil. MisalnyaATK = 1055
, akan melakukan 900% lebih banyak kerusakan dengan hanya peningkatanATK
nilai 5% .ATK / DEF * WEAPON_DAMAGE
ini akan meningkatkan skala secara bertahap ketikaATK
atauDEF
ditingkatkan dan memungkinkan penyerang lemah untuk merusak makhluk dengan kuatDEF
.tl; dr Anda perlu memperlakukan nomor Anda secara bertanggung jawab dan mencari tahu bagaimana Anda ingin permainan berperilaku dalam situasi yang berbeda. Beberapa pertanyaan untuk diri sendiri:
x
pertempuran? Jika tidak ada harapan, apakah menang lebihy%
kecil kemungkinannya?sumber