NEWS | ČLÁNKY | DOWNLOAD | GUESTBOOK | TUTORIALS ObnovitZavřít
 
hl - ZONE Half-Life Half-Life 2 Half-Life 3
 
Episode One Episode Two Opposing Force Blue Shift Counter-Strike 1.6
 INFO
Přidat do oblíbených
Nastavit jako Homepage

ICQ: 272-515-771 
Aktualizace:

 SYSTÉM
 TLAČÍTKA
hl-ZONE Button 1
 
hl-ZONE Button 2
 SPOLUPRACUJEME
 Zvuky - II. část Pátek 13. 11. 2006
<-- Tvorba exteriéru Propojení dvou map -->

Před nedávnem jsem jeden tutoriál věnoval ozvučení mapy a ukázal jak do ní vložit kromě zvuků a hudby i další zvukové efekty. Dneska je na čase se k této problematice vrátit a trochu jí rozšířit. Dnes se podíváme na soubor sentences.txt a tvorbu dialogů ve hře.

Na úvod:
Takže jak to dneska bude vypadat? Nejprve si konečně rozebereme mnohokrát zmiňovaný soubor sentences.txt a povíme si k čemu slouží podivné zkratky v závorkách (také jsme o nich minule mluvili). Také zjistíme, že je ve stejné složce další soubor, materials.txt, který definuje chování zvuků u jednotlivých textur. Velké možnosti modifikování nám však nenabízí.

Po trošce teorie si rychle uvedeme nastavení entity scripted_sentence a vytvoříme si jednoduché uvítání od policisty, když projdeme dveřmi do kanceláře. Pojďme tedy začít hezky od začátku.

Soubor sentences.txt:
Takže hezky od začátku. Pokud otevřete složku Half-Life je tam několik dalších podsložek. Přejděte tedy do složky valve (měla by být jako poslední) a najděte v ní soubor (nebo archiv) pak0.pak. Ten otevřete. Pokud vám to nepůjde, použijte program Pak Scape. Až se vám to tedy podaří, měli byste vidět něco podobného, jako na následujícím obrázku.


Obr. 1
PakScape a soubor pak0.pak

Přejděte do složky sound, kde je opět mnoho podsložek, které obsahují samotné zvuky ve formátu .wav. Úplně na konci jsou dva souboru, materials.txt a sentences.txt a to jsou ty, které potřebujeme. Teď by bylo dobré si druhý zmiňovaný zkopírovat do složky Half-Life ->valve -> sound. To proto, že nám to velice urychlí naší práci a nebudeme přepisovat originální soubor pak0.pak. Pokud mám zkopírováno, otevřeme si ho a podíváme se co v něm je. První řádek je pouze varování, abyste ho nijak neupravovali. Toho si všímat nebudeme a proto sjedeme o něco níže, kde je něco takového to:

// HUMAN GRUNTS
HG_GREN0 hgrunt/clik(p120) grenade! clik
HG_GREN1 hgrunt/(t30) clik take!(e75) cover!(s5) clik
HG_GREN2 hgrunt/clik clik oh! shit! clik
HG_GREN3 hgrunt/(p110 t40) clik(p120) get!(e78) down!(t30) clik
HG_GREN4 hgrunt/clik(p110) (t40) of!(e75) god! clik(p110)
HG_GREN5 hgrunt/clik no! clik
HG_GREN6 hgrunt/clik move! clik(p120)

První řádek začíná dvěma lomítky (//) a jako v další programovacích jazycích značí komentář, tedy to, co engine přehlíží. A v našem případě jde pouze o nadpis skupiny vět. Pojďme níže, další řádek už reprezentuje samotnou větu, kde:

HG_GREN0: je jméno věty, které se zadává do entity scripted_sentence (o tom později)
hgrunt/: je název složky, ve které je zvuk uložen (sound je složka kořenová)
click grenade! click: jsou jednotlivé zvuky, které se budou přehrávat postupně za sebou a jsou uváděny BEZ přípony .wav
(p120): zvukové efekty, které probereme později

Takhle nějako vypadá rozbor naší věty. Pokud však budete listovat souborem sentences.txt dál, zjistíte, že je zde toho skutečně mnoho a pro jednotlivé postavy jsou vyhrazeny různé předložky. Zde je krátký přehled:

BA_: monster_barney
HG_: monster_human_grunt
SC_: monster_scientist
GM_: monster_barney
HEV_: hlas ženy z HEV obleku
HOLO_: hologram v Hazard Course

To bylo pouze několik, těch nejzákladnějších, předpon pro postavy z Half-Life. V souboru najdete mnoho dalších vět, například pro VOX (intercom). Nyní ještě uvedu poslední tabulku, ve které uvedu na pravou míru význam oněch písmen a číslic v závorkách:

sX: začne přehrávat soubor na X procentech jeho délky
sX: zastaví přehrávání souboru na X procentech jeho délky
pX: nastavuje výšku tónu, kde X udává počet procent od normálu
vX: nastavuje hlasitost zvuku, kde X udává počet procent od normálu
tX: nastaví pauzu mezi jednotlivých zvuky, kde t0 = pauza a t100 = bez pauzy

To jsou ony. Všech pět efektů. Většinu z nich asi nevyužijeme, ale důležité mohou být první dva. Pokud bychom potřebovali přehrát nějaký soubor od půlky nebo ho naopak zastavit je to ta správná volba. A ještě jednou doplním, že se efekty píšou do kulatých závorek hned za název zvukového souboru, na který se má efekt uplatnit.

Tvorba dialogů:
Nyní se konečně dostáváme do tvůrčí části našeho tutoriálu. Před tím než otevřeme VHE a vytvoříme nějakou mapu si to opět trošičku zkomplikujeme. Nejprve si vytvoříme vlastní větu pro Barneyho. Pokud jste si soubor ještě nezkopírovali, učiňte to právě teď (složka je Half-Life -> valve -> sound). Pokud tedy máme hotovo, opět jej otevřeme (ten zkopírovaný) a najdeme v textu věty pro Barneyho. A hned na první řádek si vložíme naši novou větu:

BA_MOJEVETA1 barney/standback howdy ba_later

Soubor uložíme a máme vytvořenou větu, která zní: "Stand back! Hi Mr. Freeman. Hey, catch me later and buy a beer." Česky to tedy znamená něco jako: "Stůj! Zdravím pane Freemane. Hej, stav se později a vem sebou pivo." Věta pochopitelně moc smysluplná není a ani na sebe jednotlivé zvuky přesně nenavazují (intonačně), ale o to tady nejde. Jde pouze o ukázku, jak větu vytvořit a jak s ní pracovat.

Když konečně máme větu hotovou, nezbývá nic jiného, než si vytvořit mapu, kde si ji přehrajeme a poslechneme. Začneme tedy místností či chodbou, kterou rozdělíme na dvě půlky přepážkou. Do ní vyřízneme otvor pro dveře. Pokud ke dveřím přijdeme a ty se otevřou, přehraje se nám zvuk. Tvorbu dveří jsem již popisoval, takže je to plně ve vaší režii. Může to vypadat například takto:


Obr. 2
Chodba

Obr. 3
Místnost s Barneyem

Nyní stačí do jedné místnosti vložit známou entitu info_player_start a do druhé entitu představují policistu. Ta má název monster_barney. U ní nastavíme pouze jméno na barney. Jinak nic. Také je důležité upozornit na tvorbu dveří. Říkal jsem, že je vše na vás. Důležité je však do kolonky Target napsat veta. To proto, aby po otevření dveří došlo k přehrání zvuku. A nyní přichází zlatý hřeb večer (ano, píšu to večer). Vložení entity scripted_sentence.

Je to pochopitelně Point Entity a je úplně jedno, kam ji vložíte. Lepší ji je vložit někde poblíž modelu Barneyho, aby mapa byla přehlednější. Pojďme se tedy podívat na její základní parametry. Bohužel předem podotýkám, že význam mnoha z nich mi je tajemstvím a apeluji na vás chytřejší, aby mi dali vědět. Naštěstí, pro dnešní tutoriál budou mé znalosti bohatě stačit.

scripted_sentence - záložka Class_info:
Name: jméno entity, pomocí kterého se na ni odvoláme
Target: po skončení zvuku se může stát nějaká událost, kterou si zde nastavíme
Delay before trigger: prodleva v sekundách před zahájením přehrávání
Kill Target: po přehrání zvuku můžeme nějakou jinou entitu zrušit
Sentence Name: nejdůležitější položka; jméno naší věty ze souboru sentences.txt (důležité je začít vždy ! - vykřičníkem)
Speaker Type: jméno entity, která má danou větu pronést (tedy barney)
Sentence Time: délka hovoru
Search Radius: těžko říct, ale jedná se o nějaký poloměr; zřejmě o poloměr na jaký se má hledat posluchač věty
Listener Type: posluchač, entita na kterou daná entita "hovoří" (pokud jde o hráče zadává se player, jinak jméno entity)
Volume: hlasitost od 1 do 10
Sound Radius: poloměr, ve kterém má být hovor slyšet

ambient_generic - záložka Flags:
Fire Once: dojde pouze k jednomu přehrání, ostatní budou ignorována (např.: kdybychom hovor spouštěli pomocí trigger_multiple)
Followers Only: nejsem si jist, ale je možné, že věta bude přehrána pouze v případě, že postava (barney) vás bude následovat (follow - klasicky "E")
Interupt Speech: opět si nejsem jist, pravděpodobně jde o přerušení hovoru právě touto větou
Concurret: a zde jsem úplně mimo

To byl přehled všech parametrů entity, i když ne úplně vysvětlený jejich význam. Pokud tedy víte přesně co poslední tři položky znamenají, ozvěte se mi. Budu jen a jen rád. Nyní tedy přejdeme k samotnému nastavení v našem případě:

Name: veta
Delay before target: 0
Sentence Name: !BA_MOJEVETA1 (je nezbytně nutné začínat vykřičníkem = !)
Speaker Type: barney
Sentence Time: 5
Listener Type: player
Volume (10 = loudest): 10

To by bylo nastavení entity scripted_sentence a ještě jednou podotýkám, že název věty musí začínat vykřičníkem. Bez něho to skutečně nefunguje, tak abyste na něj nezapomněli a zbytečně neztráceli čas hledáním takovéto banální chyby. A jak to tedy funguje? Target u dveří je nastaven na veta, což je jméno entity scripted_sentence. V ní jsme si definovali větu, která se má přehrát, posluchače (player) a také entitu, která větu pronese (Speaker Type = barney), proto je také důležité mít dobře pojmenovanou entitu monster_barney na barney. A to je vše!

materials.txt:
Na závěr se ještě v rychlosti zmíním o druhém textovém souboru v adresáři sound. Je jím materials.txt, kde jsou definovány zvuky textur. Pokud se pohybujete po nějakém povrchu (ať už to je asfalt, ocel, písek nebo beton), vždy je na něm aplikovaná nějaká textura. A pokud se pohybujete po nějakém povrchu, je jasné, že při tom vydáváte určité zvuky. A ty se pochopitelně od sebe liší. A právě v tomto souboru jsou definovány. Také jsou zde definovány zvuky, které se přehrávají, pokud něco (bednu, okno, počítač) rozbijete.

A k čemu nám je dobrý? Když si vytvoříte nějakou texturu (třeba podlahy) a chcete, aby zvuk byl jiný, než je nastavený, musíte upravit i tento soubor a vaši texturu do něho přidat. Je to opět velmi jednoduché. Na jeden řádek napište název vaší textury a před něj vložte písmeno, které reprezentuje zvuk, po které toužíte. Zde je krátký seznam:

M (metal): kov, ocel
V (ventilation): ventilace, větrací šachty
D (dirt): hlína, písek, poušť
S (slosh liquids): voda, tekutina
T (tile): dlaždice
G (grate): mříž, rošt (beton je nastaven jako výchozí)
W (wood): dřevo
P (computer): počítače, technika, vybavení
Y (glass): sklo

Takže vaše nové textury by se mohli nadefinovat třeba takto:

M MOJE_OCEL1
T MOJE_DLAZBA1
Y MOJE_SKLO1
G MUJ_ASFALT1
S MOJE_VODA1

Také jsou v dokumentu dvě poznámky, o kterých by bylo dobré se také zmínit. První uvádí, že je použito pouze prvních dvanáct písmen z názvu textury (když tedy máte textury stejného typu, lišící se pouze v čísle, měli by vydávat stejné zvuky) a druhá poznámka hovoří o tom, že je možné nadefinovat pouze 512 textur. Ostatní nebudou brány v potaz. V souboru lze použít // pro komentář.

Závěr:
Tvorba dialogů a vět je velmi zábavná a jednoduchá a mapě dodá skutečnou atmosféru, proto doufám, že jste vše pochopili a pokud ne, stačí napsat do komentářů a já se vše pokusím vysvětlit ještě jednou. Nicméně se můžete podívat i na příkladovou mapu, ze které už to musí být jasné.


Obr. 4
Chodba s dveřmi

Obr. 5
Mluvící Barney

Tím jsme probrali ozvučení mapy a tvorbu dialogů a myslím, že je tato kapitola zdárně za námi a příště se budeme věnovat úplně něčemu jinému. Čemu? Nápadů je spoustu, ale myslím, že je ten správný čas na propojení dvou map a vytvořit loading... Je to překvapivě jednoduché. Takže prozatím si vyzkoušejte tvorbu dialogů a do příště ZDAR!!!

 

SOUBORY

 

KOMENTÁŘE

 

Žádné komentáře nejsou zatím k dispozici
 

 

<-- Tvorba exteriéru Propojení dvou map -->

NAHORU ...

 ČERSTVÉ NOVINKY
 POSLEDNÍ TUTORIÁLY
 ANKETA
Staré ankety
 REKLAMA