Podstawy tworzenia map

Tworznie map do “Dooma 3” nie jest diametralnie różne od tworzenia map do “Quake'a 3”, tak więc osoby, które wcześniej zrobiły choćby jeden w miarę porządny poziom do gry na silniku “Q3” powinny dość szybko połapać się w “świecie D3”. Nowe gry jednak zawsze przyciągają nowych graczy, a co za tym idzie także nowych twórców poziomów – do nich przede wszystkim skierowany jest ten poradnik. Będą tu przedstawione same podstawy tworzenia poziomów, ale “weteranów maporóbstwa” również zachęcam do lektury ponieważ niektóre z tychże “podstaw” to rzeczy, których we wcześniejszych grach nie było.

Tyle tytułem wstępu. Czas wziąć się do roboty. Zaczynamy od kwestii trywialnej, ale – nie da się tego ukryć – bardzo istotnej.

1.Uruchomienie edytora

Oficjalny edytor poziomów w Doomie 3 jest zintegrowany z grą – żeby się do niego dostać musimy, zamiast osobnego pliku .exe, uruchomić “Dooma 3” w “odpowiedni sposób”, lub wpisać odpowiednie komendy w konsoli gry. Ta druga opcja jest jednak dość niewygodna: za każdym razem gdy chcemy rozpocząć pracę w edytorze trzeba uruchamiać “Dooma 3” i wpisywać polecenia, dlatego zdecydowanie zachęcam do zastosowania poniższych porad i oszczędzenia sobie tych męczarni.

Przede wszystkim, żeby uruchomić edytor “Doom 3” musi działać w trybie “okienkowym”. Tryb “pełnego ekranu” możemy wyłączyć uruchomiając grę z parametrem “+r_fullscreen 0” (o tym jak uruchamiać “D3” dodatkowymi z parametrami będzie za chwilę). Kolejny krok to ustalenie jasności ekranu: czasem zdarza się, że nawet kiedy gra jest uruchomiona w trybie “okienkowym” pulpit nie wraca do swojej naturalnej jasności, lecz zachowuje ustawienia gry (najczęściej jest rozjaśniony). Dlatego musimy dopisać kolejny parametr “+r_brightness 1” (jeśli to nie pomoże można dodać “+r_gamma 1”). Kolejny problem to rozdzielczość pulpitu – na niektórych systemach uruchomienie “Dooma 3” w oknie powoduje zmianę rozdzielczości ekranu na ustaloną przez grę. Jeśli masz problem tego typu do parametrów dopisz “+r_mode”, a potem liczbę od 3 do 8. Wpisana wartość odpowiada rozdzielczości ekranu jak w tabeli poniżej:

r_moderozdzielczość
r_mode 3640x480
r_mode 4800x600
r_mode 51024x768
r_mode 61152x864
r_mode 71280x1024
r_mode 81600x1200
Dopisujemy “+vid_restart”. Ten parametr powoduje zresetowanie ustawień gry – bez niego “Doom 3” uruchomiłby się tak jak uruchamiał się wcześniej, a wpisane w parametrach ustawienia zadziałałyby dopiero po powtórnym uruchomieniu gry (bądź po wpisaniu “vid_restart” w konsoli gry).

Teraz musimy dać grze czas “na przemyślenie” wszystkich parametrów jakie mu wpisaliśmy (czyli na zmienienie trybu wyświetlania i jasności ekranu oraz na przeładowanie całej grafiki) – dlatego do linijki z parametrami dopisujemy “+wait”, najlepiej kilka razy.

Kolejny, ostatni już, parametr to “+editor”. Tego tłumaczyć nie trzeba.

Podsumowując: nasz linia komend powinna wyglądać mniej-więcej tak: dysk:/ścieżka dostępu/doom3.exe +r_fullscreen 0 +r_brightness 1 +r_gamma 1 +r_mode 5 +vid_restart +wait +wait +wait +wait +editor

Podpowiedź: Jeżeli już uruchomiłeś grę wszystkie wymienione wyżej parametry możesz wpisać w konsoli (nie wpisuj “+” przed komendami, “wait” też możesz pominąć), a większość z ustawień znajdziesz w menu gry.

Teraz pozostaje odpowiedzieć na pytanie “jak uruchomić grę z parametrami”. Pierwszy sposób to wpisanie podanej wyżej linii komend w windowsowym menu “Start > Uruchom...”. O wiele bardziej ekonomiczny sposób to utworzenie odpowiedniego skrótu. Wystarczy skopiować skrót do gry standardowo tworzony przez instalator. We właściwościach skrótu, w zakładce “Skrót” odnajdujemy tekst “Element docelowy” i w polu obok wpisujemy odpowiednie parametry.

Podobny zabieg musimy zrobić “w drugą stronę”, tzn. dopisać takie parametry w skrócie do “Dooma 3”, który przywracałby ustawienia sprzed naszych eksperymentów z edytorem. Tym razem w polu “Element docelowy” powinniśmy więc wpisać coś podobnego do poniższej linii:
dysk:/ścieżka dostępu/doom3.exe +r_fullscreen 1 +r_brightness 1.3 +r_gamma 1.3 +r_mode 4 +vid_restart

Podpowiedź: Konsolę w grzę uruchamia się wciskająć kombinację klawiszy “ctrl+alt+~”, ale możemy uprościć sobie życie wpisując komendę “com_AllowConsole 1” - od teraz konsola będzie się wyświetlała po wciśnięciu pojedynczego klawisza “~”.

2.Edytor po uruchomieniu

Tak wygląda edytor zaraz po uruchomieniu

Po uruchomieniu edytora naszym oczom ukazuje się niezbyt zachęcający widok: podgląd 3d (“*CAM”), jedno okienko edycji (“XY Top”), okienko “Inspectors”, oraz jakieś dziwne, podłużne okno “Z”. Roli trójwymiarowego podglądu tłumaczyć nie trzeba, w okienku edycji oczywiście będziemy tworzyć poziom, w oknie “Inspectors” ustalamy różne warianty elementów mapy, przeglądamy tekstury, modele lub wpisujemy komendy i czytamy komendy konsoli, natomisast okno “Z” przedstawia uproszczony rzut mapy z boku, który ułatwia ustawianie przedmiotów w płaszczyźnie pionowej. Widoki w okienku edycji możemy przestawiać wybierając w menu “View” opcję “Next (XY, YZ, XY)” (skrót klawiaturowy “ctrl+tab”).

W menu “Edit” istnieje opcja “Preferences” (skrót “P”) - znajdziemy w niej wybór innych ustawień wyglądu edytora, ale niestety nie można ich “uaktywnić”. Istnieje jednak sposób, żeby zmienić interfejs programu na bardziej standardowy/przystępny: w menu “View > Toggle” wybieramy kolejno “YZ (Side)” i “XZ (Front)”, z pozoru nic się nie zmieniło, ale jeśli przesuniemy okienko 3d to odkryjemy, że pojawiły się dodatkowe okienka edycji: z widokiem “z przodu” i “z boku”. Teraz możemy porozciągać, poprzesuwać i pozmniejszać okno wedle naszego uznania i dostosować edytor do naszych preferencji, np. tak:

...a tak wygląda edytor po kosmetycznych poprawkach

Zanim zaczniemy pracę warto ściągnąć plik spod tego adresu: http://www.pcgamemods.com/7707 i rozpakować go do katalogu “base” w folderze “Dooma 3”. Po co ten plik? Otóż standardowo lista tekstur i shaderów “Dooma” jest bardzo zaśmiecona. Plik ukryty pod powyższym odnośnikiem usuwa zbędne shadery, uzupełnia brakujące tekstury, etc. – to ułatwia edycję poziomów, przyśpiesza pracę edytora i (na szczęście) nie wpływa na samą grę.

Nie będę omawiał kolejno wszystkich funkcji edytora – najlepiej uczyć się tworząc mapy. Przejdźmy zatem do tego, jakże przyjemnego, etapu.

Podpowiedź: Shader to skrypt, który opisuje rozmaite efekty (np. przeźroczystość) tekstur lub innych mediów (np. dźwięków).

3.Pierwsze pomieszczenie

Mapy do “Dooma 3” składają się przede wszystkim z prostych bloków, które potocznie nazywa się brushami. Ów brush to “klocek”, którego rozmiar możemy zmieniać praktycznie dowolnie, ale już edycja jego kształtów ma wiele ograniczeń. Dlatego do stworzenia bardziej zaawansowanych elementów mapy niezbędne jest wykorzystanie modelu zrobionego w zewnętrznym edytorze. Na szczęście owe “bardziej zaawansowane” elementy nie są niezbędne, ba – ze zwykłych brushy można wykreawać naprawdę widowiskowe poziomy.

Stworzenie brusha w edytorze jest bardzo proste – wystarczy, trzymając lewy przycisk, przeciągnąć myszką po okienku edycji. Na obszarze, który zaznaczyliśmy powstał właśnie pierwszy blok. Jeżeli nie widzimy go w okienku 3d wystarczy obniżyć wzrok klawiszem “Z”, lub “C” – obniżenie linii wzroku. Inne klawisze odpowiedzialne za sterowanie kamerą to:

  • kursory - ruch do przodu, ruch do tyłu, obrót w lewo, obrót w prawo
  • “A” - “głowa do góry”
  • “D” - podwyższenie linii wzroku
  • “Page Up” - poziom do góry
  • “Page Down” - poziom w dół
  • prawy przycisk myszki (“PPM”)– naciśnięcie PPM w okienku 3d spowoduje ruch kamery, który zdaje się być dość tajemniczy i pozbawiony reguł, ale rozwiązanie zagadki jest bardzo proste: im dalej kursor jest położony od środka okna 3d tym szybciej się poruszamy w kierunku kursora (kursor u góry powoduje ruch do przodu, kursor na dole – vice versa).

O tym gdzie w danym momencie jest kamera możemy dowiedzieć się z okienek edycji – ten niebieski trapezoid to właśnie nasze “oko”. Przy okazji możemy nauczyć się poruszania się po owych oknach edycji:

  • “PPM” – podręczne menu
  • przytrzymany dłużej “PPM” + ruch myszki – poruszanie się po “mapie” w danym oknie
  • “Insert” – oddalenie
  • “Delete” – zbliżenie

Wróćmy do edycji brusha. Żeby go odznaczyć naciksamy przycisk “Esc” - żeby zaznaczyć ponownie: “Shift+lewy przycisk myszki (LPM)” na brushu. Kasacja to przycisk "Backspace". Przesuwanie brusha też jest banalne: przenosimy kursor nad zaznaczony blok, trzymamy LPM i przesuwamy myszką. Żeby zmienić rozmiary brusha wystarczy nacisnąć “LPM” w okolicy (ale nie nad brushem) któregoś z boków brusha i (nie zwalniając “LPM”) poruszyć myszką. Dokładność zmiany jest uzależniona od wybranej siatki, potocznie nazywanej “grid”. Standardowo jej gęstość jest ustalona na 8 jednostek – możemy to zmienić w menu “Grid” lub klawiszami od “1” do “7” (wartości od 1 do 64), oraz skrótami “Shift+2”, “Shift+3”, “Shift+4” (wartości poniżej 1). Można też wyłączyć siatkę zupełnie odznaczając opcję “Snap To Grid” w menu “Grid”. Zalecane jest “nie schodzenie” z wartościami “grida” poniżej 4 – pozwoli to uniknąć niechcianych dziur w mapie (o samych dziurach potem).

Kiedy mamy już opanowane poruszanie się po mapie i podstawy edycji brusha możemy przystąpić do teksturowania: zaznaczamy blok i otwieramy okienko “Media” (klawisz “M” lub odpowiednia zakładka w okienku “Inspectors”). W drzewku mediów wybieramy “Textures”, potem folder “textures” i kolejny - na początek niech to będzie “common”. Posiadaczom słabszych maszyn odradzam podwójne klikanie na któryś z folderów – to powoduje załadowanie do pamięci wszystkich tekstur z danego katalogu i z wszystkich podkatalogów: podwójne kliknięcie na folder “textures” może być dla systemu “zabójcze”.

Kiedy już otworzyliśmy ów folder “common” pozostaje wybór tekstury. Specjalnie zasugerowałem folder “common” ponieważ w nim znajduje się tekstura “caulk” - jest ona dość specyficzna ponieważ silnik gry pomija ją przy wyświetlaniu grafiki, dlatego wszystkie niewidoczne przez gracza ściany powinny być nią okryte. Po odnalezieniu rządanej tekstury zaznaczamy ją – brush od razu powinien zmienić wygląd.

Drzewko wyboru tekstur i już oteksturowany brush

Podpowiedź: Ze względów estetycznych (nie każdy lubi róż) i praktycznych można zamiast tekstury “common/caulk” użyć jakiejkolwiek innej, np. “base_trim/a_bluetex3k2_01”, a po zakończeniu prac nad mapą użyć narzędzia “Find/Replace” (menu “Materials” lub skrót “Shift+F”) i zamienić teksturę “base_trim/a_bluetex3k2_01” na “common/caulk” - należy jednak uważać i nie używać tekstury “base_trim/a_bluetex3k2_01” na elementach mapy widocznych w czasie gry.

Skoro jednak ściany okryte teksturą “common/caulk” nie są wyświetlane w grze to pozostawienie brusha w takim stanie jest raczej kiepskim pomysłem. Załóżmy, że nasz blok będzie służył za podłogę – skoro tak to górną ścianę brusha udekorujmy teksturą z katalogu “base_floor”. Żeby zaznaczyć pojedynczą ścianę używamy skrótu “ctrl+shift+LPM” wskazując kursorem myszy część brusha, która chcemy zaznaczyć. Teraz wystarczy wybrać jakąś teksturę z katalogu “base_floor” w taki sam sposób w jaki wybraliśmy wcześniej “common/caulk” i gotowe – mamy podłogę.
Podłoga w całej okazałości

Teraz w podobny sposób budujemy ściany i sufit. Na pewno poradzicie sobie sami: możecie bez obaw zmienić trochę podłogę jeśli np. jest za mała, na razie przejmujcie się nie źle ułożonymi teksturami. Uwaga,ważne: wszystkie brushe muszą się dotykać lub przecinać – pomieszczenie musi być szczelne. Starajcie się uzyskać pokój podobny do tego przedstawionego na obrazku poniżej.

Pierwsze pomieszczenie prawie gotowe

Podpowiedź: Tworząc pokój można pomóc sobie narzędziem “Hollow” - tworzymy brush wielkości pomieszczenia, które chcemy stworzyć i naciskamy przycisk “Hollow” lub wybieramy z menu “Selection > CSG” opcję “Hollow”. Brush zostanie podzielony na kilka mniejszych w taki sposób, że wewnątrz pozostanie wolna przestrzeń.

Gotowe? Teraz sprawmy by na naszej mapie dało się zagrać. Przede wszystkim musimy ją jakoś oświetlić – klikamy PPM gdziekolwiek w okienku edycji. Powinno pojawić się podręczne menu (jeśli się nie pojawiło naciskamy PPM do skutku) – z niego wybieramy pozycję “light”. Na mapie pojawia się obiekt o kształcie diamentu – to źródło światła. Umieszczamy je w środku pokoju. Żeby zobaczyć jak sprawnie oświetla nasze pomieszczenie wybieramy z menu “View” opcję “Render Mode” (lub wciskamy klawisz “F3”). Jeśli w podglądzie 3d “widzimy ciemność” musimy wrócić do menu “View” i w nim wybrać opcję “Rebuild Render Data” (klawisz “F7”). Można też pokusić się o wybranie opcji “Render Light Outlines” w tym samym menu. Teraz powinniśmy zobaczyć nasz pokój oświetlony – wygląda o wiele ładniej niż wcześniej, a jeśli zaznaczyliście “Render Light Outlines” możecie teraz zaznaczyć światło jeszcze raz (a jeśli nie odznaczyliście światła wcześniej poradzicie sobie nawet bez wspomnianej przed chwilą opcji) i swobodnie nim poruszać obserwując zmieniające się w czasie rzeczywistym cienie.


Po ustawieniu światła wrzucamy na mapę punkt, z którego będzie startował gracz. “PPM” na okienku edycji, z podręcznego menu wybieramy “info > info_player_start” i na mapie pojawia się bryła. Ustawiamy ją gdzieś na podłodze – to z tego miejsca zaczniemy grę na naszej mapie. Wyłączamy “Render Mode” (klawisz “F3”) lub odznaczamy “info_player_start” żeby sprawdzić, z której strony punktu startowego wystaje wektor (strzałka) i czy przypadkiem nie jest skierowany w kierunku ściany oddalonej np. o 8 jednostek (nie widzieć czemu wektor znika w “Render Mode” kiedy “start” jest zaznaczony). Żeby zmienić “kierunek startu” musimy przejść do okienka “Inspectors” (w tej chwili nazywa się pewnie inaczej, np. “Textures (all)”) i w nim wybieramy zakładkę “Entities” - można sobie skrócić drogę do tego miejsca wciskając klawisz “N”. W lewym dolnym rogu okna znajduje się osiem przycisków – po naciśnięciu któregoś z nich strzałka zmieni kierunek. Łatwo się domyślić, że liczby na owych przyciskach oznaczają kąt odchylenia strzałki od pozycji wyjściowej równej 0 (360 oznacza pełny obrót, czyli de facto jest to to samo co pozycja początkowa). Zaraz po prawej od omawianych przycisków znajdziemy kolejne dwa: “Up” (góra) i “Down” (dół) - przypisują one kątowi zaznaczonego obiektu wartość odpowiednio “-1” i “-2” (dla "info_player_start" i kliku innych elementów gry ustawienie kierunku na dół/góra nie działa). Dla poćwiczenia wciśnijmy przycisk “90”. Strzałka w podglądzie “3d” wystaje z adekwatnej ścianki bryły “info_player_start”, lepiej żeby była skierowana w kierunku otwartej przestrzeni, bo zaczynanie gry od zderzenia ze ścianą zniechęca. Dlatego jeśli kąt 90 stopnii nie spełnia podanego warunku wypada go zamienić na "rozsądniejszy". Robimy to wciskając któryś z pozostałych przyciksów, bądź wpisując żądaną wartość przy kluczu "angle". Ostatnie zdanie może dla niektórych brzmieć jak zagadka, dlatego bez zwlekania wyjaśniam: w okienku "Inspectors", nad omawianymi przyciskami zmiany kąta, w tabeli, znadjują się wszystkie własności zaznaczonego obiektu - w naszym przypadku "info_player_start". W kolumnie po lewej widzimy tak zwane klucze ("Keys"), a po prawej przypisane tym kluczom wartości ("Values"). Na przykład wartość klucza "classname" to "info_player_start" co oznacza "ni mniej - ni więcej", że zaznaczony przez nas obiekt jest punktem startu. Poniżej zapewne widnieje "name" i "info_player_start_1" - to z koleji mówi nam jak nazywa się konkretny obiekt (nazwa może być dowolna, nie musi kojarzyć się z typem obiektu). Taka informacja przydaje się, gdy na mapie mamy na przykład dwa punkty startowe i chcemy przypisać jakąś akcję do jednego z nich - ale o tym przy innej okazji. Kolejne klucze to "origin" i "angle" - pierwszy na razie nas nie obchodzi (omówię go w kolejnych tutorialach). Drugi (czyli "angle") to kąt, o którym prawie wszystko napisałem kilka zdań wcześniej - można go zmieniać wspomnianymi przyciskami, lub ręcznie (tj. z klawiatury) przypisując mu dowolną wartość (ale musi być liczbą całkowitą, większą od "-3"). Żeby to zrobić klikamy raz na wartość widniejącą obok klucza i wystukujemy na klawiaturze np. "100". Można też zaznaczyć klucz i wpisać żądaną wartość w polu "Val" poniżej tabeli. Zaraz pod tabelą jest też pole tekstowe "Key", w którym możemy zmienić nazwę klucza lub dodać zupełnie nowy - druga opcja "aktywuje się" gdy tylko wpiszemy cokolwiek różnego od kluczy już przypisanych do obiektu. Przyciskiem "X" po prawej możemy usunąć wskazaną parę "klucz/wartość". Z reguły gdy przypiszemy któremuś z elementów mapy klucz nieobsługiwany przez grę (lub przez dany element) nic złego nie powinno nam się przydarzyć - gra po prostu owego klucza "nie zauważy". Dlatego można eksperymentować do woli (oczywiście zachowując zdrowy rozsądek). Ułatwieniem jest lista kluczy dostępnych dla danego obiektu (razem z krótkim opisem każdego z nich) wypisana na samej górze okienka "Inspectors". Niestety nie zawsze są to wszystkie opcje, dlatego wiele rzeczy będziemy musieli odkryć metodą prób i błędów.

Z pozoru cały ten system kluczy, wartości, kątów, etc. wydaje się nader skomplikowany, ale zapewniam, że dosyć szybko, po kilku ćwiczeniach praktycznych, można doń przywyknąć, a nawet polubić. Z resztą ta zasada dotyczy całego DOOMEdita. Dla "wyrobienia dobrych nawyków" można zaznaznaczyć którąkolwiek ze ścian i zerknąć co pokaże nam się w okienku "Inspectors". Powinniśmy ujrzeć klucz "classname" o wartości "worldspawn" - jest to (upraszczając) najwyższy obiekt w hierarchi budowy mapy. Wszystkie ściany i przedmioty zawierają się w "worldspawnie", temu obiektowi można przypisać klucze i wartości, które bedą obejmować swoim zasięgiem całą mapę - na przykład wyłączyć zmęcznie gracza. Wystarczy dopisać np. klucz "no_stamina" i ustalić wartość na "1" - od teraz biegając po naszej mapie zmęczenie gracza nie będzie rosnąć.


4.Uruchomienie mapy w grze

Pozostaje nam tylko sprawdzenie jak nasze dzieło wygląda w grze. Zapisujemy je gdzieś w katalogu "Base/maps" (może to być podkatalog), a następnie kompilujemy. Przechodzimy do menu "Bsp" i w nim wybieramy opcję "bsp". W tym etapie następuje "tłumaczenie" tego co zapisał edytor do formatu zrozumiałego przez grę. Pewnie kiedyś uda mi się opisać to "zjawisko" dokładniej, ale na razie pomińmy wyjaśnianie, tym bardziej, że owa kompilacja powinna potrwać nie dłużej niż ułamek sekundy. Trzeba tylko pamiętać, że musimy ją wykonać za każdym razem gdy chcemy zobaczyć naszą mapę w grze.


Do samej gry dostaniemy się naciskając klawisz "F2" bedąc w edytorze. Już w grze wchodzimy do konsoli (~ lub ctrl+alt+~) i wpisujemy "map X" gdzie "X" to nazwa naszej mapy. Jeśli umieściliśmy ją (mapę) w jakimś podkatalogu "base/maps" to przed nazwą musimy wpisać jeszcze ścieżkę dostępu, wtedy całość będzie wyglądać mniej-więcej tak "map nowe/moja". Naciskamy "Enter" i po krótkiej sekwencji ładowania powinniśmy ujrzeć nasze cudo w akcji. Gdy tworzymy poziom z myślą o grze wieloosobowej konieczne jest uruchomienie serwera gry - wtedy sprawdzimy jak nasz poziom sprawuje się w trybie multiplayer. Jest to ważne, bowiem niektóre aspekty tego trybu różnią się od "Dooma 3" dla pojedynczego gracza (m.in. inaczej wygląda poruszanie się zawodnika, czy cienie postaci). Żeby uruchomić serwer do gry mp z naszą mapą w konsli wpisujemy "si_map X" gdzie "X" to nazwa naszej mapy (reguła taka sama jak w przypadku polecenia "map"), a po wciśnięciu "Enter" dopisujemy kolejną komendę "ServerMapRestart". Jeszcze raz wciskamy największy klawisz na klawiaturze i gotowe. Kiedy już obejrzymy każdy kąt mapy czas zabrać się za kolejne kroki... Ale o tym w następnym poradniku.