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.

segunda-feira, 7 de dezembro de 2020

bate-bate pt.4: bolando golpes e personagens

 um golpe no jogo, pelo menos até o momento, varia ao longo de cinco parâmetros: efeito, intensidade, área, alvo e o gatilho. um personagem ou boneco varia ao longo de apenas três parâmetros mecânicos: hp máximo, golpe primário e golpe secundário. os parâmetros dos golpes tem uma quantidade relativamente pequena e rígida de possibilidades e não oferecem tantas permutações possível para os golpes, as permutações de personagens são limitadas pela variedade possível de golpes.

fica aqui então o desafio de conseguir conceber uma quantidade variada de golpes e consequentemente personagens variando uma pequena quantidade de parâmetros pouco flexíveis. meu padrão são golpes que não só são mecanicamente interessantes de um ponto de vista estratégico, interagindo de forma interessante com outras coisas no contexto da batalha, mas que também são narrativamente expressivos de alguma forma, que sugerem uma ação interessante para o personagem estar fazendo, o que é reforçado pelo nome do golpe.

concebi fazer um gerador simples que combinasse todas as variações de parâmetros disponíveis no momento e me apresentasse literalmente todas as possibilidades de golpes para que eu realizasse uma curadoria e escolhesse os que me parecessem mais expressivos e interessantes.

meu medo é que se a totalidade de golpes se diferir entre si apenas de forma sutil, criando uma espécie de degradê em que você pode ver as pequenas variações de um golpe para outro, nenhum deles tenha saliência o suficiente para ser interessante. apesar de dois golpes serem consideravelmente diferentes entre si, se for possível identificar toda a cadeia de pequenas variações entre um outro, todos eles perdem um pouco de identidade.

preferi como processo pensar em personagens e conjuntos de múltiplos personagens com uma dinâmica interessante entre si, preenchendo eles com golpes pré-existentes e apenas criando golpes novos quando necessário. muito raramente uma ideia interessante para um golpe motivava um personagem e não o contrário. o desafio no último caso talvez seja maneirar na repetição desses golpes, para que eles não se banalizem, tirando a identidade dos personagens criados em cima deles.

os personagens também possuem a vantagem de ter um sprite, sendo muito mais fácil conceber um personagem interessante e expressivo que um golpe mecanicamente interessante por si só. um personagem interessante também pode carregar um outro golpe sem graça, puramente funcional.

apesar do personagem como um todo ser no geral concebido primeiro, eles ainda são, mecanicamente,  um apanhado de golpes e portanto, suas possibilidades e limitações são as possibilidades e limitações mecânicas de um golpe.

golpes até o momento podem dar e tirar pontos de vida, buffs e debuffs de ataque e defesa, e infligir veneno. podem ser primários (disparam no contato com outro boneco) ou secundários (tem gatilhos específicos). no segundo caso podem disparar sempre que o boneco for ativado, apenas no contato com personagens aliados ou inimigos, ou quando ele receber ou executar um golpe primário de ataque ou suporte. esses golpes podem atingir o personagem que estão fazendo contato, todos os personagens adjacentes, o personagem que está fazendo contato com eles ou a si próprios.

algumas combinações de efeito, gatilho e área já me pareceram bem expressivas. golpes que infligem dano ou debuffs em alvos quando o personagem é atacado sugerem um comportamento vingativo e podem levar o jogador a evitar atacar esse alvo até que o efeito seja menos danoso, como por exemplo, só atacar um alvo que inflige debuff de defesa quando outros inimigos ofensivos já tiverem sido derrotados. golpes que curam ou concedem buff aos aliados quando um personagem é atacado parecem uma espécie de martírio ou sacrifício, com o jogador ativamente  torcendo para um de seus personagens ser atacado. golpes secundários que fortalecem o ataque ou dão mais dano quando um personagem ataca sugerem um personagem focado e unidirecional, em contraste com personagens cujos golpes são mais variados e acionam em momentos diferentes.


sábado, 5 de dezembro de 2020

bate-bate pt.3: parâmetros de um golpe

cada golpe é essencialmente definido por três parâmetros: o efeito, a área afetada e o gatilho que faz ele disparar automaticamente na rodada de batalha, fora isso só grau do efeito que pode ser maior ou menor. 

o gatilho está sempre relacionado à corrente de contatos da batalha, podendo disparar o golpe sempre que a célula for ativada, somente quando ela fizer um contato com um aliado ou um inimigo, quando ela receber um ataque primário (ofensivo ou suporte) ou quando ela realizar um ataque primário. a área afetada pode ser todas as células adjacentes, a própria célula ou o boneco que está fazendo contato com essa célula. nessa fase inicial há somente uma quantidade pequena de efeitos para os golpes, dar dano, curar dano, buff e debuff de ataque, buff e debuff de defesa e veneno, que causa dano ao longo do tempo.

para evitar que as coisas espiralem durante uma partida e permaneçam mais previsíveis, decidi que não queria que qualquer efeito afetando um boneco dure mais que uma rodada. assim que a rodada de batalha acaba todos os buffs, debuffs e veneno são removidos.

isso também ajuda a reforçar a dinâmica alternada entre a rodada de administração e a rodada de combate, em que o "palco" é posto na rodada de manutenção e o evento se desenrola na rodada de combate, de forma auto contida.

 

buff e debuff

mesmo com todos os efeitos sendo resetados no final da rodada, ainda seria possível um aumento descontrolado de buffs e debuffs. esse problema teria que ser resolvido dando um efeito pequeno e gradual demais para os dois, o que seria um pouco chato. 

se o efeito fosse grande, dar buff nos seus bonecos e debuff nos inimigos para contrabalancear o buff deles se tornaria uma parte vital do combate, afinal um personagem sem buff algum daria uma quantidade muito menor de dano que um personagem que acumulou buffs de ataque ao longo da rodada.

a solução que estou testando é que todo buff ou debuff seja imediatamente "gasto" assim que faz efeito. buffs e debuffs de ataque aumentam ou diminuem o dano de ataques primários realizado pelo boneco. buffs e debuffs de defesa diminuem ou aumentam o dano sofrido por -qualquer ataque- apenas excluindo dano sofrido por veneno. isso quer dizer que o buff e o debuff de ataque de um boneco é zerado sempre que ele realizar ataques primários que infligem dano e seu buff e debuff de defesa é zerado sempre que ele recebe dano de qualquer golpe.

ainda estou refletindo sobre o momento que cada buff/debuff toma efeito e pretendo observar as possibilidades estratégicas de cada um. o buff de ataque só tomar efeito em ataques primários conserva ele para ataques mais fortes (ataques primários costumam infligir dano bem mais forte que ataques secundários), mas também torna ele inútil para bonecos que não sejam especializados em ofensiva.

o buff/debuff de defesa tomar efeito em todo dano sofrido por golpes significa que ele vai ser perdido com mais frequência, já que vários golpes secundários infligem um pouquinho de dano em múltiplos alvos, em compensação pode ser útil para bonecos que não estejam sendo diretamente atacados, mas ainda podem ser alvos desses golpes secundários de área.

isso também cria uma possível situação estratégica interessante, usar golpes secundários de área, ainda que fracos, para "abrir" oponentes com muito buff de defesa, deixando eles expostos para ataques primários mais fortes.

agora é mais difícil que o buff/debuff de ataque ou defesa acumule, mas ainda é possível, testando o jogo por agora já observei até quatro buffs acumulados. para tornar esse novo desafio de acumular buffs mais interessante e deixar o efeito menos linear, cada buff de ataque aplica 20% a mais de dano, mas exponencialmente. então o primeiro aplica +20%, o segundo aplica +20% em cima dos 20 anteriores e por aí vai. conseguir acumular quatro buffs por exemplo é ainda mais efetivo que um buff quatro vezes. isso se torna interessante quando se pensa nas consequências do posicionamento dos bonecos no campo quando se tenta induzir dois bonecos a se ativarem várias vezes em seguida.

o efeito do buff de defesa é semelhante, deduzindo 20% do dano recebido,  mas devido à ordem dos efeitos aplicados isso não é simétrico. se um buff de ataque aumentar um golpe de 10 de dano para 12, o buff de defesa só irá surtir efeito após isso e reduzi-lo de 12 para  9.6. uma coisa não cancela a outra, o buff de defesa acaba sendo mais efetivo por vir por último. não sei se me importo com isso ou não.

ainda estou pensando nas consequência de ganhar um buff de ataque vs. infligir um debuff de defesa no alvo e vice versa.


veneno

também queria que o veneno beneficiasse o esforço de conseguir acumulá-lo, assim como buffs e debuffs. para isso só peguei a mecânica de veneno de slay the spire. a cada vez que for ativado um personagem perde 0.2 pontos de vida por veneno que tiver e logo depois se cura de um ponto de veneno. 

logo um personagem com 5 pontos de veneno perderia na primeira ativação 1 ponto de vida, depois 0.8 (4 pontos de veneno), 0.6 (3 pontos de veneno) e por aí vai. isso também significa que conseguir aplicar mais ponto de veneno se torna mais efetivo quanto mais veneno já tiver sido acumulado.

tomemos esse personagem com 5 pontos de dano como exemplo: ao longo de 3 ativações ele perdeu 2.4 pontos de vida. um personagem com apenas 3 pontos de vida teria perdido 0.6 + 0.4 + 0.2 = 1.2 ao longo das mesmas três ativações. agora digamos que o personagem com 5 pontos de veneno ganhe um sexto, ao longo de três ativações ele perderia 1.2 + 1 + 0.8 = 3, já se o personagem com 3 pontos de veneno ganhasse um quarto ele perderia 0.8 + 0.6 + 0.2 = 1.6.

o personagem que ganhou seu sexto ponto de veneno perdeu 0.6 pontos de dano a mais por conta disso, já o personagem que ganhou seu quarto ponto de veneno perdeu 0.4 pontos de dano a mais, com o veneno surtindo efeito pela mesma quantidade de tempo. a diferença é muito sutil e isso me incomoda ainda, mas o jeito que o veneno funciona significa que o jogador também é exponencialmente recompensado por conseguir concentrar veneno em um oponente.

sexta-feira, 4 de dezembro de 2020

bate-bate pt.2: rodada de administração

assim como tft, o jogo intercala uma rodada de batalha com uma rodada de administração, em que o jogador pode mexer nos seus personagens para botá-los na condição ideal para batalha. no momento isso envolve apenas mudá-los de posição, mas futuramente pode ser possível retirar bonecos de campo, colocar bonecos novos, usar itens de cura ou buff.

entretanto, toda vez que o jogador realizar uma ação, o jogo realiza uma em seguida. no momento isso também só envolve os bonecos inimigos se mexendo, mas no futuro quero que eles também possam ser curados ou que inimigos novos spawnem em campo. essas ações seriam aleatórias e imprevisíveis, dentro de uma gama de opções.

apesar da batalha ter um elemento aleatório grande, o momento de administração tem uma importância estratégica grande já que a posição dos bonecos um relação ao outro e aos elementos do campo vão definir a probabilidade das coisas acontecerem. um boneco com um único vizinho vai sempre ativar ele quando ele próprio for ativado, um boneco com quatro vizinhos é muito mais imprevisível, mas também tem mais chances de ser ativado.

a ideia é adicionar um elemento tenso de push your luck e reproduzir os temas do jogo no geral, de imprevisibilidade e expectativa, para que seja interessante pro jogador de assistir o próprio jogo. na rodada de administração o jogador coloca as peças em jogo e depois se afasta e assiste o desenrolar da trama na rodada de batalha. push your luck porque a gama de ações que o inimigo pode realizar vai ter graus muito variados de intensidade. se o inimigo só curar de leve um boneco, isso atrapalha o jogador bem menos que um inimigo novo surgir com a vida cheia. isso significa que a cada ação que o jogador realizar ele arrisca ainda mais que o jogo selecione uma ação muito ruim para o inimigo realizar.

 

 

(assets temporários ripados de pokemon e cadence of hyrule)
 

terça-feira, 1 de dezembro de 2020

bate-bate pt.1: rodada de batalha

 eu tive a ideia original para esse jogo, que estou chamando temporariamente de bate-bate, jogando Team Fight Tactics. fiquei muito interessada pela ideia de assistir seu próprio jogo se desenrolando e influenciando o resultado de forma indireta.

gosto muito de jogos altamente sistêmicos, mas acho que eventualmente eles acabam me parecendo altamente arbitrários quando o objetivo final é sempre otimização de um sistema. para que gastar tanto tempo otimizando um sistema que fundamentalmente não serve para nada, visto que é um jogo? jogos de sobrevivência, grand strategy e 4Xs costumam permanecer interessantes pelo risco de você perder o jogo, mas ou você atinge uma estabilidade eventualmente ou o jogo acaba sendo sempre fadado ao fracasso (como dwarf fortress) o que também não me parece interessante.

auto-battlers me interessaram por serem jogos baseados em sistemas de comportamento e interação para cada personagem em que o elemento de imprevisibilidade e surpresa decorrente do fato de você não controlar diretamente os personagens dá um certo propósito para a otimização do sistema, você otimiza ele para assistir o resultado depois, que nunca é determinista e permanece divertido. 

quebrar o jogo em sessões de batalha acaba evitando um problema que eu tenho com dwarf fortress, que é me investir por muito tempo no desenvolvimento desse sistema que vai eventualmente ser destruído. num auto-battler eu crio esse pequeno ecossistema de personagens para acompanhar seu desenvolvimento narrativo, mas como não tem uma fantasia tão construtiva como dwarf fortress, me importo menos se tudo der errado.

tem um quê de jogo de carta para mim também, de colecionar essas entidades com poderzinhos para formarem combos, mas com esse aspecto sistêmico que eu aprecio em jogos de carta deck builder que me fazem sentir menos administrando diretamente um exército de bichinhos que cultivando um ecossistema de elementos que vão se chocar um contra o outro de uma forma interessante.

a ideia do jogo então é ter um grid de células, algumas ocupadas por lutadores que ainda não me decidi se seriam mais monstrinhos a la pokemon ou um misto de pessoas e criaturas como um rpg, que agiriam sozinhos durante uma rodada de combate. a cada turno uma das células toma sua vez e escolhe uma célula vizinha para se bater. a célula acertada vira o atuante da vez e também escolhe um alvo adjacente e por aí vai.


(assets temporários ripados de cadence of hyrule e pokemon)

o esperado é que isso forme uma onda de encontros entre esses lutadores em que sempre existe um foco narrativo, o encontro entre o lutador da vez e seu alvo, e que esse foco vá "passeando" pelo grid como uma corrente, criando uma série de eventos em sequência que forme uma narrativa mais forte e legível que a bagunça simultânea que costuma ocorrer em TFT.

cada personagem tem uma habilidade primária, que pode ser ofensiva ou de suporte. uma habilidade ofensiva é acionada quando o lutador bate num inimigo e uma habilidade de suporte é acionada quando ele bate em um aliado. por vezes esse encontro não aciona habilidade nenhuma e só envolve passar a vez para outro lutador.

habilidades secundárias tem efeitos variados e são acionadas em momentos variados, complementando o foco narrativo forte do encontro entre dois lutadores com eventos secundários que tanto tornam a narrativa do combate mais complexa e interessante (eu espero), quanto criam um desafio extra de ler o que ocorre durante a batalha.

a ideia fundamental para a rodada de luta é basicamente essa. planejo desenvolver uns cenários de teste em seguida, já pensando em personagens e golpes de verdade pro jogo, para ir testando as possibilidades narrativas e estratégicas que esse sistema oferece.


se alguém tiver interesse, já brinquei com auto-battlers antes num joguinho que desenvolvi entre o ano passado e esse, autonomous agent aramis: https://umunum.itch.io/aaaramis

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...