ゲームに基づくstatistics statsのツールのためのアルゴリズム(League of Legends)


10

ゲーム(League of Legends)のシミュレーター(基本的にテスト目的)を作成したいと思います。

ゲームの基本:

あなたはいくつかの統計を持つヒーローを持っています:

  • 健康ポイント
  • 攻撃ダメージ
  • 攻撃速度
  • 装甲貫通
  • 移動速度

ヒーローは4つのスキルを持つことができます(各レベルで1つのスキルポイントを取得します)(ほとんどの場合、手動でアクティブ化され、クールダウン、ダメージ、攻撃力/攻撃力のスケール比、およびスキルレベルがあります)+パッシブスキル

敵のヒーローやニュートラルモンスターを殺すことができます。それらは同じステータスを持っています:

  • 健康ポイント
  • 攻撃ダメージ
  • 攻撃速度

私がしたいこと:

特定のアイテム、または特定のステータスの増加があなたの殺害力/スピードをスピードアップするかどうかをテストするツールを作成します。

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

統計の例:

  • HP:420
  • 広告:55
  • 攻撃速度:0.613(攻撃/秒-> 1 / 0.613秒のすべての攻撃)
  • 装甲貫通力:25

キャラクターは1 / attackspeedで敵をオートアタックし、attackdamageでダメージを与えます(ダメージを計算する公式はありますが、このフェーズでは重要ではないと思います)。一度死んだら、movingspeed(あなたはマップ、黄色の頭蓋骨でキャンプを見ることができます)

私はアルゴリズムについて考えていました:

  1. i = 0からi = 30000(ミリ秒を数える)でforを作るだけだと思ったので、ミリ秒ごとに敵のhpとhpをチェックするだけでいいことがわかりました(かなりCPUが重いため、その中にランダムを入れるため、1k回の反復を合計できるはずですが、これは不可能です)

  2. 第二に、私はi = 1から30までforを実行し、毎秒チェックし、最後の1秒間に何が起こったかをチェックする必要があると思いましたが、ニュートラルモンスターの一部は大きなキャンプ(最大4モンスター)にいます、そしてこのようにして、コードはますます複雑になりました。

  3. プレイヤー/モンスターごとにスレッドを作成し、死んだら調べ終わったら、プレイヤーのHPを下げます。

私の質問、これは正しい方法ですか?

TLDR:統計値の増加によりキャラクターがより速いニュートラルモンスターを殺すゲームについての分析(1kを繰り返し、平均を計算)を作成するツールを作成したいと思います。

私はjavaを好みますが、atmはアルゴリズムに行き詰まっています。


@Karoly S:ええ、それは私の悪いです、.com-> .eu

私はこれに取り組んできました:

各オブジェクト(プレーヤーのスキル、オートアタック、バフ)の残り時間をチェックし、常に最短の時間を選択して、last_timeを保存し、時間を追加します。次のラウンドでは、(time-前回)

オブジェクトの残り時間が0の場合、オブジェクトは必要なことをすべて実行します。

それが効率的な方法かどうかはわかりませんが、それが私ができる最善の方法です。


1
Stack Exchangeのゲーム開発セクション/サイトで幸運を祈って、Modを動かしてみてください。ジャングルシミュレーターは興味深いものです。少し考えて、思いついた内容を確認します。
S

迅速な回答をありがとう、あなたの助けは大歓迎です。あなたもハンガリー人だと思いますか?

絶対に、これは私がこれほど深くは考えていませんが、私は興味があります。私の最初のアプローチは、#2の効果的でより単純なバージョンが可能かどうかを確認することです。これについては、詳しくお話ししたいと思います。そして、はい、あなたの推測は正しいでしょう:)
Karoly S

私にはクールに聞こえます。トピックを開いたままにします。おそらく誰かがすでにそれについて考えています。私のメール(gwelican dot comで開催)

いいですね。少し考えて、今日少し後でメールを送ります。
Karoly S 2011

回答:


1

フレームごとのシミュレーションの代替:

次のような式によって、シミュレーションの妥当な近似を得ることができます。

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

ムーブキューを維持して、ティックごとではなくムーブごとをシミュレートすることもできます。

// 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
...

移動キューは、損傷が連続的ではなく離散的であるという事実を正しく処理するため、より正確になります。たとえば、0秒で50のダメージを与え、1秒でさらに50のダメージを与えると、私のDPSは50になりますが、100秒のHPターゲットを1秒で殺します。

@hammar:その通りです。戦いが短いほど、DPSベースの推定の精度は低くなります。
ジミー

ゲームにスタンや他のデバフがあるという事実は、そのようなツールを達成することを本当に難しくします。なぜなら、プレイヤーが異なれば、キル率も異なるからです。とにかく良い答え。
Grimshaw
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.