poniedzia艂ek, 6 pa藕dziernika 2025

Doom Engine

Wyobra藕 sobie, 偶e dostajesz w pracy zadanie skonstruowania czego艣 zupe艂nie nowego. Czego艣, co jeszcze nie do ko艅ca wiadomo jak ma dzia艂a膰, ale musi by膰 zrobione. In偶ynier z mojej miejscowo艣ci Mieczys艂aw Bekker pracowa艂 na przyk艂ad w latach 60tych nad 艂azikiem ksi臋偶ycowym dla Nasa. Co za zadanie.

30 lat p贸藕niej niewielkie studio produkuj膮ce gry o nazwie ID Software wymy艣li艂o sobie, 偶e zrobi gr臋, jakiej nie widzia艂 艣wiat. Mia艂a by膰 to strzelanka 3D, ale oferuj膮ca znacznie lepsz膮 grafik臋 i dynamiczniejsz膮 grafik臋, ni偶 ich poprzednia gra, Wolfenstein 3D. Ma艂y problem - silniki gier oferuj膮ce takie mo偶liwo艣ci, wtedy jeszcze nie istnia艂y. John Carmack podj膮艂 si臋 wyzwania stworzenia w艂asnego silnika, nazwanego id Tech 1. T膮 gr膮 by艂 Doom.

G艂贸wnym za艂o偶eniem tego silnika, by艂o to, 偶e renderowa艂 on widok 3D z widoku 2D, uwzgl臋dniaj膮c informacj臋 o wysoko艣ci. Gra jest podzielona na oddzielne mapy, w kt贸rych pomieszczenie nie mo偶e znajdowa膰 si臋 nad innym pomieszczeniem. Jest to ograniczenie, ale jego wynikiem jest to 偶e widok podgl膮du mapy jest bardzo czytelny. 

Gracz nie ma mo偶liwo艣ci skakania, poruszania g艂ow膮 i celowania w g贸r臋 czy w d贸艂, co mo偶e nieco przeszkadza膰 na pocz膮tku wsp贸艂czesnym graczom. Wynika to z ogranicze艅 silnika. Jednocze艣nie, Doom nie jest gr膮 2-wymiarow膮, poniewa偶 uwzgl臋dnia wysoko艣膰 w wielu sytuacjach. Przyk艂adowo, wi臋ksi wrogowie nie mog膮 przej艣膰 przez za ma艂e drzwi, a wrogowie lataj膮cy aby zaatakowa膰 gracza, musz膮 zmieni膰 wysoko艣膰 lotu. Albo wystrzeli膰 fireballa :) 呕eby by艂o ciekawiej, to wysoko艣膰 eksplozji jest niesko艅czona, a same eksplozje i zasi臋g ich ra偶enia, s膮 kwadratem a nie ko艂em.

Za艂o偶enia i ograniczenia sobie, ale jak to wszystko zosta艂o "zakodowane"? John Carmack znalaz艂 badanie naukowe na temat Binary space partitioning, techniki renderowania obrazu w wydajny spos贸b i zaimplementowa艂 je w grze.