Традиційний спосіб досягнення цієї мети в розробці ігор - використання архітектури, керованої даними для ігрових систем.
По суті, це означає, що код не реалізує певний тип зброї (пістолет) із чітко визначеними значеннями для його дальності / пошкодження / проникнення, а він заповнює загальні поняття зброї, що має дальність (дальність / пошкодження / проникнення ...) від зовнішнього (до коду) джерела даних. Це зовнішнє джерело може змінюватися від файлів, здатних до розбору (можливо, XML), зчитуваних з диска, до двійкових файлів або елементів бази даних, створених за допомогою внутрішніх або зовнішніх інструментів самого ігрового двигуна.
Визначаючи щось на кшталт ворога, система AI може бути розроблена для підтримки деякої кількості родових поведінок (агресивних, захисних, підтримки, боягуз), які потім налаштовуються елементами, керованими даними.
My New Enemy, починається з агресивної базової поведінки AI з орієнтованими на дані значеннями для: -гробових гравців> мій рівень + X -переслідують гравців до X одиниць за межею нересту - удару, коли здоров'я <X - впорядковані пріоритети здібностей (бо коли гравці занадто близько)
Більш складна схема, керована даними, може дозволити визначення конкретних точок даних (подій), де стан AI переходить (машина кінцевого стану) в інший стан (або навіть шанс переходу в один з N інших станів), що дозволяє вашим користувачам визначати складна ієрархія поведінки.
Все це, звичайно, більше роботи, ніж просто кодування явно поведінки, але це цікаве завдання, щоб дати можливість користувачам створювати вміст без зміни джерела.
Досягаються бонусні бали:
- якщо ви можете динамічно оновлювати дані та відображати зміни в ігровому двигуні без перезавантаження програми
- якщо ви створюєте зручні користувальницькі інтерфейси над даними, що дозволяють користувачам використовувати інтерфейс для взаємодії з даними, а не безпосередньо редагувати текстові (XML або будь-які інші) файли
Для гри з підручниками, орієнтованої на більш технічну натовп, більша частина роботи припадає на розроблені класи / об'єкти, які розкривають чисті інтерфейси для розширення користувачів, які, в свою чергу, також можуть керуватися даними.