Algoritma untuk alat untuk membuat statistik statistik berdasarkan game (liga legenda)

10

Saya ingin membuat simulator (pada dasarnya untuk tujuan pengujian) untuk permainan (League of Legends).

Dasar-dasar permainan:

Anda memiliki pahlawan yang memiliki beberapa statistik:

  • Titik Kesehatan
  • Kerusakan Serangan
  • Kecepatan serangan
  • Baju zirah
  • Penetrasi Armor
  • Kecepatan pergerakan

Hero dapat memiliki 4 skill (Anda mendapatkan satu skillpoint di setiap level) (Mereka diaktifkan secara manual, sebagian besar waktu, memiliki cooldown, damage, attackpower / attack scale scale ratio, dan level skill) + skill pasif

Anda dapat membunuh pahlawan musuh, atau monster netral, mereka memiliki statistik yang sama:

  • Titik Kesehatan
  • Kerusakan Serangan
  • Kecepatan serangan
  • Baju zirah

Apa yang ingin saya lakukan:

Buat alat untuk menguji apakah item tertentu, atau peningkatan stat tertentu akan mempercepat kekuatan / kecepatan membunuh Anda.

peta: http://evtron.com/Evtron-Alpha/wp-content/uploads/2011/02/Summoners-Rift.jpg

Contoh stat:

  • Hp: 420
  • Iklan: 55
  • AttackSpeed: 0,613 (serangan / s -> setiap serangan pada 1 / 0,613 s)
  • penetrasi baju besi: 25

Karakter akan secara otomatis menyerang musuh dengan kecepatan 1 / serangan, dan merusak dengan serangan serangan (ada formulasi untuk menghitung kerusakan, tapi itu tidak penting dalam fase ini kurasa), setelah mereka mati, pindah ke yang berikutnya dengan kecepatan gerak ( Anda dapat melihat kamp-kamp di peta, tengkorak kuning)

Saya sedang memikirkan algoritma:

  1. Saya pikir jika saya hanya membuat untuk dari i = 0 ke i = 30000 (menghitung ms), jadi saya bisa memeriksa hp musuh dan hp saya juga di setiap ms ternyata sangat buruk (cpu cukup berat, dan saya ingin untuk meletakkan beberapa acak di dalamnya, jadi saya harus bisa meringkas iterasi 1k, yang tidak mungkin)

  2. Kedua, saya pikir saya hanya harus melakukan untuk dari saya = 1 hingga 30, dan memeriksa setiap detik, dan memeriksa apa yang terjadi di detik terakhir, tetapi beberapa monster netral berada di kamp besar (hingga 4 monster), dan dengan cara ini kode semakin rumit dan rumit.

  3. Saya akan membuat utas untuk setiap pemain / monster, dan begitu mereka selesai mencari ketika mereka mati, dan mengurangi hp pemain.

Pertanyaan saya, apakah ini cara yang tepat untuk pergi?

TLDR: Saya ingin membuat alat untuk membuat analisis (iterate 1k dan menghitung rata-rata) tentang game yang peningkatan stat akan membuat karakter membunuh monster netral yang lebih cepat.

Saya lebih suka java, tetapi atm saya terjebak pada algoritma.


@Karoly S: Yap, ini salahku, .com -> .eu

Saya sudah mengerjakan ini:

Saya memeriksa sisa waktu pada setiap objek (skill pemain, serangan otomatis, buff), dan selalu memilih waktu yang paling singkat, dan menyimpan last_time, dan menambahkan waktu ke waktu, pada putaran berikutnya saya menghitung waktu dengan (waktu- terakhir kali)

Jika objek memiliki sisa waktu 0, ia akan melakukan apa pun yang perlu dilakukan.

Saya tidak tahu apakah itu cara yang efisien atau tidak, tapi itu yang terbaik yang bisa saya lakukan.

Tetrad
sumber
1
Anda mungkin lebih beruntung bertanya di bagian Pengembangan Game / situs Stack Exchange, cobalah untuk mendapatkan Mod untuk memindahkannya, meskipun kemungkinan mereka akan tetap. Simulator rimba akan sangat menarik, saya akan memikirkannya dan melihat apa yang saya hasilkan.
Karoly S
Terima kasih atas jawaban cepatnya, bantuan Anda sangat kami hargai. Dugaan saya benar bahwa Anda juga orang Hongaria?
Tentu saja, ini adalah sesuatu yang saya pikirkan walaupun tidak sedalam ini secara mendalam, tetapi saya akan tertarik. Pendekatan awal saya adalah untuk melihat apakah versi # 2 yang efektif dan lebih sederhana adalah mungkin. Saya ingin mendiskusikan ini dengan Anda lebih jauh. Dan ya, tebakan Anda benar :)
Karoly S
Kedengarannya keren bagi saya, saya akan membiarkan topik terbuka, mungkin seseorang sudah memiliki ide tentang itu. email saya (etheld at gwelican dot com)
Kedengarannya bagus, saya akan memikirkannya dan mengirimkan email kepada Anda beberapa hari kemudian.
Karoly S

Jawaban:

1

Alternatif untuk simulasi frame-by-frame:

Anda bisa mendapatkan semacam perkiraan yang wajar untuk simulasi dengan rumus seperti

rawDamage = <some function of strength?)
Damage = rawDamage - enemyArmorReduction
DPS = (attackSpeed * Damage) * enemyArmorMod
myRemainingHP = myDPS / theirHP  - theirDPS / myHP

Anda juga dapat mempertahankan antrean bergerak, sehingga Anda mensimulasikan per-gerakan, bukan per-centang:

// my aspd = 4 attacks per second, his aspd = 3 attacks per second
0.0s : start battle
0.25s: I attack
0.33s: He attacks
0.50s: I attack again
...
1.00s: I attack
1.00s: He attacks
...
Jimmy
sumber
Antrean pemindahan akan lebih akurat, karena berurusan dengan fakta bahwa kerusakan adalah diskrit, bukan kontinu. Misalnya, jika saya melakukan 50 kerusakan pada 0 detik, dan 50 lainnya pada 1 detik, DPS saya akan menjadi 50, namun saya akan membunuh target 100 HP dalam 1 detik.
@hammar: itu benar. semakin pendek pertarungannya, semakin tidak akurat perkiraan berbasis DPS.
Jimmy
Fakta bahwa permainan memiliki stun dan debuff lain akan membuat alat seperti itu sangat sulit untuk dicapai, karena pemain yang berbeda dapat memiliki hasil yang berbeda dalam membunuh mereka. Pokoknya jawaban yang bagus.
Grimshaw