Czy istnieją dobre zasoby (podręczniki, samouczki itp.), Aby rozpocząć naukę kodu silnika Quake 3 poza samym kodem?
Bardzo interesuje mnie wiedza na temat jego struktury do celów edukacyjnych i być może wprowadzenie pewnych modyfikacji.
Powinieneś zacząć od artykułu w Wikipedii na temat id Tech 3 . Można to uzupełnić podsumowaniem GDC Briana Hooka i starymi materiałami na temat blogu Element 61 . Oprócz tego będziesz musiał przejrzeć kilka starych samouczków modowych, które możesz znaleźć, aby spróbować zrekonstruować, co się dzieje.
Sugerowałbym zacząć od oryginalnej wersji źródłowej od id, zamiast ioquake3 lub what-have-you, aby naprawdę zobaczyć kontekst tego, co się dzieje (w jaki sposób dane wejściowe są obsługiwane i kierowane w silniku, jaki rodzaj zdarzenia bazowego struktura jest używana itp.).
Kilka kluczowych punktów, które pomogły mi, gdy z nim pracowałem:
quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0
, aby silnik mógł uruchamiać kod natywny zamiast kodu VM.Kilka fajnych rzeczy, które zrobiłem dla tego ze współpracownikiem:
Osobiście odkryłem, że silnik był świetną kombinacją naprawdę inteligentnych rzeczy zrobionych na naprawdę głupie sposoby, naprawdę głupich rzeczy zrobionych na naprawdę sprytne sposoby i naprawdę inteligentnych rzeczy zrobionych na naprawdę mądre sposoby. To świetny przykład tego, jak uzyskać modułowość i dobry projekt strukturalny w średnim projekcie C.
Wreszcie, nie czuj się źle, jeśli zajmie to trochę czasu. Zajęło mi to chyba miesiąc, aby naprawdę wiedzieć, gdzie znaleźć to, czego szukałem w silniku; jeśli wszystko inne zawiedzie, zacznij od init aplikacji i po prostu tuneluj w dół do funkcji, zostawiając komentarze dla siebie jako drogowskazy. Mój monitor został pokryty różowymi karteczkami samoprzylepnymi z nazwami funkcji, numerami linii i krótkimi opisami tego, co zrobili.
Książka Focus On Mod Programming w Quake III Arena pomoże ci zrozumieć, w jaki sposób logika klienta i serwera jest oddzielona, przewidywania klienta, efekty graficzne po stronie klienta itp.
Absolutnie.
http://en.wikipedia.org/wiki/Quake_engine to dobry przegląd tego, co się tam dzieje, ale można dość szybko zapoznać się ze szczegółami architektury poprzez cytowania.
Chciałbym również zasugerować kilka książek na temat architektury silnika gry, które mogą być bardziej zgodne z tym, czego szukasz. Chociaż nie są one specyficzne dla Quake, zajmują się szczegółami konstrukcji silnika i działają równolegle do wielu aspektów silników Quake: