nourin w silniku source geometrie levelu robi sie bezposrednio w edytorze hammer doloczonym do sdk sourca,mniejsze propsy i obiekty fizyczne importuje sie z maxa czy z czego tam chcesz. z tym ze jest z tym troche roboty. Kiedys pisalem takiego malego tutka do wrzucania propsow to sprobuje go ci tu wkleic.
w tym wypadku mapa nazywala sie ironworks, mozesz uzywac innej nazwy xD
I. Potrzebny soft:
- 3ds max 9/2008
- eksporter do .smd http://www.wunderboy.org
- GUI studio mdl http://www.wunderboy.org/download.php?file=guistudiomdl_2.2.zip&s=2
- VTF Edit
Ściągamy czytamy readme i instalujemy.
II. 3ds max
1) Modelujemy nasz model mapujemy i teksturujemy go.
2) budujemy collision boxa. colbox to model, który engin używa do określania kolizji z graczem i obiektami props_physics(dalej zwane psycholami :P) powinien się składać najlepiej z samych boxów i cylindrów, być jak najprostszy. Wszystkie elementy MUSZĄ być 'zamknięte' czyli nie mogą mieć żadnej dziury(bordera), oraz nie mogą być 'wklęsłe'(wrzucę obrazek potem) zapisujemy go do osobnego pliku
3) Nasze textury zapisujemy w formacie .tga jako nazwamodelu_CLR.tga dla tekstury diffuse,w kanale alpha opacity mapka. nazwamodelu_NRM dla normalek, w kanale alpha normalki maska odbić.
4) Ważne! Na nasz model nakładamy materiał standard z naszą teksturą(nazwamodelu_CLR.tga) w slocie diffuse i niczym więcej.
Pivota ustawiamy na spodzie modelu i w punkcie 0 0 0.
5) Eksport
Czas na eksport naszego modelu. Upewniamy sie ze nasz model jest jednym obiektem editable poly, jesli w scenie oprócz niego znajduje sie coś jeszcze usuwamy to tak aby pozostał tylko nasz model.
Każdy obiekt w silniku potrzebuje 3(!) modeli obiektu wyswietlanego, collision_boxa oraz animacji :) tak tak nawet obiekty statyczne potrzebują animacji.
-Klikamy file/eksport z eksporterów wybieramy source .smd (którego wczesniej zainstalowalismy prawda?)
Zapisujemy nasz obiekt jako nazwamodelu_REF w opcjach eksportera zaznaczamy eksport reference smd - bedzie to nasz obiekt wyswietlany w silniku
-Następnie klikamy file/export raz jeszcze
zapisujemy obiekt jako nazwaobiektu_IDLE w opcjach eksportera zaznaczamy Export sequence SMD, export range ustawiamy 0 to 0.
-Następnie eksportujemy naszego collision boxa -Zapisujemy nasz obiekt jako nazwamodelu_COL w opcjach eksportera zaznaczamy eksport reference smd
Mozemy juz zamknąć maxa.
III. kompilacja modelu
Tworzymy katalogi o nazwie IRONWORKS(koniecznie taka nazwa!!!) w folderach :
-...Steam\steamapps\(twoja_nazwa)\half-life 2 deathmatch\hl2mp\models
-oraz w ...Steam\steamapps\(twoja_nazwa)\half-life 2 deathmatch\hl2mp\materials
1) MODEL
W jednym folderze umieszczamy 3 pliki naszego modelu z rozszerzeniem .smd, oraz nasze tekstury w formacie .tga.
Tworzymy w notatniku plik nazwamodelu.qc (trzeba ręcznie zmienić rozszerzenie z .txt na .qc) o treści
$modelname "IRONWORKS/nazwamodelu.mdl"
$scale 1.0
$staticprop
$body "Body" "nazwamodelu_REF.smd"
$surfaceprop "concrete"
$cdmaterials "IRONWORKS/"
$collisionmodel "nazwamodelu_COL" {
$automass
$concave
}
$sequence idle "nazwamodelu_IDLE.smd" fps 15 ACT_IDLE 1
gdzie nazwamodelu to nazwa naszego modelu a w miejsce "concrete" (określa jakie dzwieki bedzie wydawaćmodel przy trafieniu kulą itp.) mozna wpisac cos z listy na: http://developer.valvesoftware.com/wiki/Material_Surface_Property
Umieszczamy go w folderze z teksturami i 3plikami z modelem
Gdy mamy juz ładnie napisany plik .qc mozemy przystąpić do kompilacji modelu. W tym celu odpalamy program GUIStudioMDL i na samym początku podajemy ścieżki w menu Config nas interesuje ep1 tools path, jest to zazwyczaj ...\sourcesdk\bin\ep1\bin
W oknie programu wybieramy:
-w polu Target Mod : Half-Life 2 Deathmatch
-w polu SDK Version: Episode 1
Następnie klikamy file/Load .QC file i tam wybieramy nasz swiezo zrobiony plik .qc. Następnie klikamy na przycisk Compile Chwilę czekamy i jesli nie wyskoczą zadne errory(jesli errory wyskoczą to coś zle zrobiłeś :( ) to mamy skompilowany model w naszym katalogu /models/IRONWORKS
2) Tekstury
Zazwyczaj potrzebujemy tylko 2 tekstury nazwamodelu_CLR, W którym mamy teksture oraz jako alpha channel mamy zapisaną przezroczystość, oraz nazwamodelu_NRM zawierający normalmapę, oraz jako kanał alpha mape odbic, czyli cos jak specular. Obie w formacie .tga
Otwieramy nasze tekstury w programie VTFedit i zapisujemy je w w ...Steam\steamapps\(twoja_nazwa)\half-life 2 deathmatch\hl2mp\materials/IRONWORKS Następnie tworzymy notatnikiem plik .VTM o nazwie nazwamodelu_CLR
Przykład
"VertexlitGeneric"
{
"$basetexture" "IRONWORKS/nazwamodelu_CLR"
"$normalmapalphaenvmapmask" 1
"$envmap" "env_cubemap"
"$nocull" 1
"$alphatest" 1
"$bumpmap" "IRONWORKS/nazwamodelu_NRM"
}
Gdzie
"$basetexture" to nasza tekstura z alphą(bez rozszerzenia)
"$staticprop" musi być :)
"$normalmapalphaenvmapmask" 1 ustawia alfę z normalki jako maske odbić, jak nie ma być odbić usówamy linię
"$envmap" "env_cubemap" powoduje ze obiekt odbija najblizszą cubemape (jak nie ma nic odbijac to wywalamy)
"$nocull" 1 2sided geometry (jak nie trzeba wywalamy)
"$alphatest" 1 ustawia alfę z tekstury jako mapę przezroczystości
"$bumpmap" nasza NORMALMAPA(bez rozszerzenia)
FINITO możemy odpalic modelviewera z sdk i oglądać nasz model albo wstawic go w hammerze
jak wstawic propa do hammera http://sourcesdk.pl/tut,mapping,13.html
Wstawianie psycholi
Wstawianie obiektów fizycznych się trochę różnie od statycznych, ale niewiele.
1. w pliku .qc wywalamy linię $staticprop
2. wywalamy linię $automass i zamiast niej wpisujemy np $mass 34 gdzie 34 to masa modelu w kilogramach
3. w hammerze nie wstawiamy obiektu jako prop_static, ani jako prop_physics tylko jako prop_physics_multiplayer.
pozdrawiam i zycze powodzenia