A primeira experiência ou como tentar se tornar uma lenda de código e magia

Olá pessoal. Meu nome é Valentine.

Em 10 de julho, li o post de Oli Ollisteka no Habré sobre a plataforma codingame.com e decidi tentar minhas tarefas lógicas, bem como no concurso Legends of Code and Magic.

Em vista da grande quantidade de tempo livre, fiquei interessado em quebra-cabeças e tarefas presentes neste recurso. O que é bom é que toda tarefa, todo quebra-cabeça faz você procurar uma solução, embora às vezes não seja óbvio.

imagem

Abaixo, uma breve informação sobre as regras da competição, bem como algumas coisas óbvias ou não para iniciantes.

Lendas do código e magia


O concurso, que acontece de 25 de julho a 24 de agosto. O jogo é, de certa forma, semelhante ao Hearthstone, no entanto, algumas das coisas foram aprimoradas para o equilíbrio entre os jogadores.

O jogo ocorre entre dois jogadores, e este é um jogo baseado em turnos. Cada jogador tem seu próprio baralho de cartas, selecionado dentre as opções disponíveis durante a fase de Rascunho antes da fase de Batalha.

Fase de Rascunho


Durante a fase de Draft, cada jogador forma seu próprio baralho de 30 cartas. Assim, nos primeiros 30 movimentos, cada movimento oferece ao jogador uma escolha de 3 cartas, uma das quais ele pode escolher.

No momento da redação deste artigo, existem 4 tipos de mapas no jogo:

  1. Criaturas são essencialmente monstros. Eles são o principal recurso do jogador, o que lhe permite defender e atacar o inimigo.
  2. Itens verdes. Usado em criaturas aliadas. Aumente o valor do ataque / defesa. Adicione habilidades à criatura.
  3. Itens vermelhos. Usado em criaturas inimigas. Reduz o ataque / defesa. Tire as habilidades. Pode matar instantaneamente uma criatura inimiga (-99 de defesa)
  4. Itens azuis. Essas cartas são usadas apenas no oponente. Eles freqüentemente tiram vidas e o inimigo, às vezes reabastecem a saúde de seu dono.

Também no jogo existem 6 tipos de habilidades para criaturas:

  1. Avanço Se uma criatura com essa habilidade causar mais dano do que a saúde da criatura do oponente, o dano restante será direcionado ao oponente. (Habilidade útil, mas, como a prática demonstrou, poucas pessoas usam esses cartões para o propósito a que se destinam)
  2. Cobrar Permite atacar no mesmo turno que foi acionado.

    (Indispensável na estratégia de batalha rápida, no entanto, quase todas as cartas com a habilidade Carga têm um baixo valor de ataque / defesa e, se a batalha continuar, a probabilidade de perda aumenta)
  3. Drenar Ataque contra criaturas inimigas / inimigo restaura saúde comparável ao ataque. (Capacidade Uber. O número necessário de cartões permite aumentar a vida útil para 50-70 pontos (dos 30 primeiros), mas a maioria dos cartões com essa habilidade também possui baixos valores de ataque / defesa)
  4. Guarda A habilidade protege contra ataques diretos ao jogador. Primeiro você precisa destruir criaturas com essa habilidade. (Na minha opinião, a carta tem a habilidade mais útil. No entanto, vale a pena considerar o fato de que algumas cartas com essa habilidade têm zero de ataque).
  5. Letal. Destrói uma criatura que ataca. (Como regra, os cartões com um panfleto têm uma única defesa, o que significa que eles podem remover no máximo um cartão)
  6. Ward. Essencialmente - proteção contra o primeiro dano. Após o primeiro ataque, essencialmente a defesa desaparece e a carta se torna comum. (Essa habilidade contra-ataca, voa, descobre e drena. Mas a carta não protege o proprietário contra danos, então eu não vi muito da carta com a ala nas estratégias de outros jogadores).

Depois de escolher as cartas no seu baralho, a fase Draft termina. Começa a fase de batalha

Fase de batalha


Nesta fase, o objetivo principal é derrotar o oponente, reduzir a quantidade de sua saúde para 0.
Nesse caso, o jogador tem um parâmetro como Mana. Durante o 1º turno na fase de Batalha, o valor de mana é 1. Em seguida, a cada turno, o indicador aumenta em 1 até atingir o valor máximo de 12. Pontos de Mana são gastos em convocar criaturas e também em itens.

imagem

No início de cada jogada, o jogador tem informações sobre suas cartas nas mãos e na mesa, bem como cartas na mesa do oponente. Com base nesses dados, o bot (programa) deve criar uma linha de comando.

Cada movimento do baralho coletado recebe uma carta aleatória. Se a saúde cair para 25, 20, 15, 10 ou 5 pontos, mais cartas serão pagas no próximo turno.

imagem
No próximo movimento, o oponente compra 3 cartas do baralho.

Como regra geral, se os oponentes são aproximadamente iguais em força, o jogo termina cerca de 200 jogadas, no entanto, eu também tive um jogo com 240-250 jogadas. O limite inferior é de aproximadamente 80-85, desde que os jogadores não tenham cometido erros com o uso incorreto das equipes.

Possíveis estratégias úteis


A principal diferença entre este concurso e o Código de Kutulu anterior é que é um jogo de cartas e há um elemento de sorte e sorte nele.

Durante o concurso, várias estratégias foram testadas:

  1. Um conjunto de criaturas com uma carga, um vôo e um avanço para uma vitória rápida.
  2. Um conjunto de criaturas com Guarda para segurança máxima + cards com carga e dreno.
  3. Conjunto de criaturas com Guard + cartões verde e vermelho.
  4. Um conjunto de criaturas com ataque / defesa máxima, presença de indicadores + à saúde do jogador ou - à saúde do oponente e só então dependendo de suas habilidades.

Convencionalmente, as estratégias podem ser divididas em 2 categorias.

Vitória rápida - criaturas atacam apenas o inimigo e guardam criaturas, se houver.
Vitória completa - as criaturas do inimigo são destruídas e, se não houver criaturas, o próprio inimigo.

Agora brevemente sobre cada estratégia:

Conjunto de criaturas com carga, letal e avanço para vitória rápida


A estratégia mostrou seu fracasso devido a um elemento do acaso. Você pode comprar muitas cartas que custam 1-2 mana, mas não haverá nenhuma nas cartas iniciais. Essa estratégia deve ser usada apenas para uma vitória rápida e se o inimigo não chamar uma única criatura com Guarda. Durante o concurso, conheci essa estratégia com outros jogadores, mesmo de cima, mas como regra geral, se o jogo ultrapassasse 100-120 jogadas, eles perderiam rapidamente.

Conjunto de criaturas com Guarda para segurança máxima + cartões com carga e descarga


Uma das melhores estratégias para um jogo rápido. Defensores de cartões chamados. E se não houver, então Carregue e Drene. Essa estratégia permite destruir efetivamente as criaturas defensoras inimigas e, ao mesmo tempo, permanecer protegida. No caso de uma transição para um jogo longo, a estratégia não perde força, pois existem criaturas com Guarda e com altos indicadores de ataque / defesa.

Conjunto de criaturas com Guard + cartões verde e vermelho.


A estratégia é pior que a anterior, pois as cartas de itens são mais de caráter auxiliar do que de base. Portanto, foi decidido mudar a prioridade para as criaturas.

Um conjunto de criaturas com o máximo de ataque / defesa


Ao elaborar essa estratégia, ele foi guiado pelo trabalho de chefes de bots, além de vários jogadores. A estratégia é adequada apenas para um jogo prolongado, pois, como regra nos movimentos iniciais, não há mana suficiente para convocar.

Contras Bem como soluções alternativas


Ao compilar um bot para a última estratégia, verificou-se que, se a equipe de chamada visar um cartão que não pode ser chamado devido à falta de mana ou um ataque a um cartão que não pode ser atacado, esse comando é marcado como Ação não é legal. Por um lado, esse é um recurso maravilhoso do concurso, poucos participantes levaram em conta a saúde das criaturas durante um ataque ou o impacto dos itens de cartas, portanto, se todas as criaturas atacaram uma carta que já foi destruída, todas as equipes mudaram automaticamente para não legais.

No entanto, tornou-se possível formar apenas um grande número de equipes por vez.

imagem

Em teoria, você pode escrever equipes para atacar com uma carta para cada criatura inimiga e depois para o próprio inimigo. Escreva todas as combinações possíveis de SUMMON e ATTACK.

O que será feito será executado e o restante será enviado para Ação não é legal.

Resultados


No momento em que escrevo, meu bot está no 120º lugar da liga de bronze.

E no 950 lugar no topo geral. No entanto, no final do concurso, saí do top 1000.
Resultado modesto. Isso se deve em parte à primeira experiência de participação no concurso. As classificações dos jogadores são calculadas com base no algoritmo True Skill. De acordo com esse algoritmo, no início, 10 a 20 lutas são realizadas com os melhores desta liga, com base nos resultados, o ponto de partida na tabela é determinado e, em seguida, lutas com uma classificação de ± 10 são realizadas, cada vitória aumenta a classificação e cada derrota diminui. Então, mais de 100 lutas são realizadas e o lugar na tabela é determinado. E então, o bot continua lutando com jogadores que enviam seu programa para processamento. Assim, você pode aumentar sua classificação simplesmente por estar na tabela. Enviei repetidamente o algoritmo para processamento, na esperança de estar imediatamente no topo.

Resta aguardar e se preparar para o próximo concurso em codingame.com . Além disso, estou esperando o jogo entrar no modo multiplayer, o que melhorará meu código.

Source: https://habr.com/ru/post/pt422297/


All Articles