Formula untuk tiga pahlawan yang bersaing, masing-masing memiliki satu mereka dapat mengalahkan dan satu mereka dikalahkan

12

Saya mencoba merancang game untuk proyek yang saya miliki, ide utamanya adalah:

3 Jenis pahlawan
3 Statistik per pahlawan

Tidak ada level yang terlibat sehingga perbedaannya harus terletak pada statistik.

Fight logic - Logika pertarungan adalah type1hero memiliki peluang bagus untuk menang type2hero, type2hero memiliki peluang bagus type3hero dan type3hero memiliki peluang bagus untuk menang type1hero.

Selama lebih dari seminggu saya mencoba untuk menemukan formula berdasarkan statistik yang akan memungkinkan saya untuk memperbaikinya tetapi saya tidak bisa, saya mencampuri angka kemarin dan itu layak tetapi saya tidak bisa mengekstrak formula itu.

Bisakah Anda membimbing saya atau memberi saya petunjuk tentang bagaimana saya harus mulai membuat formula pada game Non lvl yang memenuhi logika pertarungan?

Georgiadis Abraam
sumber
1
"Selama lebih dari seminggu saya mencoba menemukan formula berbasis statistik yang akan memungkinkan saya untuk memperbaikinya" - Perbaiki apa? Ini adalah mekanik Rock-paper-scissors ; Anda tidak dapat menggambarkannya secara matematis, karena tidak ada x, y, z untuk x > y ∧ z > x ∧ y > zsetidaknya tidak dalam matematika dasar yang saya tahu dan gunakan.
Markus von Broady
2
Meskipun Anda telah menerima jawaban yang bagus, pertanyaan ini tidak terlalu baik.
MichaelHouse
@MarkusvonBroady: Cara biasa untuk menggambarkan secara matematis pemesanan seperti ini adalah dengan mengarahkan grafik / hubungan intransitif. Anda benar bahwa Anda tidak akan melakukan ini dengan bilangan real.
Joren
5
@ Byte56: Meskipun saya setuju itu tidak disajikan dengan cara yang sangat bagus, pertanyaan yang tersembunyi di balik tetap menarik: bagaimana memodulasi sistem pertempuran 3 arah dengan cara yang umum, mirip seperti gunting batu-kertas, seperti yang dinyatakan dalam jawaban di bawah. Tidak bernilai -1, imho.
Jesse Emond
@JesseEmond Dalam satu jawaban di bawah *. Masalahnya sangat sederhana, ketika saya mengomentari jawabannya, itu hanya berbagai jenis armor dan serangan yang menyamar sebagai mekanik batu-kertas-gunting. Padahal formula yang disediakan sangat rapi.
Markus von Broady

Jawaban:

38

Game Anda adalah game yang tidak transitif . Anda dapat menerapkannya dengan 3 statistik R , P dan S , menggunakan logika rock-paper-scissors. Sebut statistik ini apa pun yang Anda inginkan, tetapi saya akan tetap menggunakan logika RPS.

Sekarang anggaplah Anda memiliki dua pahlawan, dengan statistik R1 / P1 / S1 dan R2 / P2 / S2. Kita perlu menghitung berapa banyak kerusakan yang akan mereka lakukan satu sama lain.

Anda ingin batu memberikan kerusakan pada gunting. Itu berarti hero 1 memberikan «rock» damage ke hero 2 jika R1 > 0dan jika S2 > 0. Salah satu formula yang berhasil adalah sederhana min(R1, S2).

Yang segera memberi kita rumus kerusakan:

Damage(hero1 on hero2) = min(R1, S2) + min(S1, P2) + min(P1, R2)
Damage(hero2 on hero1) = min(R2, S1) + min(S2, P1) + min(P2, R1)

Mari kita lihat apa yang terjadi dengan contoh nyata:

    Hero1  Hero2
R    120     50
S     30    130
P     15     30

Mengingat statistik, pahlawan 1 jelas merupakan tipe «batu» dan pahlawan 2 jelas merupakan tipe «gunting». Inilah hasilnya:

Damage(hero1 on hero2) = min(120, 130) + min(30, 30) + min(15, 50)
                       = 120 + 30 + 15
                       = 165
Damage(hero2 on hero1) = min(50, 30) + min(130, 15) + min(30, 120)
                       = 30 + 15 + 30
                       = 75

Hasil akhir: 165versus 75. Pahlawan 1 menang, seperti yang diharapkan.

Ada banyak kekurangan dengan formula ini, tapi saya harap mereka memberi Anda ide tentang bagaimana menerapkan aturan tempur intransitif .

sam hocevar
sumber
2
+1, saya akan menggambarkannya hanya sebagai berbagai jenis serangan dan pelindung (poision, elemental, fisik)
Markus von Broady
1

Setiap pahlawan berlatih di Melee Combat (M), Dodge (D), dan Wizardry (W).

Menghindar menghindari pertarungan jarak dekat dengan sangat baik, dan serangan sihir kurang baik.

Setiap putaran, seorang pahlawan memberikan damage yang sama dengan (MD) + (W - 0.5D) (M dan W berasal dari statistik penyerang, D berasal dari statistik pembela.)

Jadi seorang Prajurit mungkin memiliki statistik:

M: 100, D: 20, W: 0

Nakal bisa memiliki statistik:

M: 30, D: 80, W: 30

Dan seorang Wizard mungkin memiliki statistik seperti:

M: 10, D: 10, W: 80

Warrior vs Rogue, the warrior memberikan 20 DPS, sedangkan the rogue memberikan 30 DPS. Keuntungan Rogue! Rogue vs. Wizard, si bajingan menangani 20 DPS, sementara si penyihir menangani 40 DPS. Wisaya Keuntungan! Wizard vs Warrior, wizard memberikan 70 DPS, sedangkan warrior memberikan 90 DPS. Prajurit Keuntungan!

Simon Strange
sumber
Jawaban ini tidak menambahkan apa pun di luar jawaban Sam . Juga, bajingan memiliki keuntungan terkecil ( 30 - 20 == 10dibandingkan dengan 40 - 20 == 90 - 70 == 20dua lainnya). Tentunya ini berarti bajingan secara inheren dirugikan?
Anko
Keindahan dari sistem nontransitif ini adalah mereka menyeimbangkan hampir secara otomatis. Penyamun yang tidak beruntung berarti lebih sedikit orang yang akan memainkannya, menyisakan lebih sedikit target bagi penyihir untuk dikalahkan dan lebih sedikit lawan yang bisa dikalahkan oleh pejuang. Namun jika semua orang memilih prajurit: kembalinya orang jahat.
Marcks Thomas