¿Qué herramientas, patrones o mejores prácticas recomendaría para implementar la mecánica de misiones que se detallan a continuación?
Estoy hablando de la arquitectura de software (qué tan genérico debería ser) y las opciones de cableado de objetos, suscripción de eventos y representación de condiciones. La mención de herramientas / bibliotecas que ha utilizado con éxito es bienvenida. Editar: si está utilizando secuencias de comandos, ¿qué configuración recomienda?
Requisitos:
- mmo 2D simple (rpg)
- Todos los datos del juego, incluidas las misiones, se almacenan en una base de datos relacional
- cualquier evento en el juego podría desencadenar una nueva búsqueda para jugadores o el avance de misiones existentes
- una misión puede tener un número arbitrario de condiciones que deben cumplirse antes de que la misión esté disponible para los jugadores
- una búsqueda puede consistir en un número arbitrario de sub-misiones / pasos con condiciones arbitrarias
las misiones van desde simples:
hablar con A - matar a 5 B - hablar con A - aumentar permanentemente la salud
bastante involucrado:
usa el objeto en el área X - ve al área Y - un bot generará - mata al bot sin recibir más del 10% de daño - el bot suelta el objeto - recoge el objeto - el portal se desbloquea - entrega el objeto a J detrás del portal - recibe oro y experiencia - permitir pasar el portal una vez más - bloquear el portal para este jugador
las instancias de nivel son una posibilidad (los jugadores pueden completar ciertas misiones en equipos o aislamiento que generará la ubicación de nivel solo para esos participantes)
- Las misiones deben ser manejables preferiblemente usando un editor mundial sin necesidad de programación o conocimiento de programación ( Edición: sin embargo, no se recomienda contra las secuencias de comandos en general)
- Asumo C ++ como el lenguaje de implementación
Estaba pensando que si pudiera combinar cualquier cadena de eventos y condiciones podríamos modelar misiones más complejas y, por lo tanto, posiblemente más atractivas. Experimenté con rodar mi propio motor ECA (Eventos-Condiciones-Acciones) pero eso podría ser excesivo. Ha sido particularmente difícil modelar condiciones genéricas sin usar ningún tipo de secuencia de comandos.