Vizi Gábor honlapja

Source SDK



E cikk 2010-ben íródott, azóta elavultnak számító dolgokat tartalmazhat! Fenntartással kezeljétek az írást!



Ebben a dokumentumban a Valve Source SDK pályaszerkesztőjével szeretnék foglalkozni. A legfontosabb műveleteket és eszközöket mutatom be. A forrásokat, ajánlott linkeket az oldal alján találhatod. Fontos, hogy tudd, a Source SDK és a Valve Hammer Editor között van különbség, bár annira nem vészes az. Ha CS-be, vagy Half-Life 1-be szeretnél pályákat készíteni, mindenképpen használj más tutorialokat is a félreértések elkerülése végett! Jó pályaszerkesztést kívánok mindenkinek!

2011-ben a Valve a Source SDK-t ingyenesen letölthetővé tette! A Team Fortress 2 is ingyenes, így már ingyenesen fejleszthettek ingyenes játékokra! :)



Alapműveletek




Textúrázás
Jelöld ki a testet, amit szeretnél textúrázni, majd nyomj Shift+A-t, vagy bal oldalon a menüben megtalálod a Texture Application Mode-ot. Nem muszáj az egész testnek így kinéznie, ha csak a test egyik lapját szeretnéd textúrázni, akkor először kattints a Texture Application Mode-ra (Shift+A), majd klikkelj rá 3d nézetben arra a lapra, amit szeretnél textúrázni, és utána kiválaszthatod a megfelelő textúrát, majd Apply(ok).


Entity
Testekből entity-t készíteni úgy lehet, hogy a kész testre rákattintasz 3d nézetben, majd Ctrl+t, vagy szerkesztő nézetben a testre jobb gomb, Tie to Entity.


Pályához



Light (fény)
Válaszd ki az entity-k közül a light-ot, és a 3d nézetben klikkelj oda, ahol szeretnéd, hogy legyen fény. Többféle fény van, és a lámpáknak a színüket is tudok állítani a properties menüpontban. (3d nézetben kattints a fényre, majd két nézetben kattints rá jobb gombbal, és properties.)


Breakable (törékenység )
Csinálj egy testet, amiről szeretnéd, ha törthető lenne. Két nézetben kattints rá, csinálj belőle entity-t (Tie to Entity - Ctrl+T), ezután a válaszd ki, hogy func_breakable. (Más lehetőség is van arra, hogy törékennyé tegyél egy testet, de talán ez a legegyszerűbb). A tulajdonságai között érdemes beállítani a material type-ot, vagyis milyen anyagtulajdonsággal törjön a test (pl. Glass(üveg), Wood(fa)), és a strenght - erősség tulajdonságot (Nagyjából a 30-as érték megfelel egy pisztoly lövésének erősségének).


Door (ajtó)
Csinálj egy testet, ami az ajtó lesz (Gondolok itt a 90 fokban nyíló ajtókra.) Amikor entity-t csinálsz belőle, a func_door_rotating-ot válaszd, feltéve ha nem a csúszós ajtóra gondolsz, ami a func_door lesz. A legfontosabb tulajdonságok a speed(sebesség) és a distance(táv) lehet véleményem szerint. A func_door_rotating-nál levő distance az ajtó nyitott állapotának maximumát jelöli fokban. Alapértelmezetten 90°.


Ladder (létra)
Jelöld ki a testet, amiből a létrát fogod csinálni. Figyelj arra, hogy meg kell különböztetni a létrának tűnő testet, és a mászási tulajdonságot. A mászási tulajdonságot úgy adhatod meg egy testnek, hogy a Ladder texturát raksz rá. Ez nem fog látszódni, így a ladder mellé fogsz tudni rakni olyan testet, ami létra kinézetű lesz. Lehet ez pl. csatorna, vagy egy létra. Állítsd a entity-k közül func_ladder-re


Skybox (ég)
Jelöld ki a felületet, amire azt szeretnéd, hogy égként jelenjen meg. Tegyél rá skybox. Ég listák: http://developer.valvesoftware.com/wiki/Sky_List - Figyelj arra, hogy a megfelelő játékhoz készített pályához megfelelő eget válassz! Példának okáért a Half-Life 2 Deathmatch-es pályákhoz beállított Counter-Strike: Source egek nem fognak megjelenni. Azt, hogy melyik eget szeretnéd felhasználni egy adott pályához, a Map menüpont - Map properties - Skybox texture name -nél tudod beállítani: pl. "sky_borealis01"-t írhatsz oda.


Átlátszóság
Több lehetőséged is van arra, hogy átlátszóvá tegyél egy testet. Egyik lehetőség az, hogy ha a testet valamilyen entity-vé teszed (lehet pl. func_breakable, func_brush, func_wall). Render mode-nál a beállítást Texture-re állítsd, majd az FX amount-nál pedig 0-255 között változtathatod az átlátszóságot. Minnél kisebb számot írsz be, annál átlátszóbb. Én ablakok esetében 190 körül használom.


Tárgyak (props)
Tárgyakat, modelleket úgy tudsz betenni, hogy kiválasztod a prop_static, prop_dynamic, prop_physics entity-k közül az egyiket, lerakod a pályára, majd properties(tulajdonságok), world model, majd browse. Figyelj arra, hogy ha beállítottad a modellt, ne lógjon más modellbe, vagy más testbe. Figyelj arra is, hogy nem minden modell alkalmas static-nak, dynamicnak, vagy phsics-nek. Mindezt ellenőrizned kell, úgy, hogy megnézned egy kiválasztott modellről (böngészés közben), hogy az info-nál mely lehetőségek jók.


Kezdőhelyek (start)
Attól függően, hogy melyik játékra készíted a pályát (én jellemzően Counter-Strike: Source-ra), kell ezt megtenned. Ha CSS-re készítesz pályát, akkor válaszd ki a entity-k közül a info_player_counterterrorist, vagy info_player_terrorist. Figyelj arra, hogy lehetőleg picivel a föld/padló felett legyenek, nehogy akadjanak be a játékosok kezdéskor. Half-Life játékoknál ez lehet info_player_start, vagy info_rebels_start.


Vásárlóhely (buyzone)
Készíts egy testet, mely az a terület lesz, ahol a játékosok vehetnek fegyvereket. Ebben a testben legyenek majd a kezdőpontjaik a játékosoknak. (Mindez nem kötelező, csak a szokás tartja így!) Figyelj arra, hogy a játékosok kezdéskor a földre fognak esni, és ez esetben is tudjanak majd venni fegyvereket. A testre rakj trigger textúrát (ez nem fog látszódni a pályán), majd csinálj belőle entity-t (Ctrl+T), válaszd ki a func_buyzone-t. Tulajdonságai között a Team Number (int) -ben megadhatod, hogy melyik csapatnak/oldalnak legyen a vásárlóhelye az. (Counterterrorist, terrorist.)


Túszok (hostage)
Entity-k közül válaszd ki a hostage_entity-t, és tedd le oda, ahol legyenek a túszok. Figyelj arra, hogy ők se lógjanak bele más modellekbe, testekbe! A hely, ahova kell vinni a túszokat, legyen egy test, amire ráhúzol egy trigger textúrát. Tedd entity-vé, válaszd ki neki a func_hostage_rescue-t. Ennél is figyelj arra, hogy a test lehetőleg földközelben legyen!


Robbantás (demolition)
Válaszd ki a testet, ami az a terület lesz, ahova le lehet majd tenni a bombát. Ezután csinálj belőle entity-t, mégpedig func_bomb_target-et. Textúrának válaszd ki neki a trigger textúrát. A játékosok automatikusan kapnak bombát, és vehetnek majd hatástalanítót!


Compiler (fordítás)
A pálya fordítását az F9-vel, vagy a File - Run map. A fordításkor megjelenik egy ablak, melyben lehetőség van kiválasztani, hogy fusson a BSP, a VIS és a RAD. Ezek közül a BSP a legeslegfontosabb, ő mindenképpen fusson, még ha teszteled is a pályát. Ő tartalmazza tulajdonképpen a pálya adatait, elemeit, és ő fogja megnézni, hogy lyukas-e a pálya. A VIS fogja megnézni, hogy a pálya adott pontjában mi látható és mi nem. Ő tulajdonképpen optimalizálja a pályát, kész pályákra ajánlott futtatni. RAD a fényjelenségeket, árnyékokat intézi. Kész pályákhoz ezt is javaslom futtatni. Ez utóbbi kettő jellemzően lassan szokott futni, függően a pálya méretétől.


Lyuk (leak)
Ha fordítás közben a pálya LEAK-et jelez, akkor meg kell keresned a pályán a lyukat. Ezt csinálhatod manuálisan is, de egyszerűbb, ha használod a pályaszerkesztő lyukkeresőjét. A Map fül - Load pointfile -nál találod. Ekkor betölti a fájlt, ami jelzi neked piros "csíkkal", hogy merre találod a leak-et. Célszerű végigmenni a piros csíkon, és vizsgálni ott a pálya részeit.


VTFEdit (saját textúra)
Ingyenes program, melynek segítségével HL2 engine-os pályákhoz tudsz készíteni és konvertálni textúrákat. Van lehetőség átkonvertálni a régi, HL1-es textúráidat, melyek .wad fájlban voltak. Viszont mindenképpen szükséged lesz arra, hogy az új textúráid .tga képfájlokban meglegyenek, és azt tudod konvertálni a program segítségével. A textúrák helye a Steam\steamapps\username\counter-strike source\cstrike\materials\mappanév helyen legyenek. Half-Life 2-nél ez pl. csak annyit változik, hogy Half-Life 2\hl2\materials\mappanév.

A textúráknál a legfontosabb, hogy 16*n legyen az x és y felbontás. Átlátszóságot Photoshoppal (ehhez kell egy VTF plugin, és könnyen fogod tudni használni textúrázásra), vagy akár az ingyenes GIMP-vel is csinálhatod (ehhez tudomásom szerint nincs plugin, így utólag lesz szükség konvertálásra .VTF és .VMF fájlokba.) Maximális felbontás 4096*4096-os felbontású textúra.

A .VTF fájlok (Valve Texture File) tartalmazza magát a képet, míg a .VMF (Valve Material File) pedig az kép tulajdonságait, viselkedését, stb. Ez utóbbi fájlt kell módosítanod ahhoz, hogy egy kép, amelyet átlátszónak készítettél, a pályán is átlátszó legyen.

A .VMF fájlokban adhatod meg a képek anyagtulajdonságait, meg miegyébet is. Néhány szerintem fontosabb anyagot felsorolok:

A .VMF fájlba így kell beszúrnod: "$surfaceprop" "gravel"


Map Analyst
A textúrákat, modelleket, text fájlokat, és a bot utasításokat(.nav fájl) berakja a .bsp-be! Ingyenes program!
www.map-lounge.de



Pálya optimalizálása



Occluder: Eltakarja a mögötte található modelleket. Occluder textúra.

AreaPortal: A pályát két részre lehet bontani általa. Egyik részből nem lehet átlátni a másik részbe, és az A areportalban nem tölti be feleslegesen a B areaportalt, csak ha éppen átmész. AreaPortal textúra.

Skip, hint: El lehet zárni vele folyosót, vagy termet, és nem tölti be az A részben a B részt. A különbség az areportallal az, hogy skip/hint-et többször is lehet használni, több részre lehet bontani vele a pályát. Skip, hint textúra.

Nodraw textúra: Nodraw textúrát érdemes rakni azokra a felületekre, amik biztosan nem jelennek meg a pályán. Ilyen pl. egy külső fal másik fele. Nodraw textúra.

Func_detail: Minden olyan testet, ami nem takar el más testeket, vagy csak kicsi, viszont nem fal, nem plafon és nem padló, akkor azt érdemes func_detail-re rakni. Én úgy vettem észre, hogy ez nagyon működőképes, és segít a pályán. Ez szüntette meg a vertex_buffer_size problémámat. Func_detail entity.

env_cubemap: A pályán a fényjelenségek miatt néha csúnyán nézhetnek ki a fegyverek. A megoldás erre az, hogy a pályaszerkesztőben szemmagasságban teszel le env_cubemap-okat, majd fordítás után a játékban konzolban elindítod a buildcubemap parancsot.



Videókészítés



(Forrás: Counter-Srike.hu - Movie Készítés: A kezdetek)
Több videókészítési lehetőség van, az ismert képernyő felvevő programokon (GameCam, Fraps, HyperCam, Snapshot, stb.) van lehetőség a Counter-Strike: Source-ban is jeleneteket felvenni és exportálni, melyeket utólag megvághatsz.


Parancsok
record név elmenti a jeleneket, de nem csinál anyagot
demoui lejátszó felületet tölt be, mellyel lejátszhatod az elmentett jeleneteket
playdemo név szintén lejátsza az elmentett jeleneket
startmovie név elkezdi gyártani a .tga-kat, és a .wav-ot
endmovie befejezi a .tga-k és a .wav gyártását
stop megállítás
hud_saytext_time 0 chat elrejtése
voice_enable 0 játékban használt kommunikáció eltüntetése
hideradar a radart rejti el
net_graph 0 a netgráf kijelzésének megszüntetése (már aki használja)
cl_radaralpha 0 a radar teljes átlátszó lesz (eltűnik)
cl_drawhud 0 HUD kijelzés átlátszó lesz (töltény, élet, célkereszt eltűnik)
sv_cheats 1 Cheat-ek engedélyezése. Néhány fenti parancshoz lehet, hogy szükséges ez az engedélyezés

A .tga és .wav fájlok a Steam\steamapps\"username"\counter-strike source\cstrike\ mappába kerülnek


Console behívása:
1, Steamben a játékok között - counter-strike source jobb gomb properties set launch options beírod, hogy -console.
2, A telepítési könyvtár Counter-Strike Source\cstrike\cfg mappában nyisd meg a config.cfg fájlod WordPaddel, és írd be ezt: bind "0" "toggleconsole". A 0 helyére mást, nem használt billentyűt is állíthatsz.



TV készítés

A TV és a sima felvétel között a különbség az, hogy míg a sima felvételen pontosan azt veszi fel a játék, amit látsz, a tv készítésénél utólag spectator módban tudsz mozogni. Ez jó lehet arra, hogy egy adott jelenetet több szemszögből felvegyél, megnézz.

tv_enable 1 TV engedélyezése
tv_record TV felvétel indítása
tv_name A felvevő nevének megváltoztatása
tv_stoprecording TV felvétel megállítása

Ezután, a playdemo név-vel le fogod tudni játszani a felvett jelenetet és spectator módban fogsz tudni mozogni!



Counter-Strike: Source parancsok


A teljesség igénye nélkül, és nem hivatalos adatok. Saját belátásom szerint írtam meg az alábbiakat, többek között olyan parancsokat, amelyek jók lehetnek a pályák tesztelésére/feltérképezésére.

mat_wireframe x (felület, háromszögekre felosztás/vertex)
0 ki
1 be /nagyobb terület/minden
2 kisebb terület
3 téglalapokra bontás
4 minden

cl_showfps x (fps kiírása)
0 ki
1 be
2 be, bővített

mat_leafvis x (cella)
0 ki
1 be
3 összes

hidehud x
clradaralpha x


Források, javasolt oldalak, egyéb oldalak:



Tutorialok, leírások:
Valve Hammer Editor leírás - magyar
A Valve hivatalos Source SDK wikipédiája - angol
Angol tutorial kezdőknek
Angol tutorialok
Horváth Attila 2002-es CS 1.6 tutorialja
Hammer tutorialok - magyar

Askhandi tutorialjai a jf.hu-n
http://yscik.com/jf/page.php?&id=294 Source Tutorial #1
http://yscik.com/jf/page.php?&id=295 Source Tutorial #2
http://yscik.com/jf/page.php?&id=296 Source Tutorial #3
http://yscik.com/jf/page.php?&id=297 Source Tutorial #4

Fórumok:
SG Fórum - Source SDK
JF.hu - Valve Hammer Editor fórum
TOTALHL - Valve Hammer Editor fórum

Egyéb:
Counter-Srike.hu - Movie Készítés: A kezdetek
Map Analyst
Ég lista
Hatecrew CS portálja