戦闘のデッドロックを解決するためのスクラッチダメージの代替手段は何ですか?


37

スクラッチダメージはゲームメカニックであり、攻撃が成功すると、常に最小限のダメージが与えられます。これは、攻撃者によるダメージから防御が直接差し引かれる減法戦闘システムでよく使用されます。そのため、ターゲットは常に最小限のダメージを受けます。

このようなシステムの欠点は、少なくとも私にとっては、ハックだということです。次のような単純な式を取り、Damage = Attack - Defenseそれを(少し)より複雑な式に変換しますDamage = max(Attack - Defense, 1)

また、キャラクターの成長などのプレイヤーのスキルを損なうと感じています。どれだけ多くの防御ボーナスを獲得しても、すべての攻撃は小さなダメージを与えます。それでは、何の意味もないのに、なぜあなたの防御力をそんなに高くするのでしょうか?

さらに、これによりHPとダメージに大きな数値を使用することが推奨されるため、スクラッチダメージはごくわずかです。結局、最小ダメージが1で、10 Hpしかない場合、それはあなたの健康の10%です。20 Hpであっても5%です。そして、絶対に必要でない限り、そのような大きな数字の使用は避けたいです。

ただし、スクラッチ損傷の非常に重要な利点が1つあります。デッドロックの問題を解決します。

どちらの側も他方にダメージを与えることができない場合、デッドロックが発生します。すべてのリソースを防御に投資し、攻撃にほとんど投資しない場合、キャラクターはダメージを受けないかもしれませんが、どちらもあまり対処できません。したがって、どちらの側もダメージを与えることはできないため、戦闘は永遠に続きます。これは特に、クリティカルヒット(これも嫌いです)のようなランダムなメカニズムがない場合です。

少なくともスクラッチ損傷あれば、最終的に誰かが勝ちます。これは、最もHPまたは攻撃数が最も多いものである可能性がありますが、戦闘は終了します。

だから、常に結果が出る戦闘システムを持つのが好きです。しかし、私は引っかき傷が好きではありません。私の選択肢は何ですか?

乱数のローリングを含まない代替手段。戦闘を100%確定的にしたい。同じ戦いが行われた場合、まったく同じ結果が発生する必要があります。

ゲームプレイの詳細を知りたい場合は、ターンベースの戦闘の観点から考えてください。戦闘は自動化できます(部隊を設計し、他の部隊と対戦します)。


8
デッドロックの問題を解決するために、アーマーシステムの劣化(遭遇ごと)を行うことはできますか?
テトラッド

1
「成功するロールプレイングゲームのデザインパターン」をご覧になる
design

3
悪魔の擁護者の立場:プレイヤーに安全な方法でプレイさせるのではなく、デッドロックの原因となる愚かなビルドを使用するかどうかをプレイヤーに決めさせてはどうでしょうか?
パトリックヒューズ

3
@PatrickHughes:プレイヤーが適切な事前警告なしに自分を悪い位置に置くことができるのは悪いゲーム設計だと思うからです。そして、事前の警告があったとしても、彼らはそれが起こっていることがわかったら、それから抜け出すことができなければなりません。キャラクターデザインの選択を取り戻すことができない場合は、その時点で良いアイデアのように思われる選択を行うことによって、彼らが永久に自分自身を台無しにしていないことを前もって知る必要があります。
ニコルボーラス

1
rpg-design-patterns.speedykitty.com/doku.php/…rpg-design-patterns.speedykitty.com/doku.php/pattern:hit_pointsの組み合わせ、およびランダム化の欠如は、質問で説明されている問題につながります。この問題は、rpg-design-patterns.speedykitty.com / doku.php / またはrpg-design-patterns.speedykitty.com/doku.php/…を使用することで軽減できます。
Exilyth

回答:


41

疲労/スタミナシステムを実装できます。より多くの攻撃が行われると、疲労が増すにつれてプレイヤーはますます疲労し、防御力が低下し、剣を50回振った後にシールドアームが突然重く感じ始めます)。つまり、優れたキャラクターを開発したプレイヤーは、クイックエンカウンターではダメージを受けませんが、長く引き抜かれた戦闘では、デッドロックを防ぐためにダメージが増加します。


21

これは非常に自由な質問のようです。デッドロックを防ぐためのソリューション(まだ言及されていない):

  • 実行可能な最終結果としてデッドロックを考慮してください。これは、最も予想されない、または典型的なソリューションです。たとえば、RTSゲームでは、これは不安な停戦、または暴力的なバランスにおける緊張はあるが控えめな競合かもしれません。
  • 許可されたタイによる時間制限
  • 制限後の最初のヒット/スコア/ポイントが勝つ時間制限(突然の死亡/残業)
  • システム内のランダムな危険(Super Smash Brosの爆弾)。これにより、状況の焦点が攻撃から防御に変わります。
  • システムのバランスを崩すための外部要因(例:高いダメージと低い装甲を備えた3番目のエージェント、すべての装甲なしで「決闘」するという両側の合意)
  • 防御率を減少させた(防御に上限がある限り、おそらく最も単純なソリューション)
  • ゲームプレイのダイナミクスを変更するスキルまたは戦術(クローク/インビジビリティスキルなど、ダメージをもたらさない選択)
  • はるかに高いダメージを与える手段(クラシッククリティカルヒット、ステルスボーナス、高さボーナス、地形ボーナス、地面のランダムな部分を溶岩に変える能力)
  • 装甲を損傷または低下させる手段、または高防御キャラクターに直接向けられたダメージを引き起こす手段
  • 制限された使用アイテムまたはスキル(爆弾、強力だが排水能力)。限られた使用のバランスを取るデッドロックを超えた長期的な目標がある場合にのみ有用
  • 人為的に戦闘を終了する(古典的な「逃げる」オプション)

7

変形として、傷の蓄積を追加することができます。確かに、巨大な銅のxは重い鋼鉄の鎧を貫通しませんが、鈍いダメージを与え、骨を壊すことさえあります。弾丸とベストについても同じことが言えます。

キャラクターがヒットするたびに、貫通ダメージと斬撃ダメージの一部を鈍的ダメージに変換し、蓄積します。一定のしきい値(たとえば、持久力に依存する)の後、蓄積されたダメージはキャラクターの戦闘スキルに干渉します。ここにいくつかのオプション:

  • 同じ身体の部位で攻撃を受けると、鎧の効率が低下する可能性があります。

  • 重要な傷:定期的な損傷、痛みによる脱力感。

  • 重傷:意識の短期的な喪失(キャラクターを非常に脆弱にします)。

  • 極度の傷:恒久的なステータス損失(キャラクターが生き残った場合)。

関連:ドワーフ要塞の損傷メカニズム


2
私は、すべての武器に、アーマーでブロックできないダメージをudge打ダメージを与えることを提案しようとしていました。剣と短剣のbl弾能力はわずかですが、軸とメイスは非常に効果的です。
jmegaffin

5

さまざまな種類の損傷を実装し、特定の種類の損傷からのみ保護する鎧を使用します。たとえば、動的な損傷、酸による損傷、火災による損傷など。どのタイプの損傷に対しても防護するものはありません。

ユーザーは、すべての損傷タイプから保護するために鎧を重ねることができましたが、すべての損傷タイプから同時に保護することはできませんでした。これにより、戦闘にもいくつかの戦略が実装され、プレイヤーはさまざまな装甲層を通過するためにダメージタイプを切り替える必要があります。


4

防御力を持っていないだけで、より大きな敵に大きな馬力を与えることができます。巨大な数字を避けたいと思っていますが、攻撃がプレイヤーの直接入力に基づかない決定的でターンベースのゲームが必要な場合(人為的ミスが攻撃を台無しにする可能性はありません)同様に。

プレゼンテーションの側面が心配な場合は、HPをハートまたはヘルスピップに分解できます。EG100 hp = 1ハート。キャラクターがHPを失うとハートが黒くなり始め、その後完全に消えます。そうすれば、プレーヤーは129301239103123hpよりも簡単に理解できますが、魔法の方程式のバランスを心配する必要はありません。

リアリズムが心配な場合は、攻撃のターゲットが正常にブロックされるように、または殺害の一撃まで軽く傷付けられるようにアニメーション化することができます。


1
攻撃がプレイヤーの直接入力に基づかない決定論的でターンベースのゲームが必要な場合[...]防御力も少し無意味に思えます。」防御は「チャンスツー」の概念に基づいていませんミス"。これは、THAC0ではなく、D&Dでのダメージ軽減に似ています(または最近彼らがそれを呼んでいるもの)。防御とは、防御が30の場合、40のダメージ攻撃を10のダメージに減らすことができることを意味します。私はこれまで、「無意味することができますどのように表示されません。
ニコルボーラに

1
私は数学が少し異なることを知っていますが、ゲームプレイに関しては、代わりにキャラクターに比例した量のヘルスを与えることと、ダメージを一定量減らすこととの間に大きな違いはありません。常にターゲットにダメージを与える何らかの方法がなければならない場合ではありません。編集:それは防御、または他のゲームプレイ修飾子を無視する特別な攻撃がないことを前提としています。
ルイスウェイクフォード

減法的な防御統計を持つことで、Hp(特別な攻撃や修正など、あなたが除くすべてのものに加えて)以上のものが得られます。これは、時間の経過に伴う損傷ユーザーと高損傷ユーザーの間に層化を作成します。複数回攻撃するが、ダメージが低いキャラクターは、防御力の高いキャラクターのファウルになり、低速でダメージの大きいキャラクターは、時間とともにダメージが大きくなります。単なるヒットポイントでは、この階層化は作成されません。
ニコルボーラス

4

防御のために摩耗メカニズムを追加します。すべての攻撃でターゲットの防御力をわずかに低下させます。

最終的に弱い攻撃でさえ、実際のダメージを与えるのに十分なほどターゲットの防御を使い果たします。


3

整数の世界から一歩踏み出し、減算システムにスパイスを加えたい場合は、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

これは、上記の擬似コードと非常によく似た動作をする関数です。

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

DRが攻撃(着信ダメージ)よりも小さい場合、攻撃-k * DR(kは0.693)のように動作ln(2)します(正確には)。DRがダメージに近いかそれより大きい場合、ダメージは半分になりDR/attackます。たとえば、DR = 30、攻撃= 10の場合、ダメージは1.25(攻撃が3倍になります)になります。

人間が評価するのはより複雑で難しいように見えるかもしれませんが、ハックがなく、両方のパラメーターの変更が関連しています。攻撃者がボーナス攻撃力を獲得した場合、または防御者がわずかでもDRを獲得または喪失した場合、結果のダメージは変化します。


1

フロートを使用します。

プレイヤーに整数のHPを提示した場合でも、hpにはfloatを使用し、ダメージにはfloatを使用します。

現在、分数装甲クラスを使用しています。1.0の装甲は無敵で、0.0の装甲は「完全なダメージを受ける」ことを意味します。ダメージは次のように減少します:

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

この式には、防具を-1に設定することで「二重ダメージ」を許容する効果があります。

損傷もカテゴリに分類しました。スタークラフトの脳震盪/爆発性損傷タイプ、または例としてイブの損傷タイプシステムを参照してください。

そのため、.99クラスの鎧 少し傷つけると、最終的にチェリータップして死にますが、攻撃はプレイヤーにダメージを与えないように見えます(彼は1.15馬力から1.1499馬力まで1馬力のままです)次の攻撃..)


0

スキルグラフは、高度な防御スキルの前提条件としていくつかのダメージ処理スキルを配置し、高度に非対称なビルドを作成するプレイヤーの能力を低下させる可能性があります。

クリティカルヒットは、防御力が不当に高くない限り、ある程度のダメージを受ける可能性があります。ランダムではなく定期的にそれらを作成する場合、決定的な戦闘がまだあります。

何度もヒットに失敗した後、ヒット率とダメージを高めるために、攻撃速度が自動的に低下する場合があります。超高速のスクラッチキャラクターは毎秒10回の攻撃を行っていました。現在、15回の攻撃でダメージを与えていませんが、毎秒+ 50%で3回の攻撃を受け、+ 200%のダメージを与えています。これはクリティカルヒットに似ていますが、この種の状況では高速です。

アーマーからのパーセンテージベースのダメージ減少を使用できますが、最大HPをバフする他の方法よりも興味深いものにするために、弱いヒットに対して減少パーセンテージを大きくすることができます。たとえば、1〜20hpのダメージで90%、20〜30の60%、その他のすべてで30%の減少。

最後に、大きな数を心配しないでください。それらは、小さなものよりもはるかに細かい制御を提供します。レベル1キャラクターが100ヒットポイントで始まることは、5ヒットではなく7ヒットでそれらを殺すことができることを意味します。それは、あなたが毒のダメージと、他のダメージを、時間の経過とともに、とてつもなく壊滅的ではないものにすることができることを意味します(あなたが好めば、あるものと同様)。大きい数字を表示したくない場合は、表示しない方法を見つけてください。


0

あなたはいつもそこに解決を望むと言いますが、それは勝利でなければなりませんか?

Dominionsで使用されているアプローチを検討してください-ターン50で、攻撃者は自動的に敗走します。ターン75で、防御側は自動的に敗走します。(ルートは自動的には機能しません。一部のユニットはルーティングの影響を受けず、不動のユニットが実際に離れることができなくても)。

私はそれが機能する正確な方法に反対しますが(反対側を殺すのに時間がかかりすぎる状況があります)、基本的な考え方は有効です。

私が提案するもの:

両側のパワーの測定値を見てください。(ヒットポイントは明らかな出発点ですが、注意してください、意味のないヒットポイント「損失」がカウントされるこの点で、ドミニオンには問題があります-形状変更、召喚など、彼らがしなかったときの死傷者による軍隊のルーティングをもたらします到達した最小値を追跡し、新しい最小値が設定されてからのターン数を記録します。新しい最小値が設定されずに長すぎると、何らかのデッドロックが発生し、攻撃者は退却する必要があります。


0

私がまだ見たことのない代替案は、あなたの鎧の値が攻撃を負にするので、真のブロックに小さなRNGを追加できるということです:

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;
        }
    }
}

アーマーが考慮された後のダメージの赤字が高いほど、キャラクターは、スクラッチダメージの別の試合を取る前にブロックできる攻撃が多くなります。

これにより、防御的な統計情報に少し余分なスケールが与えられますが、攻撃されないようにすることはできません。また、必要に応じて攻撃がこのブロックメカニズムを通過でき、当然、デッドロックを防ぎます。

攻撃に対する防御で統計を積み上げた場合、戦いに時間がかかる場合がありますが、最終的にはそこに到達します。


OPからの引用:戦闘を100%確定的にしたい。これは、100%の確定的な戦闘を許可しません。
チャラノール

その後、ブロックはターンベースにすることもできます。攻撃に対するtrueBlockの各レベルで、敵はスクラッチダメージを達成するために何度も攻撃する必要があります。同じ考えが当てはまります。
トム「ブルー」ピドック

@Charanor-回答を100%決定論的に調整しました。
トム 'ブルー'ピドック

-1

多くの3D格闘ゲームは、傷の損傷を防ぎます。例としては、鉄拳やソウルキャリバー2などがあります。完璧な防御を困難にすることで、これを回避しています。一部の攻撃は、速すぎて対応できません。それはかなり良い解決策だと思います。


-1

防衛の有効性を減らすことは良い選択肢ではないと思います。プレーヤーの電源を切ると、ゲーム体験が悪くなります。反対の方向に進んでみませんか?

時間が経つにつれて攻撃を強化してみませんか。これにより、スクラッチ損傷が時間とともに増加し、ブロッキングのインセンティブが低下します。中期後半のゲームでは、キャラクターが防御中に叫びながら別のキャラクターを殺すことができます。

いくつかのpnp rpgsは「テンションメカニズム」を実装しています。各ターンの張力は1ずつ増加します。すべてのロールに張力値の修飾子が追加されており、戦闘が終わりに向かっています。

格闘ゲームから来る別のアイデアは、防御を通過する攻撃です。あなたのゲームがターンベースかリアルタイムかはわかりませんが、この攻撃は対戦相手をコンボにさらしたり、一時的に彼または彼の一部の能力を無効にしたりする可能性もあります。

秘trickは防衛力を弱めることではないと思います。他のオプションを防御と同じくらい良いものにするか、防御が良い選択肢である時間を減らします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.