Apa alternatif untuk kerusakan awal untuk mengatasi kebuntuan pertempuran?

37

Scratch Damage adalah mekanik permainan di mana setiap serangan yang berhasil selalu melakukan sejumlah kerusakan minimal. Ini sering digunakan dalam sistem tempur subtraktif, di mana pertahanan dikurangi langsung dari kerusakan yang dilakukan oleh penyerang. Oleh karena itu, target akan selalu mengalami kerusakan minimal.

Kelemahan dari sistem seperti itu, bagi saya setidaknya, adalah itu adalah hack. Dibutuhkan rumus sederhana seperti Damage = Attack - Defensedan mengubahnya menjadi satu (sedikit) lebih kompleks: Damage = max(Attack - Defense, 1).

Saya juga merasa bahwa itu mengurangi keterampilan pemain dalam mengembangkan karakter mereka / dll. Tidak peduli berapa banyak bonus pertahanan yang mereka dapatkan, setiap serangan akan melakukan beberapa kerusakan kecil. Jadi mengapa pertahanan Anda begitu tinggi, jika itu tidak berarti apa-apa?

Lebih jauh, ini sekarang mendorong penggunaan angka yang lebih besar untuk Hp dan kerusakan, sehingga kerusakan goresan benar-benar dapat diabaikan. Lagi pula, jika kerusakan minimum adalah 1, dan Anda hanya memiliki 10 Hp, itu masih 10% dari kesehatan Anda. Bahkan dengan 20 Hp, itu 5%. Dan saya lebih suka menghindari menggunakan angka yang lebih besar seperti itu kecuali jika benar-benar diperlukan.

Namun, ada satu hal yang sangat penting dari kerusakan awal: ini memecahkan masalah kebuntuan.

Kebuntuan terjadi ketika kedua belah pihak tidak dapat merusak yang lain. Jika Anda menginvestasikan semua sumber daya Anda ke pertahanan, dan sedikit ke dalam serangan, maka karakter Anda mungkin tidak mengalami kerusakan, tetapi mereka tidak akan mampu menangani terlalu banyak. Dengan demikian, Anda bisa datang pada pertemuan di mana tidak ada pihak yang dapat menimbulkan kerusakan, sehingga pertempuran berlanjut selamanya. Ini terutama jika Anda tidak memiliki mekanik acak seperti hit kritis (yang saya juga benci).

Setidaknya dengan kerusakan awal, seseorang pada akhirnya akan menang. Mungkin hanya serangan dengan serangan Hp terbanyak atau tertinggi, tetapi pertempuran akan berakhir.

Jadi saya suka memiliki sistem pertempuran di mana akan selalu ada hasilnya. Tapi saya tidak suka mengalami kerusakan awal. Apa alternatif saya?

Alternatif yang tidak melibatkan angka acak bergulir; Saya ingin pertempuran menjadi 100% deterministik. Jika pertempuran yang sama terjadi, hasil yang sama harus terjadi.

Jika Anda ingin spesifik pada gameplay, pikirkan dalam hal pertempuran berbasis giliran, di mana pertempuran dapat otomatis (Anda merancang pasukan Anda, lalu mengadu mereka dengan yang lain).

Nicol Bolas
sumber
8
Bisakah Anda melakukan sistem baju besi yang memburuk (per pertemuan) untuk memecahkan masalah jalan buntu?
Tetrad
1
Saya sarankan Anda melihat "Pola Desain Permainan Bermain Peran Sukses": rpg-design-patterns.speedykitty.com/doku.php/start
Exilyth
3
Posisi Advokat Iblis: alih-alih memaksa pemain untuk memainkan cara aman Anda, mengapa tidak membiarkan mereka memutuskan apakah mereka ingin menggunakan bangunan bodoh yang bisa menemui jalan buntu?
Patrick Hughes
3
@ PatrickHughes: Karena saya percaya itu adalah desain game yang buruk untuk memungkinkan pemain untuk menempatkan diri mereka dalam posisi yang buruk tanpa peringatan dini yang tepat. Dan bahkan dengan peringatan dini, mereka harus bisa keluar setelah mereka melihat itu terjadi. Jika pilihan desain karakter mereka tidak dapat diambil kembali, maka mereka perlu tahu di muka bahwa mereka tidak secara permanen mengacaukan diri mereka sendiri dengan membuat pilihan yang sepertinya ide yang bagus pada saat itu.
Nicol Bolas
1
Kombinasi rpg-design-patterns.speedykitty.com/doku.php/… dengan rpg-design-patterns.speedykitty.com/doku.php/pattern:hit_points dan kurangnya pengacakan mengarah ke masalah yang dijelaskan dalam pertanyaan. Masalahnya dapat diatasi dengan menggunakan rpg-design-patterns.speedykitty.com/doku.php/… atau rpg-design-patterns.speedykitty.com/doku.php/… .
Exilyth

Jawaban:

41

Anda bisa menerapkan sistem kelelahan / stamina. Semakin banyak serangan yang dilakukan pemain menjadi semakin lelah yang berarti mereka tidak dapat mempertahankan pertahanan yang baik (lengan perisai tiba-tiba mulai terasa sangat berat setelah mengayunkan pedang 50 kali) saat kelelahan meningkat, pertahanan jatuh. Ini berarti seorang pemain yang telah mengembangkan karakter yang baik tidak akan menerima kerusakan dalam pertemuan cepat tetapi pertempuran yang lebih lama akan menghasilkan kerusakan yang meningkat mencegah kebuntuan.

Sutty1000
sumber
21

Ini sepertinya pertanyaan yang sangat terbuka. Solusi (yang belum disebutkan) untuk mencegah kebuntuan:

  • Biarkan kebuntuan sebagai hasil akhir yang layak. Ini adalah solusi yang paling tidak diharapkan atau tipikal. Dalam permainan RTS, misalnya, ini bisa berupa gencatan senjata yang tidak mudah, atau konflik yang tegang tetapi rendah dalam keseimbangan yang keras.
  • Batasan waktu dengan ikatan diizinkan
  • Batasan waktu di mana hit / skor / poin pertama setelah batas menang (kematian mendadak / lembur)
  • Bahaya acak dalam sistem (ala bom di Super Smash Bros ). Ini mengubah fokus situasi dari serangan ke pertahanan.
  • Faktor eksternal apa pun untuk ketidakseimbangan sistem (mis. Agen ketiga dengan kerusakan tinggi dan baju besi rendah, kesepakatan oleh kedua belah pihak untuk "duel" tanpa semua pelindung itu)
  • Pertahanan berkurang% (mungkin solusi paling sederhana, selama pertahanan dibatasi)
  • Keterampilan atau taktik yang mengubah dinamika permainan (pilihan yang tidak menghasilkan kerusakan, seperti keterampilan Jubah / Gaib)
  • Berarti melakukan kerusakan yang jauh lebih tinggi (hit kritis klasik, bonus siluman, bonus tinggi, bonus medan, kemampuan yang mengubah bagian tanah yang acak menjadi lava)
  • Berarti merusak atau menurunkan baju besi, atau menyebabkan kerusakan yang secara langsung ditargetkan pada karakter pertahanan tinggi (keterampilan yang membalikkan baju besi dalam perhitungan, sehingga agen dengan pertahanan yang lebih rendah menerima lebih sedikit kerusakan)
  • Item penggunaan terbatas atau keterampilan (misalnya bom, kemampuan kuat tetapi menguras). Hanya berguna jika ada tujuan jangka panjang di luar kebuntuan untuk menyeimbangkan penggunaan terbatas
  • Akhiri pertarungan artifisial (opsi klasik "Kabur")
Attackfarm
sumber
7

Sebagai varian, Anda dapat menambahkan akumulasi luka. Tentunya, kapak tembaga raksasa tidak akan menembus baju besi baja berat, tetapi akan melakukan kerusakan tumpul, dan bahkan mungkin mematahkan tulang. Hal yang sama berlaku untuk peluru dan rompi.

Setiap kali sebuah karakter dipukul, ubah bagian dari piercing dan slashing damage menjadi blunt damage, yang menumpuk. Setelah ambang tertentu (itu tergantung pada daya tahan, misalnya), akumulasi damage akan mengganggu keterampilan bertarung karakter. Beberapa opsi di sini:

  • Armor bisa jadi kurang efisien ketika menerima serangan di bagian tubuh yang sama.

  • Luka signifikan: kerusakan berkala, kelemahan akibat nyeri.

  • Luka parah: kehilangan kesadaran jangka pendek (membuat karakter sangat rentan).

  • Luka ekstrem: kehilangan stat permanen (jika karakter berhasil selamat).

Terkait: Mekanika kerusakan di Dwarf Fortress

Shadows In Rain
sumber
2
Saya akan menyarankan memberikan setiap kerusakan senjata yang tidak bisa dihalangi oleh baju besi. Pedang dan belati akan memiliki kapasitas bludgeoning yang kecil, tetapi kapak dan mace akan sangat efektif.
jmegaffin
5

Terapkan berbagai jenis kerusakan, dengan pelindung yang hanya melindungi terhadap beberapa jenis kerusakan. Misalnya, kerusakan kinetik, kerusakan asam, kerusakan api, dll. Tidak ada pelindung yang harus melindungi terhadap setiap jenis kerusakan.

Pengguna dapat melapisi pelindung mereka untuk melindungi dari semua jenis kerusakan, tetapi mereka tidak bisa melindungi terhadap semua jenis kerusakan pada saat yang sama. Ini menerapkan beberapa strategi ke dalam pertempuran juga, di mana pemain harus mengganti jenis kerusakan untuk melewati berbagai lapisan baju besi.

MichaelHouse
sumber
4

Anda bisa saja tidak memiliki stat pertahanan dan hanya memberikan musuh besar hp lebih besar. Saya tahu Anda ingin menghindari angka raksasa, tetapi jika Anda ingin permainan deterministik, berbasiskan giliran di mana serangan tidak didasarkan pada input pemain secara langsung (tidak ada kemungkinan kesalahan manusia mengacaukan serangan) stat pertahanan tampaknya sedikit sia-sia demikian juga.

Jika Anda khawatir tentang aspek presentasi, Anda dapat memecah HP menjadi Hearts atau Health pips EG 100 hp = 1 heart. Hati mulai menjadi hitam ketika karakter kehilangan HP, lalu menghilang sepenuhnya. Dengan begitu lebih mudah bagi pemain untuk memahami daripada 129301239103123hp, tetapi Anda tidak perlu khawatir tentang menyeimbangkan beberapa persamaan ajaib.

Jika Anda khawatir tentang realisme, Anda selalu dapat membuatnya animasi agar terlihat seperti target serangan berhasil diblokir atau hanya sedikit tergores sampai pukulan membunuh.

Lewis Wakeford
sumber
1
" Jika Anda menginginkan permainan deterministic, turn based di mana serangan tidak didasarkan pada input pemain secara langsung [...] stat pertahanan tampaknya juga tidak ada gunanya. " Pertahanan tidak didasarkan pada konsep "peluang untuk kehilangan". Ini lebih seperti pengurangan kerusakan pada D&D, bukan THAC0 (atau apa pun sebutan mereka akhir-akhir ini). Pertahanan berarti bahwa serangan 40 kerusakan dapat dikurangi menjadi 10 kerusakan jika Anda memiliki 30 pertahanan. Saya tidak melihat bagaimana itu bisa menjadi "sia-sia.
Nicol Bolas
1
Saya tahu matematika sedikit berbeda, tetapi sebenarnya tidak ada perbedaan besar dalam hal permainan-permainan antara hanya memberikan karakter jumlah kesehatan yang proporsional sebagai gantinya dan memiliki kerusakan dikurangi dengan jumlah tertentu. Tidak jika harus selalu ada cara menangani kerusakan pada target. EDIT: Itu dengan asumsi tidak ada serangan khusus yang mengabaikan pertahanan, atau pengubah gameplay lainnya.
Lewis Wakeford
Memiliki stat pertahanan yang subtraktif memberi Anda sesuatu yang lebih dari sekadar Hp (selain semua hal yang Anda kecualikan, seperti serangan khusus atau pengubah). Ini menciptakan stratifikasi antara pengguna kerusakan-over-waktu dan pengguna kerusakan tinggi. Karakter yang menyerang beberapa kali tetapi dengan kerusakan yang lebih rendah akan bertabrakan dengan karakter pertahanan tinggi, sedangkan karakter yang lebih lambat, kerusakan tinggi akan melakukan lebih banyak kerusakan dari waktu ke waktu. Poin hit saja tidak akan membuat stratifikasi ini.
Nicol Bolas
4

Tambahkan mekanik aus untuk pertahanan. Buat setiap serangan sedikit mengurangi pertahanan target.

Akhirnya bahkan serangan lemah akan melemahkan pertahanan target cukup untuk menimbulkan kerusakan yang sebenarnya.

Philipp
sumber
3

Jika Anda setuju dengan keluar dari dunia bilangan bulat dan ingin meningkatkan sistem pengurangan, Anda dapat menggunakan algoritma pengurangan kerusakan dari Warlords Battlecry III:

damage = attack

while DR > 0:
    usedDR = DR
    if DR > damage
        usedDR = damage
    damage = damage - usedDR * 0.5
    DR = (DR - usedDR) / 2

HP = HP - damage

Ini adalah fungsi yang berperilaku sangat mirip dengan pseudocode di atas:

damage(attack, DR) = attack * 2 ^ -(DR/attack)

Ketika DR lebih kecil dari serangan (kerusakan yang masuk), ia berperilaku seperti serangan - k * DR di mana k adalah 0,693 ( ln(2)tepatnya). Ketika DR dekat atau lebih besar maka kerusakan yang masuk dari kerusakan berkurang setengahnya DR/attack. Misalnya untuk DR = 30 dan serangan = 10, kerusakan akan menjadi 1,25 (serangan dibelah tiga 3 kali).

Ini mungkin terlihat lebih rumit dan sulit bagi manusia untuk dievaluasi tetapi ini bebas hack dan perubahan pada kedua parameter tersebut relevan. Jika penyerang mendapatkan kekuatan serangan bonus atau pemain bertahan mendapatkan atau kehilangan DR dalam jumlah kecil, kerusakan yang dihasilkan akan berubah.

Kaisar Orionii
sumber
1

Gunakan pelampung.

Bahkan jika Anda menghadirkan bilangan bulat HP ke pemain, gunakan float untuk hp dan float untuk kerusakan.

Saya menggunakan kelas armor fraksional sekarang, di mana armor 1.0 tidak terkalahkan dan armor 0,0 berarti "mengambil kerusakan penuh". Kerusakan berkurang karena:

float hpReduction = hp - dmg*(1.f - armor) ;

Formula ini memiliki efek memungkinkan "kerusakan ganda" dengan menetapkan pelindung ke -1.

Saya telah mengklasifikasikan kerusakan ke dalam beberapa kategori juga, lihat Starus's concussive / explosive damage type, atau sistem tipe damage Eve sebagai contoh.

Jadi sekarang, sedikit goresan di baju besi kelas .99 Anda akhirnya akan Cherry Tap Anda sampai mati, tetapi serangan akan tampaknya tidak merusak pemain (ia akan tetap pada 1 hp saat ia beralih dari 1,15 hp ke 1,1499 hp yang serangan selanjutnya ..)

bobobobo
sumber
0

Grafik keterampilan dapat menempatkan beberapa keterampilan menangani kerusakan sebagai prasyarat untuk keterampilan pertahanan tingkat tinggi untuk mengurangi kemampuan pemain untuk membuat bangunan yang sangat asimetris.

Serangan kritis bisa mendapatkan beberapa kerusakan selama pertahanan seseorang tidak terlalu tinggi. Jika Anda membuatnya secara berkala daripada acak, Anda masih memiliki pertarungan deterministik.

Setelah sejumlah klik gagal, Anda mungkin secara otomatis mengurangi kecepatan serangan demi peluang hit dan kerusakan yang lebih tinggi. Karakter awal super cepat Anda melakukan sepuluh serangan per detik; sekarang, setelah lima belas serangan tanpa kerusakan, ia mendapat tiga serangan per detik pada + 50% untuk memukul dan + 200% kerusakan. Ini mirip dengan hit kritis, tetapi lebih cepat untuk situasi seperti ini.

Anda bisa menggunakan pengurangan kerusakan berbasis persentase dari armor, tetapi untuk membuatnya lebih menarik daripada cara lain untuk menambah HP maksimum Anda, Anda bisa meminta persentase pengurangan lebih besar untuk hit yang lebih lemah. Misalnya, pengurangan 90% untuk kerusakan 1-20hp, 60% untuk 20-30, dan 30% untuk yang lainnya.

Akhirnya, jangan khawatir tentang jumlah besar. Mereka memberi Anda tingkat kontrol yang jauh lebih baik daripada yang kecil. Memiliki karakter level 1 dimulai dengan 100 poin hit berarti Anda dapat memiliki sesuatu yang membunuh mereka dalam tujuh hit tetapi tidak lima. Ini berarti Anda dapat memiliki kerusakan racun dan kerusakan lain dari efek waktu yang tidak terlalu merusak (serta beberapa yang, jika Anda suka). Jika Anda tidak suka menampilkan angka besar, temukan cara untuk tidak menampilkannya.

dhasenan
sumber
0

Anda mengatakan Anda ingin selalu ada resolusi, tetapi apakah itu harus menjadi kemenangan?

Pertimbangkan pendekatan yang digunakan oleh Dominions - pada gilirannya 50 penyerang secara otomatis mengalahkan. Pada gilirannya 75 bek secara otomatis dirutekan. (Sebuah router tidak secara otomatis bekerja - beberapa unit kebal terhadap perutean dan bahkan jika unit immobile tidak dapat benar-benar pergi.) Pada gilirannya 100 semuanya tersisa terbunuh.

Sementara saya tidak setuju dengan cara tepatnya berfungsi (ada situasi di mana hanya butuh waktu terlalu lama untuk membunuh pihak lain) ide dasarnya tetap valid.

Apa yang saya sarankan:

Lihatlah kekuatan kekuatan masing-masing pihak. (Hit poin adalah titik awal yang jelas tetapi hati-hati, Dominions memiliki masalah dalam hal ini di mana hit poin "kehilangan" yang tidak berarti sedang dihitung - perubahan bentuk, panggilan dll. Mengakibatkan routing tentara karena korban ketika mereka tidak bahkan tidak mengambil apa pun.) Melacak nilai minimum yang dicapai dan perhatikan berapa banyak putaran yang telah terjadi sejak minimum baru telah ditetapkan. Jika terlalu lama tanpa minimum baru ditetapkan Anda memiliki semacam kebuntuan dan penyerang harus mundur.

Loren Pechtel
sumber
0

Alternatif yang belum saya lihat adalah bahwa karena nilai armor Anda membuat serangan menjadi negatif, Anda bisa menambahkan RNG kecil untuk blok yang benar:

const stratchDamage = 1;
var armour = 10; 
var blockCount = 0;

function registerAttack (incomingAttack)
{
    var incomingDamage = incomingAttack - armour;

    // Nothing unusual, deal damage
    if( incomingDamage > 0 ) 
    {
        dealDamage(incomingDamage);
    } 

    // Armour cancels out attack, deal scratch damage
    else if( incomingDamage == 0 ) 
    {
        dealDamage(scratchDamage);
    }

    // Armour over attack value, check if can block
    else
    {
        var trueBlockChance = armour - incomingDamage;

        // blockCount starts at 0, will always block first attack
        if( trueBlockChance  > blockCount ) 
        {
            // Can technically do nothing, or trigger block animations etc
            block();
            blockCount ++; // Increment block so they can't block forever
        }
        else
        {
            dealDamage(stratchDamage);
            blockCount = 0;
        }
    }
}

Semakin tinggi defisit kerusakan setelah baju besi diperhitungkan, semakin banyak serangan yang dapat diblokir karakter sebelum mengambil serangan kerusakan goresan lagi.

Ini memberikan skala ekstra untuk statistik pertahanan sementara tidak membuat mereka kebal, juga memungkinkan serangan untuk melewati mekanik blok ini jika Anda menginginkannya dan secara alami akan mencegah kebuntuan.

Perkelahian mungkin memakan waktu lama jika Anda telah menumpuk statistik di pertahanan Anda karena pelanggaran, tetapi pada akhirnya akan sampai di sana.

Piddock Tom 'Blue'
sumber
Kutipan dari OP: Saya ingin pertarungan 100% deterministik. Ini tidak memungkinkan untuk pertempuran deterministik 100%.
Charanor
Kemudian blok bisa juga berbasis giliran, untuk setiap tingkat trueBlock atas serangan, musuh harus menyerang yang berkali-kali untuk mencapai kerusakan awal. Gagasan yang sama dapat diterapkan.
Tom 'Blue' Piddock
@ Charanor - menyesuaikan jawaban menjadi 100% deterministik.
Tom 'Blue' Piddock
-1

Banyak game pertarungan 3D menghindari kerusakan awal. Contohnya adalah Tekken dan Soul Calibur 2. Mereka menghindari ini dengan membuatnya sulit untuk memiliki pertahanan yang sempurna. Beberapa serangan terlalu cepat untuk bereaksi. Saya pikir ini solusi yang cukup bagus.

Daniel Kaplan
sumber
-1

Saya pikir mengurangi efektivitas Pertahanan bukanlah pilihan yang baik. Membebani pemain menyebabkan pengalaman game yang buruk. Mengapa tidak sebaliknya?

Mengapa tidak menyalakan Serangan seiring berjalannya waktu. Ini membuat kerusakan goresan meningkat seiring waktu, mengurangi insentif pemblokiran. Di pertengahan permainan, seorang karakter dapat membunuh orang lain sambil meratapi dirinya saat dia membela.

Beberapa rpg pnp menerapkan "mekanisme tegangan". Tiap belokan tegangan bertambah satu. Semua gulungan memiliki pengubah nilai tegangan yang ditambahkan, mendorong pertempuran menuju akhir.

Gagasan lain, yang datang dari game Fighting, adalah serangan yang melewati pertahanan. Saya tidak tahu apakah permainan Anda berbasis giliran atau waktu-nyata, tetapi serangan ini juga bisa membuka lawan ke kombo atau melumpuhkannya atau beberapa kemampuannya sementara.

Saya percaya triknya adalah tidak menurunkan pertahanan. Buat opsi lain sama baiknya dengan pertahanan, atau kurangi waktu di mana pertahanan adalah pilihan yang baik.

Vasco Correia
sumber