Witamy na blogu developerskim poświęconym grze Colobot: Gold Edition. Ze względu na to, że oficjalne stabilne wydania są stosunkowo rzadkie oraz na stronie głównej nie ukazują się żadne nowe informacje, projekt może się wydawać w zastoju, kiedy w rzeczywistości jest nadal w częściowo aktywnym rozwoju. Z tego powodu postanowiliśmy opisywać zmiany wprowadzane do gry na bieżąco.

Dzisiaj chciałbym porozmawiać na temat jednej z większych opcji w Colobot: dynamicznych cieniach. Wprowadzone w 0.1.5 jako funkcja eksperymentalna, po kolejnych ulepszeniach cienie dynamiczne zostały później dodane jako domyślne. Cienie dynamiczne w Colobocie korzystają z techniki Shadow Mapping, która jest używana w większości nowoczesnych gier, jest wpierana przez większość kart graficznych oraz jest stosunkowo niedroga obliczeniowo, dzięki czemu można ją zastosować w aplikacjach 3D w czasie rzeczywistym.

Niestety, Colobot używa domyślnie urządzenia OpenGL 1.4, które nie jest oparte o shadery, co spowodowało, że poprawne zaimplementowanie dynamicznych cieni było trudne. Poprzednio to urządzenie wymagało 6 jednostek teksturujących do obliczenia ładnie wyglądających cieni, ale jednocześnie wprowadziło to kilka błędów. Ostatnio wprowadzone zmiany naprawiło większość z nich. Opcja „Quality shadows” została zmieniona; obecnie odpowiada ona za cieniowanie obiektów przez same siebie. Cienie są obecnie zaimplementowane bezpośrednio po stronie implementacji urządzeń graficznych zamiast na ogólnym urządzeniu renderującym. Urządzenia graficzne wykrywają automatycznie, czy mogą wspierać lepsze cienie. Urządzenie OpenGL 1.4 wymaga teraz 4 jednostek teksturujących dla lepszych cieni, pozostałe implementacje tylko 3.

Poprzednio tylko obiekty mogły rzucać cienie, ale po dzisiejszych zmianach można włączyć eksperymentalną opcję, która włącza rzucanie cieni przez teren. Efektem jest nieco lepsza grafika, jednakże obniża to znacząco wydajność. Dodatkowo, większość światów w Colobocie nie ma terenu rzucającego wyraźne cienie, a zatem ta opcja może nie być potrzebna. Niemniej jednak, można ją wykorzystać do testowania optymalizacji. Poniżej można zobaczyć porównanie.

Without terrain shadows

With terrain shadows

Aby włączyć tę opcję, należy dodać poniższe linie do pliku colobot.ini:

[Experimental]
TerrainShadows=1