Como determinar uma estatística "Assistências"

7

Meu jogo é um jogo de tiro multiplayer de cima para baixo, onde você controla um pod espacial com 4 armas diferentes que causam danos variados. Temos todas as estatísticas usuais, como Kills, Mortes e Dano Infligido / Recebido, etc. No entanto, a única estatística com a qual tivemos problemas é uma estatística de Assistências, principalmente porque não conseguimos determinar o que deve constituir uma assistência.

Em nosso jogo, o jogador gera 224 pontos de vida (um número aleatório que eu conheço), e cada arma com a qual ele é atingido retira uma quantidade diferente de vida (de 11 a 224). Se o jogador mata outro jogador, ele recupera qualquer vida perdida em 40 pontos.

Quando um jogador tem apenas 40 pontos de vida restantes, seu casulo começa a fumar para indicar sua baixa saúde.

Os jogadores se queixam constantemente de serem "vulcados", onde causam 223 de dano a um jogador, apenas para outra pessoa receber o último tiro e obter crédito pela matança.

Dada esta informação, como você determinaria quando um jogador recebe uma assistência?

Kyle
fonte
Alguém respondeu sua pergunta para sua satisfação? Se tiverem, você se importaria de marcar uma?
MentatOfDune

Respostas:

7

Para impedir que os jogadores ajam como abutres, você pode pensar em ter a pessoa que causa mais dano sendo creditada com a matança. Embora essa abordagem provavelmente não funcione em um ambiente FFA. Concedido que você esteja falando de assistências, então eu imagino que isso seja uma espécie de jogo de equipe. Outra coisa que pensei que provavelmente aumentaria a coesão da equipe é eliminar completamente o contador de mortes individual e exibir apenas uma contagem geral de mortes por equipe. De repente, o objetivo muda: eu tenho que ser o último a acertar isso, ou eu tenho que atacar essa matança, tenho que matá-lo e estou feliz que esse cara esteja me ajudando a garantir a matança para o time. Se você implementou essa abordagem,

Edite para resolver sua questão:

Algo que você deve ter em mente para calcular as assistências são outras métricas que não sejam danos puros. Por exemplo, digamos que dois pods estejam negociando fogo. Se os dois dispararem a taxas equivalentes, o resultado dependerá de quem começou a atirar primeiro / de quem é o mais preciso. Supondo que todos os fatores sejam iguais, adicione um curador à mistura. Agora o jogador que está sendo curado sai em cima da intervenção de outros. Na minha opinião, o jogador que está curando deve receber ajuda. sem ele, o jogador não consegue matar. Outras idéias a serem lembradas são os debuffs aplicados ao inimigo e outros buffs aplicados ao assassino.

MentatOfDune
fonte
Essa é uma ideia interessante. O jogo já existe há algum tempo, por isso não tenho certeza se uma mudança como essa ocorreria sem problemas ou não para a comunidade. Nós temos o stat de dano causado já implementado. É exibido ao lado do atributo Kill. A maioria das pessoas valoriza isso mais do que o atributo Kill, mas ainda existem aqueles que matam sem motivo.
Kyle
@MotiveKyle eu testaria as águas se fosse você. Se você tem uma comunidade ativa, mostre a eles a ideia e veja quais são suas respostas. Se eles são receptivos, você precisa de uma modificação muito pequena no seu código para implementá-lo (em vez de removê-lo). Eu gostaria que houvesse uma maneira de obter a League of Legends para fazer isso, mas o ouro que você ganha por morte é um obstáculo. Eu sinto que isso melhoraria drasticamente a coerência de equipes aleatórias em jogos de equipes, como modos de equipe MOBAs e FPS. Porra, agora eu tenho que ir criar um MOBA!
MentatOfDune
IMHO, é uma má idéia creditar as pessoas que causam mais dano em um jogo de tiro. Ficará aparente que alguém que deu o último tiro não conseguiu a morte, é melhor que as pessoas fiquem bravas uma com a outra por "roubar mortes", do que o jogo ser "injusto".
dreta
11
em WoW, fe ninguém se importa com a contagem de mortes em campos de batalha, porque não é nem um pouco elevada, está lá, mas ninguém nunca se importa: você pega a bandeira no WSG ou segura o ferreiro no AB (e outros) ou você perde, ninguém pensa sobre o jogo além disso e acho que é algo que todos os jogos da moba poderiam aprender, ninguém nunca diz "pare de morrer, omfg", as pessoas pensam mais em termos de "precisamos de defesa no lumbermil". WoW, eu sou positivo, não 't nunca ter chamado um jogo de estratégia, mas de alguma forma ele expulsa mais estratégia de pessoas que DotA faz
dreta
2
Em vez de creditar abertamente mortes para quem causou mais dano, basta fazer uma assistência valer mais 'pontos' se mais dano for causado. Obviamente, a matança deve ir para quem teve a chance de matar, porque é isso que é matança. Mas tudo o que está sendo calculado com base no desempenho do jogador (pontos, dinheiro, etc.) pode ser ponderado. Portanto, se um jogador remover 225 dos 250 HP e alguém acabar com o inimigo, o peso da assistência acabará, o que significa que o dano pesado recebe mais pontos / dinheiro.
Tristan Crockett
4

Eu começaria com algo simples. Todos os jogadores que causam algum limiar mínimo de dano a um jogador que é morto antes que esse jogador mate alguém recebe ajuda. Em seguida, estenda-o a partir daí se o teste provar que é problemático (ou seja, se você morrer antes do outro jogador, você perde a assistência).

Tetrad
fonte
11
Outra ressalva que você pode encontrar em seus testes é como as assistências são tratadas quando os jogadores recuperam a saúde. Alimento para o pensamento :)
SpartanDonut
3

Isso é um pouco complicado, pois é possível que alguém seja danificado por um longo período de tempo e, quando alguém finalmente bater nele, ficará realmente desapontado se não for premiado por isso.

Para resolver isso, eu tentaria algo assim;

  • Cada vez que alguém é atingido, rastreie quem causou o dano e quanto.
  • Em caso de morte, conceda prêmios com base nos danos coletados.
  • Adicione cooldown aos valores rastreados; digamos, se o dano tiver 60 segundos, não conta.

Se você deseja conceder a todos que causaram dano que ainda é válido, ou apenas o assassino e quem causou mais dano (ou o segundo mais), é com você.

Jari Komppa
fonte
3

Adotei a mesma abordagem básica no Savage 2 e Heroes of Newerth, é um sistema flexível que permite que você ajuste as regras específicas com facilidade.

Cada entidade possui uma coleção de registros que armazenam uma identificação de invasor, valor do ponto e registro de data e hora. Nesse ponto, você também pode aparar o log de danos de todos os registros antigos demais para contar como assistência, se definir um limite para isso. Se não houver muitos registros sendo gerados, você também pode esperar a entidade morrer. Quando morrer, entre no registro de danos e obtenha o dano total registrado, bem como o dano total pertencente a cada ID de atacante. Agora você pode conceder assistências em um limite fixo (ou seja, 20 ou mais danos concedem uma assistência) ou como uma porcentagem (20% ou mais do total de danos recentes concedem uma assistência). Esse sistema é responsável por quaisquer alterações na saúde, como cura ou perda de saúde, além dos danos creditados.

Se você não precisar da granularidade de cada ataque, poderá simplificar isso armazenando apenas um único registro para cada ID de ataque e apenas acumular sua pontuação a cada atualização. O que você perde é a capacidade de ignorar o crédito concedido a eles fora do limite de tempo de assistência, se você quiser ter um.

Você também pode usar este sistema para dar crédito por eventos que não sejam danos. Por exemplo, se uma entidade pode aplicar um buff a outro, cada evento de dano também pode registrar pontos para o buffer, a uma taxa fixa ou como uma porcentagem do dano da entidade buffada.

Jason Morales
fonte
2

Tanto quanto eu posso dizer, Tribes: Ascend tem o seguinte algoritmo:

  • A pessoa que fez o golpe final recebe o crédito pela morte.
  • Se alguém além dessa pessoa causar mais danos, receberá o crédito de assistência.
ZorbaTHut
fonte
0

Simplista é a chave aqui.

Eu acho que você precisa definir assistência no centro. Se você pensa em basquete, ativo refere-se a partes iguais da jogada até o resultado final (IMHO). Isso significa que alguém tem a bola, passa a bola e a bola é colocada no aro. Se a jogada envolver 2 pessoas, ambos os jogadores estão fazendo 50% do trabalho.

Com isso dito, porções iguais ou 50% no meu exemplo significa que é dada assistência àqueles que estão mais próximos da mesma porção.

Por exemplo, se um jogador faz 223 pontos de vida para outro jogador, isso representa praticamente 99% do trabalho. Embora o segundo jogador mate, quem mais causou dano recebe o crédito. Opções para o jogador que realmente deu o golpe fatal é o crédito com a assistência.

Em outro exemplo, se um jogador fez 100 pontos de vida para outro jogador, isso representa 44% do trabalho. Quando o segundo jogador mata, quem fez 44% é creditado com a assistência.

Portanto, uma linha deve ser desenhada na areia. Algo como 70% ou mais de dano é creditado na matança, mesmo que eles não matem. Dessa forma, se cinco pessoas estão atacando, todas contribuindo para a morte abaixo de 70%, o último ataque é sempre creditado com a matança e todos os outros colaboradores são creditados com a assistência.

Glen Swan
fonte