Co to jest projektowanie oparte na danych? [Zamknięte]

11

Czytałem wiele artykułów dotyczących projektowania gier opartych na danych. Wydaje się sprowadzać do:

  • Bez twardego kodowania
  • W silniku nie ma kodu specyficznego dla gry
  • Skrypty dla AI, przerywniki filmowe i tak dalej.
  • Generalizujący kod do ponownego użycia
  • Projektowanie elementów
  • Modułowość
  • Niskie sprzęgło
  • Redaktorzy (dla danych, map, skryptów)
  • Pobieranie danych zewnętrznych
  • Stałe przechowywane w plikach tekstowych ( .inilub w inny sposób)
  • Udostępniaj dane za pośrednictwem edytorów do tworzenia skryptów i manipulacji przez projektantów

Moje pytanie brzmi: czy to zrozumienie jest prawidłowe?

OmniOwl
źródło
3
Witamy na stronie. Masz tutaj dwa pytania (na ogół powinieneś zadać tylko jedno pytanie na post), a drugie pytanie dotyczące „jak zacząć” jest uważane za nie na temat, więc zredagowałem je, a także zmniejszyłem. Jeśli chcesz porozmawiać o tym, jak zacząć od czegoś, rozważ odwiedzenie czatu poświęconego tworzeniu gier .
@JoshPetrie Ale to było najważniejsze, ponieważ byłem na wielu stronach i nie otrzymałem żadnej odpowiedzi. Nawet poke w kierunku. Musi być NIEKTÓRYCH ludzi, którzy mają trochę wglądu w te tematy.
OmniOwl
1
Być może jest to dla ciebie najważniejsze, ale nie jest to temat (zobacz często zadawane pytania ). Mógłbym właśnie zamknąć pytanie. Odwiedź Czat rozwoju gry lub prawdziwe forum dyskusyjne, takie jak GDNet, jeśli chcesz zadać pytania, jak zacząć.
1
@Vipar Wejdź na czat, jeśli potrzebujesz pomocy z pytaniem nie na temat. Nie gwarantując, że dostaniesz pomoc, ale przebywa tam wielu inteligentnych ludzi.
ClassicThunder

Odpowiedzi:

10

Powiedziałbym, że to nie jest poprawne. Uważam, że najważniejszym pomysłem w projektowaniu opartym na danych jest oddzielenie danych od tego, co je modyfikuje (lub aktualizuje) .

Przechodząc od standardowej głębokiej hierarchii OO, takiej jak ta:

class MyCreature{
     vector position;
     void update(){ position += 1; }
}

do osobnego stanu i systemu

class CreatureState{
    vector postion;
}

class MovementSystem{
    list<CreatureState> states;
    void update() {
        for each CreatureState state in states {
            state.position += 1;
        }
}

Jednym z najbardziej wpływowych paradygmatów DDD w tym momencie są Entity Systems. Niektóre ładne zasoby do wyszukiwania to:

http://gamedevrubberduck.wordpress.com/2012/12/26/a-hybrid-entity-system-component-architecture/

http://entity-systems.wikidot.com/

Oczywiście, podobnie jak w przypadku wszystkich paradygmatów / pomysłów, nie ma dokładnej definicji i nie wszyscy rozumieją ten sam pomysł, mówiąc o DDD, ale to jest to, co uważam za najważniejsze.

Roy T.
źródło
Tak, zapomniałem wspomnieć o części oddzielającej. I to jest dokładnie to, co chciałbym zobaczyć. Mogę tylko przeczytać tyle teorii. Muszę zobaczyć konkretne przykłady. Dziękuję Ci. Zobaczymy także artykuły!
OmniOwl
Och, czekaj, w końcu znalazłem najlepsze wytłumaczenie, które czytałem jakiś czas temu. Okazało się, że była to odpowiedź na pytanie, które zadałem tutaj gamedev.stackexchange.com/questions/48971/… : D
Roy T.
4

Myślę, że nadmiernie komplikujesz definicję. Z pewnością wiele zasad zawartych w wypunktowanej liście punktów jest dobrych z punktu widzenia inżynierii oprogramowania, ale niekoniecznie są one częścią definicji „opartej na danych”. Wiele z nich nakłada się na siebie lub najlepiej jest je wdrażać przy użyciu podejścia opartego na danych, ale nie stanowią one czegoś, co napędza dane.

Rzeczywista definicja rozwoju oprogramowania opartego na danych jest ogólnie dość prosta: program wykonuje działania oparte głównie na niektórych informacjach zewnętrznych (kawałek danych poziomu, dane skryptu itp.) Zamiast szeregu predefiniowanych i ustalonych kroków w kodzie same określające przepływ sterowania.


źródło
Najprawdopodobniej masz rację, że nadmiernie komplikuję sprawy. To coś, co zwykle robię. Ale nie mogę się skupić na tym, jak zacząć to kodować.
OmniOwl
1
W GDNet opublikowałem odpowiedź na Twoje pytanie . Sednem tego problemu jest: przestań tak bardzo się starać, wybierz jeden prosty aspekt tego, czego ostatecznie chcesz, i zbuduj z nim małą grę.
Widziałem i też odpowiedziałem. Dziękujemy za poświęcenie czasu na rozmowę na ten temat.
OmniOwl