Pracowałem nad niektórymi projektami hobbystycznymi przez ostatnie 3-4 lata. Po prostu proste gry 2D i 3D. Ale ostatnio zacząłem większy projekt. W ciągu ostatnich kilku miesięcy próbowałem zaprojektować klasę obiektów gry, która może być podstawą wszystkich moich obiektów gry. Po wielu testach typu try & die zwróciłem się do Google'a, który szybko wskazał mi kilka plików PDF i PowerPoint w GDC. A teraz staram się zrozumieć obiekty gier oparte na komponentach.
Rozumiem, że silnik tworzy obiekt gry, a następnie dołącza różne komponenty, które obsługują takie rzeczy jak zdrowie, fizyka, tworzenie sieci i wszystko, co do nich zmuszasz. Ale nie rozumiem, skąd składnik X wie, czy Y zmienił stan obiektu. Na przykład, skąd PhysicsComponent wie, czy gracz żyje, ponieważ zdrowie kontrolowane jest przez HealthComponent ...? I w jaki sposób HealthComponent odgrywa „animację śmierci gracza”?
Miałem wrażenie, że było to coś takiego (w HealthComponent):
if(Health < 0) {
AnimationComponent.PlayAnimation("played-died-animation")
}
Ale z drugiej strony, skąd HealthComponent wie, że obiekt gry, do którego jest dołączony, ma dołączony AnimationComponent? Jedyne rozwiązanie, które tu widzę, to
Sprawdź, czy AnimationComponent jest dołączony, czy nie (w kodzie komponentu lub po stronie silnika)
Składniki wymagają innych elementów, ale wydaje się, że walczą z całym projektem elementów.
Napisz jak HealthWithAnimationComponent, HealthNoAnimationComponent i tak dalej, co znów wydaje się walczyć z całym pomysłem na komponent.