GRZEBANIE W PAKACH Q3 #2
Text by [ Luke ]
Na łamach FZ przedstawiłem już parę textów dotyczących mieszania w pakach Q3, związane m.in. z dopisywaniem mapek do menu, tworzeniem prostych skinów i innymi rzeczami. Dzisiaj zajmę się po raz kolejny takimi bajerami - tym razem będą one być może mniej istotne, ale za to będzie ich więcej. Acha, umówmy się, że pakowanie jakiegoś katalogu w pak to skompresowanie go za pomocą WinZipa jako plik pakn.pk3 (gdzie n to kolejny numer paka), zachowując strukturę katalogów ("save extra folder info"). Po prostu praktycznie na końcu każdego projektu trzeba taką rzecz zrobić i nie chcę potem się powtarzać.
PODMIANA NARRATORA
Pierwszą rzeczą, którą opiszę, jest zmiana dźwięków narratora. Będzie nam do tego potrzebny jakiś edytor dźwięków (np. mój uniwersalny, chociaż prosty, Audiomatik ze Startera CD) oraz, oczywiście, Winzip. Na początku trzeba rozpakować sobie gdzieś katalogi "/sound/feedback" oraz "/sound/player/announce" z pliku pak0.pk3. Po rozkompresowaniu mamy dwa wyjścia:
a) Możemy nagrać siebie samych - musimy mieć do tego podłączony mikrofonik. Po prostu otwieramy po kolei każdy plik z rozpakowanych katalogów, kasujemy jego zawartość i zamiast niej nagrywamy samych siebie - przyciskamy przycisk Record (czerwone kółko) i wypowiadamy odpowiednią kwestię w kierunku urządzenia nagrywającego, np. "Fight!" albo "Three frags left"... Chociaż jeśli chcemy możemy przetłumaczyć to wszystko na polski lub w ogóle nagrać coś innego (byleby miało to jakiś sens). Możecie tutaj dać wodze fantazji i np. zamiast "Excellent!" nagrać "Świetnie!" itp. - wybór należy do was...
b) Zamiast tego, jeśli jesteście leniwi i nie chce wam się wszystkiego nagrywać od nowa, to możemy po prostu zmodyfikować głos narratora na jakiś bardziej zabawny lub bardziej odpowiadający naszym upodobaniom. W tym celu trzeba się trochę pobawić z tymi plikami odpowiadającymi za jego głos. Po otwarciu pliku można w menu "Proces" dodać echo i chorus, zmienić długość dźwięku (odgrywana kwestia brzmi dłużej / krócej, np. iiiimmmmpreeeesiiiiveeee ;)) lub jego wysokość (dzięki czemu zamiast mocnego basiora w głośnikach może brzmieć głos normalnego faceta o trochę wyższym głosie lub nawet lekko piskliwy - a'la te trzy śpiewające wiewiórki ;)). Jeśli chcecie to możecie jeszcze popróbować z innymi opcjami, ale lepiej nie przesadzajcie, bo potem taki głos może brzmieć zbyt dziwnie i niewyraźnie...
Jeśli już zapisaliśmy poszczególne pliki w nowej formie, możemy przystąpić do pakowania katalogu /sound w paka i skopiować go potem (paka ofcoz) do katalogu baseq3. No i gotowe!!!
SHADERY SKINÓW
Ta "czynność" jest zwiazana z dodaniem efektów specjalnych do naszych skinów (nieważne czy postaci czy broni czy jeszcze czegoś innego)... Być może widzieliście skin Spawna do modelu Kleska? Moim zdaniem jest świetny i to właśnie on zainspirował mnie do pobawienia się z shaderami. Shader to taki plik (rozszerzenie .shader, a jakże ;)), który jest tak naprawdę malutką procedurką napisaną w języku QuakeC, pozwalającą na dodawanie paru fajnych atrybutów różnym rzeczom (w naszym wypadku - skinom przedmiotów i postaci). Muszę przyznać że w tej kwestii nie jestem specem, jednak co nieco wiem i właśnie teraz chcę się z wami moją wiedzą podzielić. Otóż struktura przykładowego shaderka, pokrywająca skin wygładzoną bitmapką, która na dodatek porusza się po nim, wygląda nastepująco:
[ścieżka_dostępu_do_skina]
{
{
map [ścieżka_dostępu_do_bitmapy_skina]
}
{
map [ścieżka_dostępu_do_bitmapy_efektu]
tcgen environment
tcMod scroll [prędkość_x] [prędkość_y]
tcMod scale [skala_x] [skala_y]
blendFunc GL_ONE GL_ONE
}
}
[ścieżka_dostępu_do_skina] - jest to ścieżka w paku określająca wykorzystany model oraz nazwę skina
[ścieżka_dostępu_do_bitmapy_efektu] - to z kolei jest ścieżka w paku określająca położenie bitmapy, która ma być wykorzystywana jako efekt specjalny; szukajcie szczególnie w katalogu /textures i /textures/sfx oraz w innych - warto poświęcić trochę czasu aby znaleźć sobie naprawdę fajną bitmapkę pod efekt :)...
[prędkość_x], [prędkość_y] - są to wartości określające prędkość poruszania się bitmapy efektu po modelu
[skala_x], [skala_y] - określenie skali bitmapy efektu wobec poszczególnego członu modela
Poniżej macie przykładowy shaderek, który zrobiłem na potrzeby mojego skina PlasmaBoY do modelu Bittermana (jakby ktoś się pytał to to nie jest mój oficjalny skin - mam o wiele lepszy i ciekawszy do modela Visora =))... Jest wyjątkowo prosty i przy okazji całkiem efektowny. Jakby co to na (C) All Rights Reserved jeśli chodzi o wykorzystanie go do własnych potrzeb ;) - ma on po prostu na celu ukazanie wam co i jak.
models/players/bitterman/plasmaboy
{
{
map models/players/bitterman/plasmaboy.tga
}
{
map textures/sfx/fireswirl2blue.tga
tcgen environment
tcMod scroll 2 1
tcMod scale 2 2
blendFunc GL_ONE GL_ONE
}
}
models/players/bitterman/h_plasmaboy
{
{
map models/players/bitterman/h_plasmaboy.tga
}
{
map textures/sfx/fireswirl2blue.tga
tcgen environment
tcMod scroll 2 1
tcMod scale 2 2
blendFunc GL_ONE GL_ONE
}
}
Zauważcie, że cały plik jest złożony z dwóch członów, w którym jeden jest przeznaczony do części głównej (/plasmaboy), a drugi - do głowy (/h_plasmaboy). Jest to bardzo ważne, bowiem część modeli nie ma skinów jednoczęściowych tylko wieloczęściowe i do każdej poszczególnej częsci trzeba robić oddzielny dział shadera. Chyba najwięcej takich części ma model Anarkiego, ale jest też wiele innych modeli wieloczęsciowych, więc radziłbym się wcześniej zastanowić co do wyboru modela, który chcemy obrabiać...
Teraz plik trzeba skopiować do katalogu /models/players/[model]/[skin]. Pamiętajcie jeszcze o zrobieniu plików .skin, bez których skórka nie będzie działać... Instrukcja ich tworzenia była w moim texcie o tworzeniu skinów do Q3 w październikowym FZ, więc się nie będę powtarzał. No i teraz pozostało nam tylko spakować katalog /models w paka i skopiować go do katalogu /baseq3.
Acha, chciałem jeszcze raz powiedzieć, że w sprawach shaderów specem nie jestem, a moja wiedza o nich jest wyciągnięta jedynie z paru przykładowych pliczków .shader oraz własnej inteligencji ;). Przedstawione tutaj instrukcje nie są być może dokładne i superprofesjonalne, ale mimo to pozwalają zamienić zwykłą, ponurą skórkę w coś naprawdę fajnego i właśnie o to mi chodziło...
No i jeszcze mały tips - dzięki takim shaderom można nie tylko stworzyć sobie nowego własnego skina, ale także zmodyfikować skiny botów, dzięki czemu będą one bardziej widoczne (jak wszystkim wiadomo, skiny w Q3 nie są zbyt wyraźne). Owszem, trzeba się trochę namęczyć, jednak być może warto, jeśli faktycznie macie takie problemy z dostrzeżeniem przeciwników...
BOTY PL
Boty ludźmi z krwi i kości nigdy nie będą, i to jest fakt. Jednak można zrobić coś, aby stały się one dla nas bardziej ludzkie. M.in. dla nas, Polakuf, trochę głupia może się wydawać gadka botów, na którą w większości wypadków i tak nikt nie zwraca uwagi, gdyż... jest ona po angielsku i trochę odrzuca swoją sztywnością. Jednak oczywiście można to łatwo zmienić - poświęcając parę godzin można sprawić, aby boty bluzgały na nas piękną, wulgarną polszczyzną :).
Po pierwsze należy rozpakować pliki botów odpowiedzialne za ich odzywki. Są to pliki [imię_bota]_t.c, znajdujące się w katalogu /botfiles/bots, oczywiście w paku pak0.pk3. Po ich rozpakowaniu można przystąpić do edycji. Od razu łatwo rozpoznać które z ich części to zdania ich gadek - są one ujęte w cudzysłowia (UWAGA! części odpowiadające za sytuacje - np. game_enter - też!). Teoretycznie mógłbym tutaj już przejść do zakończenia, jednak wcześniej podam wam parę wskazówek dotyczących zmian, które można wprowadzać w tych plikach. Otóż pamiętajcie aby nie zmieniać ich ot tak sobie - bot mówi określony text w określonych okolicznościach i należy to uwzględnić. Pliki są podzielone na takie części okoliczności, w których to właśnie znajdują się poszczególne odzywki. I tak:
- game_enter - w tej części znajdują się gadki botów, kiedy te wchodzą do gry
- game_exit - a tutaj - kiedy ją opuszczają :)
- level_start - z kolei tutaj mamy zdania wypowiadane w czasie wkraczania bota na arenę
- level_end - słowa zawarte w tej części są używane, kiedy bot zakończył grę i nie był ani pierwszy ani ostatni...
- level_end_victory - ..., tutaj kiedy wygrał...
- level_end_lose - ..., a tutaj kiedy przegrał ;)
- hit_talking - to powie bot, który oberwał w czasie kiedy coś mówił ;))))
- damaged_nokill - a to, kiedy mocno dostanie, ale przeżyje
- hit_nokill - tutaj z kolei na odwrót - bot kogoś trafił, ale go nie zabił
- death_telefrag - to możesz usłyszeć, kiedy uda ci się ztelefragować bota
- death_cratered - tutaj znajdują się gadki bota, który zabił się spadając,...
- death_lava - ...wpadając w lawę...
- death_slime - ...lub w kwas...
- death_drown - ...czy też topiąc się...
- death_suicide - ...albo popełniając samobójstwo
- death_gauntlet - to usłyszysz, kiedy zabijesz bota z gauntleta,...
- death_rail - ...raila,...
- death_bfg - czy też BFG
- death_insult - a tak bot będzie na ciebie bluzgać w chwili śmierci :)))
- death_praise - ...lub się dowartościowywał ;)
- kill_rail - w tym dziale zamieszczone są odzywki bota, który zabił cię z raila...
- kill_telefrag - lub poprzez telefraga
- kill_suicide - to możesz usłyszeć, kiedy popełnisz samobójstwo...
- kill_insult - a to, kiedy bot po prostu cię zabije :)
- kill_praise - jednak może ruszy go sumienie lub zrobi mu się ciebie żal i będzie się starał cię dowartościować
- random_insult - tu są losowe, bezokazyjne bluzgi
- random_misc - ...i inne gadki :)
Trochę tego jest. Biorąc pod uwagę, że każdy ten człon ma ok. 5 zdań, a botów jest naprawdę wiele, przerobienie plików chattowych ich wszystkich może zająć bardzo dużo czasu, nawet cały dzień. Jednak moim zdaniem naprawdę warto ten czas poświęcić, bo efekt może być bardzo ciekawy. Pliki "..._t.c" edytujemy dla każdego poszczególnego bota, no a potem - czego już się chyba domyślacie, spakowujemy katalog /botfiles w paka i wrzucamy go do /baseq3. Jeszcze parę tipsów co do tworzenia zdań - podczas ich pisania nie bądźcie sztywni i nie martwcie się zbytnio o konstrukcję zdaniową, ale także pamiętajcie, aby nie przesadzać i nie pisać bezsensownych bzdur. Słowa wypowiadane przez boty powinny mieć jakiś ład i jakiś związek z tym, co się przed chwilą stało (po to właśnie podawałem wam tłumaczenie nagłówków sytuacji)... I jeszcze jedno - często możecie znaleźć "cyferki" wcięte w zdania - są to zmienne odpowiadające za graczy, tak więc pamiętajcie aby czasem nie pokiełbasić ich kolejności ;), przeważnie na dole jest wytłumaczone jaki numerek jakiemu odpowiada graczowi...
Oki, to już chyba wszystko na dzisiaj :). Jeśli macie jakieś pytania czy sugestie (co mam wytłumaczyć w następnych numerach ;)) to śmiało walcie mejle. Acha, i jakby co to możecie przysyłać na mój adres swoje twórczości związane z działem drugim i trzecim (szczególnie czekam na wasze spolszczenia chattów botów =)) - w sumie nie powinny one zajmować więcej niż paręnaście / parędziesiąt kilo, więc chyba TO będzie można zamieścić, w końcu aż tak dużo miejsca to to nie jest ;) - nie, blood ;))))))))))?
P.S. W tym miesiącu nie będzie mojej tfurczości poetyckiej ;), a to dlatego, że po pierwsze nie mam zbyt wiele czasu, a po drugie przygotowuję się do czegoś większego - "Quakepocalypse" (mieszanka MatriXa i Apokalipsy św. Jana - oczywiście w klimatach Quake'a)... Powinno wyjść coś naprawdę dobrego, ale nie będę paplał bo mogę speszyć ;)))...
P.S.2 Być może często czytając moje texty o grzebaniach w pakach natrafiliście na momenty jakby wyrwane z kontekstu, bez ładu. Jest to wina używania przeze mnie nawiasów trójkątnych, których zawartości (jak i ich samych) nie widać... Jeśli mieliście problemy ze zrozumieniem o co chodzi to w IE walnijcie w menu Widok opcję Źródło, a ujrzycie kod html - tam znajdźcie treść textu, tym razem na pewno będzie ona razem z zawartością tych nieszczęsnych nawiasów. A od tego arta zamiast nawiasów trójkątnych będę używał kwadratowych ;)...
P.S.3 BIG THNX dla Shieldera i jego bracholka oraz Slave'a i Śmieja za czadowy meczyk w sobotę 30.09 :)))))))...
|