Skills do Jogador

Player Skills

Design da progressão por uso: as 11 skills do jogador, o exemplo detalhado de Rifles, e as regras anti-grind (ganho = base/√usos, cooldown, perda parcial na morte). Skills nunca aumentam dano — só manuseio.

Última edição em 07/07/2026, 20:16 por Admin

Skills do Jogador

Página de game design (não diegética), derivada do Sistema de Atributos, Dano e Balística. Define a progressão do personagem: por uso, sem números mágicos — um eixo contínuo, com ganho decrescente na repetição e cooldown entre ganhos.

A regra de ouro do sistema: skills nunca aumentam dano. Elas melhoram o manuseio — dano vem apenas de munição, energia e zona de acerto.


1. As 11 skills

SkillEvolui ao...Melhora...
Armas curtasatirar/treinar com pistolassaque, sway em movimento, transição de alvo
Riflesusar fuzisver exemplo detalhado abaixo
Longo alcancetiros >200 mleitura de distância (marcações), estabilidade deitado, controle de respiração
Controle de recuodisparar em rajadarecuperação entre tiros (nunca reduz o recuo físico da arma a zero)
Medicinatratar a si e a outrosvelocidade de bandagem/sutura, menos chance de infecção, diagnóstico visível de aliados
Sobrevivênciacozinhar, purificar água, acamparrendimento de recursos, fogueira com menos material
Reparosconsertar armas/roupas/veículosteto de reparo mais alto, menos peças consumidas
Furtividadeandar agachado, abates silenciososruído de passos, velocidade agachado, tempo até detecção
Resistência físicacorrer/carregar pesocurva de Fadiga, recuperação de Stamina
Resistência ao Sinalsobreviver a exposição altalimiar dos efeitos do Sinal sobe (os efeitos não somem — o corpo aprende a hesitar menos)
Percepção de anomaliasobservar/sobreviver a anomaliaspistas audiovisuais mais cedo (Nanostorm chegando, Relay Surge, zona do Black Lake Phenomenon)

As duas últimas são as skills de lore, amarradas ao chip dormente do jogador e ao mundo (ver Neural Chip).

2. Exemplo detalhado — skill de Rifles

A skill de Rifles NÃO aumenta dano; ela melhora:

  • controle de sway (amplitude e frequência);
  • velocidade de entrar na mira (ADS);
  • duração do prender-a-respiração;
  • recarregamento (tempo e chance de manter a mira);
  • leitura de distância (o retículo "aprende" a estimar);
  • estabilidade por postura (em pé/agachado/deitado).

Um veterano com o mesmo fuzil de um novato acerta mais porque segura melhor a arma — o projétil que sai do cano é idêntico.

3. Anti-grind

Três mecanismos impedem o farm mecânico de skill:

  1. Ganho decrescente com a repetição: ganho = base / √usos — os primeiros usos ensinam muito; o milésimo, quase nada.
  2. Cooldown entre ganhos: repetição em sequência imediata não acumula progresso.
  3. Perda parcial na morte — em aberto no design: % fixa ou decaimento (a decidir).

4. Esboço de implementação

Estado de uma skill e o ganho por uso com as regras anti-grind:

USTRUCT(BlueprintType)
struct FSkillState
{
    GENERATED_BODY()

    UPROPERTY(BlueprintReadOnly) int32 Usos  = 0;   // repeticoes contabilizadas
    UPROPERTY(BlueprintReadOnly) float Nivel = 0.f; // eixo continuo 0..100, sem "level up" discreto

    double UltimoGanhoTimestamp = 0.0;              // controle do cooldown entre ganhos
};

void UTSSSkillComponent::AddSkillUse(ESkill Skill, double Agora)
{
    FSkillState& S = Skills[Skill];

    // Anti-grind 1: cooldown entre ganhos — repetir em sequencia nao acumula.
    if (Agora - S.UltimoGanhoTimestamp < GanhoCooldownSegundos)
    {
        return;
    }

    S.Usos++;

    // Anti-grind 2: ganho decrescente — ganho = base / sqrt(usos).
    const float Ganho = GanhoBase / FMath::Sqrt(static_cast<float>(S.Usos));

    S.Nivel = FMath::Min(S.Nivel + Ganho, 100.f);
    S.UltimoGanhoTimestamp = Agora;
}

Os modificadores que a skill entrega ao jogo — repare que não existe campo de dano:

FHandlingModifiers UTSSSkillComponent::GetHandlingModifiers(ESkill Skill) const
{
    const float N = Skills[Skill].Nivel / 100.f; // 0..1

    FHandlingModifiers Mod;
    Mod.SwayAmplitude       = FMath::Lerp(1.0f, 0.6f, N); // menos sway — nunca zero
    Mod.TempoADS            = FMath::Lerp(1.0f, 0.75f, N); // entra na mira mais rapido
    Mod.TempoRecarga        = FMath::Lerp(1.0f, 0.8f, N);
    Mod.FolegoNaMira        = FMath::Lerp(1.0f, 1.5f, N); // prende a respiracao por mais tempo
    Mod.EstabilidadePostura = FMath::Lerp(1.0f, 1.3f, N); // em pe/agachado/deitado

    // Regra de ouro: skills NUNCA tocam em dano.
    // Nao existe Mod.Dano — dano vem so de municao, energia e zona de acerto.
    return Mod;
}

(Os valores dos Lerp são ilustrativos de tuning; a estrutura — o quê a skill pode e não pode modificar — é a regra de design.)


Ver também