Una forma tradicional de lograr este objetivo en el desarrollo de juegos es utilizar una arquitectura basada en datos para los sistemas de juego.
En esencia, esto significa que el código no implementa un tipo particular de arma (una pistola) con valores explícitamente definidos para su alcance / daño / penetración, sino que puebla los conceptos genéricos de un arma a distancia (rango / daño / penetración ...) de una fuente de datos externa (al código). Esta fuente externa puede variar desde archivos analizables (quizás XML) leídos desde el disco, hasta archivos binarios o elementos de base de datos generados a través de herramientas internas o externas al motor del juego.
Al definir algo como un enemigo, el sistema de inteligencia artificial podría diseñarse para admitir cierto número de comportamientos genéricos (agresivo, defensivo, de apoyo, cobarde) que luego son modificados por elementos basados en datos.
My New Enemy, comienza con el comportamiento agresivo de IA base con valores basados en datos para: - ignorar jugadores> mi nivel + X - perseguir jugadores hasta X unidades más allá del punto de generación - huir cuando la salud <X - prioridades de habilidades clasificadas - prioridades de habilidades cuerpo a cuerpo (para cuando los jugadores se acercan demasiado)
Un esquema impulsado por datos más complicado podría permitir la definición de puntos de datos específicos (eventos) en los que una transición de estado AI (máquina de estado finito) a otro estado (o incluso la posibilidad de hacer la transición a uno de los otros N estados) permitiendo a sus usuarios definir un jerarquía complicada de comportamientos.
Por supuesto, todo esto es más trabajo que solo codificar un comportamiento explícitamente, pero es un desafío divertido permitir a los usuarios producir contenido sin modificar la fuente.
Hay puntos de bonificación para lograr:
- si puede actualizar dinámicamente los datos y hacer que los cambios se reflejen en el motor del juego sin reiniciar la aplicación
- si crea interfaces de usuario fáciles de usar sobre los datos, lo que permite a los usuarios utilizar una interfaz para interactuar con los datos en lugar de editar directamente archivos de texto (xml o lo que sea)
Para un juego tutorial dirigido a una multitud más técnica, la mayor parte del trabajo se realiza en clases / objetos diseñados que exponen interfaces limpias para que los usuarios las extiendan, lo que a su vez también puede estar basado en datos.