ORG

quake.net.pl » Polskie Centrum Quake od 1998 roku



Kurs Radianta

pon, 12 marzec 2007 20:37:00 | Autor: szaky

- KURS RADIANTA -


Dział ten ma na celu pomóc tym, co chcieli poznać podstawy programu, za pomocą którego można tworzyć mapy do gier na silniku Q3 - GTK Radiant. Artykuł odnosi się raczej do wersji z przedziału 1.2.11 - 1.4.0 - choć nowsze poza nieco inną klawiszologią zbyt wiele się nie różnią. Mam nadzieje, że wszystko opisane jest w miare zrozumiale - jak interesuje cię tylko konkretne zagadnienie - przejdz do odpowiedniego działu. Zupełnie nowym w mapmakingu - polecam czytanie i naukę od podstaw. Artykuł starałam sie uzupełniać odpowiednimi screenshotami i przykładami - co trudniejsze konstruckje posiadają przykład. Do większości opisów dotyczących texturowania, brushworku - dołączony jest obrazek, który pokazuje jak powinna dana konstrukcja wyglądać.
Czegoś nie rozumiesz, masz może jakieś propozycje, co mogłoby się tu znaleźć - pisz 7331@wp.pl.
Powodzenia, udanych map w przyszłości

Instalacja
Pierwszy pokój
Podstawy o kompilacji
Podstawy texturowania
Krzywe
Stożek, kolec
Texturowanie krzywych
Własne textury
Zaawansowane konstrukcje z krzywych
Wielokątne brushe
Zmiana kształtu bryły
Clipowanie
Spiralne schodki
Oświeltenie, lighting
Entities - wprowadzenie
Jak zrobić jumppad?
Jak wstawić teleport?
Fog of hell - pole śmierci
Wstawianie dźwięków na mapę
A jak wstawić model?
Definiowanie lokacji
Wstawianie itemów, różne sposoby pozyskiwania itemów
Drzwi na mapie
Wstawienie windy
... i lustra
Portal na styl dm7
Podstawy połączeń entities
Wstawienie shooterów, rakiety i granaty ze ścian
Obracające się konstrukcje
Func_train - konstrukcje poruszające się po określonym torze.
Dodanie własnych modeli, dźwięków, textur
Jak dodać na mapę boty?
Dekompilowanie mapy
Jak dodać mapę do menu?
Złożenie pk3
Zmiana rozszerzenia


INSTALACJA

1. Sciagnij najnowsza wersję programu GTK Radiant (aktualnie polecam 1.4.0, choć możesz zessać również 1.2.11 - jedna ze stabilniejszych, ale do niej przydalo by sie mieć nowe kompilatory). Radianta znajdziesz ma qeradiant.com w dziale Files.
2. Ok, teraz instalacja. Nie jest to takie trudne, musisz podać tylko odpowiednie scieżki. Uruchom plik który sciagłes. Na poczatku podaj scieżkę gdzie ma zostać zainstalowany sam program (c:program filesgtk radiant X.X.XX), a następnie scieżkę do katalogu z Quakiem. 3. Instalację Radianta do RTCW, ET, JK, SoF, i innych gier zignoruj to - chyba, że zamierzasz tworzyć do którejs z tamtych gier.


Pierwsze uruchomienie - konfiguracja
Ok, zainstalowałes program, uruchomiłes, teraz czas na konfigurację go. Po uruchomieniu masz taki widok:
Free <br/> <br/>Image Hosting at www.ImageShack.us

Wcisnij P (albo menu Edit/Preferences). Pokaże ci się takie okno:
Free Image Hosting at www.ImageShack.us

Wejdz w zakładkę layout (zaznaczona na screen'ie powyżej), i wcisnij trzecie pole wyboru. Daj OK. Pojawi ci się okno, że powinienes ponownie uruchomić program. Po uruchomieniu powiniens ujrzeć taki oto widok:
Free Image Hosting at www.ImageShack.us

W preferenses możesz skonfigurować również inne rzeczy. W zakładce 3D, możesz zmienić prędkosć poruszania się po widoku 3D, oraz sensitivity. No ale to już musisz odkryć sam.

Klawiszologia
Ok, teraz parę słów o tym czym obsługiwać ten program...
Pełna lista w menu HelpShortcuts list.

Kursory - poruszanie kamera na widoku 2D, oraz 3D (obroty i strafe)
A - patrzenie w górę
Z - patrzenie w dół
C - zejscie w dół
D - poruszenie się do góry
T - otwarcie okna z texturami
N - otwarcie okna Enitities
K - ustawienie koloru swiatła
L - szczegóły dotyczace rozmieszczenia entities na mapie
M - map info - podstawowe informacje
J - pokazywanie zaznaczenia (wcisnij kilka razy na zaznaczonym bloku, zobaczysz jak działa)
I - zaznaczenie całej mapy
Q - pokazywanie wymiarów bloków.
O - konsola
E - edycja egdes brusha
V - edycja po punktach vertex brusha
R - rorate
P - preferences
S - surface inspector (ustawienia textur)
Shift + S - j.w. tylko dotyczy krzywych
Ctrl + K - connect entites - łacznie entities.
Shift + A - zaznaczenie grupy (np. bloków o tej samej texturze, lub każdej częsci grupy)
Shift + LPM (LPM - lewy przycisk myszy) - zaznaczenie bloku
ESC - odznaczenie bloku
Space - kopiowanie bloku
BackSpace - skasowanie bloku
Shift + Ctrl + LPM - zaznaczenie textury na bloku (tylko widok 3D)
Ctrl + M - make detail
1 - 9 - ustawienia rozmiarów siatki (grid)
Delete - powiększenie widoku 2D
Insert - pomniejszenie widoku 2D
End - centrowanie widoku 3D
PPM (tam będe oznaczać prawy przycisk myszy) - menu entities na widoku 2D, na widoku 3D poruszanie się free camera (jak na specatorze w q3)
Alt + 0 - filter lights
Alt + 7 - filter clip
Alt + 6 - filter caulk
Alt + D - filter details
Alt + H - filter hints
Ctrl + Shift + T - filter triggers
Shift + C - Cap selection
(więcej filtrów w menu View/Filters)

Co jest co? - czyli krótkie wyjasnienie
Wielu poczatkujacym częsć tego textu może wydawać się niezrozumiała, postaram się wyjasnić tu maperskie zwroty, nazwy, i skróty, których niektórzy newbie nie rozumieja.

Brush - inaczej blok, bryła, to co tworzysz w radiancie
Entity - element mapy, bron, blok majacy okreslona funkcję (np. drzwi), triggery, targety.
Trigger - specjalna textura - entity, majaca okreslone własciwosci, dzięki niej stworzysz jumppad, teleport, i wiele, wiele innych...
LPM, PPM - zwroty oznaczajace kolejno lewy przycisk myszy i prawy przycisk myszy. Pisze na wszelki wypadek, nieraz mialam pytania co to
Grid - siatka, a także jednostka w radiancie (jak wcisniesz Q to zobaczysz rozmiary bloku).
Textura - to co pokrywa brush, obrazek w formacie jpg lub tga
Shader - skrypt nadajacy texturze okreslone własciwosci.
Kompilacja - proces 'tłumaczenia' textowego pliku map, na plik, który może zostać odczytany przez silnik q3.


PIERWSZY POKÓJ

Ok, konfigurację, podstawowe sprawy mamy za soba, czas teraz abys cos zbudował.

1. Klikinij LPM i przeciagnij myszka na widoku z góry, jakbys w paincie rysował prostokat (okno u góry po prawej), zobaczysz że pojawi ci się czerwony prostokat, a na widoku 3D bryła z niebiesko-czarna textura z napisem "Shader not found". To będzie podłoga na twojej pierwszej mapie. Brush (tak się mówi na te bryły - bloki) jest czerwony, to znaczy że jest zaznaczony.
2. Odznacz go używajac ESC.
3. Teraz na bocznej częsci tamtego brusha, zrób kolejny, jak pokazane na skreenie nr. 4, poniżej... Rozciagnij go, do góry, tak aby stworzył scianę.
Free Image Hosting at www.ImageShack.us

4. Nie odznaczaj go. Wcisnij spację, co spowoduję skopiowanie się go, wcisnij na nim przycisk myszy, i przenies go na przeciwna stronę podłogi, tak aby stworzył druga scianę.
5. Powtórz kroki 3 - 4, aby zrobić dwie pozostałe sciany.
6. Połóż sufit. Zrób brush wielksci podłogi, ale cienki, i przenies go tak aby stykał się ze scianami (screen nr. 5)
Free Image Hosting at www.ImageShack.us

7. Teraz czas na wstawienie pozycji startowej. Wcisnij na widoku 2D PPM, pojawi się alternatywne menu, najedz kursorem na info, nastepnie kliknij na info_player_start.

8. Pojawił się czerwony blok, ze strzałka na srodku. Przenies go aby był wewnatrz pokoju. Nie może być poza nim, ani wchodzić w scianę.
9. Mimo iż to tylko próbne pomieszczenie to wstaw też swiatło. Wcisnij PPM na widoku 2D, i wybierz light. Wartosć zostaw tę co jest czyli 300 i ustaw w srodku pomieszczenia.
10. Możesz znaznaczyć też sciany i podłogi i zmienić textue. Zaznaczasz używajać shitf + LPM. Teraz wejds w menu textures i wybierz np. gothic/gothic_block, Wcisnij T i wybierz texturę o nazwie 'killbock' (takie szare kamienne bloki).
11. Zapisz mapkęwciskajac przycisk z dyskietka na górze. Nadaj nazwę np. test.
12. Jesli zorbiłes wszystko jak trzeba możesz przystapić do kompilacji. W tym celu wejdz w menu BSP i wybierz opcję q3map2: BSP -meta -vis -light -fast -filter -super 2, tę co na skrinie poniżej:

13. Uruchom w q3. W w tym celu, po uruchomieniu opusc końsolę (~), i napisz /sv_pure 0, a następnie /map test.

Tak powinien wygadać efekt w q3:
Free Image Hosting at www.ImageShack.us

Tips
Zamiast budować pojedyńczo każda scianę, możesz zrobić jedna większa (szersza i wyższa bryłe) i wcisnac przycisk Hollow. Dalej postępować tak jak od punktu 7. Funkcja nie przydatna przy robieniu map, tworzy to tylko pusty w srodku szescian.


KOMPILACJA - CO TO?


Teraz wypada napisać cos o tym procesie, z którym często sa problemy. Otoż, kompilacja to nic innego jak przerabianie pliku map, który jest odczytywany przez radianta (możesz otworzyć notatnikiem, czy innym edytorem textu i zobaczyc co tam jest). To zwykły plik textowy, w którym sa napisane brushe, współrzędne bloków, textury, rozciaganie textur, entitiesy itd. Proces kompilacji przerabia ten plik na format który jest możliwy do odczytania przez quake, czyli *.bsp. Całosć procesu kompilacji może trwać długo. Samo przekompilowanie na BSP trwa zwykle kilka sekund, ale aby mapka była ładnie wykonana i gra byla plynna, niezbędne jest skompilowanie jej z parametrami -vis i -light.
Vis to częsć odpowiedzialna za liczenie brushy, przestrzeni między blokami. Tworza sie wtedy tak zwane portale vis - to one okresla jak mapka bedzie renderowana podczas gry. Czy bedzie malo fps, czy gra bedzie szybka i plynna. Bez kompilowania vis - caly level, nie wazne jak jest duzy - generuje sie caly na raz. Wiec jak mapka jest zrobiona z paru tysiecy brushy - mozna sobie wyobrazic jak bedzie chodzic.
Level po visie ma okreslone z gory ile bedzie sie renderowac z danego miejsca. Stoisz w jednym koncu mapki - to co jest dalej jest 'niewidoczne' - tworzenie drugiego konca mapki trwa w momencie zblizania sie do niego.
Mozna bez problemu zaobserwowac ten moment lookajac jakas mapke bez visu (sciagnac jakas z lvl, z konca) - i porownac sobie do jakis duzych ale szybko dzialajacych leveli co bardziej doswiadczonych mapperow. Jedyne co trzeba to uruchomic mapke na cheat mode - i w konsoli wpisac r_showtris 1. Calosc zostanie podzielona na polygony. Jedna scianka to 2 polygony, caly brush 12. Im wiecej polygonow widzianych na raz - tym level dziala gorzej. Po vis, za pomoca tej komendy widac dobrze ze nie renderuje sie np. to co jest za nastepnym zakretem.
Light jak nazwa wskazuje służy do kompilacji oswietlenia mapy. Kompilator musi wszystko dokładnie obliczyć, gdzie padnie cień po strzale z rakiety, gdzie będzie niebo rzucać swatło, w która stronę pada sun, itd.
Sa dwa rodzaje kompilatorów, standardowy, od id: q3map, jednak ma mało opcji, często sa na nim różnego rodzaju błędy. Drugi to stworzony przez Ydnara q3map2, aktualnie w wersji 2.5.15. Zassać go możesz z shaderlab.com.
Jesli chcesz tylko przetestować mapkę, nie zalecam robienia całej kompilacji BSP -meta -vis -light -fast -filter -super 2.
Na pojedyńczy test wystarczy dać sama opcję BSP -meta, która przerobi tylko na bsp. To już możesz zlookać w quaku.
Ewentualnie możesz zrobić light, aby zobaczyć jak oswieliles mapkę, na testowe to użyj po kompilacji BSP -meta, opcji -light -faster. Po co czekać na full light, skoro na -fast jest szybciej, a różnicy nie widać gołym okiem. Czasami jest problem tylko z np. poszarpanymi cieniami, itd.
Jesli już skończyłes mapkę to daj to o czym pisałam wyżej czyli: BSP -meta -vis -light -fast -filter -super 2.

Często jednak, z powodów błędów na mapie kompilacja nie przebiega prawidłowo, jesli wogóle przebiega do końca. Do najczęstszych utrapień maporobów należa leaki czyli dziury na mapie. Aby mapka skompilowała się poprawnie, musi być szczelna.
Jak zobaczyć że jest leak?
Przerywa kompilację, a od najbliższego entitiesu prowadzona jest długa, czerwona zakręcona linia, kończaca się w miejscu napotkaniej dziury. Jak naprawić? Wystarczy zamknać mapę. Poniższy obrazek przedstawia tę długa, czerwona... linie...
Free <br/> <br/>Image Hosting at www.ImageShack.us
Leak do tego powoduje znaczny spadek fps. Po pierwsze vis się nie skompiluje, a po drugie - bez vis, przez tę dziurę - wszystkie powierzchnie brushy, które normalnie powinny być nie widoczne - będa renderowane.

Tips
Jesli vis przebiega bardzo dlugo - mozesz sprobowac zrobic niektore elementy detalami. Zaznacz w tym celu brush, i z menu spod PPM wybierz 'Make detail'.
Pamietaj - detalami nie moga byc elementy konstrukcji mapy. Czyli - sciany, podlogi, sufity odgraniczajace wnetrze od przestrzeni, a takze scianki oddzielajace pomieszczenia. Bloki majace przypisane detail nie beda brane pod uwage podczas robienia portali w fazie vis.



TEXTUROWANIE

Pierwszy pokój masz juz za soba, jak widac nie jest to takie trudne - troche praktyki i bedzie coraz lepiej. No wiec zajmijmy się tematem tego textu - texturowaniem.
Jak poprzednio było - textury wybierasz z menu Textures, i dalej dowolny katalog. Wybierasz grupa, ktora Cie najbardziej interesuje (robisz mape gotycka - wybierz grupe gothic, jak base - grupa base, itd.).
Jak wcisniesz T i widzisz, ze dana textura ma biała ramkę, to znaczy że ma cos takiego jak shader (o tym dalej pisze), czyli jakies specjalne własciwosci, np. swiecenie, zabieranie damage, animacje, itd. Shader to najprosciej mowiac skrypt - ktory nadaje jakies szczegolne cechy texturze.
Aby zaznaczyć na pojedyńczym bloku dana texture wcisnij ctrl+shift+LPM. (więcej textur jak chcesz, to j.w. tylko nie puszczaj LPM, a przejedz po texturach które chcesz zaznaczyć).
Ok, znaznaczanie to nic trudnego, wiec teraz trochę o ustawieniu pozycji textury względem brusha.
Jak zaznaczyłes na bloku dana texturkę, to wcisnij S. Otworzy się takie okno*:
Free Image Hosting at www.ImageShack.us

Ponumerowałam aby osobno wyjasnić co do czego:
1. Pasek adresu, tu pojawia ci siędo jakiej textury ustawiasz własciwosci. Jak znasz dokładnie katalogi i nazwy texturek to możesz nawet wpisywać ręcznie.
2. Położenie vertical i horizontal. Nic innego jak przesunięcie względem brusha. To samo co na zaznaczonej texturze shift + kursor.
3. Rozciagnięcie. Texturę na bloku możesz dowolnie rozciagnać. Te pola własnie do tego służa. To samo co ctrl + kursor.
4. Rorate. Obrót o kat danej textury. Chyba więcej wyjasniać nie trzeba.
5. Opcje, ułatwiajace życie. Fit, rozciaga na cały brush texurę, dopasowuje. Cap sprawia że textura rozciagnięta jest jak na łuku. Natural przywraca do pierwotnej postaci. Set - ręczne ustawienie rozciagłosci.

Teraz nieco praktyki, czyli jak dopasować jedna texturę do drugiej... Przykładowo - masz dwa bloki. Jeden w texturze killblock, a drugi z przykładowo: gothic_block/xcurve_q3dm6. Teraz zobacz na screen niżej:
Free Image Hosting at www.ImageShack.us

Zapewne widzisz przesunięcie jednej z textur względem drugiej (jak nie - albo automatycznie dopasowalo sie poprawnie, albo z lekka niedowidzisz ;p). Aby wygladało ładnie musi być dopasowane, tak aby nie było widać gdzie się kończy jeden brush a zaczyna drugi. W tym celu zaznacz texturę gothic_block/xcurve_q3dm6. Następnie wcisnij S. Przy horizontal i vertical shift pojawiły się liczby.

Zapisz je sobie, albo zapamietaj. Wcisnij cancel w oknie. Zaznacz texture na drugim brushu - rowniez wcisnij S. Spisz lub zapamietaj liczby.

Teraz musisz ustawic te textury tak - aby w oby dwu oknach, w tych lukach byly te same wartosci. Przyjmij ze chcesz zrobic o takich wspolrzednych jak na brushu wyzej. Zaznacz wiec brush dolny, i tam - w H Shift wpisz 136 - a w V Shift 32. Wcisnij Done - powinno sie zapisac - teraz nawet jak sie ktos dobrze przyjrzy - bez odpowiednich komend w q3 nie zobaczy ze to sa 2 bloki.

Tips
Pamietaj o dopasowywaniu textur na blokach laczacych sie pod katem! Np. w rogach pomieszczen. Takie niedopasowanie - nawet drobne uznawane jest za blad graficzny.

Tips
Jak zauważyłes zapewne, w oknie S sa obok jeszcze pola z liczbami oraz przycisk Match grid. Pozwala on dopasować się przesuwania textur do ustawień siatki. Zmień grid na np. 1, w S wcisnij powyzszy button. Cyferki się zmienia, a ty spróbój przesunać zaznaczona texturę za pomoca shift + strzalka, jak widać 'przeskoki' sa o mniejsza liczbę jednostek.


* - w roznych wersjach radianta okno moze wygladac troche inaczej.

- A jak texturowac krzywe i luki?
- Jak dodac wlasne textury na mapke?


KRZYWE

Innowacja enginu q3 bylo wprowadzenie krzywych, czyli pospolitych luków, zaokragleń, itd. M.in. dzięki temu grafika q3 jest wspaniala, a silnik mimo iż ma niedlugo 4 lata, nadal należy do jednych z najlepszych.
Samo istnienie krzywych to nietylko efekt graficzny. Wczesniej do stworzenie luku potrzebowano ilestam brushy, które i tak wygladaly kanciasto, a teraz wystarczy jeden luk aby wszystko bylo ladnie wygladzone, już nie musza być katy 90 stopni, teraz moga być ladnie zaokraglone. Krzywe maja jedna glówna wadę, sa bardzo fps-ożerne.
Ok, koniec tego pisania, na co komu historia luków, lepiej przejsć do praktyki ich tworzenia na mapie...

1. Na sam poczatek zrob zwykly brush, dowolnych rozmiarów...
2. Wejdz w menu Curve - a następnie zależy jaki rodzaj luku chcesz zrobić Endcap (tworzy taki zagięty o 180 stopni), Bevel (zagięty o 90 stopni), lub Cylinder - walec.
3. Jak zauważyles brush zmienil się w, krzywa, pokryta z jednej strony textua, a z drugiej siatka.



4. Często się tak zdarza, że musisz obrócić luk/brusha. Na pasku masz kilka przycisków odpowiedzialnych za to:



Ok, obróciles jak chciales, teraz trzeba jakos wykończyć to.
5. Jak masz zaznaczony luk to wcisnij Ctrl + C. Pojawi się okienko w którym wybierasz rodzaj wykończenia. Dwa pierwsze sa do luku typu bevel, dwa następne do luku typu Endcap. Zaznacz to które ci odpowiada.



6. Teraz pojawily się przy luku wykończenia. Jak pewnie zauważyles textura na nich jest rozmyta i wyglada nieladnie.
7. Aby wygladala normalnie - zaznacz ja - wcisnij Ctrl+N, a jesli nadal nie pomoże wciskaj Ctrl+Shilt+N, dopóki się nie zrobi taka jak chcesz.
W ten sam sposób robisz i wykańczasz cylinders (komumny), dlatego nie widzę sensu omawiania ich osobno. Jesli widzisz tę siatkę, nie potej stronie co chcesz - nacisnij Ctrl+I - spowoduje zamienienie się stronami siatki z widoczna częscia.

Thicken
Jest taka ciekawostka, jak np. chcesz zrobić ladne wykończnie luku, tak jakby pogrubienie... Jak masz zanzaczona krzywa to wcisnij Ctrl + T (albo wejdz w menu curve/thicken). Pojawi ci się okienko w którym musisz wpisać grubsć luku, w jednostkach grid.


A tak oto wyglada efekt w radiancie:



Tips
W radiancie wszystkie luki z thicken, czy cap selection sa zaznaczone jako func_group. Jak wcisniesz shift + LPM to zaznaczy ci wybrana częsć, jak natomiast chcesz zaznaczyć cala grupę to jak masz zaznaczona jedna częsć wcisnij shift + A.

Jesli krzywa jest krzywa odgraniczajaca mapke od przestrzeni - aby skompilowala sie poprawnie musi miec pod spodem jakis staly brush (inaczej bedzie leak). Niby nie ma ograniczen z jakiej textury ma byc ten brush... ale, jesli zrobisz z innej niz caulk - powstanie niezbyt ladny efekt, o ktorym przeczytasz ponizej.


Wazne!
Zawsze jak robisz luk, jakis naroznik, czy sklepienie nad brama - brushe pod spodem musisz pokryc textura caulk. Look na ponizsze screeny.
Free Image Hosting at www.ImageShack.us


Widzisz takie cos, jakby nakladajace sie textury tych cegielek? W q3 to takie raz przeswituje ta, raz tamta spod spodu. To jeden z niepozadanych efektow...
Teraz zobacz dlaczego tak jest:


Pod krzywa jest blok z normalnej textury (cegielki) - a prawidlowo powinien byc blok z textury caulk (look nizej):


I oto efekt ocaulkowanego pod spodem luku - prawda ze wyglada lepiej bez przeswitu?
Free Image Hosting at www.ImageShack.us




STOŻEK, KOLEC

Jak w przypadku normalnego luku (opisane tu) - zrób dowlonych wymiarów brush. Na zaznaczonym wejdz w menu Curve - i tam opcja Cone.
Rozciagnij jak chcesz, masz cos w rodzaju stożka (taki jakby rozepchany stożek). Texturę na nim dopasowywujesz identycznie jak na innej krzywej. Ctrl+N, potem dopóki nie bedzie jak chcesz - Ctrl+Shift+N.
Kolec - też nie problem - ale tu juz niezbedna jest edycja punktow vertex. Na zaznaczonym stozku wcisnij V - ujrzysz takie oto punkty:



Teraz caly problem to odpowiednie przesuwanie tych punktów - nacisnij i przeciagnij najwyzej polozony vertex, tak aby wygladalo mniejwiecej tak...:

Free Image Hosting at www.ImageShack.us

... I masz ladnie zrobiony kolec.


TEXTUROWANIE KRZYWYCH

Texturowanie krzywych nie rozni sie wiele od texurowania zwyklych brushy (o texturowaniu zwyklych brushy mozesz przeczytac tu). Wiekszosc czynnosci robisz podobnie - zmieniaja sie tylko np. sposob zaznaczania czy klawisze wywolujace okno Surface Inspector.
Sproboje to omowic na przykladzie jakiegos luku.
Przykladowo mamy krzywa jak na screenie - i chcesz polozyc na nia texture gothic_block/xcurve_q3dm6.

Free Image Hosting at www.ImageShack.us

Zaznacz caly luk (shift+LPM) - nie da sie tutaj zaznaczyc pojedynczej scianki.
Jak w przypadku brusha wchodzisz w menu textures, wybierasz grupe gothic_block. W oknie spod T wybierasz interesujaca cie grafike.
Da sie zauwazyc, ze polozona textura jest brzydko porozciagana, poodwracana, itd. Teraz postaram sie wyjasnic jak doprowadzic wyglad takiej krzywej do normalnego stanu.
Ponownie zaznacz luk. Wcisnij shift + s. Ukaze Ci sie takie oto okienko - nie rozniace sie wiele od tego zwyklego surface inspector - o nazwie Patch Properties.
Free Image Hosting at www.ImageShack.us

Wszystkie wartosci X Y Z itd zostaw w spokoju. Interesowac powinny cie bardziej przyciski tuz nad Apply i Done oraz sama sekcja Textures (znaczenie tych horizontal shift, strech step jest identyczna jak w zwyklym Surface Inspector).
Aby luk wygladal normalnie, nie roznil sie rozciagnieciem textury od zwyklego brusha - wcisnij poprostu Natural. Nastepnie daj Done.
Nie odznaczaj luku. Zobacz jak wyglada - jak nadal jest cos nie tak wcisnij pare razy ctrl+shift+n - dopoki sie nie dopasuje tak jak chcesz.
Jesli textura jest odwrocona o 180 stopni - wcisnij shift+s i tam obroc za pomoca wartosci rorate step.
Jak wszystko wyszlo poprawnie - koncowy efekt powinien wygladac mniejwiecej tak:
Free Image Hosting at www.ImageShack.us



WŁASNE TEXTURY

Dodanie wlasnych textur...
Mozesz korzystac takze z wlasnych, badz sciagnietych z internetu pakow textur. Aby ich uzyc nalezy...
1. Textury musza byc w jakims katalogu, np. moje1
2. Caly ten katalog wrzuc do katalogu (jesli tam nie ma to utworz) - baseq3/textures.
3. Jesli do textur, w np. sciagnietym paku jest plik o rozszerzeniu shader - np. mojshader.shader - wrzuc go do katalogu baseq3/scripts.
4. W tym samym katalogu, poszukaj pliku shaderlist.txt - otworz to jakims zwyklym edytorem textu.
5. Na koncu dopisz linijke z nazwa tego pliku shader (bez rozszerzenia) - np. jak shader nazywal sie mojshader.shader to dopisz linijke mojshader.
6. Po skonczeniu mapki, nie zapomnij o dodaniu tych textur i shadera do paka - pk3. Ale o tym dalej...


BARDZIEJ SKOMPLIKOWANE KRZYWE

Organiczna kolumna (dm13like)
Na poczatek zrob walec. Na zaznaczonym dowolnej wielkosci brushu wybierz z menu Curve Cylinder.
Teraz - jak wyzej - czeka cie edycja vertex. Nie odznaczaj walca, wcisnij V. Znowu pojawily sie takie punkty:

Free Image Hosting at www.ImageShack.us

Uzywajac ctrl+lpm zaznacz wszystkie te posrodku powierzchni, tak, aby tylko te srodkowe podswietlily sie na niebiesko i wcisnij R - rorate:

Free Image Hosting at www.ImageShack.us

Teraz kliknij pare jednostek obok lewym przyciskiem myszy, i przeciagnij np. w dol - az bedzie widac, ze te niebieskie punkty obracaja sie.
Iloscia obrotow kontrolujesz to, jak cienka ma byc kolumna w srodkowej partii.


Wygieta rurka...
Jak zrobic zagieta o 90 stopni rure? Zrob kolumne (curve/cylinder), wcisnij V:
Free Image Hosting at www.ImageShack.us


Najpierw przykladowo pierwy z prawej punkt u gory, jak tu:

Free Image Hosting at www.ImageShack.us


Nastepnie przydalo by sie zmodyfikowac polozenie srodkowych, look:
Free Image Hosting at www.ImageShack.us


Teraz ostatni z gory... Mniejwiecej tak:
I nakoncu, pierwszy z lewej, w srodku...

Free Image Hosting at www.ImageShack.us


Jak sie przyjrzysz, to zauwazysz zolte linie... Aby krzywa byla wygieta rowno, to one musza byc pod katem prostym. Efekt koncowy:

Free Image Hosting at www.ImageShack.us


Jesli chcesz zrobic zakrzywiony tunel, postepujesz identycznie jak wyzej, tylko ze zamiast kolumny robisz endcap lub bevel.


Ladne okienko (pro-q3dm6, nad RA) ...
well ... Stworz blok wysokosci jakiej ma byc mniejwiecej twoje okienko - dla przykladu ... 16x16x256. Wejdz w menu curve -> more cylinders -> square cylinder...

Zrobilo ci sie takie cos, z czego jest wykonane okienko - tylko wyprostowane...
Twoim zadaniem teraz bedzie to odpowiednio wyedytowac ,aby nabralo to takiego ksztaltu, jaki chcesz miec. W tym celu najlatwiej teraz... Jak masz to to zaznaczone - wejdz ponownie w menu curve - wstaw sobie 2 rows (curve -> insert -> insert 2 rows).
Otrzymasz cos takiego:
Nadal jak masz zaznaczone, wcisnij V...


Free <br/> <br/>Image Hosting at www.ImageShack.us

Najtrudniejsza rzecz to tak poprzesuwac te punkty, ktore sie pojawily (vertexty), aby nabralo to takiego ksztaltu, jak chesz. Pierwsze od gory przesun tak:

Free <br/> <br/>Image Hosting at www.ImageShack.us

Jak widac, krzywa zbliza sie do tego, co chcesz osiagnac ... Nie odznaczaj - teraz kolej na edycje kolejnych punktow - ta druga linia od gory (przesuwajac sie, staraj sie zachowac taka sama odleglosc miedzy kazdym punktem, w ten sposob krzywa bedzie tak samo gruba w kazdym miejscu):

Free <br/> <br/>Image Hosting at www.ImageShack.us

Ostatnie, srodkowe (trzecie od gory) - lekko pochyl, aby jeszcze wysmuklic troche te krzywa .. Taki ladniejszy ksztalt nabierze jak przesuniesz kazdy punkt o jakas jedna kratke w prawo (w tym przypadku).

Free <br/> <br/>Image Hosting at www.ImageShack.us

Jedna polowke juz masz... Teraz aby bylo to okienko ... Wylacz edycje vertextow (2xesc) - zaznacz krzywa ... Wcisnij spacje - co spowoduje skopiowanie - odwroc ja - lustrzane odbicie wg osi x w tym przypadku. Zlacz je, dorob parapet ...

Teraz textura - w przypadku dm6 byla to textures/gothic_door/archpart9 - ta tez sobie wybierz - naloz ja na krzywa. Uzywajac ctrl+N - ustaw tak, aby dopasowala sie do krzywej (na jednej polowce wymagane bedzie odwrocenie o 180 stopni ... Zaznacz krzywa wcisnij shift+s - tam, przy rorate ... 4x strzalke przy tym - spowoduje obrot o tyle wlasnie stopni) - shift+kursory - ustaw to to jak chcesz...

Dorob parapet, zabudowe (ze zwyklych brushy mozesz, pare ukosnych, nie ma sensu znow meczyc sie z krzywymi, parapet i tyle..
Oczywiscie mozesz eksperymentowac z wlasnymi wymiarami, wlasne odleglosci itd - to tylko tak mniejwiecej jak osiagnac taki typ krzywej jak na dm6 - dosc prostym sposobem.
przyklad


WIELOKĄTNE BRUSHE

Nieraz zapewne widziałes na mapach konstrukcje nie wykonane z prostego bloku z katem stale równym 90 stopni. Zapewne nie raz widziałes ostrokatne bloki, wieloscienne brushe itd. Aby zrobić brush majacy podstawe trójkata, lub wielokata wiekszego niż czteroscienny, to na zaznaczonym bloku wejds w menu brush/X sides. Gdzie X oznacza ilosć scian brusha. Np. 3 sides stworzy ci trzyscienna bryłe, a 6 sides - szczescioscienna.
Możesz również wejsć w Arbitary sided, i wpisać dowolna wartosć.
Uwaga w wiekszymi wartosciami moga być problemy przy kompilacji. Nieradze używać wiecej niż 20 scian.
Natomiast w menu brush/primitives możesz stworzyć konstrukcje przypominajaca kule (sphere) lub stożek (cone). Wystarczy na zaznaocznym bloku wejsć w menu brush/primitives/ (cone lub sphere) i w okienku napisać liczbe scian. Tu również należy uważać - przy wiekszych ilosciach Radiant i kompilator moga nie wyrobić i pokazywać różne błedy. Nie możesz bloków wiecej niż 12 sciennych texturować textura z shaderem (biała ramka) - nie skompiluje ci sie wtedy light (MAX_TW_VERTS).
Zreszta odradzam z gory stosowanie Arbitarty sided - iD stworzylo cos takiego jak krzywe. Praca z nimi jest o wiele prostsza - nie ma przesuniec textur, problemow z kompilacja, itd., itd. ...


OBRACANIE BRYŁ

Zastanawiałes sie moze nieraz jak zrobić blok obrócony o 45 stopni. Niejest to skomplikowane. Wystarczy na zaznaczonym brushu wcisnać R. Blok na widoku 2D zrobi sie fioletowy. Możesz dowolnie go obrócić. A jak chcesz o dokładnie ustalony kats Wystarczy wiesć w menu selection/rorate. A nastepnie wybrać Arbitary roration, co spowoduje pojawienie sieokienka w którym wpisujesz odpowiednie wartosci obrotu dla poszczególnych osi. Jak chcesz obrócić według osi Y o 30 stopni, to w polu oznaczonym Y piszesz 30.

Możesz również zmienić pochyłosć scian, położenie poszczególnych końców. Na zaznaczonym brushu wscisnij E. Pojawia sie niebieskie punkty - spróbój je poprzenosić. Zobaczysz że zmieni sie pochyłosc danej sciany.
Jak natomiast na zaznaczonym bloku nacisniesz V to możesz edytować położenie punktów vertex. Jesli czytales powyzszy text o krzywych to edycja V nie jest zapewne ci obca. W rogach brusha pojawia sie zielone punkty - spróbój zmienić ich położenie. Możesz dzieki tym dwóm opcjom uzyskać różne, ciekawe kształty...


CLIPOWANIE

Pewnie zauważyłes że jak robisz cos na mapie, to zahaczasz się o każdy wystajacy element, nawet jesli ma 1 grid. Aby zlikwidować takie zaczepianie się, trzeba zastosować clipowanie.
Clip to nic innego jak blok z textury common/clip, który blokuje wybrany element, taki jak model gracza, amunicję, bota, itd. Samo clipowanie trudne niejest. Muszisz na wszystkie wystajace elementy wstawić clip i zrównać ze sciana.
Wyróżniamy kilka róznych clipów, ale najważniejsze to te:
Fullclip (common/fullclip) - blokuje wszystko, i gracza i amunicję, i bota.
Playerclip (common/clip) - blokuje tylko gracza.
Weaponclip (common/weapclip) - blokuje tylko amunicje.
Tak wyglada oclipowana sciana. Tam gdzie jest pomarańczowo - czerowna kratka - tam nie da się wejsć:



Teraz przykladowo - chcialbys oclipowac te lampke, poniewaz blokuje cie w grze.



Wejdz w menu textures, grupe common. Tam wybierz texture z napisem fullclip:



Nastepnie z tej textury zrob brusha - wysokosci calej sciany i szerokosci lampki:



Na zaznaczonym clipie wcisnij E - pojawia sie niebieskie punkty - egdes. Dwoma srodkowymi, z tylu wygnij blok na ksztalt trapezu:



Teraz model, zamiast zaczepiac sie o lampke, idac bedzie sie zeslizgiwal.

Tips
Nie przesadzaj z clipowaniem! Czesto wiele dziur, zakamarkow jest idealnych do trikow. Clipuj tylko to - co jest niezbedne i spowalnia gre!


KONSTRUKCJA SPIRALNYCH SCHODÓW

Zwykłe schody zrobić to żaden problem - co jednak, jeśli chciałbyś mieć na swojej mapie schody - na przykład takie jak tu:
screen
1. Najprościej zacząć tworząc taką, krzyżową konstrukcję:

Free Image Hosting at www.ImageShack.us


2. Niech poszczególne boki mają przykładowo wymiary - wysokość 16u, długość 192 i szerokość 32. Oczywiście wymiary możesz wybrać swoje.
3. Teraz, taka rada - oteksturuj to w tej fazie. No chyba, że... PóĽniej chcesz się 'bawić' w dopasowywanie kąta położenia textury, do bloku itd., itp.
4. Upewnij się, że masz zaznaczoną tę oto opcję - W GTK Radiant >1.4.0: menu Textures -> Texture lock -> Rorations (Shift+R).
W GTK Radiant 1.5 - menu Brush -> Texture Lock (Shift+T)

Free Image Hosting at www.ImageShack.us Free Image Hosting at www.ImageShack.us


5. Zaznacz górną część schodka (shift+ctrl+lpm na widoku 3d). Wybierz texturę na przykład gothic_floor/xstepborder5. Połóż ją na każdej z czterech brył. Teraz zaznacz drugą ściankę każdego schodka, która będzie widoczna. Nałóż na nią texturę na przykład: gothic_floor/xstepborder12. Ułóż tak, aby efekt był mniejwięcej taki: Jeśli nie wiesz jak ułożyć textury - odsyłam tu.

Free Image Hosting at www.ImageShack.us


6. Dzięki temu, teraz została tylko do stworzenia konstrukcja schodków. Zaznacz wszystkie cztery brushe, następnie skopiuj je (spacja), i przenieś tak, aby były o te 16 jednostek wyżej:

Free Image Hosting at www.ImageShack.us

7. Wciśnij R - schodki powinny na widoku 3d zmienić kolor z czerwonego na taki... różowo-fioletowy. Teraz korzystając z widoku 2d obróć je mniejwięcej tak:

Free Image Hosting at www.ImageShack.us

8. Odznacz Rorate poprzez ponownie wciśnięcie R (schody na widoku 2d muszą mieć kolor czerwony).
Powtórz czynność z 6 punktu. Skopiuj górną warstwę, podnieś o 16u do góry. Jak zrobisz to, znów wciśnij R i poraz kolejny obróć zaznaczoną całość.
9. Powtarzaj tę czynność z punktów 6 - 8 tak długo - jak wysokie chcesz mieć te schody. W moim przypadku zrobiłam coś takiego:

Free Image Hosting at www.ImageShack.us

10. Narazie nie przypomina to raczej schodów... Ale chwilkę... Odznacz teraz wszystko.
11. Zauważ, że jak patrzysz z góry to nadal masz tę konstrukcję krzyża - zaznacz wszystkie bloki, stykające się z jednym ramieniem tego.

Free Image Hosting at www.ImageShack.us

12. I przenieś do góry, tak aby stykały się z najwyższym punktem konstrukcji, którą miałeś przed tą czynnością:

Free Image Hosting at www.ImageShack.us

12. To samo powtórz, analogicznie dla kolejnych stopni pod kolejnymi ramionami początkowego krzyża, aż osiągniesz taki efekt:

Free Image Hosting at www.ImageShack.us

Tyle - prawda, że nie jest to tak trudne, na jakie wygląda?
Przykładowy plik Ľródłowy - do pobrania tu: link



OŚWIETLENIE

Ważna rzecza wpływajaca na wyglad mapy oraz jej 'klimat' jest oswietlenie. Sposobów oswietlania map w q3 jest sporo, choć do najważniejszych należy sposób wstawienia entity light i odpowiedniej textury. Czesto mozna spotkac mapy o ubogim texturowaniu, ale jednoczesnie bardzo ladnych - to wlasnie rola oswietelnia. To nie tylko, byle jakie wstawienie paru lampek - byle cos bylo widac. To bardzo wazna czesc tworzenia layoutu mapy... Zreszta, przejrzyj pare co lepszych leveli - przekonasz sie sam. Przejdzmy natomiast do praktyki:

Entity light
Jest to najprostszy sposób wstawiania swiatła.
1. Wcisnij PPM a nastepnie light.
2. Pojawi ci się okienko, w którym musisz napisać moc oswietlenia - domyslnie 300.
Jesli po wpisaniu danej warosci, dochodzisz do wniosku, ze chcesz ja zmienic - na zaznaczonym swietle wcisnij N - w polu key napisz light, a w value moc jaka chcesz uzyskac.

Pare zasad dobrego oswietlania
Rozmieszczenie a rozmiar pomieszczen

Jak zapewne zauważyłes (na wersjach radianta poniżej 1.2.11 tego nie ma) wokół swiatła sa pomocnicze kule (w widoku 2D okręgi). Ułatwiaja one prawidłowe rozmieszczenie swiateł. Ja zawsze sugeruję się tym, aby druga warstwa otoczki nie dotykała scian/podłogi/sufitu. Powstaje wtedy brzydki i nieporzadany efekt 'plam'.
A tu prawidowe rozmieszczenie swiateł, które nie tworza plam na scianach, sufitach, itd. Zapewne zauważyłes że w drugim przypadku swiateł jest mniej, maja większa moc (promień kuli oznacza moc, im dłuższy tym większa), i jest ich nieco mniej. W waskich korytarzach powinienes oswietlać swiatłami o mniejszych wartosciach ~50-150. Duże pomieszczenia - tu głównie zależy od wielkosći, ale ja zwykle daję swiatła o mocy ok. ~200-300, ale już rzadziej rozmieszczone, tak aby stykały się drugie otoczki entitiesa, a nie dotykały scian. Modele, takie jak torche, trzeba doswietlac recznie, tutaj natomiast nie ma przeciwskazan aby otoczka dotykala sciany - naturalniej wyglada, jak przy ogniu, za sciana masz takie odbicie.

Kolory

Kolorystyka swiatel musi pasowac do stylu. Nie polecam laczyc textury piekielnych z niebieskim swiatlem, czy base z czerwienia.
Do gotyku najlepiej pasuje pomaranczowe (nie jaksrawe), niebieskie (tylko do skyboxu nocnego), szare (tez nocny).
Do base najlepiej stosowac zolty, czasem niebieski, zalezy wszystko od textur. Jak textury sa jaskrawe - nie doswietlaj ich swiatlem o tym samym kolorze, bo nie chodzi o to aby mapa byla razaca, tylko aby dalo sie na niej grac. Przykladowo do jasno zoltej sciany nie dopasowywuj zoltych, czy bialych swiatel - musisz zneutralizowac nieco kolor, np. szarym, ale ciemnym swiatlem.
Neutralne textury, brazowe, szare, oswietlaj jak chcesz. Jak bedzie pasowac..
Wszystko zalezy jaki chcesz stworzyc na mapie klimat.
Pamietaj, ze zawsze jak oswietlasz, swiatlo nie moze brac sie znikad. Musi byc jakies zrodlo - lampki, pochodnie, czy niebo. To moze nie jest konieczne, ale wedlug mnie to dosc wazny element tworzenia layoutu mapy. Nie estetyczne jest jak amsz pomieszczenie, bez niczego, a calosc jest oswietlona.

Textura i shader

Wiele textur majacych tzw. biała ramkę wokoło lub poprostu shader ma własciwosci emitowania swiatła. Przykładem takich sa textury z grup sfx, gothic_light, base_light, skies, i niektóre liquids. Maja one napisany specjalny skrypt nazywany własnie shaderem. Jak te sktypty sa zbudowane, jak się je pisze nie będe omawiać w tym texcie, dla poczatkujacych i tak to jest skomplikowane, a w najbliższym czasie postaram się wydać kolejny artykół w kórym dokładnie omówie jak pisać, jak wogóle zajmować się tym.
Jak robisz blok z textury np. jakiejs z gothic_Light nie musisz już osobno wstawiać entity light. Specjalnie napisany skrypt wyemituje swiatło o okreslonej mocy, i kolorze. Aby tmoc i kolor zmienić zmień texturę (często masz kilka wersji kolorystycznych o różnych mocach). Ręczne edytowanie polega na zmianie odpowiednich parametrów w plik sripts/gothic_light.shader.

Skybox

Również niebo emituje swiatło. Jak masz arenę 'na powietrzu' to pojedyńcze entities light sa zbędne. Kierunek padania cienia, moc swiatła oraz kolor okreslane sa przy shaderze nieba jako sun czyli słońce. Odpowiednie parametry sa okreslajace moc, a także położenie sun (tym ustalasz gdzie pada cień), szybkosć przesuwania się textur (scroll), oraz możesz dobrać odpowiednie textury, oraz kilka innych funkcji.
Wyrozniamy dwa podstawowe typy nieba: statyczny, jakis widoczek w stylu terragen; oraz tzw. chmury - ruchome, bez 'dna'.
Jesli chcesz zrobic wlasne ruchome chmurki (zalozmy ze masz texture o nazwie mysky.tga nagrana do katalogu textures/skies)... Otworz edytor textu (notatnik czy cos czym mozesz edytowac ascii), i wpisz cos takiego (bez znaku komentarza //):

textures/skies/mysky
{
qer_editorimage textures/skies/mysky.tga
surfaceparm noimpact
surfaceparm nolightmap
q3map_sun .9 .9 1 70 65 78 // sun - tym parametrem ustalasz kolor, kat padania promieni slonecznych... edycja tego jest na wyczucie (zmieniasz, kompilujesz level, testujesz); lub za pomoca q3ase - masz wtedy takie polkole jako schemat nieba i tam ustawiasz polozenie slonca
q3map_surfacelight 60 //emitowana moc swiatla
skyparms - 512 -
{
map textures/skies/mysky.tga //pierwsza warstwa nieba*
tcMod scroll 0.02 0 //predkosc poruszania sie warstwy pierwszej
tcMod scale 1 1 //rozmiar textury pierwszej warstwy
depthWrite
}
{
map textures/skies/mysky.tga //druga warstwa nieba, mozesz dac inna texture, np. mysky1
blendFunc GL_ONE GL_ONE
tcMod scroll 0.02 0.01 //predkosc poruszania sie drugiej warstwy
tcMod scale 3 3 //rozmiar textury drugiej warstwy
}
}


A jesli o statyczny skybox z widoczkiem chodzi... Tu potrzebne jest 6 textur, kazda prezentujaca inna strone boxu.
Zalozmy ze masz zrobione terragenem te 6 plikow w katalogu env/myskybox (myskybox_up, myskybox_bk, myskybox_dn, myskybox_ft, myskybox_lf, myskybox_rt - wszystko tga) i jedna texture myskybox1.jpg w katalogu textures/skies.
Wypadalo by je teraz jakos zlozyc. W tym celu otworz notatnik i wpisz cos takiego:

textures/skies/myskybox
{
qer_editorimage textures/skies/myskybox1.jpg
surfaceparm noimpact
surfaceparm nolightmap
q3map_globaltexture
q3map_lightsubdivide 256
q3map_surfacelight 150 // tym parametrem regulujesz moc swiecenia
surfaceparm sky
q3map_sun 0.894 0.933 1.00 200 250 15 // tak jak w powyzszym przypadku, polozenie, kolor sun
skyparms env/myskybox/myskybox - -
}


Lawa i mgla

Podobnie rzecz się ma z mgla i lawa. Też sa tam wpisy okreslajace moc emitowanego swiatła (q3map_surfacelight xxx). Dzięki temu nie musisz wstawiać pojedyńczo swiateł, sam blok z textury powinien oswietlić częsć pomieszczenia.

Ale wszysko to odpowiednio liczy się do total light podczas kompilacji i nawet jesli masz tylko 40 entities to total light może wyniesć nawet kilkaset (lub nawet tysięcy w przypadku mapy otwartej).


* - Mozesz wybrac dwie textury, np. jedna z jasnymi chmurami, i druga z ciemnymi - wtedy bedzie taka 'przeplatanka' - raz bedzie widac jasne, chwile potem naplyna ciemne, itd..


ENTITIES

Jak już gdzies pisałam entities to wszystkie itemy, triggery, targety, a nawet bryła modelu postaci. Pod literš N masz menu, w którym możesz wpisywać paramery, wartości, wybierać entities, itd. Poniżej screen z którtkim opisem.

1. Komórka w której wybierasz sobie jaki entities wstawiasz.
2. Krótki opis, wraz z wszytkimi dostępnymi funkcjami.
3. Menu spawnflags - wybierasz właściwości oznaczone jako spawnflags.
4. Tu pojawiajš ci się wszystkie dopisane do elementu parametry
5. Pole Key - to w nim piszesz wszystkie ustawienia, funkcje, takie jak target, targetname, speed, itd. (wszystkie, które sš wymienione w opisie - punkt 2)
6. Pole Value - w nim piszesz wartość. Jak masz np. key: speed, to w value powinieneś wpisać prędkość jakš chcesz otrzymać.
7. Angle keys. Przyciski służšce do obracania modelu, oraz bryły gracza. Możesz również ręcznie pisać - w key: angle, a w value kšt.
8. Pomocnicze przyciski:
-Reset - reset wszytkich ustawień
-Up - przenosi danš komendę do góry.
-Dn - j.w. tylko w dół
-Del Key/Pair - kasuje zaznaczony parametr.
-Sound - dodaje dźwięk do entitiesa.
-Model - z danego elementu tworzy wybrany model.



JUMPPAD

Stworzenie jumppadu i teleportu oraz innych tego typu rzeczy na mapie nie jest trudne, jakby sie to mogło wydawać. Wszystko polega na odpowiednim, prawidłowym łaczeniu poszczególnych entities.

Jumppad
1. Najpierw wybierz texturę common/trigger. Zrób z niej brush.
2. Na widoku 2D, na zaznaczoym bloku wcisnij PPM/Trigger/trigger_push.
3. Odznacz. W pustym miejscu na widoku 2D kliknij PPM/target/target_position.
4. Odznacz
5. Teraz ważne: zaznacz kolejno triggera, następnie targeta. Wcisnij Ctrl + K.
6. Powinno połaczyć się zielona linia. Odznacz calosc.
7. Zaznacz target i przenies target w miejsce które chcesz dolecieć.
Jak w q3 naskoczysz na miejsce w którym jest trigger to automatycznie cię wyrzuci do góry. Pamiętaj: pozycja targeta oznacza położenie nóg modelu.

Tips: Zamiast target_position i trigger_push, możesz zrobić target_push, oraz trigger_multiple. Niby różnicy nie ma. Ale targetowi możesz wtedy przypisać parametr 'speed' oraz wartosć prędkosci po wybiciu (w ups).

- A jak zrobic teleport?


TELEPORT

1. Tak jak w przypadku jumppada: wybierz texturę common/trigger, następnie zrób z niej blok.
2. Na widoku 2D, na zaznaczoym bloku wcisnij tym razem PPM/Trigger/trigger_teleporter.
3. Odznacz. W pustym miejscu na widoku 2D kliknij PPM/misc/misc_teleporter_dest.
4. Odznacz.
5. Zaznacz kolejno triggera, następnie misc_teleporter_dest. Wcisnij Ctrl + K.
6. Powinno połaczyć się pomarańczowa linia. Odznacz, next zaznacz i przenies misc_telporter_dest w miejsce które chcesz być teleportowany.



FOG OF HELL

Fog of Hell - czyli pole smierci.

I sposób:
1. Jak w powyższych przypadkach, zrób blok z textury trigger.
2. Majac zaznaczony brush wcisnij PPM/trigger/trigger_hurt.
3. Teraz, nie odznaczaj, wcisnij N. W polu key napisz dmg, a w polu value, daj wartosć, czyli ile hp będzie ci zabierać po dotknięciu triggera przez jedna sekundę. 999 daje natychmiastowa smierć.

II sposób
1. Jak wyżej zrób blok z triggera.
2. Następnie wcisnij PPM/trigger/trigger_mutiple. 3. Odznacz. Wcisnij na widoku 2D PPM i wstaw target_kill.
4. Na zaznaczonym targecie wcisnij N, i jak wyżej parametrem dmg w key okresl ile hp ma ci zabierać po zetknięciu z triggerem.
5. Zamkinj okno entities. Odznacz. Zaznacz pokolei trigger_multiple i target_kill.
6. Wcisnij Ctrl + K. Połacza się linia.

Tips
Jak spadasz w otchłań na standardowych mapach id to nieraz słyszysz że po przeleceniu przez prewien obszar, wywołanie danego efektu dzwiękowego.
Odgłos spadania, wywoływany przez przescie przez odpowiedni fragment mapy nie jest trudno wykonać. Znowu polega to na łaczeniu triggera z odpowiednim targetem. Ok. przejdzmy do praktyki.
1. Zrób blok z textury trigger na cała szerokosć dołu z polem smierci.
2. Na zaznaczonym triggerze, na widoku 2D wcisnij PPM/trigger/trigger_multiple.
3. Odznacz. Stwórz target/target_speaker.
4. Majac go zaznaczonego wcisnij N. P wolu key napisz noise a w vaule *falling1.wav. Wprowadzona przez nazwę wav'a gwiadzka oznacza dopasowanie dzwięku do każdego modelu odpowiednio.
5. Odznacz to. Zaznacz pokolei triggera i targeta. Wcisnij Ctrl + K, co spowoduje połacznie się entitiesów.

Tips
Tak jak z efektami dzwiekowymi, czesto jest - ze jak gracz ma w danym momencie powerupa, to po zabiciu ten item spada na dno pola smierci. Tak raczej byc nie powinno. W tym celu nalezy zastosowac target_remove_powerups.
Czynnosci jakie musisz wykonac aby dodac ten target - sa identyczne jak w poprzednim przypadku. Wstawiasz trigger, przerabiasz z worldspawn na trigger_multiple. Po odznaczeniu dodajesz target/target_remove_powerups.
Zaznaczasz kolejno triggera, potem targeta i wciskasz Ctrl+K.


DŹWIĘKI O ODGŁOSY

Dzwiek spadania
Jak spadasz w otchłań na standardowych mapach id to nieraz słyszysz że po przeleceniu przez prewien obszar, wywołanie danego efektu dzwiękowego.
Odgłos spadania, wywoływany przez przescie przez odpowiedni fragment mapy nie jest trudno wykonać. Znowu polega to na łaczeniu triggera z odpowiednim targetem. Ok. przejdzmy do praktyki.
1. Zrób blok z textury trigger na cała szerokosć dołu z polem smierci.
2. Na zaznaczonym triggerze, na widoku 2D wcisnij PPM/trigger/trigger_multiple.
3. Odznacz. Stwórz target/target_speaker.
4. Majac go zaznaczonego wcisnij N. P wolu key napisz noise a w vaule *falling1.wav. Wprowadzona przez nazwę wav'a gwiadzka oznacza dopasowanie dzwięku do każdego modelu odpowiednio.
5. Odznacz to. Zaznacz pokolei triggera i targeta. Wcisnij Ctrl + K, co spowoduje połacznie się entitiesów.

Target speaker i jego wlasciwosci
Także w pobliżu pochodni możesz dać dzwięk, np. płonacego ognia. Tym razem wystarczy zrobić sam target_speaker, w polu key napisać noise, a w value, dać scieżkę do danego dzwięku (np. sound/world/firesoft.wav).

Jak jeszcze nie wylaczyles okienka Entities - w spawnflagsach widnieje cos takiego jak:
looped_on i looped_off - zaznaczenie tego sprawi, ze po uruchomieniu mapy, bedzie oddtwarzany dzwiek, bedzie on zapetlany (powtarzal sie w nieskonczonosc), po aktywacji triggerem. Badz bedzie zaczynal sie po starcie mapy, ale bedzie mogl zostac deaktywowany triggerem.
Przykladowo, wstaw target_speaker, i zaznacz w nim looped_on. Odznacz, wstaw gdzies blok z triggera i nadaj mu trigger_multiple.
Zaznacz kolejno triggera, potem targeta, i wcisnij Ctrl+K.
Po skompilowaniu, jak uruchomisz mapke... Po wdepnieciu w miejsce gdzie polozyles trigger, bedzie sie wlaczal dzwiek.
Jak bys dal looped_off, w takim samym polaczeniu, to po wdepnieciu we trigger, glos bedzie sie wylaczal
Spawnflag activator - glos bedzie slyszany tylko wtedy, jak bedzie aktywowany triggerem (jak polaczyc - czytaj wyzej, zaznaczasz tylko inny spawnflag). Wyjdziesz z miejsca gdzie jest trigger, dzwiek sie automatycznie wylaczy.
Natomiast global - dzwiek bedzie oddtwarzany na caly glos, bedziesz sie oddalal, bedzie slychac tak samo glosno, jakbys byl tuz przy zrodle.

Muzyka na mapie
Natomiast aby przez caly czas, na calej mapie bylo slychac muzyke - jakas sciezka dzwiekowa... Zaznacz dowolny brush worldspawn - wcisnij N - w polu key napisz music, a w polu value sciezke do muzyki.

Wlasne dzwieki...
Tak samo jak w przypadku textur, mozesz uzyc wlasnych efektow na mapie...
W tym celu, w katalogu baseq3 utworz katalog sounds, w nim mozesz dac jeszcze jakis podkatalog, np. mysounds - tam nagrywasz pliki wav.
Potem w radiancie do target_speakera w value podstawiasz wlasna sciezke, np. /sounds/mysonuds/jakisdzwiek.wav.

Natomiast dodawanie sciezki dzwiekowej... Odbywa sie identycznie, tylko ze wav'y wstawiasz do katalogu baseq3/music.


MODELE

Zauważyłes pewnie że pewne elementy mapy nie sa wykonane w radiancie, sa to modele.
Wstawianie ich jest proste, i co najważniejsze nie trzeba kombinować, tak jakby miało się robić dany element w radiancie. Tworzone sa głównie w Milkshape, i 3D studio max. Aby można było wstawić własny model na mapę musi mieć on format md3.
1. Na widoku 2D wcisnij PPM/Misc/Misc_model
2. Wybierz sobie jakikolwiek model z mapobjects, np. garagoyle.md3 (ten skamieniały Uriel)
3. Pojawił się model, otoczony pomarańczowa ramka. Zaznaczasz, odznaczasz go jak zwykłego brusha.
4. Jednak obracanie modelu jest inne niż obracanie zwykłego brusha. Wcisnij N. Teraz na dole okna masz przyciski angle - te 90, 180, 270 itd., wcisnij ten, z liczba która chcesz aby model się obrócił.
5. Zamknij okno. Przenies model gdzie chcesz.

Tips:
Model, po wstawieniu, jest takjakby przezroczysty, mozna przez niego strzelac, przechodzic... Aby uczynic go statycznym nalezy...
Wybierz z katalogu common texture clip (fullclip, playerclip).
Zrob blok wielkosci modelu, i wstaw, tak aby on byl wewnatrz.
Wszystko, po kompilacji, nie bedziesz juz mogl przenikac przez np. pochodnie.

Tylko nie przesadzaj, jesli model jest nisko, wstawienie clipow, moze spowodowac, ze latwo sie bedzie mozna zaczepic a co sie rowna zmniejszeniu plynnosci, dynamiki gry.

Wstawienie wlasnego modelu
Aby dodac wlasny model na mape.. Nagraj pliki md3, wraz z texturami dolaczonymi do modelu do katalogu baseq3/models/mapobjects.
Jesli byl plik o rozszerzeniu shader - wrzuc do katalogu baseq3/scripts.
Bedzie dzialac. Model wybierasz potem normalnie jak kazdy inny.
Nie zapomnij o dodaniu pliku md3, textur i shadera do niego do paka - jak bedziesz konczyl mape.


LOKACJE

Zawsze na mapkach TDM i CTF podczas gry gracze komunikuja się pomiędzy soba, często niezbędne jest do tego szybkie okreslenie położenia modelu innego zawodnika. A pisanie za każdym razem say_team "jestem w pobliżu RA", albo "Help at - jestem przy railu" było by bez sensu. Dlatego wprowadzono cos takiego jak skróty w q3, wystarczy zbindować sobie "Potrzebuje pomocy - #L" i jak wcisnięcie zbindowanego klawisza automatycznie wyswietli nam text, ze gracz potrzebuje pomocy, ale co wazne i położenie gracza. Ale aby cos takiego było możliwe niezbędne jest rozmieszczenie informacji na mapie o danej arenie czy miejscu. Do tego własnie stosowane sa target_location.
Wystarczy w danym miejscu mapy wstawić Target/target_location. Teraz, jak masz zaznaczonego targeta, wcisnij N. W polu key napisz msg, a w value napisz nazwę pomieszczenia, np. "Główna arena", "Pomieszczenie z RA", itd.
Wielu mapperow uważa dawanie tego za zbędne. Jednak zdecydoawnie ułatwia to komunikowanie się graczy na mapie, oraz sama grę. Zbedne moze jest na mapkach 1v1/eksperymentalnych - ale jesli tworzysz level tdm/ctf - nie mozna tak poprostu to pominac...


WSTAWIANIE ITEMÓW

Aby dodać przedmiot na mapie wcisnij ppm/ammo/xx (iksy oznaczaja dowolna amunicję) lub ppm/item/xxx (przedmioty typu quad, health), ppm/weapon (broń) albo ppm/holdable (teleporter i medkit). I tyle. Przedmiot sam się pojawi, i jesli niechcesz zmieniać np. czasu respawnu, czy ilosci amunicji, to już wszystko.
Jak chcesz zmienić czas spawnu itemu, to na zaznaczonym wcisnij N. W polu key napisz wait, a w value czas respawnu w sekundach.
Natomiast ilosc amunicji, punktów hp czy armora (lub sekund w przypadku powerupów), ustawiasz piszać w polu key count, a w value liczbę okreslajaca ammo, sekundy czy hp.

Respawn z itemem
1. Najpierw wstaw przedmiot np. rl
2. Stwórz teraz target_give (ppm/target/target_give).
3. Zaznacz teraz punkt spawnu na mapie (info_player start), potem target_give.
4. Wcisnij Ctrl+K - powinny polaczyc sie linia w kolorze targera (zielony).
5. Teraz zaznacz target_give, potem rakietnice.
6. Jak powyzej, wcisnij Ctrl+K. Linia powinna miec kolor ramki dookola rakiety, takie kolo rozowego.

Po kompilacji, uruchomieniu mapki, powinienes miec w rekach rl.
Jesli masz problem ze stworzeniem czegos takiego, prawdopodobnie mylisz kolejnosc zaznaczania. W razie problemow, sciagnij ten przykladowy plik.

Przedmioty pojawiajace sie w tym samym miejscu losowo
Chcesz aby pzedmioty się pojawiały w tym samym miejscu (tak jak na q3tourney1)? Zrób dwa przedmioty, np. quad i haste i ustaw jest tak aby pokrywały się ze soba. Zaznacz oba i wcisnij N. Teraz w key napisz team, a w value, np. powerups1. W taki sam sposób możesz zrobić więcej itemów respawnowanych losowo.

Pole give - dm10
Pewnie nieraz zastanawiałes się jak zrobić cos takiego, co po wejsciu w okreslone miesce daje np. 5hp? Cos takiego zastosowano na mapie q3dm10. Jest z tym trochę kombinacji, ale nie jest aż takie trudne.
1. Najpierw zrób blok z trigera. Daj mu PPM/trigger/trigger_multiple. Blok ma obejmować obszar w którym będzie ci przybywać hp.
2. Zrób target/target_delay.
3. Zaznacz pokolei triggera potem targeta. Nacisnij Ctrl + K. Odznacz wszystko.
4. Na widoku 2D wcisnij PPM i wstaw target_give.
5. Teraz musisz połaczyć dwa targety ze soba. Zaznacz najpierw target_delay, a dopiero pózniej target_give. Jesli połacza się linia - odznacz.
6. Wstaw na mapę itemy które chcesz otrzymywać, poprzez aktywacja triggera. Np. 5hp i shardy.
7. Zaznacz najpierw target_give, a następnie jeden z itemów, obojętnie który. Odznacz, teraz zaznacz ponownie target_give, i drugi z itemów. Powinny połaczyć się wszystkie tak jak na screenie.
Czas jaki np. musisz stać w triggerze okreslasz parametrami w key wait, przy target_delay. Ilosć dostanego itemu okreslasz parametrem count, ale już osobno przy każdym z przedmiotów. Jesli masz problem ze stworzeniem takiej konstrukcji sciagnij ten plik.

Remove_poverups, czyli odbieranie itemow Czesto przy kosmicznych mapkach jest niezbedne aby upuszczony item, nie spadal w otchłan, albo po przejsciu przez dane miejsce, na mapce defragowej odebralo speed/bs or sth. Aby stworzyc cos takiego...
1. Zrób blok z triggera, daj mu classname PPM/Trigger/Trigger_multiple.
2. Stwórz target_remove_powerups.
3. Odznacz. Zaznacz kolejno triggera, potem targeta, wcisnij Ctrl+K. Powinny połaczyć się linia...

Tips
Jesli robisz mapkę typu platform i niechcesz aby przedmioty spadały zaraz po respawnie to wcisnij 'suspened' na menu spawnflags (okienko entity - N), albo w key napisz spawnflags i w value 1.


DRZWI


Samo zrobienie drzwi nie jest trudne, wystarczy dać odpowiednie wartosci w odpowiednich miejscach..

Drzwi jednoskrzydłowe
1. Zrób blok, z dowolnej textury (choć jak drzwi to możesz z base_door/gothic_door).
2. Na zaznaczonym blku nacisnij PPM i wejdz w func/func_door.
3. Nie odznaczaj. Wcisnij N. Teraz musisz ustalić kierunek w którym te drzwi będa się otwierać. Zależne od położenia wcisnij odpowiedni przycisk Angle - 90, 180, 270, 360. (patrz wyżej).

Drzwi dwuskrzydłowe
1. Tym razem zrób dwa brushe. To będa dwie połówki.
2. Na zaznaczonych daj funkcję func_door.
3. Teraz zaznacz jedna połówkę, wcisnij N. W daj jej angle np. 90 (pamiętaj to czy będzie 890 czy 180 zależy od położenia drzwi), wcisnij Ok. Tak samo z druga połówka - zaznacz, i we własciwosciach entities daj angle ale tym razem 270 (Pamiętaj, wartosci angle w obu połówkach musza być przeciwne, jak masz 90 to druga 270, jak pierwsza 180 to druga 360, itd.)
4. Własciwie dzwi sa gotowe, ale pewnie zauważyłes że połówki nie otwieraja się równoczesnie. Aby wygladało ładnie, zaznacz oba skrzydła, następnie przycisnij N. W polu key napisz team, i w value jakakolwiek wartosć, np. lol. Teraz powinny się otwierać i zamykać równoczesnie.

We własciwosciach możesz zmienić wartosci czasu otwarcia, prędkosci przy drzwiach... Jak zmieniasz prędkosć to w polu key napisz speed, w value wartosć w ups. Natomiast czas otwarcia ustalasz parametrem wait. Parametr lip oznacza ile jednostek z brusha drzwi bedzie widocznych, po otwarciu, ile sie nie schowa.

Drzwi otwierane strzalem
Te robisz tak samo jak zwykle jedno- czy dwu- skrzydlowe drzwi. Tylko... Zaznacz cale func_door, wcisnij N.
W polu key napisz health - w polu value, wartosc ile 'hp' trzeba zabrac, aby sie otworzyly. Przykladowo 1. Jak dasz 1 - otworzy sie po strzale z kazdej broni. Zas danie wartosci 100 - drzwi otworza sie tylko po strzale z broni, ktora zabiera 100hp - rl, rail or sth.

Tips
Aby zrobić drzwi otwierane w górę lub dół to zamiast angle 90, 180, itd. daj wartosć -1, lub -2. Gdzie:
-1 - w górę
-2 - w dół


Drzwi otwierane buttonem
W poprzenim fragmencie było jak zrobić drzwi. Teraz napiszę jak zrobić aby otwierały się po nacisnięciu przycisku.
1. Zrób drzwi (jak je zrobić jest wyżej).
2. Zrób brusha, najlepiej niewielkego, który będzie przyciskiem, wcisnij PPM/func/func_button
3. Zaznacz teraz button a następnie drzwi (jak dwuskrzydłowe to obie połówki), a następnie Ctrl+K. Pamiętaj o kolejnosci zaznaczania.
4. Jesli połacza się błękitna linia to wszystko jest ok.


WINDA


Winda mimo iż ma niewiele wspólnego z drzwiami też korzysta z func_door... Oto jak zrobić windę w praktyce.
1. Najpierw stwórz brusha. Teraz musisz zrobić długi (na jaka wysokosć będzie się wysuwać twoja winda) brush. Miejwięcej jak na obrazku:



2. Potem, majac zaznaczona i windę i ten podluzny brush - PPM/Func/Func_door. Teraz na zaznaczonych brush'ach wcisnij N i wpisz w key i value:
angle - -1 (Jesli ma jechać w górę, bo jak nie to wybierz wartosć z klawiszy, lub -2 jesli ma zjeżdżać w dół)
spawnflags - 4
targetname - np. Winda1
wait - np. 3 (oczekiwanie, aż winda zjedzie w sekundach)
3. Teraz nad winda należy stworzyć 'triggera', a następne PPM/Trigger/Trigger_multiple.
4. Teraz wystarczy wcisnać N i w key wpisać: Target, a w value Winda1 - te sama wartosc, jaka byla w przypadku targetname w windzie. Trigger z winda powinien się połaczyć jasno niebieska linia.
Zasada działania windy jest prosta. Po zetknięciu z triggerem winda zaczyna poruszać się do góry.


LUSTRO


1. Wybierz z menu textures, z kategorii common texture o nazwie mirror.
2. Zrob z niej brush.
3. Odznacz.
4. Na widoku 2d wcisnij ppm. Z menu wybierz misc/misc_portal_surface.
5. Przenies tak, aby bylo na srodku brusha z lustrem, okolo 4-8 jednostek przed (nie zaszkodzi jak bedzie sie tez stykac).
6. Wszystko. Po kompilacji lustro powinno dzialac.

Warning: Nie przesadzaj z lustrami, czy portalami. Postawienie mirror tak aby odbijalo miejsce z duza iloscia detali jest jednym z najgorszych posuniec mapperow.
Licznik fps drastycznie spada... Dzieje sie tak dlatego, ze odbijany, wyswietlany obraz nie jest plaska textura, tylko po przeciwnej stronie generuje sie kopia tego co jest przed lustrem. Czyli widocznych jest 2x wiecej polygonow.

- A jak wykonac portal z kamera? (dm7 like)


PORTAL Z KAMERA


A teraz, sproboje wyjasnic jak zrobic cos na styl lustra - przez ktore bedzie widac obraz z odleglego punktu na mapie.
1. Zrob najpierw blok z textury. Najlepiej sfx/portal_sfx
2. Odznacz.
3. Wstaw ten sam entity co w poprzednim przypadku misc_portal_surface
4. Tym razem jednak to nie koniec... Wstaw w miejscu, ktore ma byc pokazywane entity misc/misc_portal_camera.
5. Kolejna czynnosc jaka powinienes wykonac - polaczyc te entitiesy. W tym celu zaznacz najpierw misc_portal_surface, potem misc_portal_camera. Wcisnij ctrl+K
6. To jednak nie wszystko. Teraz trzeba okreslic miejsce ktore bedzie wyswietlane. Obok misc_portal_camera stworz target_position. 7. Zaznacz kolejno misc_portal_camera, potem targeta - wcisnij ctrl+K. Zaznacz targeta, i skieruj go w miejsce ktore ma byc widoczne.

Warning: Nie przesadzaj z lustrami, czy portalami. Postawienie mirror tak aby odbijalo miejsce z duza iloscia detali jest jednym z najgorszych posuniec mapperow.
Licznik fps drastycznie spada... Dzieje sie tak dlatego, ze odbijany, wyswietlany obraz nie jest plaska textura, tylko po przeciwnej stronie generuje sie kopia tego co jest przed lustrem. Czyli widocznych jest 2x wiecej polygonow.

Warning: W przypadku kilku portali z kamera moze pojawic sie problem, ze nie beda pokazywac tego co powinny... Ograniczenie silnika pozwala na zrobienie jednego portalu w jednej osi... Albo obroc inny, przestaw na inna sciane... Albo zrezygnuj.


PODSTAWY ŁĄCZENIA ENTITIES


W ktoryms textcie juz wspomnialam... Zreszta nie w jednym, przewija sie to juz caly czas...
Jak aktywowac co kolwiek za pomoca buttona, czy triggera... Trudno dac tu jeden przyklad, bo polaczen moze byc wiele. Trigger z drzwiami, z winda, z jumppadem, teleportem, shooterem itd., itd.
To samo jesli chodzi o button. Jego wcisniecie moze aktywowac wiekszosc func'y, targetow or sth.

Opisywanie polaczen wszystkiego, hm... wszystko jest analogiczne, wystarczy podstawic inny przedmiot, wiec... dam tylko pare przykladow i wskazowek.

Drzwi otwierajace sie po przejsciu przez trigger
1. Zrob zwykle jedno/dwuskrzydlowe drzwi (jak nie wiesz w jaki sposob - odsylam tutaj).
2. Zrob w miejscu, w ktore trzeba bedzie wejsc aby otworzyly sie drzwi, trigger_multiple. Blok z textury trigger, i nadaj mu wlasciwosc trigger_multiple.
3. Teraz zaznacz kolejno trigger i drzwi. Wcisnij ctrl+k


Drzwi otwierane buttonem
1. Zrób drzwi.
2. Zrób brusha, najlepiej niewielkego, który będzie przyciskiem, wcisnij PPM/func/func_button
3. Zaznacz teraz button a następnie drzwi (jak dwuskrzydłowe to obie połówki), a następnie Ctrl+K. Pamiętaj o kolejnosci zaznaczania.
4. Jesli połacza się błękitna linia to wszystko jest ok.


Hmm.. Niewiem czy zauwazyles - w kazdym przypadku aktywacji triggerem pierwszy nalezy zaznaczac trigger (multiple, teleport, push, itd).
Chcesz miec drzwi otwierane triggerem - pierwszy trigger, potem func_door.
Jumppad - pierwszy trigger, potem target.
Shooter - pierwszy trigger, potem odpowiednie targety.

To samo jest jesli chodzi o func_button. Na ten func mieliscie okazje sie natknac przy czytaniu textu o wstawianiu drzwi na mape.
Tak jak w powyzszym przypadku...
Laczysz drzwi z buttonem - pierwszy zaznaczasz button.
Laczysz shooter z buttonem - pierwszy button.

Jak sie przyjrzysz to da sie zauwazyc cos na stylu ciagu przyczynowo-skutkowego:
Wciskasz przycisk/ wchodzisz w trigger -> otwieraja sie drzwi/zamykaja/winda wjezdza na gore/ze sciany wylatuje granat/wybija cie w strone targeta/ itd...


SHOOTERY

Pojedynczy, prosty shooter
Zastanawialiscie sie moze kiedys jak zrobic shooter - strzelajace ze scian granaty (dm11), rakiety czy plasme? Jest to mozliwe - nie jest nawet dosc skomplikowane do zrobienia. Fakt ze nie jest to takie latwe jak jumppad, konstrukcja tego zawiera troche wiecej entitiesow... Ale nawet poczatkujacy mapperzy powinni sobie poradzic - calosc polega tylko na odpowiedniej kolejnosci laczenia t_delay, relay, i shooterow...

Zacznijmy od wstawienia shootera - przykladowo, chcemy aby byla to rakieta (analogicznie wstawiasz granat i plasme). Prawym przyciskiem na widoku 2d i wybieramy shooter/shooter_rocket.
Odznacz. Teraz zainteresowac cie powinien nieznany do tej pory target o nazwie delay - wstaw go, niewazne w jakim miejscu, byle byl wewnatrz konstrukcji.
Zaznacz teraz kolejno target_delay, potem shooter_rocket. Polacz uzywajac Ctrl+K.
Odznacz polaczona konstrukcję. Kolejna wazna sprawa - wstawienie target_relay.
Odznacz.
Zacznacz kolejno target_relay, potem target_delay. Ctrk+K.
Teoretycznie koniec - ale przydało by sie nadac rakiecie jakis kierunek.
Wstaw target_position w miejscu, do którego ma doleciec rakieta. Zaznacz koleno: shooter, potem t_position i wcisnij ctrl+K.
Takze wazna rzecza jest tzw. aktywator. Np. przechodzisz przez jakies pole, co powoduje wystrzelenie rakiet, lub wcisniecie buttona. Tu omowie aktywacje triggerem, analogicznie robisz jak chcesz miec buttonem.
Wiec... wstaw trigger, ustaw mu trigger_multiple. Zaznacz kolejno trigger, potem target_delay. Wcisnij ctrl+K.

I w taki to oto, nieskomplikowany sposób otrzymalismy samowystrzeliwujaca sie rakiete. Jednyna trudnosc polega na laczeniu - bardzo latwo sie pomylic w zaznaczaniu, i cala konstrukcja wtedy nie nada sie do niczego.

I shooter z kilku rakiet
A jak chcesz zrobic z kilku rakiet...
Postepujesz podobnie - najpierw zrob tak jak do pojedynczego shootera. Next - zaznacz shooter i target_delay. Wcisnij spację, aby skopiowac. Ustaw nowo powstały shooter w miejscu, z ktorego ma wylatywac rakieta... Koniec.

Dla wszystkich co maja problem ze stworzeniem tego typu konstrukcji mam przykladowy plik: przyklad.


OBRACAJĄCE SIĘ KONSTRUKCJE

Chcialbys miec np. bardziej zlozony wiatrak niz jakas textura z shaderem z sfx? Nie jest to wcale takie trudne do zrobienia... Zaczynajac od podstaw (w dalszej czesci textu bedzie bardziej skomplikowana konstrukcja).
1. Wstaw zwykły brush na mape - rozmiar dowolny - dla przykładu niech bedzie 128x128.
2. Zaznacz to, wcisnij PPM i z menu wybierz func->func_rorating.

Teoretycznie to wszystko. Teoretycznie... Po kompilacji owy blok bedzie sie obracał według osi Z - równolegle do podłogi/sufitu. Jednak...
Srodek obrotu jest ... umiejscowiony na jednym z rogów tego bloku...

3. Aby sprawic, aby kreciło sie to wedlug własnej osi... Odznacz konstrukcje. Wybierz z menu textures/common/ texture o nazwie orgin.
4. Zrób z tego mały blok, np. 8x8 u, ustaw go dokładnie w srodku elementu, który chcesz aby sie obracał... Niech wystaje troche ponad ten element... Tak jak na ponizszym screenie.

Free <br/> <br/>Image Hosting at www.ImageShack.us


5. Zaznacz teraz oba bloki, func_rorating i orgin - prawy przycisk myszy na widoku 2d, wybierz func_rorating.
Możesz skompilowac, sprawdzic... Powinno działac, kładka bedzie obracac sie dookola wlasnej osi.

Tips: Aby zmienic os obracania sie obiektu... Zaznacz go - wcisnij N. Powinienes dostrzec zaraz pod opisem dwa checkboxy - x axis i y axis.
Ustaw konstrukcje na jednej ze scian i wybierz y axis. Element bedzie sie obracal rownolegle do sciany.
Mozesz takze ustawic np. szybkosc obracania sie. Po zaznaczeniu, wcisnieciu N - w polu key wpisz speed - w value wartosc - np. 500... Blok bedzie sie wtedy obracal 500u/s.

To jest najprostsza konstrukcja jaka można zrobic za pomoca func rorating... Analogicznie należy postepowac, jak chcesz zrobic cos na wzor wiatraka... (Dla przykladu, taki prymitywny, 4 skrzydlowy..)
1. Pierwsze co nalezaloby wykonac - konstruckja elementu... Tu juz musisz dzialac sam... Zlep kilka brushy np. na ten wzor:

Free <br/> <br/>Image Hosting at www.ImageShack.us


2. Teraz postepujemy identycznie jak w przypadku pierwszym... Wstaw texture common/orgin - w srodek konstrukcji.
3. Zaznacz calosc, wraz z orginem. PPM na widoku 2d.. Func->func_rorating.
4. Jak wiatrak ma byc na suficie... Dla przykladu na suficie.. - nie zmieniaj nic z osia obrotu.

Skompiluj - i juz masz ladny, obracajacy sie wiatrak... Jedyna wada jest brak rzucanych cieni - jednak poza statycznym, okropnie wygladajacym cieniem (ktory uzyskujesz po wpisaniu klucza _cs i wartosci 1 w menu spod N) - nie da sie nic zrobic.

Tu masz przykładowy plik map i bsp z wyżej opisanymi konstrukcjami.






FUNC_TRAIN - BRYŁA O DOWOLNYM TORZE PORUSZANIA SIĘ


QUake 3 posiada jeszcze jedną ciekawą funkcję, pozwalającą dowolnie ustawić ścieżkę dla poruszającej sie bryły. Nie takie proste jak np. góra-dół czy podobne według osi x i z. Możesz np. zrobić trójkątną czy bardziej zaawansowany tor dla brusha.
Tak pokrótce można przedstawić zastosowanie func_train.

To tyle na wstęp, bardziej zainteresować powinno - jak zrobić ten func_train?



1. Zacznijmy od zwykłego brusha, nie ważne jaką położysz na niego texturę, może być to gothic_block/killblock.

2. W srodku tego brusha zrob inny, mniejszy, moze byc przykladowo 8x8x8, poloz na niego texture common/orgin. Umiesc go dokladnie w centrum brusha, ktory ma sie poruszac.

3. zaznacz właściwy blok, mający się poruszać i orgin, wciśnij prawy klawisz, następnie wybierz z menu kontekstowego func/func_train. To jest bryła, którą teraz przykładowo skonfigurujemy tak, aby poruszała się po kwadratowym torze.

Jeśli to jest jeden brush - ok. Możesz również zrobić jakąś bardziej skomplikowaną konstrukcję - wtedy, przed ustawieniem func_train upewnij się, że zaznaczyłeś wszystkie brushe.

4. Odznacz tę konstrukcję.

5. Wstaw na mapę entity zwany path_corner. Odznacz.

6. Zaznacz kolejno func_train i path_corner - wciśnij CTRL+K.

7. Kolejną czynnością teraz, jak robimy kwadratowy tor ruchu - wstaw kolejny path_corner. Odznacz go.

8. Zaznacz ten pierwszy co wstawiłeś, następnie drugi. Połącz je poprzez CTRL+K.

9. Analogicznie kolejny path_corner. Zaznacz poprzedni, dalej nowowstawiony - CTRL+K.

10. Kwadrat... Ostatni więc path_corner - postąp z nim tak samo jak z poprzednimi.

11. Ostatni path_corner jaki wstawiłeś... Zaznacz go, następnie zaznacz pierwszy wstawiony na mapę path_corner... Ctrl+K - aby kwadrat był zamknięty. Tak mniejwięcej powinno to wyglądać.


Free Image Hosting at www.ImageShack.us



Dowolnie manipulując path_cornerami - modyfikujesz tor ruchu. Aby zmienić prędkość poruszania się bryły - zaznacz func_train - wciśnij N - w polu key teraz wpisz speed - w value wartość prędkości poruszania się.



Parę jeszcze uwag od twórców silnika. Konstrukcje oparte na trainie nie zadają dmg podczas kontaktu z graczem. Także nie zablokujesz poruszania się bryły jak staniesz przed nią - ona poprostu przesunie model gracza.

Inny problem jaki istnieje - nie ma tego, że aktywujesz train poprzez przejście przez jakiś trigger czy poprzez zebranie itemu, itd. Train zawsze startuje przy starcie mapy.

W razie jakichkolwiek problemów - tu zamieszczam przykładowy plik.





WŁASNE TEXTURY, MODELE, DŹWIĘKI

Juz o tym wspominalam w poszczegolnych dzialach... Tu wszystko podsumowane, w jednym textcie:

Textury
Zassałes texturepak i niewiesz jak go zainstalować? Wystarczy w katalogu baseq3 stworz katalog textures. Nagraj tam zawartosć katalogu, czyli np. moje_textury. W srodku powinny znajdować się własciwe pliki jpg lub tga. Teraz w menu textures pojawi ci się kategoria o nawie moje_textury.

Shadery
Tu sprawa też nie jest zbyt skomplikowana. Pliki *.shader nagraj do katalogu scripts. Następnie otwórz plik shaderlist.txt dowolnym edytorem textu, i na samym końcu dopisz nazwę shaderów które nagrałes (bez rozszerzenia). Czyli jak skrypt nosił nazwętest.shader to na końcu napisz tylko test.

Model
Z tymi jest chyba najłatwiej. Jak sciagłes dowolny model, to katalog z nim nagraj do katalogu baseq3/models/mapobjcts. Nie powinno być żadnych kłopotów z tym, jak nagrałes dobrze to w oknie misc_model wyswietli się nazwa katalogu w którym jest sam plik md3.

Wlasne dzwieki...
Tak samo jak w przypadku textur, mozesz uzyc wlasnych efektow na mapie...
W tym celu, w katalogu baseq3 utworz katalog sounds, w nim mozesz dac jeszcze jakis podkatalog, np. mysounds - tam nagrywasz pliki wav.
Potem w radiancie do target_speakera w value podstawiasz wlasna sciezke, np. /sounds/mysonuds/jakisdzwiek.wav.
Natomiast dodawanie sciezki dzwiekowej... Odbywa sie identycznie, tylko ze wav'y wstawiasz do katalogu baseq3/music.


AAS - CZYLI O DODANIU BOTÓW

Boty... wielu osobom sprawia problem zrobienie pliku dzięki któremu można grać z botem. Ale wcale niejest to skomplikowanie.
1. Nagraj plik twoja_mapa.bsp do katalogu quake3
adiant (tam gdzie leży plik bspc.exe). 2. W pasu adresu na górze dopisz:
.../bspc.exe -bsp2aas twoja_mapka.bsp c:
3. Jak wszystko zrobiłeś dorze powinien zaczšć przeliczać brushe, a po kilkunastu sekundach powinieneś otrzymać plik aas.


DEKOMPILACJA

W jednym z nowszych kompilatorów q3map2, Ydnar, ich autor wprowadził funkcję, dzięki której można poprawnie, i praktycznie bezbłędnie zdekompilować mapę. Efektem ubocznym beda przesuniete textury, brak modeli, oraz na niektorych dekompilowanych mapach - brak swiatla. Co jak co, efekt i tak jest lepszy niż dekompilacja starym bspc...
1. Nagraj plik *.bsp do katalogu z Radiantem, tam gdzie jest komplator (domyślnie Program Files/Gtk Radiant X.X.XX - iksy to nr. wersji).
2. W pasku adresu na górze dopisz:
.../q3map2.exe -convert -format map nazwa_mapy.bsp
3. Powinno wyliczyć shadery, a nastepnie zapisać w tym samym katalogu plik nazwa_mapy_conversion.map.


ARENA SKRYPT - JAK DODAĆ MAPĘ DO MENU

Otwórz notatnik w windows'ie, lub jakikolwiek edytor textu.
Piszesz cos takiego:

{
map "nazwa_twojej mapy" //nazwa twojej mapki
bots "klesk sarge anarki" //boty, wymieniasz po spacji
fraglimit 20 // limit fragów
type "ffa tourney tdm ctf single" // tryb gry
}

3. Zapisujesz plik, jako nazwę daj nazwę twojej mapki, a zmien rozszerzenie na *.arena (jak niewiesz jak zmienić rozszerzenie, przeczytaj ostatni punkt tutorialu).
Teraz plik powinienes umiescic w katalogu baseq3/scripts. Jak robisz pak (pk3) dodajesz tam ten skrypt razem z shaderami - katalog tak samo - scripts.


PK3


1. Stworz sobie np. katalog na c: o nazwie przykadowo 'test'.
2. W srodku stwórz katalogi 'maps', 'scripts', levelshots', 'textures', 'sounds' (jesli uzyłes nowych textur czy dzwiekow).
3. Nagraj mapkę wraz z plikiem botów (*.bsp i *.aas) do katalogu maps, skrypt (*.arena i shadery) do katalogu 'scripts', a jesli zrobiłeś screenshota (w formacie *.jpg lub *.tga) to nagraj go do katalogu 'levelshots' (pamietaj że musi miec on nazwę taka jak ma mapka).
4. Teraz musisz spakowac zawartosc katalogu winzip'em. Pamiętaj - pakuj wnętrze katalogu test, a nie katalog.
5. Jak sie spakował to zmien rozszerzenie z *.zip na *.pk3.


ZMIANA ROZSZERZENIA PLIKU


Może się wydawać, że to jest tu zbędne ale pisze to dlatego aby uniknac ciaglych pytan na boardzie i na gg typu 'jak zmienic rozszerzenie?'...
1. Ok, najpierw zaznacz w windowsie pokazywanie rozszerzeń (w 98 to wejdź w menu Widok/Opcje folderów; w XP Narzedzia/Opcje folderow/Widok). Teraz kliknij na zakładkę Widok i tam w oknie poszukaj opcji 'Ukrywaj rozszerzenia plików znanych typów'. Odznacz to.
2. Teraz zaznacz plik któremu chcesz zmienić to rozszerzenie. Wciśnij F2.
3. Zmień końcówkę (po kropce). Np. jak masz xxx.zip to napisz xxx.pk3.
Wyświetleń: 9187

Brak komentarzy.

Zaloguj się by dodać komentarz.

Co nowego

Pokaż więcej »

Gracze

  1. _Vh - 37 pkt
  2. ZenoPopo -1 - 30 pkt
  3. samolot - 17 pkt
  4. bfr_aka_pablonzo - 5 pkt
  5. Progner - 5 pkt
  6. Requiem -2 - 4 pkt
  7. Czarna_Bakłażana - 2 pkt
Zobacz cały »
Zobacz wszystko »

Statystyki graczy ogółem:

  • Wygranych / przegranych: 170718 / 176461
  • Trafień / strzałów: 101332428 / 334124146
  • Fragów / zgonów: 5166665 / 4461858

Więcej statystyk już wkrótce...

Cytaty

Quakecon will soon start getting sponsored by hair loss solutions, erection pills, life insurance and QVC.

Źródło: http://esreality.com/post/2891023/clawz-everyone-can-give-me-a-hard-time-it-is-about/#pid2891208

Dodał: tath

Ankieta

Uważasz, że QC przyczyni się do porządnego resetu serii?

Głosów: 525