Estou tentando escrever uma espécie de jogo de cartas colecionáveis aqui, de alguma forma, é semelhante ao Magic The Gathering , ou ao Yu-Gi-Oh! jogo de cartas.
Para aqueles que não estão familiarizados com isso, basicamente, no jogo, existe um tipo especial de carta (cartas de feitiço / armadilha / etc.), que têm efeitos especiais que podem alterar as regras do jogo. O que eu totalmente não tenho idéia é como implementar a lógica desses cartões. Eu tenho uma idéia de armazenar os dados do cartão com alguns sinalizadores que podem sinalizar que tipo de habilidade ele possui, mas isso seria muito limitado no que ele pode fazer (apenas algumas modificações simples nas estatísticas, talvez).
Para ter uma idéia de que tipo de efeito essas cartas podem ter, aqui está um exemplo dos efeitos da carta de feitiço que estão presentes no Yu-Gi-Oh! jogo de cartas:
- Reviva uma criatura que foi destruída
- Assuma o controle da criatura do oponente
- Modifique as estatísticas da criatura com base em algumas condições (por exemplo, número de criaturas com certos nomes que foram destruídos)
- Convoque especial certas criaturas se algumas condições forem cumpridas.
- Funda duas ou mais criaturas em uma criatura mais forte.
- Imunidade a alguns dos efeitos das cartas especiais.
A Konami criou vários videogames, completos com a variedade de IA e milhares de cartas. Eu não acho que é realmente possível codificar todo o banco de dados, é?
Agora, é claro que o que estou tentando fazer não é tão complexo quanto esses jogos, mas estou curioso, como eles os implementam?
É uma tarefa bastante fútil tentar incorporar tudo isso apenas com opções e variáveis. Você precisaria ter funções de código rígido ou, mais provavelmente, um script que você interpreta durante o tempo de execução. Você exporia as funções necessárias para verificar o status do quadro e dos decks e cemitérios ao script e às funções para executar ações e assim por diante. O script é então apenas uma string simples para armazenar junto com as outras variáveis associadas ao cartão.
fonte
Também estou planejando jogos de cartas usando linguagens da web com o mysql db. Atualmente, estou optando por uma configuração muito genérica, para que ela seja muito flexível para novos cartões exclusivos. Por exemplo, em vez de:
poderia ser facilmente:
A aplicação desse conceito a todas as ações simplificará as classes, permitindo a criação de novos cartões simplesmente adicionando uma única linha à sua tabela de cartões.
Todas as opções e habilidades serão definidas no banco de dados nessa única linha.
fonte