HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

Demoscene fájlformátumok

2011.05.18. 23:12 Travis.CG

A demók elkészítése során számos segédeszközt használunk. Az elkészített tartalmakat (zenék, képek, stb) lehetőleg minél kevesebb munkával szeretnénk a demó részévé tenni, ezért a gondosan megválasztott fájlformátumoknak nagy szerepe van. Az intrók esetében ilyen probléma nincs, mert minden tartalmat a program állít elő.

Platform

A demó platformja nagymértékben meghatározza, hogy milyen fájlformátummal tudunk dolgozni. Egy Amigán futó program értelem szerűen nem mp3-ban tárolja a zenét. De PC-n és főleg GNU/Linux rendszerben, ahol a csapat demói készülnek, szintén számítani lehet korlátozásokra. Fedora alatt például alapértelmezetten nincs mp3 codec.

Zene

Mi Ogg/Vorbis formátumban tároljuk a demó hanganyagát. Könnyű hozzá a legelterjedtebb platformokon lejátszó könyvtárat találni. Az SDL_Music például minimális energiabefektetéssel lejátsza. A kezdetek óta használjuk. Valamennyi demónkban Ogg/Vorbis formátumban vannak a zenéink. Egyetlen alkalommal sem okozott problémát a használata, pedig Linux mellett AmigaOS4 és MorphOS alatt is használtam.

Textúrák/Képek

Ez sem nehéz választás. A PNG és JPEG egyaránt elterjedt és népszerű formátum. OpenGL példaprogramok mellett előszeretettel találunk TIFF betöltőket, ezért ha nem akarjuk a képet tömöríteni, akkor ez is egy alkalmazható módszer. Mi PNG-t használunk, mert ebben van alfa csatorna. A libpng-t valamennyi Linux disztribúció tartalmazza. Windows esetén állítólag csak egy DLL kell. Elhiszem. Az összes bitkép szerkesztő program tudja exportálni ebbe a formátumba, de ha mégsem tudna, akkor az ImageMagic ezt is megoldja. (Igen, parancssorban szoktam képeket konvertálni)

3d modellek

Poligon centrikus demók esetén fontos, hogy a különböző térbeli alakzatokat, miután elkészítettük egy modellező program segítségével, szintén minimális energia ráfordítással illeszthessük alkotásunkba. Itt már akadhatnak problémák. Először is, kevés azoknak a fájlformátumoknak a száma, amit a legtöbb modellező program exportálni tud. A másik probléma, hogy az egyes programok ugyanazon formátum különböző dialektusait beszélik. Ezért bármilyen modellt is kapok Grasstól, az első, hogy azonnal tudni akarom, hogy megfelel-e a demó keretrendszere által elvárt formának (ez egyébként valamennyi fájlra igaz).

Így jutottam el a Wavefront OBJ formátumáig. Ez egy szöveges állomány, ezért parancssor segítségével azonnal fel tudom térképezni. Pl:

grep -v "^#" modell.obj | awk '{print $1}' | sort | uniq

Ez a parancs megmondja, hogy mely mezők fordulnak elő a fájlban. A ZBrush például kihagyja a normál vektorokat.

awk '/f/{print NF}' modell.obj | sort | uniq

Ezzel pedig azt ellenőrzöm, hogy minden poligon ugyanannyi csúcspontból áll-e. A Cinema4d ugyanis néha háromnál több csúcsot tartalmazhat.

A másik nagy előnye a szöveges állományoknak, hogy könnyű módosítani őket Perl szkriptekkel. Előfordult ugyanis, hogy az egyik program egy módosítás alkalmával eltolta valamelyik tengely irányába az egész modellt. Mivel én kézzel szoktam pozícionálni a demóban, egy ilyen után meglepődve tapasztaltam, hogy a modell eltűnt. A koordináták gyors ellenőrzése segítségével viszont gyorsan kiderítettem, mi a gond.

Vektorgrafika

Most kellene azt mondanom, hogy SVG. Sajnos nem. Az SVG egy olyan formátum, ami már kétszer is megkeserítette az életemet. Az első demóm alkalmával egy saját vektoros formátumot használtam, de mivel még nem volt grafikus a csapatban, ezért a grafikákat Illustratorban (igen, ez egy Windowsos program) és Karbon14-ben (ez pedig Linuxos) készítettem. Sajnos nem volt elég tapasztalatom egyik program használatában sem, ezért mindkettővel egy részfeladatot végeztem csak el. Abban az időben sokat indítottam újra a gépet.

Ami viszont az újraindításokon túl gondot okozott, az a szabványok támogatásának hiánya. Sajnos az Illustrator, aminek elméletileg kenni-vágnia kellett volna az SVG szabványt, bizony sokszor hibázott. A Karbon14, amit valószínűleg felhasználók visszajelzései nélkül fejlesztettek és fejlesztenek mind a mai napig, viszont remekül boldogult többféle SVG dialektussal is. Ezért, ha véletlenül Karbon14-ből mentett SVG-t akartam betölteni Illustratorba, akkor volt egy kis konvertáló scriptem, ami SVG-t konvertált SVG-be.

Most, így utólag visszaolvasva, nekem is hihetetlennek tűnik, hogy mikre voltam képes. Azt még nem is említettem, hogy az SVG-k csak vonalakat tartalmaztak, egyetlen színnel. Bele sem merek gondolni, hogy mi történt volna, ha bonyolultabb alakzatokat használok.

Sajnos az SVG-től nem sikerült megszabadulnom. Az Etch-a-sketch című demónknál is kísértett szelleme. Itt is saját formátumba készítettük a vektorgrafikát. Okulva a korábbi kudarcból, készítettem egy szerkesztő programot, ami rögtön saját formátumba mentett. Legalábbis ez volt az elmélet. A gyakorlat az volt, hogy sok időt felemésztett a szerkesztő program kifejlesztése, ami nálam működött, Grassnál nem. Közeledett a party, de én ahelyett, hogy a demót programoztam volna, a szerkesztő bugjait javítottam. Grass közben nem tudott dolgozni, az idő meg telt.

Ekkor nagy levegőt vettem és azt mondta, használjunk SVG-t. Két kikötésem volt: Csak vonalat tartalmazhatott és csak egy általa választott program egy bizonyos verziójában készülhetett. Azt gondoltam a konvertáló szkript ennyivel meg fog birkózni.

Mondanom sem kell, hogy egyiket sem sikerült betartani. Szerencsére ezeket idejében észrevettem. A demó pedig elkészült.

Tanulság

A saját formátumoknak megvan az az előnyük, hogy mi tartjuk kézben, viszont több munkát ró a programozóra, akinek el kell készíteni az eszközöket, konvertáló programokat hozzá. A másik lehetőség, hogy standard fájlformátumokat használunk, de itt elképzelhetőek apró módosulások a szabványhoz képest. Ha nem elég robosztus a demó keretrendszere, hogy felismerje a formátum dialektusait, akkor célszerű csak egy program egy adott verzióját használni, és a demót ahhoz igazítani.

Szólj hozzá!

Címkék: programozás demoscene

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr942915396

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása