Chronologia wersji
Id Tech 4 , lepiej znany jako silniku Doom 3, to silnik gry wideo opracowany przez id Software i użyty po raz pierwszy w grze Doom 3 .
Zaprojektowany głównie przez Johna Carmacka , w przeszłości stworzył również inne silniki, takie jak silnik Doom i silnik Quake , które zostały powszechnie uznane za wielkie osiągnięcia technologiczne w tej dziedzinie.
Id Tech 4 został po raz pierwszy zaprojektowany jako ulepszenie silnika Quake . Pierwotnie planowano całkowicie przepisać silnik renderujący Quake Engine, zachowując pewne podsystemy, takie jak dostęp do plików i zarządzanie pamięcią. Po uruchomieniu nowego renderera zdecydowano się przejść z C na C ++ , co wymagało całkowitego przepisania i restrukturyzacji reszty silnika. Obecny silnik zawiera zatem bardzo mało kodu z silnika Quake, co czyni go pierwszym prawdziwie nowym silnikiem id Software od 1996 roku.
Id Tech 4 wyszedł z wieloma nowymi technologiami w porównaniu do poprzedzającego go silnika Quake 3 (id tech 3). Obejmuje to bump mapping , normalne mapowanie, i zwierciadlanego światło . Do silnika dodano następnie inne funkcje, takie jak technologia MegaTexture (używana w szczególności w grze Enemy Territory: Quake Wars ).
Postacie niezależne mają podstawową ( podobną do pathfindera ) sztuczną inteligencję ( AI ), a grę wzbogacono o język skryptowy o nazwie DoomScript .
Id Tech 4 umożliwia różne efekty specyficzne dla generowania efektów wideo w pixel shader : zniekształcenie, rozmycie, bump mapping , etc.
Silnik został całkowicie przepisany w C ++ .
Pliki gier są teraz w pełni zakodowane w formacie ASCII , który był już używany do kodowania jednostek w Id Tech 3 . Ten format ładuje się wolniej, ale jest bardziej elastyczny, bardziej dopasowany do obiektu i łatwiejszy do debugowania .
Karty do gry ( mapy ) nie są kodowane w jednym pliku .bsp, ale zakodowane jako 4 różne pliki, aby lepiej izolować różne części programu:
Okluzja nie jest już w przybliżeniu obliczana wstępnie w tabelach, jest obliczana w czasie rzeczywistym za pomocą portali przechowywanych w bsp.
Główną innowacją id Tech 4 jest pełne wykorzystanie dynamicznego oświetlenia. Woluminy cieni są renderowane jako wielokąty za pomocą algorytmu o nazwie Carmack's Reverse . Objętości cienia lamp statycznych są obliczane wstępnie podczas tworzenia mapy, a objętości cienia lamp ruchomych są obliczane w czasie rzeczywistym.
Podczas gdy wcześniej silniki 3D z grubsza łączyły wstępnie obliczone światła lub mapy świetlne z dynamicznymi światłami, których efekt zmieniał jasność całego obiektu, podejście zastosowane przez id Tech 4 pozwalało na oświetlenie i oświetlenie bardziej realistyczne niż wcześniej.
Quake 4 oferuje technologię synchronizacji ruchu warg w czasie rzeczywistym. System podobny do silnika Source , z jedenastoma ogólnymi emocjami twarzy i obsługą języków angielskiego, francuskiego, włoskiego i hiszpańskiego (silnik źródłowy jest niezależny od języka).
MegaTexture to technologia, która pojawiła się wraz z Enemy Territory: Quake Wars . Został zaprojektowany w celu wyeliminowania powtarzających się tekstur w środowisku.
Oryginalna wersja id Tech 4 była krytykowana za niezdolność do radzenia sobie z krajobrazami i warunkami zewnętrznymi. Technologia MegaTexture rozwiązuje ten problem, umożliwiając użycie jednej masywnej tekstury pokrywającej cały poziom.
Obecnie znacznie łatwiej jest załadować pojedynczą teksturę o wymiarach 32000x32000 pikseli niż szesnaście tekstur o wymiarach 4000x4000 pikseli. Rezultat jest znacznie bardziej szczegółowy niż w przypadku powtarzających się tekstur. Ponadto podkład MegaTexture pozwala również na zastosowanie szerokiej gamy parametrów w niektórych obszarach, takich jak prowadzenie pojazdu, kroki lub cząsteczki używane do eksplozji. Ogranicza to użycie dodatkowych wielokątów.
Cienie obsługiwane przez oryginalny identyfikator Tech 4 mają jedną wielką wadę: wszystkie ich kontury są idealnie ostre. Kolejne gry oparte na tym silniku pozwolą na wykorzystanie prawdziwych miękkich cieni poprzez rzeczywiste zarządzanie półcieniem, obliczane w odniesieniu do odległości między światłem a pokrywą .