Możesz napisać silnik gry praktycznie w dowolnym języku, używając praktycznie dowolnych metod renderowania. Możesz napisać silnik gry w bash, używając na przykład danych wyjściowych konsoli.
Myślę więc, że najlepiej byłoby określić, czego dokładnie chcesz się nauczyć, pisząc własny silnik. W tworzeniu gier istnieje wiele „pól”.
itp .. Stamtąd możesz nawet mieć podtematy. W renderowaniu / grafice
2d czy 3d?
Modelowanie
Zacienienie
Oświetlenie
Teksturowanie
GUI / Huds / Interfejsy.
itd itd
Tylko jeden z tych podtematów może zająć wiele godzin (lub lat!) Nauki!
Najpierw zdefiniuj, czego chcesz się nauczyć. Zacznij prosto.
Używaj dowolnego języka, w którym czujesz się komfortowo - choć niektóre lepiej nadają się do niektórych zadań. Na przykład silnik główny i rendering najlepiej wykonać najlepiej przy użyciu języka „niższego” poziomu, takiego jak C / C ++ (jeśli potrzebujesz takiej wydajności); ale coś takiego jak AI lub zasady gry można lepiej wykonać w języku wyższego poziomu. Nic nie mówi, że nie można mieszać i łączyć. Możesz napisać silnik w C ++, renderować w C (ponieważ działa dobrze z OpenGL), a następnie użyć LUA do skryptu reguł gry itp.
Na przykład istnieje silnik gry o nazwie Slick2D. Jest napisany w Javie i jest open source. Jest to przykład prostego silnika 2D napisanego i zaprojektowanego naprawdę dobrze. Możesz nauczyć się podstawowych pojęć, takich jak pętle gier, zarządzanie stanami gier itp.
Jeśli nie masz nic przeciwko C / C ++; Proponuję rzucić okiem na SDL / OpenGL. Obsługuje niektóre czynności porządkowe, takie jak wprowadzanie danych, dźwięk, tworzenie okien itp., I może skupiać się na innych rzeczach.