2010. augusztus 12., csütörtök

Mozdonyhoz hangok hozzárendelése

A railworksban, egy mozdonyhoz alapkiszerelésben 4 dolog kell: a modell, a textúrák, egy engine blueprint, és egy simulation blueprint.
Az engine blueprint tartalmazza amiből áll a mozdony, a simulation blueprint pedig a motor(ok), fékrendszerek működését, ezeknek az értékei nagyrészt egyértelműek, aki tud angolul tudni fogja mi hova kerül, aki nem az szótárazik :)
A hangoknál az engine blueprintre kell kitérni, azon belül az irányítási beállításokra, a Control Container Component/Control Values részbe.
A control valuek jelentik a felhasználóval való kommunikációt, és a játékon belüli kommunikációt is.
Itt kell megadni az irányítás mikéntjét, hogy milyen kapcsolók és kijelzők vannak (ez utóbbiak nem feltétlenül láthatók grafikusan is).
A control name egy hivatkozás valamire a játékban. Vagy egy input remapperre (billentyűzetkiosztás), vagy egy játékmotoron belüli logikai dologra, vagy akár lua scriptes dologra.

Vegyük az egyik példát ami elég egyszerűen érthető:
Control Name: TrainBrakeControl (ez jóformán azt jelenti, hogy ezt a vonatfék billentyűi vezérlik (magyar billentyűzeten "é" és "á")
Default value: alap pozició (féknél a 0.70 azt jelenti alapon 70%-ra van behúzva a vonatfék)
Minimum value: minimum érték (féknél 0 mert 0% a minimum)
Maximum value: maximum érték (féknél 1 mert 100% a max)
A két fenti érték vezérli egyébként a kiírást is ha -1 és +1 akkor azt azt jelenti -100% tól 100%-ig mozgatható. Ha 0 és 1 az azt jelenti 0%-100% ha több mint 1 valamelyik, akkor az azt jelenti a játéknak hogy ez már nem % lesz hanem egy sima szám, és így is fogja kiírni.
A két description mező pedig azt jelenti mit ír ki a játék ha a vezérlő fölé viszed az egeret (feltéve ha van ilyen grafikusan látható vezérlő (animáció)) beállítva.
Apply to consist: alkalmazódjon ez az egész vonatra vagy nem (mivel a vonatfék alapból is alkalmazódik a vonatra), ezért itt false-ra van állítva.
Ezután az interface elements résznél lehet hozzáadni milyen típusú vezérlő ez (folyamatos, kapcsolós, te állítod be a kapcsoló szinteket, stb). Ennek is van egy alegysége ha olyan kapcsolót állítasz be aminek az állapotait neked kell beállítani, a Notch. Itt azt állítod be hogy hol vannak a kapcsolószintek, ez a rész pont olyan mint az MSTS-ben.

De nekünk a hangnál csak a fölső réteg a lényeg, de a vonatfék hangjai helyett kezdjünk egyszerűbbel, mondjuk egy RPM, és egy ampermérő értékkel, ha dízel elektromos mozdonyunk van.

Szóval adjunk hozzá egy control value-t, aminek a Control name-je "RPM" lesz (mint mondtam mivel ez egy hivatkozás és erre is fog hivatkozni más, fontos a pontos név). Default value kb tökmindegy, mert ezt nem mi vezéreljük hanem a játék motor szimulációja. Minimum 0 mivel le is állhat a motor :). Maximum pedig a max rpm amit élérhet a motor(vagy egy tetszőleges nagy szám ami nagyobb mint a motor max fordulatszáma). Lehet kevesebb is, akkor ez az érték ott megakad. Ha nagyobb akkor semmi sincs, akkor is csak odáig megy amíg a motor fordulatszáma megy.
A többi rész kitöltése akkor kell, ha ki is akarjuk ezt az értéket jelezni, (pl mutatókkal a cabban), tehát most nem érdekes.
Létrehozunk még egy Ammeter Control name-es control valuet, itt is mint előbb megadjuk a szélsőértékeket.


Miután ez meg van, már meg is vannak a 2 hangot vezérlő értékek.
Még lesz pici dolgunk az engine blueprintben (összekötni az audiot a mozdonnyal), de ez akkor egyszerűbb ha már van is hang :)

A blueprint editorban, átvándorlunk az Audio főmappába (eddig ugye a RailVehicles)-ben voltunk)
Az Audio-n belül a nekünk tetszó (és nekünk átlátható) mappában jobb klikk, és "New Audio Control" és kiválasztjuk a szükséges típust, most Diesel Audio Control-t.

Miután ez megvan, el is érkeztünk a lényegi részhez.
Az activation distance azt jelenti, hogy ez az audio control a forrástól milyen távolságban aktiválódik, méterben.
Nyissuk meg a Sound részt, és adjuk hozzá az első hangunkat egy single sample soundot (a random sample sound nevéből adódóan véletlenszerűen megszólaló hangokra való, de az RPM és az áram búgása az nem véletlen).
Name: név (erre fogunk hivatkozni később, nálam ez az Ammeter, de akár kiskutya is lehet, a lényeg hogy erre hivatkozunk később))
Is looped (folyamatos-e): true (mert mind2 hangunk folyamatos)
Priority: ha elérik a hangok az egyszerre lejátszhatóak maximumát (ez integrált hangkártyáknál olyan 32 körül lehet), akkor ennek a hangnak milyen prioritása legyen (0-100-ig)
Base volume: az alap hangerő, 1 azt jelenti hogy alap hangerőn hangosítás és halkítás nélkül játssza le.
Volume variation: véletlenszerű hangerőváltozás mértéke (0 nincs változás)
Base pitch shift: alap hangmagasság (1 a változatlan)
Pitch shift variation: random hangmagasság változás mértéke (0 nincs változás)
Instance group: intance groupokat lejjebb lehet létrehozni, pl hangok kizárására lehet használni. Ha több hang 1 instance groupban van, akkor csak az a beállított mennyiség szólalhat meg egy időben), de erre most nincs szükség.
Sample: Pathname (szokásos fejlesztő, kiegészítőnév útvonal),  Filename magának a hangnak az elérési útja (blueprint editor jobbklik a hangfájlon "copy filename" majd ctrl-v a helyére)
(wav fájlokat fogad be, maximum 48khz-s 16biteset, stereot, de ilyen hangokhoz monot szokás használni, editoros lerakható környezeti hangokhoz kell stereo (pl madárcsicsergés)

Majd ezt megcsináljuk újra, immár az RPM hanggal és névvel.
Curve részleg: itt görbéket adhatunk meg, ami szerint befolyásolódnak majd a hangjaink.
A name megint csak egy azonosító, majd a curve pointoknál hozzáadhatjuk a görbék pontjait (nem értem hogy ha a motor, vonóerő stb tulajdonságoknál csv fájlos jelleggörbéket kell megadni, itt miért kell szépen bepötyögni).

X tengely a control value értéke, Y pedig a hangon történő változás. Mint látható ezt azt jelenti, hogy nincs 100 amper-ig hang, majd 100-nál 40%-os hangerő, 300-nál 61%, és 1200 ampernél eléri a 100%-os hangerőt (de akár 200%-os is lehetne).
Létrehoztam mégegy görbét az RPM-re, ott pedig az X tengely RPM értéke az Y-hoz írt szám szerint fogja a hangmagasságot változtatni, persze ezek a görbék önmagában semmit sem csinálnak, csak adatok.

Jön a modifier chain, vagyis a módosító lánc. Létrehozol egy modifier chain-t, az amperre, és a name szokás szerint azonosítóként viselkedik, amire majd hivatkozol.
Controller is global false (vannak globális control valuek amiket nem az engine blueprintben adsz meg, pl idő, de ez nem ilyen úgyhogy false)
Controller name: Na itt kötödik össze a görbe és az engine blueprint control value-ja, tehát akkor beírjuk hogy Ammeter, majd a legördülő menüből kiválasztjuk az előbb létrehozott amperhez tartozó görbét.

Majd ezt a lépést megismételjük az RPM controller name-el, és a hozzá tartozó görbével, és persze ezt is elnevezzük.

És jön a loop (mert az elején beállítottuk, hogy ez egy folyamatos, loopolt hang)
Létrehozunk egy Controlled loop-ot.
Play state: hol játssza le ezt a hangot: Inside (vezetőfülke, utastér), outside(külsőnézet), both(mindenhol)
Sound , értelem szerűen a soundoknál beállított hang azonosítója, nálam Ammeter).
Modifier chain, a fenti hangra alkalmazandó módosító lánc, nálam Ammeter Loops)
Controller name, újra a hangot vezérlő engine blueprintes control value, tehát Ammeter)
Loop condition: lejátszás feltétele: Value in range (intervallum között), Value changing up/down (érték fölfelé/lefelé változik), Value changing (érték változik bármerre).
Activate range start value: az intervallum eleje (nálam 0)
Activate range end value: az intervallum vége (nálam 2300 (ami ugye itt ampert jelent)).
Value is changeing gate time: változó érték utáni hang késleltetés (ha változik valami, akkor csak a beírt másodperc után jelenik meg ez a változás a hangban is).

Majd ezt megcsináljuk az RPM-el is.

Ezzel kész a hangvezérlés, már csak össze kell kötni a mozdonyunkkal.

Ugyan ebben a mappában, létre kell hoznunk még egy proxyt ami semmit nem csinál csak mint egy hálózati proxy :)
Tehát new Sound blueprint. Mivel ez nem egy route editorban választható lerakható hangforrás, semmit sem kell kitölteni, csak a Sound component/ proxy name részbe bepastelni a jobbklikk copy filenamezett audio control fájlunkat amit előbb fejeztünk be, és a type-nál kiválasztani hogy rail vehicle. Ez kész is van, de ennek is copy filename.
Mentés, vissza az engine blueprinthez, megkeressük a container component részt, majd hozzáadunk egy childet, adunk neki valami nevet, szokásos provider/product páros, és az előbb copyzott sound blueprint nevet be ctrl-vzzük a blueprint id-hez. Ezzel összekötöttük a mozdonyt a hangunkkal.
Export, és mehet a próba.

Ez a motorhang, a forgóvázaknak is lehetnek külön hangjai(hasonló módon), ahol más control valuek is elérhetők pl (kanyarban kerekekre ható oldalirányú erők(csikorgáshoz)), és furcsa módon van ehhez külön kinevezett érték, nem kell childrenként hozzáadni: Bogey audio control, és van még coupling audio control is, a csatolási hangokhoz.

 Előző bejegyszésemben: http://hunrailworks.blogspot.com/2010/08/rail-simulator-fejlesztoi-peldafajlok.html
találhatóak az Rs fejlesztői fájlok, kiegészítve az általam dízel elektromos mozdonyhoz hozzáadott motorhangokkal, gyakorlatilag azokkal amit itt leírtam. Nagyon ajánlom megnézni, mert vizuálisan könnyebb :)

Frissítés: -EnableSoundDebugDialogs parancssori indítóparaméter nagyon hasznos. Kiírja az objektumokra melyik milyen hangot ad ki, milyen hangerőn, és az az vezérlő control value milyen értéken van. Egyébként mivel az összes control valuet kírja, a gyári mozdonyoktól el lehet lesni mik használhatóak, de az rw wiki-n is fel van sorolva pár beépített control value (egyébként erre a keretprogramban beállítható controldialog akármi paraméter is jó, de ez szerintem jobb mert ugyan azt tudja, csak még többet is).
Ez a paraméter csak akkor fog érvényesülni, ha nyomsz egy save settingst a keretprogramban (ahol a grafikát kell beállítani, és mented).

2010. augusztus 9., hétfő

Pályaépítési tutorialok

Az RS.com-nál csináltak szép kis youtube videos pályaépítési tutorialokat, bár ezek nincsenek annyira az előtérben. Nagyon jók, mivel bemutatja a dolgokat, talán még angoltudás nélkül is érthetőek.

2010. augusztus 2., hétfő

Railworks ASTER GDEM domborzat

A Railworks hivatalosan csak a 90m-es felbontású SRTM domborzati adatok betöltését támogatja a szerkesztőben, viszont a 9x nagyobb 30m-es felbontású ASTER adatokat is meg lehet etetni vele, egy körülményes konvertálási folyamat után.

minden második kép SRTM, értelem szerűen a többi ASTER (szerintem egyértelműen látható, hogy az ASTER dem-et használva, jóval lágyabbak az ívek és részletesebb a domborzat)
Viszont nem tökéletes az ASTER dem-sem, ugyanis vízfelületeknél anomáliák jelentkeznek (gyak hepehupákat tartalmaz minden helyen ahol a valóságban víz van, így ezt a szerkesztőben kell korrigálni).

A konvertálási folyamat így történhet:
Gyurci73 hozzászólása:
 Namost én a nem freeware Global Mapper programot használtam a konverzióhoz, ami a következőképpen zajlik:
- Global Mapper elindít
- File menü / Batch Convert/Reproject kiválaszt
- Convert From bekérődoboz -> Geotiff kiválaszt
- Convert To bekérődoboz -> BIL 16bit Elevation Samples kiválaszt
- A feljövő ablakban bal oldalt: Add Files -> Geotiff fájl kiválaszt
- ugyanitt a jobb (Destination Files rész):
File Names-nél kiválasztani a Use Source Files Name
alul a görgethető részen megkeresni és bepipálni: Use Big Endian for Elevation
- megnyomni az ok gombot, megvárni míg elkészül
Készen vagyunk, már csak a megfelelő fájlnévre kell átnevezni(HGT) és bemásolni a Railworks megfelelő mappájába!

Ha ez megvan szokásos helyre rakva a HGT fájlokat (rw mappa\DEM\SRTM), szokásos módon a szerkesztőben a T billenytűvel tölthető be a domborzat, persze csak megfelelő route templateval, olyan koordinátákon ami a berakott fájlok által le van fedve.

Route template létrehozása

RW számára emészthető formátumba konvertált ASTER DEM, egész Magyarországról

2010. augusztus 1., vasárnap

Rail Simulator fejlesztői példafájlok

A Rail Simulatorhoz tartozó példafájlok tökéletesek a Railworkshoz is. Tartalmaznak példaépületeket, mozdonyokat, vágányokat, vagonokat, és sokféle objektumot a játékhoz, nyers 3dsmax modellekkel, és eredeti configfájlokkal, amik szabadon tanulmányozhatóak, így egyszerűen lehet megtanulni a dolgokat.

Íme (a Railworks mappába kell kicsomagolni, mivel a tömörített fájl a könyvtárstruktúrát tartalmazza oda kell kerülni a dolgoknak ahová kell. Ezután már lehet is a blueprint editorban gányolni, vagy akár kipróbálni ezeket a fantasztikus színvilágú példaobjektumokat a játékban :D)
(letölthető ez "hivatalos formában is" (nehéz megtalálni), de annak olyan "okos" telepítője van, hogy amíg nincs egy Rail Simulator a gépeden Mk2-es patchel nem hajlandó feltelepülni/kicsomagolni magát (ilyen microsoftra hajazó "én jobban tudom mi kell a felhasználónak mint ő, úgyhogy kuss" típusú telepítő)

Mivel a példafájlokban egy igen fontos dolog maradt le (mozdonyhangok), ezért én kiderítettem hogyan kell ezeket hozzáadni, bekonfigurálni.

Ezt a fájlt szintén az rw főmappába kicsomagolva, felülíródik a dízel-elektromos példa mozdony, az általam hozzáadott hangbeállításokkal, így ezt is lehet tanulmányozni.
Beállítottam egy "motorhangot" és egy generátor "áramzúgós" hangot, amelyek persze a megfelelő értéktől változnak (motor fordulatszám, ampermérő).