Quais ferramentas, padrões ou práticas recomendadas você recomendaria para implementar as mecânicas de missões fornecidas abaixo dos requisitos listados?
Eu estou falando sobre arquitetura de software (quão genérico você deve ser) e opções para fiação de objetos, assinatura de eventos e representação de condições. A menção de ferramentas / bibliotecas que você usou com sucesso é bem-vinda. Editar: se você estiver usando scripts, que configuração você recomenda?
Requisitos:
- mmo 2D simples (rpg)
- todos os dados do jogo, incluindo missões, são armazenados em um banco de dados relacional
- qualquer evento no jogo pode desencadear uma nova missão para os jogadores ou o avanço das missões existentes
- uma missão pode ter um número arbitrário de condições que devem ser atendidas antes que a missão esteja disponível para os jogadores
- uma missão pode consistir em um número arbitrário de sub-missões / etapas com condições arbitrárias
missões variam de simples:
fale com A - mate 5 B - fale com A - aumente permanentemente a saúde
bastante envolvido:
use o item na área X - vá para a área Y - um bot irá aparecer - mate o bot sem sofrer mais de 10% de dano - item de drop de bot - pegue o item - desbloqueia o portal - entregue o item para J atrás do portal - receba ouro e experiência - permitir a passagem do portal mais uma vez - bloqueie o portal para este player
instâncias de nível são uma possibilidade (os jogadores podem concluir determinadas missões em equipes ou isolamento, o que gerará a localização do nível apenas para esses participantes)
- As missões devem, de preferência, ser gerenciáveis usando um editor mundial sem conhecimento de scripts ou programação ( Edit: não se opõe a scripts em geral)
- Eu assumo C ++ como a linguagem de implementação
Eu estava pensando que, se eu pudesse combinar qualquer cadeia de eventos e condições, poderíamos modelar missões mais complexas e, portanto, possivelmente mais envolventes. Eu experimentei rolar meu próprio mecanismo ECA (Events-Conditions-Actions), mas isso pode ser um exagero. Tem sido particularmente difícil modelar condições genéricas sem usar nenhum tipo de script.