Un modo tradizionale per raggiungere questo obiettivo nello sviluppo del gioco consiste nell'utilizzare un'architettura basata sui dati per i sistemi di gioco.
In sostanza, ciò significa che il codice non implementa un particolare tipo di arma (una pistola) con valori esplicitamente definiti per il suo raggio / danno / penetrazione piuttosto che popola i concetti generici di un'arma a distanza (raggio / danno / penetrazione ...) da un'origine dati esterna (al codice). Questa fonte esterna può variare da file analizzabili (forse XML) letti dal disco, a file binari o elementi di database generati tramite strumenti interni o esterni al motore di gioco stesso.
Definendo qualcosa di simile a un nemico, il sistema di intelligenza artificiale potrebbe essere progettato per supportare un numero di comportamenti generici (aggressivo, difensivo, supporto, codardo) che vengono quindi modificati da elementi basati sui dati.
My New Enemy, inizia con l'aggressivo comportamento di base dell'IA con valori basati sui dati per: -ignore giocatori> il mio livello + X -segui i giocatori fino a X unità oltre il punto di spawn-fuggono quando la salute <X priorità delle abilità disposte a raggi-priorità delle abilità dei mieli (per quando i giocatori si avvicinano troppo)
Uno schema più complicato basato sui dati potrebbe consentire la definizione di punti dati specifici (eventi) in cui uno stato AI passa (macchina a stati finiti) a un altro stato (o addirittura la possibilità di passare a uno di N altri stati) consentendo agli utenti di definire un gerarchia complicata di comportamenti.
Tutto ciò ovviamente richiede più lavoro rispetto alla semplice codifica esplicita di un comportamento, ma è una sfida divertente per consentire agli utenti di produrre contenuti senza modificare la fonte.
Ci sono punti bonus da raggiungere:
- se è possibile aggiornare dinamicamente i dati e avere le modifiche riflesse nel motore di gioco senza riavviare l'applicazione
- se si creano interfacce utente intuitive sui dati che consentono agli utenti di utilizzare un'interfaccia per interagire con i dati anziché modificare direttamente i file di testo (xml o altro)
Per un gioco tutorial rivolto a un pubblico più tecnico, la maggior parte del lavoro è invece in classi / oggetti progettati che espongono interfacce pulite per gli utenti che possono essere estese e che a loro volta possono anche essere guidate dai dati.