Como fizemos um jogo de tabuleiro com controle remoto

Os jogos de tabuleiro são um dos entretenimentos mais antigos que reúne amigos, famílias e apenas amantes da comunicação ao vivo e emoções ao redor do jogo.

Hoje quero falar sobre como meu amigo e eu decidimos criar nosso próprio jogo de tabuleiro, mas não simples, mas “inteligente” .

imagem

A segunda parte pode ser encontrada aqui: link

Atenção! Muitas fotos.

Nosso jogo é um MoBA de tabuleiro no qual cada jogador controla seu próprio herói único, com suas próprias características e habilidades. No momento, temos a primeira versão do protótipo feito de Arduino e madeira compensada.

A principal característica do nosso jogo é que não há necessidade de tocar nas figuras durante o jogo, o jogo em si deve movê-las e exibir todas as habilidades aplicadas. O jogador só pode assistir e controlar seu herói a partir de um telefone celular.

Vários gifs de jogabilidade
gif

gif

gif

gif

O que um jogo inteligente deve ser capaz de fazer:


  • Mova as figuras no campo você mesmo.
  • Destaque o campo de jogo (no todo ou em um bloco separado) com qualquer cor.
  • Mostre ao jogador o que ele pode / não pode / deve fazer, tornando assim transparentes as regras do jogo.
  • Troque dados com o smartphone de cada jogador.

Veja como é a nossa primeira compilação viável:

imagem

Como surgiu a ideia


De alguma forma, comprei o desktop Arkham Horror. Depois da loja, fui imediatamente aos meus amigos para brincar. No entanto, infelizmente, nenhum de nós já havia jogado antes e não conseguimos dominar 26 páginas das regras.

Foi isso que me fez pensar que seria ótimo fazer um jogo de tabuleiro que monitore independentemente a implementação das regras, calcule os valores necessários (sem cubos, réguas e uma folha de papel), etc.

Um dos meus amigos gostou muito da ideia e ele concordou em participar.

Implementação


Não tínhamos experiência no desenvolvimento de dispositivos de hardware (nenhum de nós segurava o Arduino em nossas mãos), e a experiência de programação era limitada à universidade e ao desenvolvimento de pequenos aplicativos para Android. No entanto, isso apenas adicionou interesse e desejo.

Depois de discutir todos os detalhes, chegamos ao seguinte:

  • O CoreXY move as figuras pelo campo, com um solenóide de 12V localizado em seu carro.
  • Dois motores de passo Nema 17 17HS4401 e drivers DRV8825 são responsáveis ​​pelo movimento.
  • Uma faixa de LEDs com endereçamento de pixel WS2812b é usada para destacar o campo.
  • O Arduino Mega 2560, no qual o escudo desenvolvido por nós, está instalado, é responsável pelo gerenciamento.
  • Pela transferência de dados entre o jogo e os smartphones dos jogadores, 4 módulos HM10 BLE são responsáveis.
  • Tudo isso é alimentado por uma fonte de alimentação de 12V, uma potência de 120W e um conversor DC-DC de 5V.
  • No lado do smartphone, há um aplicativo móvel (atualmente no Android), que de fato é o núcleo de todo o jogo. A partir dele, no BLE, existem comandos de movimento, ímã liga / desliga e LEDs.

A mecânica


Não viemos para o CoreXY imediatamente. No início, ao implementar a cinemática, fomos inspirados por vários guias de bricolage para montagem de impressoras 3D.

Abaixo está uma foto de nossa primeira tentativa:

imagem

Para criar os componentes, compramos uma impressora 3D usada e barata, na qual 6200 metros de plástico já foram impressos e ela está funcionando perfeitamente até hoje.

No entanto, esta opção tinha várias desvantagens:

  • A assembléia foi dolorosa - a menor imprecisão na localização dos eixos - a carruagem parou de andar.
  • Pelo menos um rolamento ruim - a carruagem parou de andar.
  • Altura muito alta de toda a estrutura.
  • Não gostamos da ideia de que o motor deve estar localizado em uma parte móvel.

Em um ponto, deparamos com um artigo descrevendo a cinemática CoreXY e decidimos escolhê-lo. Ela tem as duas vantagens:

  • A montagem é simples porque todas as peças “personalizadas” são criadas na impressora CNC ou 3D.
  • Altura baixa de construção, limitada pela altura do motor de passo.
  • Motores de passo estão imóveis.

Então os contras:

  • Tamanhos grandes. A imagem com o modelo 3D mostra que a área total é muito maior que a área da superfície de trabalho.
  • Alças longas que você precisa usar.
  • Uma maneira específica de mover o carro, que discutirei abaixo.

Para evitar todos os problemas ao máximo, fabricamos nosso modelo na Tinkercad, após o qual começamos a solicitar e imprimir componentes.

imagem

O jogo atualmente possui os seguintes parâmetros físicos:
Largura: 780 mm Comprimento: 700 mm Altura: 85 mm
O campo de jogo: um quadrado com um lado de 462 mm.
Base: contraplacado de 12 mm de espessura, com furos no CNC para montagem de peças e motores.

imagem

Quando o modelo estava pronto, parecia miniatura e leve ... No entanto, ao vivo, é muito grande e pesado. Agora entendemos que toda a estrutura precisa ser otimizada:

  • Substitua o compensado por material mais leve e mais fino.
  • O comprimento e a largura do contorno externo não devem exceder muito o tamanho do campo de jogo (pode ser necessário alterar a cinemática).

Abaixo, descreverei os recursos que encontramos durante a montagem:

  • Para garantir que o movimento do contorno interno e do carro seja suave e sem sons estranhos, é importante que as correias fiquem paralelas aos eixos. Também é aconselhável lubrificar os eixos. Usamos óleo comum para máquinas de costura.
  • No início, usamos o LM8UU do tio Liao como mancais lineares, mas geralmente encontramos amostras defeituosas que foram afrouxadas, desmoronaram instantaneamente e arranharam o eixo. Portanto, eles decidiram trocá-los por buchas de grafite.
  • Existem alguns recursos em movimento usando a cinemática CoreXY. Portanto, se iniciarmos apenas um motor de passo, o carro trafegará na diagonal. Para o movimento horizontal, é necessário dar partida nos motores na mesma direção. Para vertical - em direções opostas.

Para calcular a distância ao longo de X e Y, você deve usar as seguintes fórmulas:

imagem

Campo de jogo


Para destacar o campo de jogo, escolhemos a faixa de LEDs com endereço de pixel WS2812b, que é perfeita para nossos propósitos.

O WS2812b é um LED RGB em um pacote SMD5050 com 4 pinos: VDD, VSS, DIN e DOUT.

Quais são os requisitos para o campo:

  • Espessura pequena para que o eletroímã possa arrastar a figura junto com ela.
  • Uma superfície lisa na qual o deslizamento será realizado sem problemas.

Como resultado, o campo de jogo consiste condicionalmente em 3 partes: o substrato ao qual a faixa de LED está conectada, a própria fita e o revestimento de superfície em que as figuras deslizam.

O principal problema que enfrentamos é o que fazer o substrato?
No momento, estamos usando o plexiglás, no qual os recessos sob a fita foram cortados em um CNC a uma profundidade de 2 mm (a altura da fita e do LED). Naturalmente, esta folha perdeu completamente pelo menos alguma rigidez e se dobra bastante ao longo das linhas de corte. Então, apenas colamos o substrato na superfície. Talvez na próxima versão substituamos o plexiglass pelo policarbonato monolítico.

imagem

Como superfície, tudo também foi selecionado como Plexiglas, que estava sobre mim após o reparo em uma varanda de 4 mm de espessura, de cor leitosa, com boas taxas de dispersão.

Como resultado, depois de ficar sentado à noite com um ferro de soldar, obtivemos o seguinte:

imagem

Existem fitas com diferentes densidades de LEDs. Geralmente é: 144, 90, 60, 30 por metro. Paramos em uma fita com 30 LEDs por metro, porque Usando uma fita com maior densidade de LEDs - é difícil mover os números sem colisões e a energia necessária para aumentar os alimentos.

Vale a pena prestar atenção que os LEDs estão conectados em série. Portanto, se o seu primeiro LED queimar, o resto não funcionará.

Nosso campo tem um tamanho de 14 * 14 células, um total de 196 pixels. A fita opera a uma voltagem de 5V. Um pixel da fita consiste em 3 LEDs - R, G, B, cada um dos quais consome 20 mA com brilho máximo. É fácil calcular que, se queremos iluminar todos os 196 pixels em branco, precisamos de quase 12 A ...

Encontrar um PSU compacto ou um conversor DC-DC que possa produzir essa corrente em 5V é muito problemático. Portanto, decidimos que em nosso jogo o campo não deve ser preenchido em mais de 60% e não use a cor branco / cinza (a cor na qual todos os 3 LEDs acendem), ou seja, máximo de 40 mA por pixel. Como resultado, concluímos que a tabela não deve consumir mais de 5 A.

Muitas vezes vi uma recomendação de que é necessário alimentar a fita de dois lados para que não haja perda de tensão. Mas, por um lado, conectamos a fita a cada 100 LEDs e não observamos reduções de tensão visíveis.

Eletrônicos


O gerenciamento de todas as partes do jogo ocorre usando o Arduino Mega 2560. As seguintes funções são atribuídas a ele:

  • Realize uma calibração, como resultado, descobrimos quantas etapas um motor de passo deve executar para superar uma célula.
  • Receba comandos e dados do aplicativo móvel e envie o status de execução de volta ao BLE.
  • Mova o carro do ponto A para o ponto B de acordo com as coordenadas dos dados recebidos do aplicativo móvel.
  • Ligue / desligue o eletroímã.
  • Acenda um pixel específico em uma tabela com uma cor específica. O número de pixels e a cor são transmitidos pelo aplicativo móvel.

O primeiro protótipo foi montado em uma placa de ensaio e incluiu os seguintes componentes:

  • Arduino Mega 2560;
  • Motor de passo de 2 drivers DRV8825;
  • 4 interruptores de limite;
  • Módulo BLE HM-10;
  • Transistor IRF530N - para controlar um eletroímã;
  • PSU MeanWell 12V 10A;
  • Conversor MeanWell DC-DC de 12V para 5V, 10A;

imagem

Depois de garantir que tudo funcionasse, decidimos que precisávamos fazer nosso escudo para o Arduino Mega e finalmente nos livrar da fiação e de vários fios.

Devido à falta de experiência no desenvolvimento de software, decidimos confiar esse negócio a um profissional. Como resultado, um de nossos amigos desenvolveu completamente a placa e instalou todos os componentes. O resultado pode ser visto abaixo:

imagem

Não posso julgar a qualidade da execução devido à falta de experiência, mas o conselho funciona perfeitamente. Você pode ver o diagrama de circuito aqui .

Aplicativo para celular


A aplicação móvel é o cérebro do nosso jogo. É o aplicativo que contém todas as informações sobre o estado do jogo, personagens, etc. O Anroid foi escolhido como plataforma de desenvolvimento, o principal requisito é o suporte ao BLE (já que no futuro está planejado adicionar uma versão do jogo para iOS).

Ao contrário da eletrônica, tínhamos pouca experiência no desenvolvimento de aplicativos móveis, por isso planejamos concluir esse estágio com rapidez suficiente. No entanto, como sempre, tudo não deu certo como planejado.

imagem

Percebemos rapidamente que, de fato, teríamos que escrever um jogo para dispositivos móveis em que os meios de exibição de informações não fossem apenas a tela de um telefone celular, mas também a superfície de um jogo de tabuleiro.

A principal funcionalidade do aplicativo atual:

  • Procure dispositivos BLE, identificação de um dispositivo adequado para conexão. A identificação inclui um "aperto de mão" - o telefone deve garantir que o dispositivo conectado seja realmente um módulo bluetooth de um jogo de tabuleiro, e não uma TV.
  • A escolha de jogadores (pelo menos 2) dentre os heróis disponíveis, dos quais existem atualmente 4.
  • Fornecer todas as informações necessárias ao jogador atual: sobre as habilidades disponíveis, sobre as recargas , sobre os oponentes, etc.
  • Fazendo movimentos - cada jogador controla seus movimentos com a ajuda de um "joystick", com o qual ele seleciona células para aplicar habilidades, movimento etc.

Não temos um senso de beleza, assim como os conhecidos designers de UX / UI, por isso fizemos o design por conta própria. No futuro, planejamos adicionar um ENT, uma descrição e um modo PVE no qual os jogadores batalharão contra chefes na arena.

Resultado


No momento, temos um protótipo totalmente funcional que você pode jogar (embora em 1 smartphone) e no qual aprimoramos as regras e a mecânica do jogo. Passamos cerca de um ano criando, trabalhando nos fins de semana e nas noites raras, quando havia tempo livre.

Temos um plano ambicioso: encontrar pessoas com a mesma opinião, finalizar o protótipo, "lamber" completamente o equilíbrio e as regras do jogo e tentar continuar no Kickstarter , como será apenas uma experiência fantástica.

Se for interessante, no próximo artigo, falarei mais sobre o aplicativo para dispositivos móveis, o jogo em si, como fizemos nossas miniaturas e o que aconteceu.

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


All Articles