Suponho que a resposta dependa exatamente do que você considera um "berserker".
Os Berserkers históricos eram tropas de choque que concentravam sua atenção em envolver e matar seus oponentes com pouco respeito a qualquer outra coisa, incluindo sua própria segurança ou a dos outros do seu lado. Fontes diferentes discordam de quão indiscriminadas elas foram na matança: algumas as descrevem como matando voluntariamente qualquer pessoa e todos ao seu redor, enquanto outras apenas as descrevem como guerreiros destemidos. Aqui está uma citação do meio da estrada da saga Ynglinga , via Wikipedia:
"Os homens de (Odin) avançaram sem armadura, eram tão loucos quanto cachorros ou lobos, mordiam seus escudos e eram fortes como ursos ou bois selvagens, e matavam pessoas em um golpe, mas nem fogo nem ferro lhes diziam. chamado Berserkergang . "
Então, minha concepção de berserker seria algo assim:
- Completamente destemido , provavelmente alheio à dor. Dispostos a enfrentar inimigos de qualquer nível.
- Altamente focado na luta, com exclusão de qualquer outra coisa acontecendo ao seu redor.
- Não é completamente indiscriminado em matar, mas provavelmente está disposto a atacar amistosos (talvez sem perceber) se eles atrapalharem. Também pode atacar amistosos se não houver inimigos por perto, mas ainda assim preferir alvos inimigos, se houver algum.
- Desdém das táticas sutis ou cautelosas: atacar o inimigo e cortá-lo em pedaços é o nome do jogo aqui. Prefere o combate mêlée, mas pode usar armas de longo alcance suficientemente poderosas (como armas, de preferência no modo automático e disparadas enquanto corre em direção ao inimigo), se disponível.
- Anormalmente forte e resistente - talvez não no nível do Super-homem, mas eles definitivamente deveriam receber alguns bônus de ataque e defesa, e talvez um ligeiro aumento de velocidade.
Então, como eu traduziria essas características no comportamento da IA do jogo? Bem, aqui estão algumas idéias:
Isso deve ser um acéfalo, mas um berserker nunca deve fugir , mesmo que ele esteja com um único ponto de vida e sangrando. Apenas desative esse código. O mesmo vale para qualquer outra tática "defensiva".
Priorize as opções táticas nesta ordem: 1. Ataque. 2. Avance para o alvo. 3. Tudo o resto. Em particular, os furiosos não devem parar para pegar itens se houver inimigos à vista, mesmo que os itens sejam, digamos, melhores armas do que atualmente. (No entanto, mudar de mãos nuas para uma arma mêlée já segura pode ser razoavelmente priorizado, mesmo após o ataque.)
Se atacar e perseguir o alvo podem ser opções táticas válidas ao mesmo tempo, considere dar a seus berserkers a capacidade de fazer as duas coisas ao mesmo tempo (um ataque "de passagem"), mesmo que suas criaturas normalmente não consigam isso (possivelmente com uma penalidade de precisão para compensar). Dessa forma, seus berserkers não precisarão diminuir sua carga para receber ataques de oportunidade.
Seleção de alvos: sugiro apenas escolher o inimigo visível mais próximo (independentemente do nível) e fazer com que o berserker o persiga, pelo menos a menos que outro inimigo se aproxime significativamente (digamos, metade da distância do alvo atual). Continue perseguindo o alvo, mesmo se você perder temporariamente a linha de visão, desde que o alvo não fique muito longe. Isso deve dar uma sensação de obstinação. Quando o alvo estiver no alcance de mêlée, ataque-o.
Desbravamento: Se houver amistosos entre o berserker e seu alvo, considere deixá-lo atacá-los e abrir caminho. Depende de você o quão ansioso você o fará - pelo menos ele deve fazê-lo se não houver outro caminho para o alvo, mas você pode até pensar em fazê-lo ignorar os amistosos inteiramente na busca de caminhos.
O que foi dito acima provavelmente funciona melhor se você também fizer com que os amigos (não-berserker) tentem fugir do quadrado em que o berserker será o próximo a entrar (e talvez o próximo quadrado ou dois no caminho dele). Claro, se houver muita gente, eles podem não conseguir fugir a tempo ...
Se não houver alvos inimigos por perto, considere deixar o berserker atacar amigos próximos (adjacentes ou talvez um ou dois quadrados de distância). Obviamente, os amistosos deveriam tentar fugir. Em qualquer turno em que o berserker não tenha um alvo inimigo e não faça um ataque, faça-o se mover aleatoriamente e dê a ele uma chance aleatória por turno de se acalmar e voltar ao estado normal.
Escolha das armas: Como observei acima, os verdadeiros berserkers eram grandes no combate ao mêlée. Não use armas de longo alcance, a menos que sejam particularmente comuns e poderosas no seu jogo (por exemplo, armas em um ambiente moderno). Se você deixar seus berserkers usarem armas de longo alcance ou de efeito de área, deixe-os dispará-los enquanto persegue o alvo (veja os ataques de passagem acima). Obviamente, os danos colaterais devem ser ignorados (pelo berserker - fazer com que outros inimigos se desviem para ficar fora da linha entre você e um berserker com uma arma seria um toque muito bom).
E, é claro, o berserker deve ter buffs apropriados de ataque, defesa e velocidade. Eles provavelmente também devem estar imunes a qualquer efeito de fadiga ou medo. Se cego ou confuso, peça que eles façam ataques aleatórios na esperança de acertar alguma coisa.
Você notou que deseja que o berserking seja um estado que às vezes pode ser inserido por inimigos normais (com uma propensão a isso). Assim, você precisará decidir o que o acionará. IRL, gatilhos tradicionalmente descritos incluem combate, esforço pesado e estresse. Alguns gatilhos em potencial para um jogo podem incluir:
- vendo inimigos,
- atacante,
- sendo atacado,
- sendo gravemente ferido,
- vendo outros em combate,
- vendo outras pessoas serem mortas, ou
- vendo traços de combate (manchas de sangue, cadáveres).
Nenhum desses provavelmente deve ser um gatilho automático da IMO; pelo contrário, deve haver uma chance aleatória para cada um desses eventos acionar o estado de furioso, com as probabilidades talvez variando com base na propensão individual e na gravidade do evento. Além disso, combinações de vários gatilhos podem tornar a berserking mais provável: por exemplo, a presença de um inimigo visível pode ser uma pré-condição para qualquer um dos outros eventos disparar a berserking, enquanto pontos de vida baixos podem aumentar as chances dos outros gatilhos.
Além disso, você pode considerar a possibilidade de introduzir um "medidor de raiva" em vez de apenas um simples estado de furto. Por exemplo, um furioso recém-desencadeado pode começar com, digamos, raiva = 1, com atacar e ser atacado aumentando o medidor, e não vendo nenhum inimigo diminuindo-o. Em baixa raiva, um furioso seria simplesmente destemido e polido, mas geralmente evitaria atacar amistosos, enquanto uma raiva aumentada aumentaria os polêmicos, mas também tornaria cada vez menos os ataques do furioso. Quando o medidor de raiva cai para zero, o furioso se acalma e volta ao normal.
Quanto aos gritos obscenos, na maioria das vezes eu me livrava deles: vejo um berserker muito focado em atacar para se incomodar com qualquer provocação boba. Suponho que você possa fazer ele gritar alguma coisa quando o estado de berserk for acionado, e talvez rugir ou fazer um simples grito de guerra ao se aproximar do alcance dos mêlée, mas isso me parece suficiente.
Edit: Depois de reler o que escrevi acima, acho que a essência do que estou tentando dizer é o seguinte: não se concentre muito na IA do berserker. No final, é provável que seja muito simples, provavelmente muito mais simples do que a IA normal do inimigo. Em vez disso, concentre-se em como os outros inimigos se comportarão quando virem um furioso por perto - é aí que a dinâmica realmente interessante surgirá.