Nos últimos meses, estive ocupado programando um JRPG 2D (RPG de estilo japonês) em C ++ usando a biblioteca SDL. O modo de exploração está mais ou menos concluído. Agora estou enfrentando o modo de batalha.
Não consegui encontrar recursos sobre como está estruturado um sistema clássico de batalha JRPG baseado em turnos. Tudo o que encontro são discussões sobre a fórmula de danos. Tentei pesquisar no Google, pesquisar no quadro de mensagens de gamedev.net e pesquisar nas questões relacionadas ao C ++ aqui no Stack Exchange. Eu também tentei ler o código fonte dos RPGs de código aberto existentes, mas sem um guia de algum tipo é como tentar encontrar uma agulha no palheiro.
Não estou procurando um conjunto de regras como D&D ou algo semelhante. Estou falando puramente sobre design de estrutura de código e objeto. Um sistema de batalha pede que o jogador insira usando menus. Em seguida, o turno da batalha é executado conforme os heróis e os inimigos executam suas ações.
Alguém pode me apontar na direção certa? Desde já, obrigado.
Respostas:
Também nunca vi muitos recursos sobre esse assunto, mas o melhor que encontrei é provavelmente o:
Ele fornece informações sobre a IA do inimigo, como esta:
Com isso, você pode ver que seus inimigos provavelmente precisarão de uma máquina de estado para gerenciar os diferentes estados em que estão, e cada estado terá seu próprio comportamento para executar cada turno, codificado no inimigo ou orientado a dados por um script língua.
Existe muita variação mesmo entre JRPGs baseados em turnos, portanto, não há um conjunto de regras para todos eles. Por exemplo, você pode emitir todos os comandos de terceiros antes que algum deles ocorra ou eles podem ocorrer imediatamente após a escolha. A ordem de ataque pode ser aleatória ou, mais frequentemente, determinada pela estatística Speed.
Mas, por exemplo, digamos que você tenha um sistema de batalha puramente baseado em turnos, onde você emite todos os comandos do grupo primeiro e, em seguida, toda a ação acontece no final do turno. Você pode abordá-lo como:
As Perguntas frequentes sobre mecânica de batalha também contêm muitas informações úteis, principalmente sobre gerenciamento de tempo nas batalhas. Infelizmente, esse sistema (também conhecido como ATB ou Active Time Battle) é patenteado, portanto você não pode fazer nada parecido.
EDIT Também encontrei recentemente este site, que fornece muitas informações técnicas sobre a implementação do FF7. Infelizmente, as seções do módulo de batalha ainda não parecem completamente escritas.
fonte