segunda-feira, 28 de dezembro de 2020

bate-bate pt.9: arquétipos de lutadores

tendo começado a jogar o protótipo para valer, comecei a perceber certos arquétipos que se destacam na hora de elaborar os lutadores e comecei a pensar nisso conscientemente para dar um norte no processo de elaborar lutadores e golpes novos.

 

enxame:

inimigos que sempre se apresentam em grandes números, sendo mais fracos que a média pra o seu nível. ganham buffs ou vida em contatos aliados, se beneficiando de seus grandes números e enfraquecendo conforme o jogador vai removendo seus aliados e os separando.

 

guerreiro independente:

personagens que não precisam de aliados para dar apoio, podendo ficar isolados sem enfraquecer. potencialmente ganham buffs ou vida em contatos agressivos, se beneficiando mais de contato com inimigos que aliados.


canhão de vidro:

tem ataques muito fortes, mas pouquíssima vida. quando controlados pelo jogador, costumam precisar de um manuseio mais estratégico. são colocados na linha de frente para causar muito dano e depois recolhidos para longe do oponente para serem curados antes de perder toda a vida.


aoe:

personagem com um golpe secundário de ataque em área, provavelmente bem mais forte que seu golpe primário. lutadores agressivos provavelmente tem mais hp que a média pro seu nível e tipo para aguentar vários contatos com o oponente.


armadilha:

inimigos que possuem golpes primários fracos, mas golpes secundários que infligem dano ou debuff. acabam causando mais dano quando são atacados que quando deixados em paz.


tank:

personagens defensivos, capacitados para aguentarem ataques de múltiplos inimigos ao mesmo tempo. possuem ou um hp muito grande, muito buff de defesa ou golpes que curam a si próprios.


suporte:

um personagem que oferece suporte a seus aliados através de cura ou buffs. frequentemente não possui golpes ofensivos.


mártir:

um personagem que gera benefícios a seus aliados adjacentes ou malefícios a seus inimigos adjacentes quando atacados. jogador portanto quer que esse personagem seja atacado para benefício de seus outros lutadores.


bateria:

personagem com alto potencial de concentrar buffs através de seus golpes secundários. idealmente concentra esse buffs o máximo possível antes de usar o efeito realizando ataques ou sofrendo ataques.

sexta-feira, 25 de dezembro de 2020

projetos passados 01: agente autônomo aramis

 apresentação

 jogar team fight tactics me levou a me interessar muito pela ideia de jogos que se jogam automaticamente, permitindo que você assista sua própria partida e confira as consequências das suas decisões estratégicas sem interferir diretamente no jogo. o primeiro projeto que eu fiz para explorar esses temas foi agente autônomo aramis.

 você como o maquinista do último agente autônomo, um robô construido para proteger a sociedade de ameaças espaciais. maquinista porque a ideia é que você não controla o robô diretamente, ele tem uma inteligência artificial e batalha sozinho, sua função é garantir que isso está ocorrendo da forma mais ideal possível.

o agente autônomo é controlado através de cinco decks de cartas, sendo o jogo também um deck builder, cada um representando um aspecto da sua estrutura, suas armas, sua constituição física, sua inteligência artificial, seus ataques especiais e seu dispensário de itens. mas diferente de um deck builder convencional em que a carta é posta em campo para surtir seu efeito, nesse jogo a carta tem efeito simplesmente por fazer parte da sua mão. manipulando simultaneamente as cinco mãos de cartas você influencia o funcionamento do agente autônomo.

a estrutura macro do jogo é uma espécie de dungeon crawler, em que você passa por uma quantidade fixa de níveis até chegar no final e ter uma última batalha com um chefe. ao longo do caminho você coleta novas cartas e remove outras indesejadas dos seus decks.


screenshot da tela título
tela título do jogo


screenshot de um nível do jogo
um nível do jogo, medalhões provem benefícios, formas geométricas iniciam batalhas


batalha automática

 a batalha se dá de forma automática e não pode ser parada até acabar. o agente autônomo e seus seus inimigos alternam tomando seus turnos. a cada turno eles decidem se vão se mover ou realizar seu ataque.

as cartas do agente autônomo adicionam tags ao seu funcionamento, que são acumuladas acima da representação da área de combate. as tags afetam por exemplo, os ataques realizado pelo AA quando ele decide atacar durante seu turno, quantas células ele se move quando decide se mover, com que frequência ele se move e com que frequência ele ataca, se ele tenta se aproximar ou se afastar dos inimigos e etc.

 

screenshot da tela de combate, simulando a cabine de controle do agente autônomo
a tela de combate


 

a tag <atirar>, por exemplo, acerta um oponente aleatório em uma área em volta do AA quando ele atacar. quanto maior o número de tags, maior o alcance e o dano do ataque. a tag <velocidade> define a quantidade de células que o AA pode andar quando se mexe, quanto maior o número da tag, maior o distância percorrida.

detalhe das tags na tela de combate


o efeito das tags cresce exponencialmente conforme aumenta sua frequência. isso ocorre de modo a criar a necessidade de concentrar o número de tags de ataque. cada tag de ataque é um ataque independente que dá dano de forma independente, então teoricamente não faria muita diferença a proporção das cartas sorteadas no deck de arsenal. quatro cartas com quatro ataques diferentes somariam seu dano quase da mesma forma toda vez. como o efeito das tags sobe de forma exponencial, ter 4x uma tag dá muito mais dano que ter quatro tags 1x.

cada deck é controlado no seu respectivo painel. ao puxar a alavanca o jogador sorteia uma nova mão de cartas e ele pode fazer isso de forma livro quantas vezes quiser ao longo da batalha. entretanto, toda vez que ele puxar uma alavanca o AA acumula um pouco de calor. dessa forma o jogo não é restringido a aceitar uma configuração de cartas ruins e pode sempre buscar o melhor combo possível, mas há sempre o risco da nova mão ser pior que a anterior (adicionando um elemento push your luck) e pagando o custo em calor.

o calor (primeira barra da parte inferior da interface) determina a quantidade de pressão que é constantemente acumulada pelo AA, representada pela válvula na esquerda da tela. quanto mais calor, mais pressão por segundo. quando o AA atinge seu limite de pressão ele descarta todas as cartas presentes nos painéis naquele momento, sorteia uma mão nova em cada painél e acumula um pouquinho mais de calor. o que significa que acumulará pressão mais rápido depois disso, chegando mais rápido ao nível máximo de pressão da próxima vez.

isso pode ser explorado pelo jogador, que pode puxar as alavancas logo antes da pressão chegar ao máximo para que cartas boas não sejam descartadas. isso tem o custo de acumular ainda mais calor, levando o próximo descarte a ocorrer ainda mais rápido.

o AA também acumula energia ultra (terceira barra da parte inferior da tela) ao longo do tempo. quando a energia ultra chega no seu limite ele utiliza seu ataque ultra, bem mais forte que seu ataque normal. em seguida o limite que a energia ultra precisa acumular para acionar o ataque especial diminui, o que significa que o próximo ataque ultra chegará mais rápido da próxima vez e assim por diante continuamente.

quando o AA toma dano ele aumenta um pouco sua barra de dano (segunda barra) que também possui um "limite de quebra" assim como a pressão e o ultra. quando o dano atinge seu limite, cartas de dano são adicionadas aos decks do jogador. essas cartas são simplesmente cartas vazias, sem tags, mas que ocupam espaço no deck e nos painéis. quando o limite de quebra é atingido ele diminui, chegando nesse ponto mais rápido da próxima vez.

 

dano e degradação

conforme os decks enchem de cartas de dano o AA vai ficando menos efetivo, visto que sua mão vai ir sendo preenchida por cartas inúteis. dessa forma, ao invés do dano ser algo imperceptível até atingir um limite final e o personagem morrer, é algo que afeta continuamente o funcionamento do personagem, deixando ele pior e pior.

uma classe de inimigos também explora uma mecânica semelhante. ela injeta cartas de vírus no AA que possuem uma tag de aquecimento, aumentando o calor que ele acumula e levando a um descarte ainda mais rápido das suas cartas. um efeito negativo que vai além de números e efetivamente torna o personagem mais difícil de controlar.

isso foi inspirado pelo jogo slay the spire, em que vários inimigos te atrapalham inserindo cartas negativas no seu deck. em especial o boss slime que insere cartas simplesmente inúteis, te forçando a gastar pontos de ação para remove-las do seu deck.

achei a mecânica interessante, mas tem também o lado negativo de deixar o AA cada vez mais simples e inefetivo. apesar de fazer sentido do ponto de vida narrativo e fazer sentido enquanto punição por levar dano, cria um arco pouco satisfatório em que o efeito do personagem fica continuamente mais fraco e simplificado, o que é pouco divertido.


ritmo acelerado

o calor/pressão, o ataque ultra e o acúmulo de dano todos funcionam num ritmo acelerado em que o limite de quebra é atingido cada vez mais rápido. dessa forma, o agente autonomo descarta suas cartas, usa seu ataque ultra e ganha cartas de dano cada vez mais rápido.

suas cartas vão sendo descartadas tão rápido conforme o calor acumula que eventualmente ele já não consegue mais controlá-las e cada vez mais os painéis se enchem de cartas de dano, em compensação o ataque ultra ocorre cada vez mais rápido, limpando o campo de oponentes com ataques poderosos. o objetivo é que o jogador chegasse ao final da batalha capengando, ao contrário de outros jogos deckbuilder ou engine building em que a sensação é a de um motor cada vez mais potente.

 

deckbuilding

tentei fortalecer essa sensação de uma maquina meio capenga, ainda que potente, com a parte de deckbuilding. o agente autonômo ser composto de tantos decks e tantas cartas significa que o jogador não pode administrar elas de forma tão precisa quanto outros jogos do gênero.

ao invés das cartas serem inseridas e removidas individualmente, elas vem em kits temáticos que podem conter cartas de todos os decks, mas costumam formar um pequeno combo, para garantir sua utilidade.


tela de inserção de kits de carta no seu deck

a impossibilidade de manejar as cartas individualmente significa que não só vão ter várias cartas indesejadas ou meio avulsas, vindo junto de kits vantajosos, mas é até difícil para o jogador ter noção plena de todas as cartas que o agente autônomo possui. queria com isso passar a sensação de que ele é efetivamente maciço, um veículo inteiro que está sendo mais direcionado que plenamente pilotado, ao contrário de um personagem sucinto.


o jogo apresenta música por Ra Irigaray e pode ser jogado aqui: https://umunum.itch.io/aaaramis

quinta-feira, 24 de dezembro de 2020

bate-bate pt.8: mecânica nova, elementos de cenário com efeitos

 adicionei uma mecânica nova, objetos no cenário que podem fazer contato com os lutadores tanto aliados quanto inimigos e causam efeitos no lutador atuante. o lutador que faz contato pode então tomar sua vez de novo logo depois.

exemplos são coisas como plantas com espinhos que causam dano em quem a tocar, plantas venenosas que infligem veneno, altares que curam dano ou providenciam buffs. o efeito sempre afeta tanto os aliados quanto os inimigos.

esses elementos dão novas considerações estratégicas na hora de movimentar os lutadores pelo campo e podem providenciar momentos legais como manipular os inimigos para se situarem do lado de um objeto que causa dano e colocar lutadores com golpes que acionam toda vez que são ativados para tomarem múltiplos turnos em seguida.

 

um lutador fazendo contato com uma planta com espinhos, levando dano em decorrência disso
um lutador fazendo contato com uma planta com espinhos, levando dano em decorrência disso

 

quarta-feira, 23 de dezembro de 2020

bate-bate pt.7: alguns pontos sobre o design do jogo até agora

- a dinâmica de movimentação durante a fase de administração é divertida. tentar manipular os inimigos para se posicionarem onde você quer, levando em conta que lutadores ofensivos, defensivos e de suporte tem um comportamento previsível e manipulável. tentar "circundar" os inimigos para pegar um inimigo fraco de suporte "por trás" e evitar ataques de inimigos fortes.

- a dinâmica básica da rodada de combate, com as células criando uma cadeia/corrente de contatos, você torcendo para que a corrente chegue aonde você quer, cria uma série de pequenos momentos de expectativa, triunfo ou decepção que cria uma base sólida e divertida mesmo quando as considerações estratégicas ainda não são tão complexas ou variadas.

- o jogo perde seu ritmo característico quando o jogador não faz movimentos na rodada de administração, iniciando outra rodada de batalha imediatamente com o campo na mesma configuração. estou considerando forçar o jogador a fazer pelo menos um movimento antes de poder começar de novo, dando aos oponentes a oportunidade de reagir, criando o "back and forth".

 - o jogo fica muito chato em cenário com apenas um ponto de contato entre os aliados e os inimigos, com dois lutadores ofensivos se atacando com lutadores de apoio atrás deles. o jogo precisa de uma malha mais complexa de lutadores para que a cadeia/corrente de contatos seja interessantes.

- no final de uma batalha bem sucedida, em que só sobra um único oponente, mas múltiplos lutadores aliados, pode ocorrer o caso de uma série de contatos entre os aliados sem nunca atacarem o oponente. ao invés dos aliados carregarem um grande ataque excitante contra o inimigo, ele pode nunca chegar a ser atacado antes da rodada acabar, o que é bem chato.

- ao mesmo tempo, batalhas com muitos inimigos e poucos aliados, mesmo quando balanceado, pode ser frustrante pelo tempo que demora, com os oponentes fazendo infinitos contatos um com o outro.

- as batalhas atuais, quando funcionam bem, são relativamente curtas, 2-3 rodadas de combate. isso é um pouco rápido demais, mas batalhas mais longas precisariam da possibilidade do jogador poder botar lutadores novos e recolher os lutadores do campo, com o jogo spawnando inimigos novos, para ficar variado e excitante. no momento é melhor batalhas mais curtas.

- preciso explorar melhor lutadores com potencial tanto ofensivo quanto de suporte.

sexta-feira, 18 de dezembro de 2020

bate-bate: demo disponível da versão 0.1!

 criei uma primeira versão jogável do protótipo, para quem quiser testar. ela apresenta 10 dez cenários de combate testando aspectos e golpes diferentes. já iterei nesses cenários para que ficassem mais interessantes, mas sendo esse primeiro protótipo um teste, alguns deles sinceramente não funcionam muito bem, mas quis deixar incluso mesmo assim.


o menu inicial inclui uma página de instruções que, espero eu, consigam explicar o básico desse recorte do jogo. qualquer duvida, bug ou opiniões podem deixar aqui.

 

link pro zip: https://drive.google.com/drive/folders/1JoPGdF136_zH3PZ9WQ3QY38nRTy9Uf2E?usp=sharing

 

adendo: gráficos temporários ripados de cadence of hyrule e pokemon

adendo 2: esqueci de botar um botão de fechar a aplicação, oh well


screenshots:





terça-feira, 15 de dezembro de 2020

bate-bate pt.6: mais cenários de combate

Caverna 1:

esse cenário visa explorar inimigos que acabam causando mais estrago quando são atacados, que quando deixados de lado. A e D tem golpes primários muito fracos, mas causam debuffs grandes de ataque e defesa a seus atacantes. B complementa o conjunto inimigo sendo o atacante primário. pode ser mais vantajoso aqui atacar B por si só e ativamente evitar contato com A e D até que B seja eliminado.


Veneno 1:


os inimigos desse cenário (B e E) infligem veneno em todos os inimigos adjacentes sempre que ativados. devido à natureza exponencial do dano de veneno, estar adjacente a ambos ao mesmo tempo levaria a um acúmulo muito grande de veneno e uma grande quantidade de dano. sendo o desafio evitar isso quando possível.


Palácio 2:


o cenário visa testar personagens do jogador (A e C) que tem a possibilidade de infligir debuffs e veneno nos inimigos, algo pouco explorado até agora. o personagem A envenena enquanto golpe principal e o personagem C diminui a capacidade ofensiva dos oponentes. os inimigos B e D são os oponentes ofensivos mais fracos até agora, dando espaço para esse cenário explorar lutadores menos diretamente ofensivos e mais frágeis.


Veneno 2:


mais outro cenário que apresenta lutadores aliados que envenenam os inimigos. além do lutador D apresentado anteriormente, que ataca um único alvo como golpe primário, o lutador A tem como golpe principal curar um aliado, envenenando um pouquinho todos os inimigos adjacentes com seu golpe secundário. o jogador tem a escolha de usar o lutador A para envenenar todos os oponentes aos poucos, usando o lutador D para envenenar um inimigo de sua escolha de forma mais intensa, ou colar D no A, para ser curado.


Caverna 2:

o último cenário apresenta um novo lutador aliado defensivo D que possui muita vida e pode se curar com contatos amigáveis, o jogador pode tanto circundar D com lutadores inimigos para absorver seus ataques ou deixar D em contato com aliados para receber cura, potencialmente expondo os aliados a ataques.

para complementar, o campo apresenta duas gavetas que podem ser usadas de forma defensiva, mas o conjunto inimigo tem a maior quantidade de inimigos até o momento. são personagens fracos, mas a grande quantidade dificulta que o jogador consiga fugir completamente deles.

quinta-feira, 10 de dezembro de 2020

bate-bate pt.5: primeiros cenários de combate

comecei a implementar agora os primeiros cenários de combate para testar possíveis personagens e golpes. cada cenário visa explorar uma relação estratégica entre os lutadores de um mesmo conjunto e características no campo que podem ser exploradas por eles. vai a seguir uma descrição de cada um, como ainda não tive a oportunidade de jogá-los com muita frequência, as conclusões quanto ao resulto eu vou deixar para depois. 

lembrando que os assets temporários foram ripados de cadence of hyrule. 

 

Palácio 1


 

 o primeiro cenário coloca uma dupla de lutadores do jogador (C e E) contra um trio de inimigos (A, B e D). a dupla do jogador consiste em um lutador ofensivo (C) e um curandeiro de suporte (E) e visa explorar a relação entre um lutador ponta de lança em contato com os oponentes e seu aliado de suporte. o lutador C recebe um bônus de ataque de seu golpe secundário quando é apoiado pelo golpe primário de um aliado, criando uma sinergia entre os dois.

o trio de inimigos é mais flexível por contar com um oponente defensivo altamente resistente (D) e dois minions ofensivos (A e B). por terem maior número, os inimigos tem mais chances de rodear os aliados e impedir que o lutador E, de suporte e mais frágil que o C, consiga ficar fora de perigo. para contrabalancear o lutador C ganha buff de defesa em contatos amigáveis, ganhando algo também na relação sinergética de apoio com o C. 

o inimigo D recebe um bônus de defesa com todo contato amigável, logo, se seus minions rodearem os aliados, eles atrapalham a formação ofensivo linha de frente (C) + suporte linha traseira (E), porém, se entrarem em contato com o inimigo D, lhe dão muitos buffs de defesa. de modo geral esse cenário coloca um grupo de aliados que requer uma formação mais precisa contra um grupo de inimigos mais flexível e independente.

 

Orc 1


esse cenário apresenta dois conjuntos de três lutadores, sendo bastante apinhado e faltando mobilidade. ao mesmo tempo, ambos os conjuntos possuem um único lutador ofensivo (C e D) recebendo suporte do resto de sua equipe. isso visa testar a necessidade de uma formação mais específica em um campo cheio e a capacidade da IA de lidar com isso de um jeito pelo menos decente.

o lutador C ganha buff de ataque com cada ativação, se tornando um atacante muito forte sem necessitar de contato direto com seus aliados. seus minions (A e B) tem golpes secundários que se curam e se fornecem buff de defesa. dessa forma os inimigos são um pouco mais independentes que os bonecos do jogador, com o lutador D precisando receber suporte de E e F para ganhar seu buff de ataque, visando compensar um pouco a capacidade reduzida da IA de fazer uma boa formação.


Campo 1


ao contrário dos outros cenários, em que todos os conjuntos apresentavam apenas um lutador ofensivo, nesse tanto os inimigos quando os lutadores do jogador possuem dois ofensivos e um suporte. os inimigos tem os goblins minions de sempre, flexíveis e todos capazes de causar dano, até o curandeiro amarelo. os lutadores do inimigo tem dois canhões de vidro (C e D), lutadores ofensivos com grande capacidade de dano, mas muito frágeis, e um curandeiro com habilidades de curar todos os aliados adjacentes (D).

o objetivo é testar um arco estratégico um pouco mais complexo que os outros cenários, em que os lutadores ofensivos aliados podem acabar se ferindo muito, quase morrendo, ao longo de uma única rodada de combate e precisar ser retirados da proximidade dos lutadores inimigos para que possam ser curados pelo lutador D ao longo da rodada seguinte.

para facilitar essa estratégia o campo dessa fez apresenta um elemento que estou chamando de "gaveta", uma célula vazia no canto (B) que só possui contato com um único vizinho (A). um lutador posicionado lá com um aliado na célula adjacente está protegido de ser atacado por qualquer inimigo e tem sempre 100% de chance de fazer contato com seu aliado. dessa forma, se um lutador de suporte estiver "engavetado" ele irá apoiar seu aliado 100% das vezes que for ativado sem ser atacado por inimigos e se um dos ofensivos enfraquecidos estiver na gaveta, pode ser curado pelo aliado na célula A sem ser atacado.


Orc 2


uma versão abreviada do cenário orc 1 com duas duplas ofensivo + suporte. dessa vez uma menor quantidade de lutadores abre mais espaço no campo para movimentação. a necessidade de uma formação mais precisa entre o ofensivo e o suporte pode ser explorada no campo pela pela presença de duas gavetas, umas delas de duas células.


Campo 2


mais um cenário em que cada um dos conjuntos possui dois lutadores ofensivos. os lutadores inimigos dessa vez também são canhões de vidro, porém não possuem suporte de um aliado. o lado do jogador tem um contraste entre um lutador mais forte, porém mais frágil (B) e um lutador mais equilibrado (C). o suporte E do jogador pode optar por tanto apoiar o lutador C, que receberia buff de ataque por conta de seu golpe secundário, ou o lutador B que é mais frágil e pode precisar de ajuda para não morrer ao longo da rodada.

Floreio, minha gramática de geração procedural de texto

Gostaria de falar um pouco da ferramenta de geração procedural de texto por gramática de substituição que eu venho desenvolvendo na Unity pa...