Estou desenvolvendo um jogo de cartas simples, onde haverá um sistema de matchmaking que o colocará contra outro jogador humano. Este será o único modo de jogo disponível, um 1vs1 contra outro humano, sem IA.
Eu quero evitar trapacear o máximo possível. Eu já li muitas perguntas semelhantes aqui e já sei que não posso confiar no cliente e preciso fazer todas as verificações no lado do servidor. Pretendo ter um servidor (preciso de um para a partida de qualquer maneira) e pretendo fazer algumas verificações no lado do servidor, mas se eu quiser verificar tudo do lado do servidor, isso fará com que meu servidor seja capaz de acompanhar o estado de todos os jogos atuais e verifique todas as ações e não tenho dinheiro / infraestrutura para suportar esse servidor.
Minha idéia é fazer com que os clientes verifiquem e verifiquem algumas das ações feitas pelo oponente * e, se encontrarem alguma ação ilegal, notifiquem a possível trapaça no servidor e façam com que o servidor a verifique. Isso ainda exigirá que meu servidor acompanhe todos os jogos atuais, mas poupará recursos apenas verificando algumas coisas que não podem ser verificadas no lado do cliente (como a ordem das cartas no baralho) e apenas outras coisas quando estiverem erradas.
* (apenas aqueles que eles podem fazer check-out sem se enganar! por exemplo: eles não podem verificar se a carta jogada estava na mão, porque será necessário que eles conheçam todas as cartas na mão)
Resumindo, minhas perguntas são : essa é uma abordagem viável? realmente salvarei recursos fazendo isso ou a complexidade extra no servidor e no cliente para trocar essas mensagens não vale a pena? você conhece algum jogo que tentou com ou sem êxito uma abordagem semelhante?
Obrigado a todos pela leitura e resposta