Tradycyjnym sposobem osiągnięcia tego celu w rozwoju gier jest zastosowanie architektury opartej na danych w systemach gier.
Zasadniczo oznacza to, że kod nie implementuje określonego rodzaju broni (pistoletu) z wyraźnie określonymi wartościami dla zasięgu / obrażeń / penetracji, a raczej wypełnia ogólne pojęcia broni dystansowej (zasięg / obrażenia / penetracja ...) z zewnętrznego źródła danych (do kodu). To zewnętrzne źródło może się różnić od parsowalnych (być może XML) plików wczytywanych z dysku, do plików binarnych lub elementów bazy danych generowanych za pomocą narzędzi wewnętrznych lub zewnętrznych dla samego silnika gry.
Definiując coś w rodzaju wroga, system sztucznej inteligencji może być zaprojektowany do obsługi pewnej liczby ogólnych zachowań (agresywnych, defensywnych, wsparcia, tchórzów), które są następnie modyfikowane przez elementy oparte na danych.
Mój nowy wróg zaczyna się od agresywnego podstawowego zachowania AI z wartościami opartymi na danych dla: -ignore graczy> mój poziom + X -przekaż graczy do X jednostek poza punktem odrodzenia -flee, gdy zdrowie <X-ustalone priorytety zdolności - priorytety umiejętności walki (gdy gracze zbliżają się zbyt blisko)
Bardziej skomplikowany schemat sterowany danymi może pozwolić na zdefiniowanie określonych punktów danych (zdarzeń), w których stan AI przechodzi (maszyna stanów skończonych) do innego stanu (lub nawet szansę przejścia do jednego z N innych stanów), umożliwiając użytkownikom zdefiniowanie skomplikowana hierarchia zachowań.
Wszystko to oczywiście wymaga więcej pracy niż tylko jawnego kodowania zachowania, ale jest to zabawne wyzwanie, aby umożliwić użytkownikom tworzenie treści bez modyfikacji źródła.
Do zdobycia są punkty bonusowe:
- jeśli możesz dynamicznie aktualizować dane i wyświetlać zmiany w silniku gry bez ponownego uruchamiania aplikacji
- jeśli tworzysz przyjazne dla użytkownika interfejsy danych, pozwalając użytkownikom korzystać z interfejsu do interakcji z danymi zamiast bezpośrednio edytować pliki tekstowe (xml lub cokolwiek)
W przypadku gry instruktażowej skierowanej do bardziej technicznego tłumu większość pracy polega na zaprojektowaniu klas / obiektów, które udostępniają użytkownikom czyste interfejsy, które z kolei mogą być oparte na danych.