Batalhando às Cegas! - Impressões da Minha Primeira Batalha de Steem Monsters

in #pt6 years ago

No dia 14 de outubro de 2018, a parte de batalhas do jogo Steem Monsters foi liberada para o público geral (aqui está o anúncio em Inglês, e eu finalmente tive a resposta para a grande dúvida que eu tinha já há alguns meses. Será que eu conseguiria jogar esse jogo?

A resposta curta é sim, com alguns "poréns". E a resposta longa é...

O site do Steem Monsters não é muito amigável para usuários deficientes visuais como eu, que dependem de programas leitores de telas para usar o computador. A maioria dos problemas de acessibilidade do site está relacionada a itens que não podem ser focados ou ativados pelo teclado e só funcionam com cliques do mouse (como é o caso das cartas), ou itens representados por ícones sem nenhum texto que os programas leitores de tela possam usar para identificá-los (como os ícones dos stats/atributos). Eu já escrevi sobre isso várias vezes antes, inclusive contei como eu não consigo verificar os stats das minhas cartas pelo site. Infelizmente, não houve nenhuma melhoria nessa parte. Estes problemas continuam os mesmos e também acontecem na hora de escolher as cartas para batalhar. No fim das contas, minha solução para saber quais stats cada carta tem em cada level foi estudar o arquivo JSON da API do Steem Monsters com todos detalhes possíveis de todas as cartas existentes:

https://steemmonsters.com/cards/get_details

É mais para desenvolvedores, mas é razoavelmente legível sem nenhum processamento especial.

A escolha das cartas só pode ser feita com cliques do mouse. Não é possível usar as teclas "Tab" e "Enter" para focar nas cartas e confirmar as escolhas. Demorei mais de 15 minutos até conseguir fazer meu leitor de tela simular um clique do mouse nas cartas que eu queria.

Depois de pressionar "Enter" no botão "Battle!" e esperar alguns segundos, o servidor encontrou um adversário e mostrou as duas equipes (todas as cartas que escolhemos para a batalha).

Aiyumi VS. Zerodashonenine

Fonte da imagem: captura de tela do Steemmonsters.com

Mais ícones e números de stats que leitores de tela não conseguem identificar, assim como em todos os lugares onde aparecem cartas. O que tenho certeza é que o último número para cada carta é o level. Todas as nossas cartas eram de level 1.

O botão para começar a batalha, que diz "Rumble!" é um botão normal e funciona pelo teclado perfeitamente. Pressioná-lo fez a batalha entrar no automático e fazer o que era pra ser feito. Até tem música e efeitos sonoros, o que achei bem legal!

... Exceto que eu não fazia a menor ideia do que estava acontecendo! Alguns minutos de sons de pancadas e magias depois...

Game over

"Ãh? O que foi isso? Alguém anotou a placa? Eu não vi nada!" :P

A batalha terminou. Eu não tinha ideia do que me atingiu. Tudo que eu sabia era que eu perdi! E agora?

Eu gostaria que o site tivesse os logs de batalha em texto, mas não tem. Só dá para assistir às animações de batalha de novo.

Nem tudo está perdido, no entanto. Uma vez, eu perguntei (em Inglês) se haveria logs de batalhas em texto, e a resposta do Yabapmatt foi que os logs ficariam disponíveis no formato JSON. Então, lá fui eu procurar pelo tal JSON...

E encontrei. O link para o log em JSON da minha batalha está abaixo:

https://steemmonsters.com/battle/result?id=435e639d9d82d6c680cac3413ce3221b26584a47&v=1539554238438

Ao contrário do JSON com os detalhes de todas as cartas que é razoavelmente legível por não-programadores, este não é muito fácil de engolir sem mastigar. Os nomes das cartas não aparecem em lugar nenhum. Em vez disso, os identificadores únicos das cartas (coisas como "C-R0HA0SEMM8") aparecem sempre que uma carta é referenciada. As mudanças de stats são mostradas como uma lista de números separados por vírgula, na seguinte ordem: Melee (ataque corporal), Ranged (ataque à distância), Magic (mágica), Armor (armadura), Health (saúde/vida), Speed (velocidade).

Demorei um pouco para entender os dados e, dois dias depois, consegui criar um script Perl para fazer o trabalho de "mastigar" (processar) os dados para torná-los mais legíveis. Só então pude analisar e entender o que aconteceu na minha primeira batalha. E devo dizer que o resultado foi desastroso!

Se você quiser assistir à vergonhosa performance, aqui está o link para a batalha em seu total desastre. Para a descrição textual do que aconteceu na partida, segundo a saída do meu script, continue lendo.

Não tenho certeza se consegui interpretar tudo no arquivo JSON corretamente (espero que sim), mas é isso que eu tenho no momento. Pelo menos o que o script disse fez sentido e me deu uma boa noção do que aconteceu. Seguem os dados processados pelo script (tentei traduzir mais ou menos para Português e facilitar um pouco para quem não entende muito Inglês). Mais impressões e comentários abaixo do texto!


Data da partida: 2018-10-14T21:08:21.984Z

Tipo de partida: treino - Max. Mana: 20

Equipes:

Equipe 1

Player 1 (P1): aiyumi (classificação 0)

Cor: Branco (White)

Summoner:

Tyrus Paladium - level 1, Beta

Bônus para a equipe: Armor+1

Monsters:
  • Silvershield Paladin - level 1, Alpha

    Stats (+ bônus do Summoner):

    Melee=2, Armor=1 (+1), Health=3, Speed=2; Habilidades: Shield

  • Silvershield Warrior - level 1, Alpha

    Stats (+ bônus do Summoner):

    Melee=2, Armor=1 (+1), Health=4, Speed=1

  • Peacebringer - level 1, Alpha

    Stats (+ bônus do Summoner):

    Ranged=2, Armor=0 (+1), Health=4, Speed=3

  • Divine Healer - level 1, Alpha

    Stats (+ bônus do Summoner):

    Armor=0 (+1), Health=4, Speed=1; Habilidades: Tank Heal

Equipe 2

Player 2 (P2): zerodashonenine (classificação 0)

Cor: Azul (Blue)

Summoner:

Alric Stormbringer - level 1, Beta

Bônus para a equipe: Magic+1

Monsters:
  • Spineback Turtle - level 1, Beta

    Stats:

    Melee=1, Armor=3, Health=6, Speed=1

  • Medusa - level 1, Beta

    Stats (+ bônus do Summoner):

    Magic=1 (+1), Health=7, Speed=2

  • Water Elemental - level 1, Beta

    Stats:

    Ranged=2, Health=4, Speed=4; Habilidades: Heal

  • Crustacean King - level 1, Beta

    Stats:

    Armor=1, Health=3, Speed=1; Habilidades: Tank Heal

Início da batalha

Turno 1:

Water Elemental(P2) executou um ataque à distância (Ranged) em Silvershield Paladin(P1) e acertou.

A Armor de Silvershield Paladin(P1) absorveu 1 de dano.

A Armor de Silvershield Paladin(P1) foi de 2 para 1.

A Health de Silvershield Paladin(P1) permaneceu em 3.

Stats de Silvershield Paladin(P1): Melee=2, Armor=1, Health=3, Speed=2

Peacebringer(P1) executou um ataque à distância (Ranged) em Spineback Turtle(P2) e acertou.

A Armor de Spineback Turtle(P2) absorveu 2 de dano.

A Armor de Spineback Turtle(P2) foi de 3 para 1.

A Health de Spineback Turtle(P2) permaneceu em 6.

Stats de Spineback Turtle(P2): Melee=1, Armor=1, Health=6, Speed=1

Medusa(P2) executou um ataque mágico (Magic) em Silvershield Paladin(P1) e acertou.

Silvershield Paladin(P1) recebeu 2 de dano.

A Health de Silvershield Paladin(P1) foi de 3 para 1.

Stats de Silvershield Paladin(P1): Melee=2, Armor=1, Health=1, Speed=2

Silvershield Paladin(P1) executou um ataque corporal (Melee) em Spineback Turtle(P2) e acertou.

Spineback Turtle(P2) recebeu 2 de dano.

A Armor de Spineback Turtle(P2) foi de 1 para 0.

A Health de Spineback Turtle(P2) permaneceu em 6.

Stats de Spineback Turtle(P2): Melee=1, Health=6, Speed=1

Divine Healer(P1) curou 1 pontos de Health de Silvershield Paladin(P1).

A Health de Silvershield Paladin(P1) foi de 1 para 2.

Stats de Silvershield Paladin(P1): Melee=2, Armor=1, Health=2, Speed=2

Spineback Turtle(P2) executou um ataque corporal (Melee) em Silvershield Paladin(P1) e acertou.

A Armor de Silvershield Paladin(P1) absorveu 0 de dano.

A Armor de Silvershield Paladin(P1) permaneceu em 1.

A Health de Silvershield Paladin(P1) permaneceu em 2.

Stats de Silvershield Paladin(P1): Melee=2, Armor=1, Health=2, Speed=2

Turno 2:

Water Elemental(P2) executou um ataque à distância (Ranged) em Silvershield Paladin(P1) e acertou.

A Armor de Silvershield Paladin(P1) absorveu 1 de dano.

A Armor de Silvershield Paladin(P1) foi de 1 para 0.

A Health de Silvershield Paladin(P1) permaneceu em 2.

Stats de Silvershield Paladin(P1): Melee=2, Health=2, Speed=2

Peacebringer(P1) executou um ataque à distância (Ranged) em Spineback Turtle(P2) e acertou.

Spineback Turtle(P2) recebeu 2 de dano.

A Health de Spineback Turtle(P2) foi de 6 para 4.

Stats de Spineback Turtle(P2): Melee=1, Health=4, Speed=1

Medusa(P2) executou um ataque mágico (Magic) em Silvershield Paladin(P1) e acertou.

Silvershield Paladin(P1) recebeu 2 de dano.

A Health de Silvershield Paladin(P1) foi de 2 para 0.

Silvershield Paladin(P1) morreu.

Silvershield Warrior(P1) executou um ataque corporal (Melee) em Spineback Turtle(P2) e acertou.

Spineback Turtle(P2) recebeu 2 de dano.

A Health de Spineback Turtle(P2) foi de 4 para 2.

Stats de Spineback Turtle(P2): Melee=1, Health=2, Speed=1

Spineback Turtle(P2) executou um ataque corporal (Melee) em Silvershield Warrior(P1) e acertou.

A Armor de Silvershield Warrior(P1) absorveu 1 de dano.

A Armor de Silvershield Warrior(P1) foi de 2 para 1.

A Health de Silvershield Warrior(P1) permaneceu em 4.

Stats de Silvershield Warrior(P1): Melee=2, Armor=1, Health=4, Speed=1

Crustacean King(P2) curou 2 pontos de Health de Spineback Turtle(P2).

A Health de Spineback Turtle(P2) foi de 2 para 4.

Stats de Spineback Turtle(P2): Melee=1, Health=4, Speed=1

Turno 3:

Water Elemental(P2) executou um ataque à distância (Ranged) em Silvershield Warrior(P1) e acertou.

Silvershield Warrior(P1) recebeu 2 de dano.

A Armor de Silvershield Warrior(P1) foi de 1 para 0.

A Health de Silvershield Warrior(P1) permaneceu em 4.

Stats de Silvershield Warrior(P1): Melee=2, Health=4, Speed=1

Peacebringer(P1) executou um ataque à distância (Ranged) em Spineback Turtle(P2) e acertou.

Spineback Turtle(P2) recebeu 2 de dano.

A Health de Spineback Turtle(P2) foi de 4 para 2.

Stats de Spineback Turtle(P2): Melee=1, Health=2, Speed=1

Medusa(P2) executou um ataque mágico (Magic) em Silvershield Warrior(P1) e acertou.

Silvershield Warrior(P1) recebeu 2 de dano.

A Health de Silvershield Warrior(P1) foi de 4 para 2.

Stats de Silvershield Warrior(P1): Melee=2, Health=2, Speed=1

Crustacean King(P2) curou 2 pontos de Health de Spineback Turtle(P2).

A Health de Spineback Turtle(P2) foi de 2 para 4.

Stats de Spineback Turtle(P2): Melee=1, Health=4, Speed=1

Divine Healer(P1) curou 1 pontos de Health de Silvershield Warrior(P1).

A Health de Silvershield Warrior(P1) foi de 2 para 3.

Stats de Silvershield Warrior(P1): Melee=2, Health=3, Speed=1

Silvershield Warrior(P1) executou um ataque corporal (Melee) em Spineback Turtle(P2) e acertou.

Spineback Turtle(P2) recebeu 2 de dano.

A Health de Spineback Turtle(P2) foi de 4 para 2.

Stats de Spineback Turtle(P2): Melee=1, Health=2, Speed=1

Spineback Turtle(P2) executou um ataque corporal (Melee) em Silvershield Warrior(P1) e acertou.

Silvershield Warrior(P1) recebeu 1 de dano.

A Health de Silvershield Warrior(P1) foi de 3 para 2.

Stats de Silvershield Warrior(P1): Melee=2, Health=2, Speed=1

Turno 4:

Water Elemental(P2) executou um ataque à distância (Ranged) em Silvershield Warrior(P1) e acertou.

Silvershield Warrior(P1) recebeu 2 de dano.

A Health de Silvershield Warrior(P1) foi de 2 para 0.

Silvershield Warrior(P1) morreu.

Medusa(P2) executou um ataque mágico (Magic) em Peacebringer(P1) e acertou.

Peacebringer(P1) recebeu 2 de dano.

A Health de Peacebringer(P1) foi de 4 para 2.

Stats de Peacebringer(P1): Ranged=2, Armor=1, Health=2, Speed=3

Spineback Turtle(P2) executou um ataque corporal (Melee) em Peacebringer(P1) e acertou.

A Armor de Peacebringer(P1) absorveu 1 de dano.

A Armor de Peacebringer(P1) foi de 1 para 0.

A Health de Peacebringer(P1) permaneceu em 2.

Stats de Peacebringer(P1): Ranged=2, Health=2, Speed=3

Divine Healer(P1) curou 1 pontos de Health de Peacebringer(P1).

A Health de Peacebringer(P1) foi de 2 para 3.

Stats de Peacebringer(P1): Ranged=2, Health=3, Speed=3

Crustacean King(P2) curou 2 pontos de Health de Spineback Turtle(P2).

A Health de Spineback Turtle(P2) foi de 2 para 4.

Stats de Spineback Turtle(P2): Melee=1, Health=4, Speed=1

Turno 5:

Water Elemental(P2) executou um ataque à distância (Ranged) em Peacebringer(P1) e acertou.

Peacebringer(P1) recebeu 2 de dano.

A Health de Peacebringer(P1) foi de 3 para 1.

Stats de Peacebringer(P1): Ranged=2, Health=1, Speed=3

Medusa(P2) executou um ataque mágico (Magic) em Peacebringer(P1) e acertou.

Peacebringer(P1) recebeu 2 de dano.

A Health de Peacebringer(P1) foi de 1 para 0.

Peacebringer(P1) morreu.

Spineback Turtle(P2) executou um ataque corporal (Melee) em Divine Healer(P1) e acertou.

A Armor de Divine Healer(P1) absorveu 1 de dano.

A Armor de Divine Healer(P1) foi de 1 para 0.

A Health de Divine Healer(P1) permaneceu em 4.

Stats de Divine Healer(P1): Health=4, Speed=1

Crustacean King(P2) curou 2 pontos de Health de Spineback Turtle(P2).

A Health de Spineback Turtle(P2) foi de 4 para 6.

Stats de Spineback Turtle(P2): Melee=1, Health=6, Speed=1

Turno 6:

Water Elemental(P2) executou um ataque à distância (Ranged) em Divine Healer(P1) e acertou.

Divine Healer(P1) recebeu 2 de dano.

A Health de Divine Healer(P1) foi de 4 para 2.

Stats de Divine Healer(P1): Health=2, Speed=1

Medusa(P2) executou um ataque mágico (Magic) em Divine Healer(P1) e acertou.

Divine Healer(P1) recebeu 2 de dano.

A Health de Divine Healer(P1) foi de 2 para 0.

Divine Healer(P1) morreu.

Fim da batalha

Vencedor: zerodashonenine

A classificação de aiyumi permaneceu em 0.

A classificação de zerodashonenine permaneceu em 0.


Ufa, é isso. Voltando para comentar sobre o resultado! Que foi horrível. Além de não conseguir derrotar nem mesmo um monstro do adversário, a carta dele que estava na frente (Spineback Turtle) ainda se recuperou completamente no final (só pelos stats de "tanque", eu já achava que essa Tartaruga seria bem chatinha... parece que eu estava certa :P ). Mas ver as mecânicas do jogo em ação ajudou a responder algumas das perguntas que eu tinha:

  • O que acontece com atacantes à distância (ranged) na frente. Como o post sobre as mecânicas do jogo (em Inglês) explicou que os atacantes à distância só podem atacar quando não estão na primeira posição, fiquei imaginando se eles seriam incapazes de fazer qualquer coisa se colocados na primeira posição. Parece que é isso mesmo. Foi o que aconteceu com o meu Peacebringer depois que os outros que estavam na frente dele morreram. De fato, ele não atacou mais. Se os outros na frente dele morrerem e o atacante à distância for forçado para frente, ele se tornará totalmente inútil!
  • A habilidade que anteriormente era chamada de "Group Heal" é agora chamada de "Tank Heal" e só cura quem estiver na primeira posição.
  • Falando nisso, eu estava curiosa para saber se o Divine Healer faria alguma coisa além de usar sua habilidade Tank Heal... e não fez. Teoricamente, o Divine Healer é um usuário de mágica, mas sua Magic permanece em 0 até o level 4. Isso significa basicamente que dois dos monstros na minha equipe se tornaram inúteis! Um era o atacante à distância que ficou encurralado e incapaz de atacar, e o outro o usuário de mágica sem magia que também não podia atacar :P . Lições aprendidas!

Conclusão

Que longo caminho apenas para decifrar minha primeira batalha. Eu aprendi algumas coisas com tudo isso, no entanto, incluindo o fato de que, no meu caso, batalhar é difícil, mas não é impossível. Vou ter que agradecer ao jogo por executar as batalhas automaticamente pra mim, senão eu teria mais problemas ainda. Eu só gostaria que fosse um pouco mais fácil selecionar minhas cartas usando um leitor de telas, e que houvesse logs de batalha em texto. Tenho meu script para interpretar os logs JSON agora, mas ainda assim... por enquanto ele só faz o básico e pode ter várias coisas que ainda não leva em conta. Por exemplo, ainda não encontrei habilidades que causam dano adicional (como Thorns) para ver como aparece no JSON. Eu tenho um longo caminho a percorrer, tanto em termos de batalhas quanto do meu script, e irei implementando as coisas à medida que forem acontecendo. Este é apenas o começo, e veremos o que as próximas batalhas trarão.

Sort:  

Congratulations! This post has been upvoted from the communal account, @minnowsupport, by aiyumi from the Minnow Support Project. It's a witness project run by aggroed, ausbitbank, teamsteem, someguy123, neoxian, followbtcnews, and netuoso. The goal is to help Steemit grow by supporting Minnows. Please find us at the Peace, Abundance, and Liberty Network (PALnet) Discord Channel. It's a completely public and open space to all members of the Steemit community who voluntarily choose to be there.

If you would like to delegate to the Minnow Support Project you can do so by clicking on the following links: 50SP, 100SP, 250SP, 500SP, 1000SP, 5000SP.
Be sure to leave at least 50SP undelegated on your account.

Coin Marketplace

STEEM 0.20
TRX 0.15
JST 0.029
BTC 64440.63
ETH 2653.79
USDT 1.00
SBD 2.80