전투 교착 상태를 해결하기 위해 스크래치 손상에 대한 대안은 무엇입니까?


37

스크래치 데미지 는 성공적인 공격이 항상 최소한의 피해를주는 게임 방식입니다. 이것은 종종 공격에 의한 피해에서 방어가 직접 차감되는 감산 전투 시스템에서 사용됩니다. 따라서 대상은 항상 최소한의 피해를 입습니다.

그런 시스템의 단점은 적어도 해킹이라는 것입니다. 그것은 간단한 공식을 취하여 Damage = Attack - Defense(약간) 더 복잡한 공식 으로 바꿉니다 Damage = max(Attack - Defense, 1).

또한 플레이어가 캐릭터 등을 개발하는 기술에 방해가된다고 생각합니다. 방어 보너스가 아무리 많아도 공격 할 때마다 약간의 피해가 발생합니다. 아무 의미가 없다면 왜 방어력이 그렇게 높은가?

또한, 이것은 이제 Hp 및 데미지에 더 큰 숫자를 사용하도록 권장하므로 스크래치 데미지는 무시할 수 있습니다. 결국, 최소 데미지가 1이고 10 Hp 만 있다면, 여전히 건강의 10 %입니다. 20 마력에도 5 %입니다. 그리고 꼭 필요한 경우가 아니라면 더 큰 숫자를 사용하지 마십시오.

그러나 스크래치 손상의 한 가지 중요한 단점은 교착 상태 문제를 해결하는 것입니다.

교착 상태는 어느 쪽도 상대방에게 피해를 줄 수 없을 때 발생합니다. 모든 자원을 방어에 투자하고 공격에 거의 투자하지 않으면 캐릭터가 피해를 입지 않을 수도 있지만 그다지 다루지 못할 수도 있습니다. 따라서 어느 쪽도 피해를 입힐 수없는 전투에 직면 할 수 있으므로 전투는 영원히 계속됩니다. 이것은 특히 치명타와 같은 임의의 역학이없는 경우입니다 (나도 싫어).

적어도 스크래치 손상으로 누군가 가 이길 것입니다. 공격 횟수가 가장 많거나 가장 많은 공격 일 수 있지만 전투는 끝납니다.

저는 항상 결과가 나오는 전투 시스템을 좋아합니다. 그러나 나는 스크래치 손상을 좋아하지 않습니다. 내 대안은 무엇입니까?

난수를 굴리지 않는 대안 ; 나는 전투가 100 % 결정적이되기를 원합니다. 같은 전투가 벌어지면 정확히 같은 결과가 발생합니다.

게임 플레이에 대한 세부 사항을 원한다면 전투를 자동화 할 수있는 턴 기반 전투 측면에서 생각하십시오.


8
교착 상태 문제를 해결하기 위해 열화적인 방어구 시스템을 만날 수 있습니까?
Tetrad

1
"롤 플레잉 게임의 성공적인 디자인 패턴"을 살펴 보시기 바랍니다 : rpg-design-patterns.speedykitty.com/doku.php/start
Exilyth

3
Devil 's Advocate의 입장 : 플레이어가 안전한 방법으로 게임을하는 대신 교착 상태에 빠질 수있는 어리석은 빌드를 사용할 것인지 결정하게 하시겠습니까?
Patrick Hughes

3
@PatrickHughes : 플레이어가 적절한 예고없이 나쁜 위치에 놓이게하는 것은 나쁜 게임 디자인이라고 생각하기 때문입니다. 심지어 미리 경고하더라도, 그들이 일어나고 있음을 알게되면, 그들은 그것을 벗어날 수 있어야합니다 . 그들의 캐릭터 디자인 선택을 되돌릴 수 없다면, 그들은 당시에 좋은 생각처럼 보이는 선택을 통해 영구적으로 자신을 망쳐 놓지 않는다는 것을 미리 알아야합니다.
Nicol Bolas

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

피로 / 체력 시스템을 구현할 수 있습니다. 점점 더 많은 공격이 수행됨에 따라 플레이어는 점점 피곤 해져서 피로가 증가함에 따라 방어력이 떨어지면서 방어력이 떨어질 수 있습니다. 이것은 좋은 캐릭터를 개발 한 플레이어는 빠른 시합에서 데미지를 입지 않지만 전투 시간이 길어지면 데드락을 막는 데미지가 증가합니다.


21

이것은 매우 개방적인 질문처럼 보입니다. 교착 상태를 방지하기위한 솔루션 (아직 언급되지 않은) :

  • 실행 가능한 최종 결과로 교착 상태를 허용하십시오. 가장 적거나 예상되는 솔루션입니다. 예를 들어, RTS 게임에서 이는 불안한 휴전 또는 격렬하지만 균형 잡힌 균형이 낮은 키 충돌 일 수 있습니다.
  • 허용 가능한 동점을 가진 시간 제한
  • 제한 이후 첫 번째 적중 / 점수 / 점수가이기는 시간 제한 (갑작스런 사망 / 시간외)
  • 시스템의 무작위 위험 ( Super Smash Bros의 폭탄 ). 이것은 상황의 초점을 공격에서 방어로 바꿉니다.
  • 시스템의 불균형을 초래하는 외부 요인
  • %로 방어 방어 (아마도 방어가 제한되는 한 아마도 가장 간단한 솔루션)
  • 게임 플레이의 역학을 바꾸는 기술 또는 전술 (클로킹 / 보이지 않는 기술과 같이 피해를 입히지 않는 선택)
  • 훨씬 높은 데미지 (고전적인 치명타, 스텔스 보너스, 높이 보너스, 지형 보너스, 땅의 무작위 부분을 용암으로 바꾸는 능력)
  • 방어력을 높이거나 낮추는 방어 수단 또는 방어력이 높은 캐릭터를 대상으로 직접 피해를 입히는 수단
  • 제한된 사용 아이템이나 기술 (예 : 폭탄, 강력하지만 소진 능력). 교착 상태 이외의 장기 목표가 제한된 사용의 균형을 이룰 경우에만 유용합니다.
  • 인위적으로 전투 끝내기 (클래식 "탈주"옵션)

7

변형으로, 상처 축적을 추가 할 수 있습니다. 분명히, 거대한 구리 도끼는 무거운 강철 갑옷을 관통하지 않지만 약간의 둔한 손상을 입히고 심지어 뼈를 부술 수도 있습니다. 총알과 조끼도 마찬가지입니다.

캐릭터가 적중 할 때마다 피어싱 및 슬래시 데미지의 일부를 무딘 데미지로 변환하여 누적합니다. 특정 임계 값 (예 : 지구력에 따라 다름)이 지나면 누적 된 피해가 캐릭터의 전투 기술을 방해합니다. 일부 옵션은 다음과 같습니다.

  • 같은 신체 부위를 때릴 때 방어력이 떨어질 수 있습니다.

  • 중요한 상처 : 주기적 손상, 통증으로 인한 약점.

  • 심한 상처 : 단기적인 의식 상실 (캐릭터를 매우 취약하게 함).

  • 극심한 상처 : 영구적 인 능력치 상실 (캐릭터가 생존 할 수있는 경우).

관련 : 드워프 요새의 데미지 역학


2
나는 갑옷으로 막을 수없는 모든 무기에 끔찍한 피해를 줄 것을 제안했습니다. 검과 단검은 작은 블로 어링 용량을 갖지만 축과 메이스는 매우 효과적입니다.
jmegaffin 2016

5

일부 유형의 손상에 대해서만 보호하는 갑옷으로 다양한 유형의 손상을 구현하십시오. 예를 들어, 운동 피해, 산 피해, 화재 피해 등. 갑옷은 각 유형의 피해를 막아서는 안됩니다.

사용자는 방어구를 겹쳐서 모든 피해 유형을 보호 할 수 있지만 동시에 모든 피해 유형을 보호 할 수는 없습니다. 플레이어는 다양한 방어막을 통과하기 위해 피해 유형을 전환해야하는 전투에 전략을 구현합니다.


4

방어 능력을 가질 수 없고 더 큰 적에게 더 큰 체력을 줄 수 있습니다. 나는 당신이 거대한 숫자를 피하고 싶다는 것을 알고 있지만, 플레이어가 직접 입력 한 플레이어를 기반으로 공격을하지 않는 결정 론적 인 턴 기반 게임을 원한다면 (인간의 실수로 공격을 망칠 가능성이 없습니다) 방어 통계는 약간 의미가 없습니다. 게다가.

프레젠테이션 측면이 걱정된다면 HP를 Hearts 또는 Health pips EG 100 hp = 1 heart로 분류 할 수 있습니다. 캐릭터가 HP를 잃으면 마음이 검게 변하고 완전히 사라집니다. 그렇게하면 플레이어가 129301239103123hp보다 이해하기가 쉽지만 마술 방정식의 균형에 대해 걱정할 필요는 없습니다.

리얼리즘이 걱정된다면 공격 대상이 성공적으로 차단 된 것처럼 보이게하거나 죽이는 타격까지 가볍게 긁을 수 있습니다.


1
" 공격이 직접 입력 한 플레이어를 기반으로하지 않는 결정 론적, 턴 기반 게임을 원한다면 방어 통계도 약간 의미가없는 것 같습니다. "방어는 "기회에 대한 미스". THAC0 (또는 요즘 전화하는 것)이 아닌 D & D의 피해 감소와 비슷합니다. 방어는 방어력이 30이면 40의 공격력이 10의 피해로 감소 될 수 있음을 의미합니다. 나는 그것이 "무의미한"방법을 보지 못합니다.
Nicol Bolas

1
나는 수학이 조금 다르다는 것을 알고 있지만 실제로 캐릭터에게 비례적인 양의 건강을주는 것과 특정 양만큼의 피해를 줄이는 것 사이에는 게임 플레이 측면에서 큰 차이가 없습니다. 항상 대상에게 피해를 줄 수있는 방법이 있어야한다면 아닙니다. 편집 : 그것은 방어 또는 다른 게임 플레이 수정자를 무시하는 특별한 공격이 없다고 가정합니다.
루이스 웨이크 포드

빼기 방어 통계를 사용하면 Hp 이상의 특수 효과를 얻을 수 있습니다 (특별한 공격이나 수정 자와 같은 제외). 시간이 지남에 따른 피해 사용자와 피해가 큰 사용자간에 계층화를 만듭니다. 여러 번 공격하지만 데미지가 낮은 캐릭터는 방어력이 높은 캐릭터를 상대로하는 반면, 느리고 높은 데미지 캐릭터는 시간이 지남에 따라 더 많은 피해를줍니다. 단순한 히트 포인트는 이러한 계층화를 생성하지 않습니다.
Nicol Bolas

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로 설정하여 "이중 피해"를 허용하는 효과가 있습니다.

손상도 범주로 분류했습니다. 스타 크래프트의 충격 / 폭발 피해 유형 또는 예를 들어 이브의 피해 유형 시스템 을 참조하십시오.

그래서 지금, 조금이 0.99 수준의 갑옷에 긁힘 꼬마 도깨비 결국됩니다 체리 탭 당신의 죽음에 있지만, 공격은 플레이어에게 어떤 피해를하지 나타납니다 그가 1.1499 마력에 1.15 마력에서 간다 (그는 1 마력에서 유지됩니다 다음 공격 ..)


0

스킬 그래프는 손상 방어 기술을 높은 수준의 방어 기술의 전제 조건으로 설정하여 플레이어가 고도로 비대칭적인 빌드를 할 수있는 능력을 줄입니다.

치명타가 터무니없이 높은 한 치명타는 약간의 피해를 입을 수 있습니다. 당신이 그것들을 무작위가 아닌주기적인 것으로 만들면, 당신은 여전히 ​​결정론적인 전투를하게됩니다.

여러 번의 명중 실패 후, 더 높은 적중률과 피해를 위해 공격 속도를 자동으로 낮출 수 있습니다. 초고속 스크래치 캐릭터는 초당 10 번의 공격을하고있었습니다. 이제 15 번의 공격이 피해를 입히지 않으면 초당 + 50 %의 공격과 + 200 %의 공격으로 초당 3 번의 공격을받습니다. 이것은 치명타와 비슷하지만 이런 상황에서는 더 빠릅니다.

방어구의 백분율 기반 피해 감소를 사용할 수 있지만 최대 HP를 강화하는 다른 방법보다 더 흥미롭게 만들려면 적중이 적을수록 감소 백분율이 커질 수 있습니다. 예를 들어 1-20hp 데미지의 90 % 감소, 20-30의 60 %, 기타 모든 것의 30 % 감소.

마지막으로 큰 숫자에 대해 걱정하지 마십시오. 작은 것보다 훨씬 세밀한 제어를 제공합니다. 적중률이 100으로 시작하는 레벨 1 캐릭터를 시작하면 7이 아닌 5이 아닌 캐릭터를 죽일 수 있습니다. 즉, 시간이 지남에 따라 독실한 피해를 입히지 않는 독한 피해 및 기타 피해를 입을 수 있습니다 (원하는 경우 일부 경우). 큰 숫자를 표시하지 않으려면 숫자를 표시하지 않는 방법을 찾으십시오.


0

당신은 항상 결의가 있기를 원하지만 그것이 승리가되어야합니까?

Dominions가 사용하는 접근 방식을 고려하십시오 . 공격자가 50 명을 넘으면 공격자가 자동으로 라우팅됩니다. 턴 75에서 방어자는 자동으로 라우트합니다. (루트는 자동으로 작동하지 않습니다. 일부 유닛은 라우팅에 영향을받지 않으며 고정 유닛이 루팅하더라도 실제로 떠날 수는 없습니다.) 100 번에 남은 모든 것이 죽습니다.

나는 그것이 작동하는 정확한 방식에 동의하지 않지만 (다른면을 죽이는 데 너무 오래 걸리는 상황이 있습니다) 기본 아이디어는 유효합니다.

내가 제안하는 것 :

각 측면의 힘을 측정하십시오. (점점은 명백한 출발점이지만주의해야합니다. Dominions 는 이와 관련하여 의미가없는 명중률 "손실"이 계산되는 경우에 문제가 있습니다. 도달하지 않은 최소값을 기록하고 새로운 최소값을 설정 한 이후의 회전 횟수를 기록하십시오. 새로운 최소값을 설정하지 않고 시간이 너무 오래 걸리면 교착 상태가 발생하여 공격자가 퇴각해야합니다.


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 % 결정 론적 전투를 허용하지 않습니다.
Charanor

그런 다음 블록을 기반으로 돌릴 수 있습니다. 공격에 대한 각 레벨의 trueBlock에 대해 적은 스크래치 피해를 얻기 위해 여러 번 공격해야합니다. 동일한 아이디어가 적용될 수 있습니다.
Tom 'Blue'Piddock

@Charanor-답을 100 % 결정 론적으로 조정했습니다.
Tom 'Blue'Piddock

-1

많은 3D 격투 게임은 스크래치 손상을 피합니다. 예는 철권과 소울 칼리버 2입니다. 그들은 완벽한 방어를하기가 어렵 기 때문에 이것을 피합니다. 일부 공격은 너무 빨리 대응하기에 너무 빠릅니다. 꽤 좋은 해결책이라고 생각합니다.


-1

국방의 효과를 줄이는 것은 좋은 선택이 아니라고 생각합니다. 플레이어의 힘을 빼면 게임 경험이 나빠집니다. 다른 길로 가지 않겠습니까?

시간이 지남에 따라 공격에 전원을 공급하지 않는 이유는 무엇입니까? 이렇게하면 시간이지나면서 스크래치 손상이 증가하여 차단 인센티브가 줄어 듭니다. 중후반 게임에서 캐릭터는 방어하는 동안 다른 캐릭터를 외치면서 죽일 수 있습니다.

일부 pnp rpg는 "인장 메커니즘"을 구현합니다. 각 턴 장력은 1 씩 증가합니다. 모든 롤에는 장력 값의 수정자가 추가되어 전투가 끝날 때까지 밀어 넣습니다.

격투 게임에서 나오는 또 다른 아이디어는 방어를 거치는 공격입니다. 당신의 게임이 턴제인지 실시간인지는 모르겠지만,이 공격은 상대를 콤보로 열거 나 일시적으로 그를 비활성화시킬 수도 있습니다.

나는 트릭이 방어력을 해제하는 것이 아니라고 믿는다. 방어만큼이나 다른 옵션을 만들거나 방어가 좋은 옵션 인 시간을 줄이십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.