Ebben a részben kicsit belemerülünk a program felépítésébe, a fájlok, könyvtárak szerkezetébe. Megnézzük mik a lehetőségek, miért is olyan könnyű fejleszteni X-Plane alá. A cikk egy kicsit "kockább" hangvételű, mint az előző volt. Sok olyan dolog van, amit elsőre lehet, hogy nehéz lesz megemészteni, de aki kicsit szeretne belekóstolni, jó kiinduló alap lehet, hogy kapjon egy alap rálátást az X-Plane felépítésére.

A program telepítése, felépítése

Felejtsük el a Windows-ban megszokott telepítést. Mivel mindhárom platformra készül a program, az volt a legegyszerűbb megoldás, ha a fájlok magukban is megállják a helyüket: a telepítő tehát csak letölti, kicsomagolja a szimulátort. Nem történik registry-be írás, nem kerül be a telepített programok közé. Ha Windows-t újra kell telepíteni esetleg, elég az X-Plane-t simán visszamásolni és máris használható, minden beállítását megtartva, mivel azokat is fájlokban tárolja.

Mivel a fejlesztők következetesek, ezért a könyvtár- és fájl szerkezet is rendkívül logikus. Egy elég elterjedt módszert használnak: van egy alap struktúra mindenre (repülők, scenery) ezt (vagy egy részét) "duplikálva" felülírhatjuk az alapot, így létrehozva egy egyedi, tovább
Iadható repülőt, scenery-t. Ezt példákon keresztül be is mutatom.

Scenery

A scenery-ket sem kell külön telepíteni, elég a zip-et letölteni és bemásolni a "Custom Scenery" könyvtárba. Ami itt található, azt az X-Plane automatikusan megtalálja és beolvassa magának.

A repterek, navigációs adatbázis egy sima szöveges file (apt.dat) - ez a fent említett alap struktúra - amiből kimásolva egy adott reptérhez tartozó részt egyszerűen létrehozhatunk új scenery csomagot, amit aztán könnyen módosíthatunk, és továbbadhatunk, anélkül, hogy az alap adatbázishoz hozzá kéne nyúlni.

Egy egyszerű példa: az X-Plane/Resources/default scenery/default apt dat/Earth nav data/apt.dat file-ban keressük meg LHZA-t. Látható, hogy rengeteg adat van utána, mindenféle szám.

1 633 1 0 LHZA Zalaegerszeg-Andrashida
100 31.09 3 0 0.00 0 0 1 17 46.89071622 016.78746101 10.06 0.00 1 0 0 0 35 46.87817194 016.79048795 0.00 0.00 1 0 0 0
110 3 0.00 170.00 Taxiway
111 46.88291043 016.78632042
111 46.88324831 016.78857011
111 46.87802098 016.78976790
111 46.87825064 016.79109224
111 46.89085013 016.78803700
111 46.89069273 016.78678241
111 46.88510861 016.78807538
113 46.88473649 016.78593430
14 46.88469309 016.78664943 82 0 Tower
15 46.88457942 016.78795897 260.53 GA Ramp 1
15 46.88356128 016.78812340 262.76 GA Ramp 2
15 46.88410170 016.78801950 262.19 GA Ramp 3
19 46.89040478 016.78815333 0 WS1
19 46.87847149 016.79109020 0 WS2
54 13570 Tower

Ezek írják le a reptéren található gurulóutak méreteit, felületét, pozícióit. Ha ezt a részt kimásoljuk (egészen a következő reptér definíciójáig) egy üres szöveg fájlba, majdnem kész is vagyunk. A fájl elejére még be kell illeszteni a fájl-leíró részt, ami az eredeti apt.dat-ban is van:

I

850 Version - data cycle 2009.12, ...

A végeredmény pedig:

I

850 Version - Az en Zalaegerszeg scenerym

1 633 1 0 LHZA Zalaegerszeg-Andrashida
100 31.09 3 0 0.00 0 0 1 17 46.89071622 016.78746101 10.06 0.00 1 0 0 0 35 46.87817194 016.79048795 0.00 0.00 1 0 0 0
110 3 0.00 170.00 Taxiway
111 46.88291043 016.78632042
111 46.88324831 016.78857011
111 46.87802098 016.78976790
111 46.87825064 016.79109224
111 46.89085013 016.78803700
111 46.89069273 016.78678241
111 46.88510861 016.78807538
113 46.88473649 016.78593430
14 46.88469309 016.78664943 82 0 Tower
15 46.88457942 016.78795897 260.53 GA Ramp 1
15 46.88356128 016.78812340 262.76 GA Ramp 2
15 46.88410170 016.78801950 262.19 GA Ramp 3
19 46.89040478 016.78815333 0 WS1
19 46.87847149 016.79109020 0 WS2
54 13570 Tower

Elmentve (X-Plane/Custom Scenery/LHZA/Earth nav data/apt.dat) kész is vagyunk. Ez után nekiállhatunk módosítani a csomagot, WED-el, OverlayEditor-ral. Akit részletesebben érdekel, itt tud tovább olvasni a témában:

» Fotorealisztikus scenery készítés
» Scenery Builder
» Jelenleg legutolsó apt.dat fájl specifikáció

Repülők

Minden repülő az "Aircraft" könyvtárba kerül. Hogy ezen belül ki hova pakolja, teljesen szabadon választott, akár be lehet ömleszteni az egészet az "Aircraft" alá.

A repülők hasonlóan épülnek fel mint FS-ben: van egy modell ami a repülési modellért felelős, és van egy ami a megjelenésért.
A repülési modellt a "Plane Maker"-ben (X-Plane könyvtárban található ez is, mint futtatható állomány) kell elkészíteni. Rengeteg a beállítási lehetőség, elsőre kicsit elriasztó lehet. Az X-Plane a repülési modellt az itt megadott értékek alapján számolja ki, illetve az alapján ahogy a repülő kinéz (nem összetévesztendő a megjelenésért felelős modellel!). Ha "Plane Maker"-ben összeraksz egy repülőt, beállítod a gyári értékeket, nagyon nagy valószínűséggel egy valóshoz erősen közelítő repülési modellt fogsz kapni, amin adott esetben lehet még finomítani.

A 2D panelt kattintós módszerrel össze lehet húzogatni, elhelyezni a műszereket. A műszerek kinézetét az adott műszerhez tartozó kép(ek) befolyásolják. Ugyanúgy működik itt is a felülírós módszer: "Resources/bitmaps/cockpit/" alatt megtalálható az összes műszer összes képe. Amit módosítani szeretnénk, bemásoljuk a repülőnk könyvtárába a könyvtárszerkezettel együtt, szerkesztjük a képeket és kész is. Persze ez a valósában jóval pepecselősebb munka... :)

A 3D pilótafülke és külső 3D modell egy külön műfaj: ilyenkor az történik, hogy a gép (ami a Plane-Maker-ben elkészült) kap egy átlátszó textúrát, és e "fölött" lesz a 3D modell. A modellek .obj formátumúak. Blender-hez és AC3D-hez is van konvertáló script, illetve kis 3D ismerettel 3DS MAX-ban is lehet készíteni a modelleket.

A textúrák minden esetben 2 hatványa kell legyen (64x64, 128x128, 256x256, stb), max 2048x2048px méretben. A formátum PNG vagy DDS is lehet. Ajánlott a DDS a kisebb fájl méret miatt. Az .obj fájlok is sima szöveges fájlok, akár egyszerű szövegszerkesztőben is készíthetőek - bár ez elég elvetemült dolog lenne :) Ettől független van rá példa, mikor bizony kézzel kell belenyúlni az .obj fájlba, mivel az exportáló script nem biztos, hogy mindent ismer, amit az X-Plane igen.
A témában itt lehet tovább olvasni:
» X-Plane Wiki: Aircraft Development
» OBJ fájl formátum specifikációja
» Plane-Maker és Blender videó tutorial sorzat: egy repülő teljes építése

Plugin-ek

A plugin-ek szolgálnak az olyan extra dolgokért, amit az X-Plane alapból nem tud, esetleg hibásan kezeli. A különböző kliens programok is plugin-ként íródnak meg, mivel így a legkönnyebb elérni (kiolvasni, visszaírni) az X-Plane-ből adatokat. Ilyenek például az FSEconomy plugin, X-Ivap, XSquawkBox.

A kliens programok az "X-Plane/Resources/plugins" alá kerülnek. Az egyes repülőkhöz tartozó plugin-ek a repülő könyvtárában található plugins alá kerül. Így az adott plugin csak az adott repülőnél töltődik be, így kevésbé tud összeakadni másik repülő plugin-jével és kevesebb memóriát is eszik.

A plugin-eket alapvetően C/C++-ban szokták és érdemes írni, ilyenkor mindhárom platformra szükséges lefordítani a forrást és egy ú.n. "flat plugin pack"-ba tenni: az adott plugins könyvtáron beül van egy plugin-neve.xpl, ezen belül található meg a win.xpl, lin.xpl és mac.xpl. A három ".xpl" közül mindig az adott platformhoz tartozó töltődik be, amit az X-Plane automatikusan elintéz.

Ezen felül lehet még Python-ban, Lua-ban írni, de ezek egy részével az lehet a gond, hogy mivel szkript-nyelvek, nyílt forrású a kód. Előnyük viszont az, hogy nem kell mindhárom platformra lefordítani, mert a keret-plugin ezt megoldja helyettünk. A Gizmo nevű itt kivételt képez: ugyan Lua alapú, de elsősorban fizetős gépek készítéséhez készült, mindenféle jó dologgal: időkorlát, licenc lehetőséggél, stb.

» Python Interface
» SASL (Lua, univerzális)
» Gizmo (Lua, fizetős kiegészítőkhöz ajánlva)

Fejlesztés, mint felhasználó

Ebből a jól átgondolt felépítésből következik, hogy magát a fejlesztő eszközöket is nagyon jól meg lehet írni: rengeteg jó program készült arra, hogy minimális, vagy már meglévő tudással lehessen készíteni kiegészítőt, "pillanatok alatt". A sok szöveg alapú fájl nagyon megkönnyíti az egyes kiegészítők elkészítését, illetve a külső fejlesztő program készítését.