Jaka filozofia kodu / struktura abstrakcji / konstrukcja programu pozwoliłaby na użycie gry z grafiką 2D i 3D (osobno) BEZ konieczności ponownego kodowania logiki gry?
Mówimy o przyjęciu tego samego kodu, zmianie minimum rzeczy (na przykład zamianie nazw plików na zasoby 2D na nazwy plików na zasoby 3D), a może podłączenie kilku specjalizacji klasy podstawowej dla poszczególnych rodzajów / szablonów.
Aby umieścić go w prawdziwym kontekście, w którym ma to sens: wyobraź sobie grę dla wielu graczy w sieci LAN, w której jest jeden najwyższej klasy, wymagający wydajności klient 3D dla graczy z naprawdę dobrymi platformami dla graczy i bardziej skromny klient 2D dla starych zakurzone pudła, które ktoś znalazł na strychu. Ale to wciąż ta sama gra - rejestrowane są te same zdarzenia (ktoś podniósł monetę), używany jest ten sam protokół sieciowy, światy są proporcjonalne itp.
Aby umieścić to w kontekście MVC: Kontrolery są dokładnie takie same (naciśnięcie klawisza „W górę” ustawi przyspieszenie graczy na 3,5 jednostki / sekundę), Widoki są zupełnie inne (2D kontra 3D), a model jest taki sam z wyjątkiem czegokolwiek bezpośrednio związanego z grafiką (kontrola kolizji środowiska przeprowadzana jest co 5 sekund i wykorzystuje ten sam algorytm. Pamiętaj, że oznaczałoby to współrzędną Z dla wszystkich obiektów gry w wersji 2D, ale jest to po prostu zignorowany lub wyświetlony użytkownikowi w inny sposób, na przykład przez cień, który jest wyświetlany dalej w lewo, gdy gracz jest w powietrzu).
To, co czyni ten tak fascynującym tematem, zmusza dewelopera do bardzo jasnego wyobrażenia o strukturze jego danych i przepływie kontroli. Pamiętaj, że nie oznacza to korzystania z niczego poza biblioteką graficzną, taką jak SDL, D3DX lub OpenGL. Brak silników do gier!
Ponieważ jest to pytanie głównie teoretyczne, pominę języki programowania, ale jeśli chcesz dać przykład, możesz użyć dowolnego języka, który ci się podoba, C ++, jeśli chcesz przejść całą świnię, lub nawet Brainfuck, jeśli czujesz do wyzwania (wszelkie konkretne odpowiedzi zostaną docenione, a także wszelkie abstrakcyjne!).