FIGYELEM: Ez a bejegyzés, már több, mint 1 éves, az itt leírtak elavult információk lehetnek!
Ezen cikk, a mostanság sok gondot okozó, .GFX fájl szerkesztésének és módosításának lehetõségeivel foglalkozik. A .GFX fájl elsõsorban az Unreal 3 motorra épülõ játékokban fordulhat elõ, de már más motorokban is kezdi felütni fejét, mivel rugalmasabban használható fejlesztõi oldalról. A cikk taglalja a .GFX fájl közvetlen szerkesztését, illetve egy .GFX fájl készítését a nulláról.
Sokéves fordítói tapasztalattal úgy gondolom, hogy mindig a lehetõ legszebb fordításra kell törekedni. Hobbiprojekteknél a technikai oldal ennek ugyanúgy része: fontos, hogy a nyelvünkre jellemzõ egyedi karaktereket is használhassuk, tehát a legtöbb esetben szerkeszteni kell a karakterkészletet.
A karakterkészletet néha font fájlban (vektorgrafikusan) vagy textúraként tárolja a program, ezek az állományok könnyen szerkeszthetõk. Viszont fejlesztõi szempontból célszerû lehet a Flash fájlokból összeállított tárolók használata, ezek sokféle adatot tárolhatnak, többek között a vektorgrafikus karakterkészletet. A vektorokkal leírt fontkészlet elõnye, hogy a program pedig futási idõben, mindig a szükséges méretnek megfelelõen fogja elõállítani a betûket (és a felhasználói felületet). Számunkra hátrány, hogy ezek nem szerkeszthetõ állományok, de örömmel jelentem, hogy sikerült megoldást találnom a problémára!
Röviden arról van szó, hogy a tárolt adatot fogjuk alacsony szinten, hexában szerkeszteni. Ehhez csak annyit kell tudnunk, hogy mit és mire kell átírni :) Hajrá!
SZÜKSÉGES PROGRAMOK:SWiX SWF EditorSothink SWF EditorHxD Freeware Hex EditorFlash Decompiler TrillixAdobe FlashNotepad++
Az elsõ három mindenképp szükséges, de a Trillix és az Adobe Flash is segíti a munkát. A Sothink SWF Editorból a teljes változat vagy az 1.3-as verzió 614-es buildje kell: sajnos a próbaváltozat nem jeleníti meg az elemekhez kapcsolódó értékeket, viszont elég kikapcsolni valamelyik tag-típus megjelenítését (kis képek a menüsoron), és máris oda a védelem és szerkeszthetõvé válnak az értékek. Take that, b*tch!
ELSÕ LÉPÉSEK:Ahogy észrevettem, a .gfx fájl lényegében megegyezik az .swf fájlokkal. Ha .gfx fájllal állunk szemben, akkor nyissuk meg hexeditorral vagy notepaddal. A fejlécének elsõ három karaktere GFX, ezt írjuk át FWS-re, majd mentsük a fájlt .swf kiterjesztéssel. Visszafelé ugyanígy mûködik, de erre nem lesz szükség, mert a szerkesztést közvetlenül az eredeti fájlban fogjuk végezni a hex editorral. Értelemszerûen, ha az eredeti fájl .swf kiterjesztésben szerepel, akkor megspóroltunk egy lépést, egyéb esetben szükségünk lesz mindkét típusú fájlra.
Egy .swf fájlt bármikor behúzhatunk a Trillix jobb oldalán lévõ mezõbe, így böngészhetõvé válik annak tartalma. Alul a megjelenõ tulajdonságoknál látható a karakterkészlet azonosítója, azaz a FontID. Nyomjuk meg az Extract Object gombot, az így kibontott .fla fájlt már megnyitja az Adobe Flash. Ebben szerkeszteni nem fogunk, viszont jobb oldalt a böngészõben láthatóvá válik az egyes elemek indexe. (Megjegyzés: Szükség esetén képként is exportálható a fájl, amibõl készíthetünk .ttf karakterkészletet.)
BETÛK ELÕÁLLÍTÁSA:Kezdjük kis elmélettel. Mit jelent az, hogy vektorgrafikusan tároljuk a karakterek? Arról van szó, hogy megadunk egy kiindulási pontot, ahova letesszük a ceruzát, majd onnan kezdve rövid szakaszokat és íveket rajzolunk, végül visszatérve a kiindulási pontba, azaz egy zárt körvonalat alkotunk. Az alakzatot ezután kitöltjük, és kész is a betû. Ha ékezet is kell rá, akkor kicsit felette is megadunk egy kiindulási pontot, majd megrajzoljuk az ékezet körvonalait és kitöltjük azt. Ha visszafejtjük a fájlt, látni fogjuk a szerkesztési parancsokat és az értékek, a számok elvileg egy képpont huszadrészét jelölik, bár ez nem teljesen tiszta. A lényeg, hogy nagyobb, mondjuk 600-1000 körüli értékekkel kell majd módosítani a meglévõ értékeket, 100 alatt pedig már nem nagyon látszik a változás. Akár a betûk formáját is átalakíthatjuk, de ilyenkor fontos ügyelni arra, hogy a szerkesztés végével visszatérjünk a kezdõpontba.
Akkor hát. Nyissuk meg az eredeti (vagy abból képzett .swf) fájlt a SWiX editorral. Keressük meg a megfelelõ DefineFont bejegyzést és ellenõrizzük, hogy egyezik-e az ID a Trillixben látottal. Elsõ lépésként keressük meg index alapján az ú vagy ó betût (sajnos le kell számolni), amit majd át fogunk szerkeszteni a saját helyén. Esetünkben a nagy Ú indexe 120.
A tömbben a betû szerkesztési parancsai olvashatók. Azonosítsuk be az ékezetet (elõtte move parancs, aztán rövid leírás) és magát a betût (move parancs és hosszabb leírás, sok ívvel és vonallal). A move paranccsal helyezzük új helyre a ceruzát. Tehát: a karakterhez tartozó egyes alakzatok egy move paranccsal (stylechange tömbbel) kezdõdnek, és a következõ move parancsig (stylechange tömbig) tartanak.
Másolás-beillesztéssel készítsünk egy második ékezetet, aztán az egyiket toljuk el balra, a másikat pedig jobbra. Ehhez értelemszerûen a Move parancsok DX értékét kell módosítani pozitív és negatív irányba (a DY értékét ne piszkáljuk, mert akkor más magasságban lesznek az ékezetek, mint a többi hasonló karakternél). Ezután mentsük a fájlt új helyre, majd húzzuk be a Trillix böngészõablakába és ellenõrizzük a változást. Finomítsunk az értékeken, amíg elég szépek nem lesznek az ékezetek, majd mentsük a fájlt új helyre, pl. nagy_u.swf néven.
Ezután nyissuk meg a (nagy_u.swf) fájlt a Sothink editorral, böngésszünk a megfelelõ azonosítójú karakterkészletnél a megfelelõ indexû karakterre (esetünkben 120), így a program színkóddal megjelöli az adott betût leíró adatrészt. Jegyezzük fel az adatrész kezdetének és végének hexa-címét, illetve számoljuk meg, hogy hány karakterpárból áll a blokk.
Ezután nyissuk meg a (nagy_u.swf) fájlt a HxD hex-editorral, jelöljük ki ezt a tartományt (ctrl+g kombinációval ugorhatunk adott címhez, alul látszik a blokk kezdetének és végének hexa-címe), majd ctrl+c billentyûkombinációval másoljuk a vágólapra és mentsük el egy sima szövegfájlba, pl. nagy_u.txt.
Ezzel meg is van a gyönyörû karakterünk hexa-kódja! Javaslom, hogy tegyük archív mappába a nagy_u.swf fájlt, hogy véletlenül se nyissuk meg többször, mert akkor fals adatokhoz juthatunk. Pusztán csak az átszerkesztett betû hexa-kódja kellett nekünk. Célszerû most elvégezni mind a négy betûre a folyamatot, külön .txt fájlokba mentve a kicsi és nagy õ és û kódját.
EREDETI FÁJL SZERKESZTÉSE:A következõ lépésként egy meglévõ, de nem használt karaktert (pl.: ä) fogunk lecserélni az egyik elõbb elõállított betûnek. Ehhez ki kell választani egy megfelelõ nem használt karaktert, majd meg kell keresni annak a helyét. Ez a Flash és a Sothink editor közös használatával a legegyszerûbb. Nézzünk ki egy ívesen görbülõ, ékezetekkel ellátott betût, majd a karakterindex alapján keressünk rá az editorban. Fontos, hogy most az eredeti fájlról készült .swf legyen megnyitva az editorban, a szerkesztést pedig az eredeti fájlban végezzük! Az editorban látni fogjuk, hogy mekkora helyet foglal el az adott karakter (mint az elõzõ képen). Olyat keressük, amelyik hosszabb, mint az elõbb elõállított hexa-kód. Számoljuk meg, hogy hány karakterpárral hosszabb ez a hely, mint az elõzõ kódunk, és írjunk a (nagy_u).txt fájl végére ennyi darab 00 párt, aztán ctrl+c billentyûkombinációval másoljuk az egészet a vágólapra! (Nem szükséges pontosan leszámolni, egyelõre nagyságrendileg is elég.)
Nyissuk meg az eredeti fájlt a HxD editorral, jelöljük ki a teljes felülírandó blokkot (alul látszik a kijelölés kezdõ és záró címe), majd ctrl+v. Ha változna a fájlméret, a program sikít. Folytassuk (de ne jelöljük be a jelölõnégyzetet!), és rögtön látszani fog, hogy hány 00 karakterpárt tévedtünk. Adjunk hozzá vagy vegyünk el további 00 párokat az elõzõ kódhoz (a nagy_u.txt fájlban) és próbáljuk újra, amíg jó nem lesz. Célszerû ezt egy lendülettel megcsinálni mind a négy karakter esetében, majd mentsünk.
Utolsó lépésként a karakterek szélességét is be kell állítani, ehhez kell a Sothink teljes verziója (vagy kapcsoljuk ki az egyik tag-típus megjelenítését a valamelyik kis képpel). Nyissuk meg az eredeti fájlt, majd keressük meg a szélességi értékeket. Olyan értékcsoportot kell keresni, ahol a hasonló betûkhöz (mondjuk u és ú) azonos értékek tartoznak. Esetemben: DefineFont3/U16 FontAdvanceTable
Itt keressük ki az eredeti betû szélességét (mondjuk Ú, indexe 120, értéke 6760), majd írjuk be ezt az értéket az átszerkesztett betûhöz (a 123-as indexû helyre). Figyeljük a változást a hexa-kódban, majd másoljuk át a változást a szerkesztett betûket tartalmazó fájlba a HxD editorral.
TANÁCSOK:A munka elõtt szerkessz bele az eredeti fájlba (pl. vegyél le egy ékezetet az ú betûrõl, a Sothink editorral megkeresheted, hogy miket kell kinullázni), és próbáld ki, hogy egyáltalán mûködik-e és látszik-e a változás a játékban. Ha nincsen változás, talán rossz fájllal dolgozol.
Célszerû elõször elõállítani és menteni az egyes betûk kódját, majd szigorúan az eredeti fájlban keresgélve összeírni a szükséges címeket (milyen címek közé kerül melyik betû, milyen címen kell a szélességet milyen értékre átírni), majd a tényleges szerkesztést csak ezután, egy lendülettel végezzük.
Ha megvagyunk, érdemes lehet letesztelni a szükséges abc minden betûjét, hogy lássuk, hiba nélkül mûködnek-e. Ne feledjük, hogy a program szöveganyagában õ és û helyett a lecserélt karaktereket kell használni.
Eredményes szerkesztést és jó fordítást kívánok! :)
Bandris86
.SWF .GFX generálása az alapoktól (az eredeti fájl alapján) - Evin
Másik módszer, mely egyszerûbbnek tûnhet, a .gfx fájl tartalmától, illetve hozzáértésünktõl függ, hogy ez a módszerrel gyorsabb eredményt érhetünk-e el, mint az elõzõ módszerrel, vagy sem.Ugyanakkor, ez a módszer csak akkor használható, ha a gfx/swf fájl csak fontot és/vagy mintaszöveget tartalmaz. (Mintaszöveg - ha az swf lejátszásakor megjelenik valami szöveg, de tartalmilag zagyvaság, vagy irreleváns, és csak a fontok bemutatására szolgál)
Amire még szükségünk lehet: UDK, 1.8GB
Az indulás elõtt, töltsük le és telepítsük az UDK-t, egy hexa szerkesztõt, az Adobe Flash-t és egy SWF decompiler programot.
Az elsõ lépések megegyeznek. Hexa szerkesztõben megnyitjuk a .gfx fájlt, átírjuk a GFX azonosítót a fájl elején FWS-re. Ezután megnyitjuk az új swf kiterjesztésre is átnevezett fájlunk, egy decompiler programmal, és kiexportáljuk .fla kiterjesztésbe. (Ehhez valószínûleg teljes értékû programra lesz szükségünk!)Már a decompilerben látszik, de ha megnyitjuk az .fla fájlt Flashben, ott is fel fog tûnni, hogy a betûtípusoknak saját nevük van, ami nem feltétlen a betûtípus neve.
Ismerkedésként kezdjük egy kész fájllal: UDK\UDK-2012-10\UDKGame\Flash\UDKFontsNyissuk meg a gfxfontlib.fla fájlt. Elsõ dolog, amibe ütközhetünk, hogy szól, nincs ilyen betûtípus a rendszerünkön telepítve. Most elfogadhatjuk a felajánlott lehetõségeket. Nézzük meg, a Library be van-e kapcsolva: Windows->Library. A Library-ban láthatjuk a 2 betûtípusunk: $NormalFont és $BoldFont. Az esetek 99%-ában dollár jellel kezdõdik a betûtípusok megnevezése, és ezen ne is változtassunk. Bármelyik néven jobb kattintás és Properties... Vagy ha nem a nevekre kattintunk, a New Font menüponttal új betûtípust adhatunk hozzá.Itt csak néhány dologra kell figyelnünk. Az Options panelen a "Name" legyen megadva, ha exportáltunk ne módosítsunk rajta. A Family/Style szabadon módosítható, ez a beillesztendõ betûtípusunk lesz. Ha nincs olyan a rendszerben, mint ami kellene, kezdésként válthatunk Arialra, ami a magyar nyelvet teljesen támogatja. A Character ranges alatt mindig az elsõt válasszuk, az All-t! Az ActionScript panelen az Export in frame 1 legyen bepipálva, és az Options panelen, a Name mezõben megadott érték legyen itt is. Figyeljünk oda, hogy ugyanezt minden betûnél be kell állítani!Ezután beállítjuk, hogy jó .swf fájl jöjjön létre: File->Publish settings. Csak a Flash(.swf) elõtt legyen pipa. Jobbra, az Advanced szöveg alatt, ne legyen semmi bepipálva, fent pedig a Target, lehetõleg a gfx fájlról átnevezett swf fájl verziójával egyezzen. Természetesen, ha exportált .fla fájlt nyitottunk meg, itt a Target alapértelmezetten jó verziót fog mutatni. Hogy megkapjuk az .swf fájlt, Fájl -> Publish.
Ha már ismerjük a betûk, dollár jellel kezdõdõ neveit, hexa szerkesztõvel is ki tudjuk legközelebb deríteni, magából a gfx fájlból is. Sõt, a .gfx fájl három dolgot tárol olvasható szöveggel ():- GFX: a fájl azonosítója- gfxfontlib: a GFX/SWF fájl valódi neve- $BoldFont: a betûtípus azonosítója (ahány fontot tartalmaz a gfx, annyi dollár kezdetû azonosító van)- _sans: a dollár kezdetû azonosítóhoz rendelt betûtípus neve
Most megvan az új .swf fájlunk. Mielõtt továbblépünk, érdemes valamit leellenõrizni. SWiX programmal megnyitjuk a .gfx-bõl átírt .swf fájlunk, és a most létrehozott .swf fájlt. A korábbi képen is látható
Készítsünk GFX fájlt. A korábban említett "a GFX/SWF fájl valódi neve" értéket érdemes kikeresni, de az esetek többségében ez megegyezik a .gfx fájl nevével. Így ha pl az eredeti fájlnév gfxfontlib.gfx volt, akkor az .swf fájlunk neve is legyen most gfxfontlib.swf! Ha ez megvan, itt találunk egy programot: I:\UDK\UDK-2012-10\Binaries\GFxAkár parancssorral is megadhatjuk (elég sok lehetõséget kapunk ezzel), vagy egyszerûen ráhúzzuk az .swf fájlunk a gfxexport.exe-re. Ezzel megkaptuk az új .gfx fájlunk, DE még egy lépés hátravan.Hexa szerkesztõvel nyissuk meg az új .gfx fájlunk, majd a fájl elejétõl ugorjunk elõre 24-et decimálisan, vagy 18-at hexában. Vagy egyik, vagy másik! HxD-ben az ugrás Ctrl+g.Ahol a kurzor megáll, utána van egy érték ezt az egy értéket módosítsuk arra, ami az eredeti .gfx fájlban, ugyanitt van. Jelenleg az esetek többségében eredetileg 02 van, de az új fájlunkban 04 szerepel. Írjuk át és mentés! Természetesen, ha az eredeti fájlban a 02-tõl eltérõ érték szerepel, akkor is módosítsuk a mi fájlunk az alapján. Ez csupán a .gfx fájl verzióját jelöli, és ha nem módosítjuk helyesen, a játék kifagyásával járhat.Ezután csak vissza kell tenni az új .gfx fájlt a játékba.
A fentiek alapján, ha kiismertük a fájlokat, megfelelõ gyakorlattal és az alapvetõ tudnivalók megszerzése után, akár a nulláról is készíthetünk betûtípusokat tároló .gfx fájlt.
A cikk csak az .SWF .GFX fájlok szerkesztési és módosítási lehetõségeit taglalja! Ha a .GFX fájl CFX azonosítóval kezdõdik, az tömörített verziót jelent, mely esetben CWS-re kell átírni, hogy .swf kiterjesztésre átnevezve a fájlt, dolgozhassunk vele.További tapasztalataink nincsenek ezen fájl szerkesztésével, de valószínûsíthetõ, hogy csak egy teljes újragenerálással módosítható. Tömörített fájlt pedig a Flash, Publish settings beállításainál a Compress movie lehetõséggel lehet tömöríteni.
Összesen 9 hozzászólás érkezett
21:12
Aki nem hiszi, járjon utána!
20:11
12:06
Köszi
Ha Swix-szel újra generálod, akkor se a fájl mérete, se a struktúrája nem fog egyezni az eredetiével, így semmilyen betû nem fog megjelenni a játékban.
A trükközést hexában az eredeti fájlon kell elvégezni, hogy ne változzon semmilyen adat, csak az adott betûk képe.
Üdv:
Andris
02:35
11:41
21:45
07:51
19:57
19:24
Gondolom az SWF akart lenni