2010. december 28., kedd

Az RW mezőgyengítés rejtelmei

Ez az amiben az rw nagyon csúnyán el van tévedve, de valamennyire azért működik, bár érezhető a hibás elgondolás rajta. Persze ez sincs túlságosan dokumentálva.
Szóval ezt a simulation blueprintben lehet állítani, az engine sim component részben, persze csak diesel electric subsystemmel, (elektromos mozdonynál még ez a gagyi mezőgyengítés sincs...).




Ott  van:
A tractive effort vs field divert proportion (persze az editorban helyesírási hibáktól hemzsegve valami más, de ez akar lenni)-be adandó csv, azt írja le, hogy a mezőgyengítések között, hogy alakuljon a vonóerő, kN-ban. Az első oszlop %-ot jelöl a következő mezőgyengítésig , tehát 0.0-tól 1.0 között kell szerepelnie a számoknak. Tehát 0.5-nél fél úton lesz a következő mezőgyengítésig. A második oszlop, pedig távhoz tartozó vonóerő kN-ban (bár még nem értem 100%-osan valós a mezőgyengítés mikéntjét, de ez a kN-es dolog komplett hülyeség, hiszen inkább az adott sebességen elérhető max vonóerő (amit a tractiveffort vs speed csv-ben megadtunk) %-át kéne itt megadni, nem egy konkrét vonóerő értéket, de valószínűleg ki is számítja ezt (pl ha a mozdonynak a tf vs speed csv-ben 392 kN-t adtunk meg max vonóerőnek, akkor itt megadott 392kN azt fogja jelenteni hogy az adott sebességen elérhető vonóerő 100%-a, de ez csak fejtegetés, a jelen esetben nem jelent semmit).

Majd fentebb a field divertnél állítjuk be a mezőgyengítési pontokat.
A speed to activate a mezőgyengítést aktiváló sebesség mph-ban (megint következetesek voltak a készítők, néhol m/s néhol mph, néhol km/h...), és max áramerősség aminél aktiválódik (ez is komplett hülyeségnek tűnik, főleg hogy sehogy sem lehet 2500 amper fölé nyomni, még xml-t editálva sem mert a serz elszáll hibával ha többet írsz mint 2500 amper, az editor meg ugye nem is engedi beírni).

M62 field divert csv-je
Mint látható a max vonóerő 392 kN, tehát a 100% és akkor számold ki hogy mennyi a többi, és így alakul a két mezőgyengítés között a vonóerő. Nyilvánvaló ha a 0.9-re 0 vonóerőt írtam volna, soha nem érte volna el a mezőgyengítést, 100-al viszont igen.
Fos az egész így is, de jobb mintha kihagynám az egész mezőgyengítést... Ezen túl meg az rs.comtól függ mikor méltóztatnak végre rendbe hozni a fizikát (bár nem sok az esély rá hogy valaha fogják... :( )

Majd remélhetőleg kiadom az m62 teljes source-ját, ott majd meg lehet nézni minden beállítást.

Frissítés: Bizonyára sokan észrevették, hogy mezőgyengítést használó járműveknél RW-ben mezőgyengítés előtt beáll egy értékre a ampermérő. Ez azért van mert a csv utolsó sorát egyszerűen kihagyja a konvertálásból a játék. Tehát szúrj be még egy sort, ugyanazokkal az értékekkel ami az addigi utolsó sorban volt, így az utolsó előtti sort figyelembe veszi és nem lesz ez a beállás, szépen folyamatosan fog változni az áramerősség.

Scriptelés (főként dinamikus dízelfüst) a játékhoz

Ez lua nyelven történik, amit egy kis programozási tudással nem lesz nehéz megszokni. Ezzel vannak programozva a jelzők, de mást is lehet velük, de sajnos a többi része nincs túl jól dokumentálva...

Itt a hivatalos dokumentáció, de van még függvény itt pár nagyon elrejtett, és nem mindig implementált függvény. És itt.
Illetve van még a SetEmitterActive, és a SetEmitterRate függvény, ami elengedhetetlen mondjuk a dinamikus dízeles füsthöz, és még a SetEmitterColour aminek 3 paramétere van, a vörös, zöld, és kék csatorna.
GetSimulationTime ez pedig elég egyértelmű.

Mozdonyhoz az enginescript, és simulation scriptben lehet nyúlni, ezeket meg kell adni a confignál.

Az enginescriptnek van egy fontos része, ami elengedhetetlen, ahhoz hogy irányítani lehessen a járművet:

function OnControlValueChange ( name, index, value)
   if Call( "*:ControlExists",name, index ) then
      Call( "*:SetControlValue", name, index, value );
   end
end

A dolog egyszerű ez az OnControlValueChange akkor aktiválódik, ha a kezelőfelületről a user valami vezérlőhöz hozzáér.

Pl ha a regulátort babrálja, akkor aktiválódik, a name változóba bekerül a Regulator szó, az index nemtudom mire jó, a value-be pedig az adott control állása, pl 50%-os regulátornál 0.5.
Ez után megnézi hogy létezik egyáltalán ilyen control value, majd a setcontrolvalue meghívásával beállítja a játékon belül. Tapasztalatom szerint ez nem aktiválódik olyan control valueknél, amelyek nem közvetlenül a felhasználótól függnek (pl RPM, Ammeter, vagy hasonló belső szimulációs dolgok), viszont előnye az hogy csak akkor fut le az egész, ha a felhasználó változtat.

Van még a function Setup(), amibe ágyazott kódok a jármű használatba vételekor egyszer lefutnak.
És a function Update(interval) ez minden szimulációs frame-nél (elvileg minden egyes megjelenített képkockánál) lefut, és az interval változóba az kerül be, hogy mennyi idő telt el az előző meghívás óta (biztos jó valamire :D).

Utóbbi kettő megtalálható a simulation scriptben is, persze ha szükség van rá, és igazából a simulation scriptben szoktak babrálni a géppel.

Jah azért leírom, hogy azok a Call(*:függvénynév, paraméterek) azok amik végül is a játékhoz hozzáférnek.
A * nem csak * lehet, lehet egy játékban elkülönített objektum neve is, ezt pl a fő fő blueprintben childként hozzáadott dolgoknál lehet használni.
 
 Ez pl a készülő M62-es engine blueprintjéből egy részlet.
Ott látható az M62smoke-néven hozzáadott füstforrás, aminek intenzitását scriptből tehát a Call(M62smoke:SetEmitterRate, ) formulával lehet vezérelni, külön névre szólóan.

Füsforrásokat, a szokásos rendben, az hangokhoz hasonlóan, meghatározott nevű mappában (vagy annak almappáiban hozzuk létre, különben nem működik. Ez pedig a Particles nevezetű mappa, aminek felismerését a blueprint editor egy fehér lap fölötti szőrös mikrofon ikonnal jelzi :) Ez után létre lehet hozni, egy Emitter blueprintet beállítani, majd az engine blueprintben hozzáadni childként a járművünkhöz, aztán az asset editorral previewelve, szépen a helyére húzni a füstforrást.

A füsforrás beállítása lásd itt ebben a szép kis pdf-ben, amit nem én írtam őszintén nem is tudom ki, de szépen le van írva. Igaz ez még xml-t wordpaddel hackelős időkben készült, mostmár könnyebb a helyzet blueprint editorral, de a nevek ugyan azok, így ugyanolyan jó az írás. A végére a piros betűs részre nincs szükség, hiszen a child pozicionálását ugye ma már az asset editorral szép 3d-ben el tudjuk végezni :).

Fontos megjegyeznem, hogy a doksiban olvasható emission rate az egy és ugyanaz mint amit a SetEmitterRate script függvénnyel állítunk, és mint olvasható ez a füstpamacsok kibocsájtása közt eltelt időt jelenti, tehát minél kisebb az szám annál kevesebb idő telik a füstpamacsok között, annál sűrűbb, vigyázzunk mert nagy sűrűség könnyen megfektet egy erős gépet is :).

Még egy említésre méltó függvény van, a SetEmitterActive, aminek egyetlen paramétere egy szám, ami 0 vagy 1. A füstforrás ki, be kapcsolására való.

Na de itt egy konkrét M62 füstscript a lényege az, hogy 700 amperes áramerősségig alapjárat füst, afölött az aktuális áramerősségtől függő erősebb füst, motor beindulásakor legyen egy erős füst, de amíg üzemanyagszivattyúzik (a hangja) addig ne füstöljön, majd kipróbálható lesz hogy néz/hallatszik ki a játékban, ha kész a szergej ;)

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ő).

2010. július 31., szombat

Crossoverek (vágánykeresztek) sajátosságai RW-ben

Alap vágánytávolság, dupla kereszt
Sajnos a Railworksban, már a Rail Simulatoros idők óta van egy hiba, hogy a vágánykereszteket bizonyos esetekben rosszul rendereli a játék (összecsúszik néhány vezetősín). Bár megígérték hogy javítják, de ki tudja mikor lesz ez? :D
Alap vágánytávolság


Picivel megnövelve a távolságot, az offset tool(5méterre állítva) segítségével, a szimpla keresztnél már minden jó, viszont a dupla keresztnél még nem.
Tíz méteres offsetre állítva, már a dupla kereszt is jó, de lehet hogy kisebb távolsággal is, ki kell tesztelni.

Viszont a szimpla vágánykereszthez alap vágánytávnál is van egy trükk, amivel jó lesz: az összekötő vágányt középen a split tool-al kettévágod, majd weld tool-al összeforrasztod.
Ez megint csak hülyén fog kinézni, de ez nem maradandó. Ahogy újratöltöd az editor/pályát szép és jó lesz.
Ez a trükk sajnos dupla vágánykeresztnél nem lehetséges, ugyanis a kereszteződés közepén nem lehet normálisan szétvágni, így ott marad a nagyobb vágánytávolság, vagy a várás a bug javítására.

2010. július 30., péntek

Railworks honosítás

Összedobtam egy honosítást a Railwork 110-es verziójához. A scenariok leírásai, és a routek leírásai nincsenek lefordítva, csak az általános szövegek.
A kicsomagolt lan kiterjesztésű fájlt a Railworks mappáján belül a languages mappába kell rakni, ez után a keretprogram settings/languages résznél át lehet állítani magyar nyelvre.

Letölthető innen

Frissítve: 2011 október 19.

Frissített fordítás

Sajnos mivel kb 10x megvannak benne ugyan azok a szövegek köszönhetően hogy az RSC ezt is ész nélkül csinálja, idegesítő és unalmas a fordítás. Google fordítóval van fordítva, néhány helyen kézzel átírva, de előfordulnak benne az érdekes szövegek, ugyanis azt általában nem tudni mi hol jelenik meg belőlve. Az excel fájl mellékelve van, aki akarja javíthat a fordításon.

Railworks leírás kicsit másképp


Mivel gyakran hallok sok helyről tévhiteket/marhaságokat a Railworks-al kapcsolatban, úgy gondoltam írok egy részletesebb beszámolót, ami több hónap RW játék, és fejlesztői tapasztalaton alapul, és nem 5 perc játékon ami kb annyi megállalpításból áll hogy jobb a grafikája :):


Története:
2001 megjelent az Microsoft Train Simulator a KUJU !fejlesztésében!, és a Microsoft kiadásában. Mivel konkurencia egyáltalán nem volt a vasútszimulátorok terén, gyorsan elkezdett terjedni, bár gépigénye óriási volt, és bizony a fizika terén, és a részletesség terén is hagyott kívánni valót maga után.
Fejlesztői dokumentáció szinte semmi nem járt hozzá, több év alatt sikerült lelkes moddereknek megfejteni az msts titkait, elkezdtek készülni rá az addonok, viszont gyorsan beleütköztek a játékmotor különböző limitjeibe, aminek kis részét az mstsbin projekt orvosolta, de csodát nem tudtak tenni. A gyenge, és szegényes hangkezelés, a poligonkorlát, valós rendszerek implementálhatatlansága megmaradt, az instabilitással, és a motor régiségéből adódódó lassúsággal, mivel a modern gépek erőforrásait képtelen rendesen kihasználni.

Közben felröppentek a hírek az MSTS2-ről, amit az MS pénzhiány(LOL) miatt lefújt. Így a KUJU átvándorolt az MSTS2 meglévő kódjaival az EA-hez, ahol erőltetett menetben összerakták a Rail Simulatort.
Ez elég sok problémával küzdött(mint az msts), de csak erős szemellenzővel nem lehetett látni hogy bizony fejlődött rendesen az msts-hez képest: kiadtak hozzá 2 patchet majd az KUJU és az EA is szakított.
Mivel a Rail Simulator név az EA tulajdonában maradt, és csak a kód és a weboldal maradt a KUJU tulajdonában, az új kiadást a Rail Simulatorhoz nem kapcsolódóan kellett kiadni más néven, Railworks néven. Közben mivel a KUJU is feloszlott a fejlesztést már a néhány KUJU tagból alakult railsimulator.com nevű cég vette át. Majd 1 évvel ezelőtt kiadták a Railworks-ot nyolcvanvalamennyis verziószámmal, immár külön kiadó nélkül, limitált számban dvd-n terjesztve, de főleg STEAM platformra alapozva.
Ami akkor nem volt más mint egy patchelt újra kiadott RS, amiben az újdonság az volt, hogy egyaránt bekerültek az USA és az eu-s verzió pályái és járművei, és ezek egy kis ráncfelvarráson estek túl, új objektumok, és részletesebb pályadekorációt kaptak.
Ez után pedig 1-2 havonta esetenként félhavonta jöttek a patchek, amik néha úgy járműveket is tartalmaztak ingyenesen (BR143-mas 151-es, és 52-es mozdony, vezérlőkocsi, néhány új vagon, részletesebb állomásépületetek, új jelzőrendszerek).
És akkor most egy felsorolás a szerintem fontos dolgokról, a legújabb 108-as verziót nézve szóval a 84-es "virágbolti" verzióhoz képest lehetnek különbségek ;)

Grafika:
-shaderek támogatása szebb effektekhez, csillogás, különböző felületű anyagok, élethűbb fények stb.

-directx9-es gpu támogatás, ami a modern gépek jobb kihasználását teszi lehetőve szebb, részletesebb grafika, és stabilabb, folyamatosabb futás mellett

-nem esik végre az alagutakban az eső

-jelzőknél "ragyogó" (glow) shaderes textúrák támogatása, ami messziről látható, és igen szép látvány.

-normal mapek támogatása (olyan textúra ami térbeli kiterjedést ír le, így lehet pl 20000 poligonos, de 200000 poligonosnak látszó extrém grafikai részletességű objektumokat készíteni, kis gépigény mellett

-teljes 3d vezetőállás

Hang:
-eax támogatás, visszhangzás, "csőhangzás", és egyéb effektek az ezt támogató audio chipeken, tárgyak és hangok kölcsönhatása (pl visszaverődik a hang egy nagy falról, torzul stb.

-széleskörű hangokat befolyásoló értékek (a teljesség igénye nélkül: mozdony kezelőszervek, mozdony rendszerek pl transzformátor/motoráram, kompresszor fordulatszám, motor fordulasztám, kanyarsebesség (kerékcsikorgás), kerék kipörgés/blokkolás), és korlátlan lehetőségek ezeken kívül lua scriptekkel. Ezeket a befolyásoló értékeket CONTROL VALUE-nek hívják ami nagyon fontos a játékban, mert nem csak a hangokat lehet ezzel befolyásolni, vagy ezt befolyásolni mással.

-hangerő/vagy lejátszási sebesség görbékkel befolyásolható hangok, akár kombinálva, korlátlan mennyiségben

-véletlenszerű (persze befolyásolhatóan véletlenszerű) hangok lehetősége pl környezeti zajokra (madarak, disznóröfögés :D, ami tetszik), vagy pl pályazajokra (klattyogás, zakatolás, nyikorgás)

- ún. Jetfighter hangok (ezek a kamerához képesti sebességre aktiválódnak), amikhez pl elhúzó vonat hangját(széllel mindennel) érdemes rendelni, ami sokkal jobban hangzik mintha a sima zajait hallanánk (tapasztalat), vagyis azt is halljuk, ez csak ráadás.

-hangokon belül össze vissza konfigurálhatóság, akár mondjuk egy motor minden fordulatszámtartományához külön hang hozzáadása

-44khz-es akár stereo minőségű hangok támogatása (ha jól tudom ez msts-ben csak 22khz lehett, mono-ban)

-SOK hang megszólaltatásának képessége egyszerre( msts-ben néhány hang ment csak egyszerre az azon túl hallható hangok némák voltak, sőt a túl sok hang gyakran "hibát okozott")

- külön konfigurálhatóak a forgóvázak, és a mozdony/vagon hangjai (pl mozdonyhoz kerül a motorhang, és egyebek, a forgóvázhoz pedig a kerékcsikorgás kanyarban, kerékcsúszás hangja, futászaj, zakatolás, akármi)

Fizika:
-physix SZOFTVERES fizika (szóval hátrányod nem lesz ha nem Geforce a videokártyád)
- a vagonok, járművek egymásra hatnak, visszarúgás, visszarántás fékezéskor, gyorsuláskor extrém esetben akár sínről lerántás/lelökés

- tömeg tömegközéppont szerinti mozgás számolása (tehát pl kanyarban megdől a jármű, aminek vége lehet teljes oldalra dőlés is, de akár az is hogy a kerékfelfüggesztés mozog, pl a Hagen-Siegen pályán van pár 140-es sebességkorlátos rész, ahol vannak szép kanyarok, és látszik amikor beér a kanyarba hirtelen megrándul és átmegy a súly a külső íven guruló kerekekre, főleg a hirtelenebb közvetlen baljobb/jobbbal kombinációknál

- ütközés hatása is, a sebességtől, a 2 ütköző tömeg stabilitásától, fizikai jellemzőitől függ, nem pedig egy fix értéktől, tehát lehet pl hogy kicsit túlzásban nekihajtasz egy hosszú sor vagonnak, de az ütközéstől nem siklik ki a mozdonyod, és az a vagon aminek ütköztél (de persze ezek is erősen bemozdulnak), hanem az összekötött vagonokon végighalad a lökéshullám, és esetleg távolabb ugrik le a sínről mondjuk a másik végen ahol nincs tovább a csatolások összehúzódása

-motorok, meghajtórendszerek pontos fizikai modellezése exceles (csv fájl) !JELLEGGÖRBÉKKEL! (pl sebesség vs vonóerő, sebesség vs teljesítmény, teljesítmény vs kezelőkar, dízelnél generátoráram vs meghajtómotor áram, dinamikus fékerő vs sebesség), akár TÖBB motor támogatása is egy mozdonyban

-fékrendszer pontos fizikai modellezése, nyomásértékek, fékerő, kompresszor, üzemmódokkal variálható, és a fékrendszerek nem korlátozódnak mozdony,vonat, és dinamikus fékre, korlátlan mennyiségű fékrendszert lehet beiktatni

-a kerekek tapadása függ az időjárástól is, pl eső hó

-kipöröghet a kerék, blokkolhat

Irányítás:
- xml fájlokkal akár járművenként saját billentyűzetkiosztást/bármilyen vezérlőkiosztást lehet csinálni, az egész billentyűzetet kombinációkkal fel lehet használni irányításra

-control valuek (igen ugyan az mint a hangrendszernél) ezeken keresztül irányítjuk a járművet, ennek az értékeit változtatja a játékmotor, ezeken keresztül megy minden irányítása. Ezek sem fixek, az alap controlvalueken kívül akármennyit létrehozhatunk, amihez a billentyűkiosztós xml-el rendelhető irányítóbillentyűt, vagy nem rendelünk ugyanis lehet olyan is, hogy ezt nem kézzel irányítjuk, hanem valami mással kötjuk össze, pl a hangok vezérlése, fedélzeti rendszerek vezérlése, kijelzők (pl sebességmérő vezérlése). Scriptekkel karöltve akár azt is megcsinálhatod hogy hűtőrendszert, fő megszakítót, akármit kelljen vezérelni

-AWS, PZB vonatbefolyásoló rendszerek támogatása alapból (bár a PZB egyesek szerint hiányos mert folyamtosan nyomni kéne, itt meg csak sárgánál, vörösnél, visít amit nyugtázni kell, különben satufék, bár szerintem ez nem gond, még is csak egy játék, én személy szerint nem akarok folyamatosan nyomni egy billentyűt csak mert a valóságban ilyen...), de mivel mint mondtam lua scriptekkel, és a control valuekkel bármit össze lehet hozni, ezt is ki lehet javítani, vagy akár új vonatbefolyásoló, és egyéb rendszereket létrehozni

-3 nehézségi fokozat (simple, intermediate, expert)

-ki-be kapcsolható hogy vörös jelzés engedély nélküli meghaladását scenario végével szankcionálja (gyak kikapcsolható a "you've ignored red light, activity ended)

Fejlesztés:
-mindennek meg van a helye. Objektumok az assets/fejlesztőinév/kiegészítőnév mappákban foglalnak helyet azon belül is beszédes, és bizonyos szintig szabványos névrendszer szerint pl railvehicles= vasúti járművek, railnetwork=vágányok, signals=jelzőkm audio=hangok, de ezeken a jelentéssel bíró fő mappákon belül már szabad a mappastruktúra
A world editor route és scenario részében a "bűvös kockával engedélyezhetők a betöltött kiegészítők fejlesztő és kiegészítőnév alapján, így elkerülhetőek a "nemtudom honnan raktam bele", és "nem tudom melyik szükséges kiegészítőt nem írtam a readmebe" problémák, ugyanis ha nincs engedélyezve az adott route/scenarion belül valami ,az nem is fog látszani a menükben és be sem töltődik, ami egyébként jótékonyan hat a játék teljesítményére.
A routek route adatai pedig a contents mappában foglalnak helyet, tehát jól különválaszthatóak a routek, és a hozzá tartozó objektumok, amik ugye az assetsben vannak.

-blueprint rendszer mindennek van egy "váza" egy konfigurációs fájl, amiből felépül valami. Ez egy xml fájl, ami egyébként exportáláskor gyakran kicsit más alakot ölt, a bin fájlba konvertáláson kívül (ugyanis a bin fáfl xml-ből vagy bármilyen nyers rw kompatibilis bemeneti fájlból a serz.exe nevű programmal hozható létre (amit egyébként az editorok meghívnak maguktól), de ugyanezzel vissza is fejthető, de mint írtam binbe konvertálás előtt kicsit átalakul az xml(NEM MINDEGYIK) így nem lesz kompatibilis a visszafejtett fájl a a blueprint editorral, de csak formailag, mert a tartalma az megmarad, és akár szövegszerkesztővel módosíthatod is, és visszabinelheted, viszont lényeges hogy RW xml-t NEM wines notepaddal írunk módosítunk, mert az rosszul kódol, az RW pedig visszaköpi (sőt már a serz visszaköpi, ugyanis ellenőrzi a bemenő fájlok helyességét)

-blueprint editor felhasználóbarát szerkesztőfelületen lehet létrehozni mindenféle blueprintet

-3dsxmax pluginek a modellezéshez, 3dcanvas pro alapból ismeri az RW/RS formátumát, blenderhez pedig szintén vannak ingyenes export scriptek. Pluginek photoshophoz, de egyébként rwacetoollal bármilyen népszerű formátumból lehet rw-be textúrát konvertálni (jpg, gif, png, tga, tif)

-paranccsori paraméterrrel indítható lua script debugger, hibaloggoló rendszer és audio debugger ami kiírja a hang hardver technikai értékeit, és a játékban megszólal hangok vezérlőértékeit, aktuális állapot (lejátszás, vagy nem, hangerő, sebesség), controlvaluelist

World editor (route editor és "acitvity" editor)
-kiváló route editor, amivel kis gyakorlás, és a toolok kipróbálgatása után gyerekjáték a route építés (bár még mindig baromi időigényes :), viszont pl a krstoolal automatizálható részben a scenery generálás), jó pár 10 órát eltöltöttem vele, olyan msts szerű "elszállnak a route-ból bizonyos dolgok néha" dolog soha nem volt, egyébként az rw támogatja az automata backupot.

-automatikus felsővezeték tartó oszlop lerakó tool

-a route editor a megfelelő helyre rakott SRTM domborzati adatokat a route template-ben megadott földrajzi adatok szerint, sőt akár a 9x nagyobb felbontású ASTER GDEM adatokat is egy T billentyű lenyomásával betölti az adott tile-ra.

-scenario editor igen fejlett útkereső MI-vel, ami bár néha makacskodik, de elég a célállomások megállóhelyek megadása(persze lehet szájbarágosan is rákényszeríteni fix utat amit te akarsz), a többit kiszámolja a gép. Akár 2 vágányos 2 irányú pályán előzést is kiszámol a vonattípus (gyak prioritás is megszabja) alapján, pl a tehervonatos játékos mögött haladó expressz személyt átirányítja a bal vágányra, a játékos vöröset kap a következő vágánykeresz előtt, majd bekanyarodik az expressz a játékos elé, miközben a szemből jövő vonat szintén vár. Nem kell trükközni a jelzőkkel fantomvonatokkal, rendesen működnek ezek.
Néhány óra gyakorlás után már igen sűrű forgalommal ellátott bonyolult scenariot (alias activity) lehet alkotni.

-vágány metadatok támogatása, pl elsődleges/másodlagos sebesség, hang, !vágánytípus! (személy, teher, fővonal, rendezőpályaudvar, stb) a scenario editor útkeresője pedig a vonat típus alapján irányítja a a vágánytípust figyelembe véve a vonatokat (pl személyvágányra nem mehet tehervonat, tehervágányra, rendezőpályaudvarra nem mehet személy, de a fővonalat mind2 használhatja, és még van pár ilyen típus), villamosítás

-az útkereső MI a vonat típusát, a pálya típusát, és sebességét egyaránt figyelembe veszi (pl az angol 4 vágányos pályákon a HST-ket inkább a középső nagysebességű vágányra irányítja, a tehervonatokat a külső kis sebességűekre, a mindenhol megálló személyeket meg oda ahol van hely

- alapból támogat mindenféle krixkrax vágánykapcsolatot, angolváltót, vágánykeresztet, automatikus, manuális váltót, nem kell xtracks meg ilyesmik

- mivel a vágányhálózaton kívül minden tile-okra osztva(bár a vágányhálózat is részben külön fájlban van (külön a vágányok, külön az utak, külön az egyéb loft objektumok, domborzat és egyéb scenery objetkumok), így routet akár párhuzamosan is fejleszthetnek többen


Egyéb
- hülyebiztos package támogatás (csomag), ezekbe a packagekbe, a packagerrel a fejlesztő bármilyen addont összerakhat egy csomagba, majd kiexportálhatja egy darabb rwp fájlba, amit a user pedig a package manager install gombjával, és az rwp kiválasztásával, majd némi várakozással telepíthet, sőt később uninstallálható, ismeri az RS rpk formátumát is