cdak és ami mögötte van

cdak nevű 4 kilobyte-os (!) demó 2010. augusztusából (PC) a Quite & orange csapattól:

4096 byte-ban ezt megírni (zenével, mindennel) hogyan lehetséges? Természetesen ötlet kell hozzá. Szeptemberben valaki beposztolta a kódot, ami az effektet elkészíti, persze ebből halandó nem fogja érteni, hogy mi a trükk. Némi vizuális bemutató:

1. lépés — végy egy 3D geometriát!

2. lépés — végy egy kockás mintát!

3. lépés — messed el a 3D geometriádat ezzel a kockás mintával!

4. lépés — add(min)

5. lépés — csináld meg ugyanezt kicsit másik mintával!

6. lépés — 3D-ben most itt járunk:

7. lépés — tegyél rá néhány véletlenszerű generált kocka textúrát!

8. lépés — erre tegyél egy kis edge detection effektet!

9. lépés — némi glow és a 3D scene felépítve:

10. lépés — főzd készre további post effekttel!

(Aki nagyobb méretben kíváncsi a képekre, ide kattintson.)

A demoscene hatalmas dolgokra képes. Íme egy archív felvétel 1993-ból, amikor a Future Crew éppen a “Second Reality” című híres demóját véglegesítette Trug (egyik tag) lakásán. Ez a demó volt az első olyan alkotás, ami véget vetett az Amiga dominanciának és elindította a PC egyeduralmát a játékok és demók terén is:

44 hozzászólás

Nike

Second Reality még ma is nagyon jó demó, pláne akkor régen! Mindenki kész volt, amikor látta.

riviera

Sajnos a PCs demókkal (legalábbis számomra) az a baj, hogy míg a C64/Amiga platformokon vannak/voltak a hardvernek limitációi, PCn “sajnos” nincs. Így lehet dizájnos faszomságokat csinálni, de programozási kihívás az nincs sok benne.

Én akkor vesztettem el végérvényesen az érdeklödésemet ebben az ügyben, mikor találkoztam egyszer egy pár évvel fiatalabb sráccal PC demók kapcsán, és kiderült, hogy turbo pascalban nyomták a “kódot” — és mikor kérdeztem, miért, azt mondta, hogy mert így is gyors.

És erre igazából tényleg nem tudtam mit mondani, mert tényleg az volt.

Mindegy, nekem a C64/Amiga azok “demoképes” platformok voltak, a PC nem az (kivéve ezeket a 64k/4k demókat, ezek teljesen egyfelöl teljesen elmebetegek, másfelöl meg kurva nagy risztekpa — kár hogy nem vágom ezt a z80 vagy milyen assemblyt, de egy fél órát így is elnézegettem annak a skacnak a kódját, aki 256byteban (!) írt tetrist).

A nagy risztekpa pedig azért megy, hogy mindenki lássa, hogy nem kellenek mega/gigabájtok, hogy rendes programot írjunk. Ebben a “mai világban” ez fontos szerintem.

Olyan gépek vannak alattunk, hogy _nem érjük fel ésszel_ a teljesítményüket, és az egész el van pazarékolva a különféle absztrakciós rétegekre, felesleges API layerekre, stb. stb. (Én ezért pl. a Microsoftot hibáztatom, ök terjesztették el szerintem ezt a mentalitást, de javítson ki bárki, ha tévedek, ill. lehet hogy amúgy is bekövetkezett volna. Szóval nem flame-nek szánom.)

9b0

én ugyan nagyon szeretem a haujoob / farbrausch típusú demokat (ez a cucc az orange-tól azért eléggé ez a kategória, bár ők régi motorosok), azért azt mindenképp hozzátenném, hogy a 3D gyorsítók elterjedése óta a demok kevésbé érdekesek technikai szempontból, inkább csak a látvány számít – amiben a renderelt animációkkal elég nehezen versenyeznek, de még a játékok is pipálják őket lefele szépen. maga a kód már csak olyan algoritmusokat tartalmaz, amik objektumokat / hullámformákat / texturákat generálnak, és ezeket összekötik minimális trackerekkkel / kameramozgásokkal (ezek általában szintén procedurális dolgok). nagyobb demoknál meg a zene sem különösebb skill, mert pont ugyanolyan hagyományos technikával készülnek, mint bármely más zenésznél, és pont ugyanúgy egy mp3 sáv az egész (nem úgy, mint a 2nd Realityhez megírt Scream Tracker, vagy a Triton Crystal Dream 2-jéhez megírt FT2). nem mondom, hogy 4K-ban ezt az egészet megcsinálni egyszerű, de sokkal többre értékeltem régebben az olyan dolgokat, mint pl. a Complex – Bill G force 64 K introja ( http://www.youtube.com/watch?v=-OkQ3znOIk0&feature=related ), ahol a megjelenítési rutinokat is bele kellett gyömöszölni a kódba a sok hülyeség mellé. farbrauschnál azért van olyan, amitől leesik az állam, mert szerintük csak procedural texturáknak van értelme, és hát beszarás, miket hoznak ki belőlük látvány szinten:

http://www.youtube.com/watch?v=k_oTQd93eRI

payskin

Egyrészt a Future Crew videót végigmosolyogtam, jó volna egy feliratozás hozzá, hogy miről beszélgetnek, meg ki kicsoda. Az elég valószínű, hogy Skaven tolja a ScreamTrackert, de azon gondolkoztam, hogy 1993-ban mi a franc szólaltatta meg ezt a zenét ilyen minőségben? Brutál jól szól.

A másik meg, riviera, gondolom ez a pascalos sztori ilyen “az idő mindent megszépít” dolog lehet, mert a Pascal sok minden volt, csak gyors nem. Ha valamit gyorsan kellett benne intézni, akkor azt direkt assemblyben kódoltuk már akkor is — más kérdés, hogy erre a Borlan Pascal lehetőséget adott, ki sem kellett lépni belőle.

version

egyetertek rivieraval , ha hozzaszamoljuk a driver dll-eket maris nem 4k-s a demo , ez igy teljesen ertelmetlen
persze hogy ezt a vonalat erositik mert igy kis befektetessel lehet compokat nyomni, egy amiga szintu demo manapsag 100 millio ft-ba kerulne, profi koddal , profi 3d graffal , nem beszelve arrol hogy akik tenyleg mesterei ezeknek a szakmaknak nem ilyen hulyesegekre pazarolja az idejet

tomzorz

“3. lépés — messed el a 3D geometriádat ezzel a kockás mintával!” akarod mondani “négyzetrácsos”

riviera

@payskin a pascalos srác nem “profi” volt, de pl. egy interferencia effektet megírt pascalban, és az teljesen jó sebességgel futott (tán 486-oson). Mondjuk a képfrissítéssel nem lehetett asszem összeszinkronizálni (nemtom, pc-n lehetett-e ilyet egyáltalán), de persze régen volt a dolog, meg a lényegen nem is változtat.

Mondjuk ezeknél a mai 4k demóknál mindig elfelejtem, hogy a 4k-ba nem tartozik bele a 3d render engine 🙂 (4k-ba amúgy meglepö mennyiségü kód belefér, csak hozzá vagyunk szokva hogy mindent megabyte-ban mérünk)

Amúgy félreértés ne essék, nekem nem a driverek meg dll-ek ellen van kifogásom, hanem hogy manapság szó szerint több ezres szorzó van mint processzorteljesítmény, mint memória szintjén, és használni nem gyorsabb, mint mondjuk egy amigát, söt.

A legutolsó Visual C++ pl. felinstallálva 1 giga helyet foglal — és a legdurvább, hogy ez már fel sem tünik senkinek. Az hogy egy szaros Word/Excel szintén ennyi helyet foglal (gondolom) az nem elképesztö?

Ja egen, a 256byteos tetrises csávó a rrrola, az ö cuccaira érdemes rákeresni. Ö DOS alatt nyomja, úgyhogy semmi OpenGL/DX API.

Na most már kimonologizáltam magam, megyek vissza Hellraisert nézni.

riviera

@9b0 a Farbrausch demo az tényleg meleg pite (azt ne mondd, hogy 4k! 🙂 még 64-nek is kemény)

Meg még annyit hadd szakmázzak, hogy ha esetleg valakit érdekel a procedurális alapú 3d animáció, akkor a Houdini c. programot nagyon melegen tudom ajánlani. (Meg hogy a Maya egy rakás szar, azt csak a saját jóérzésem végett hadd írjam ide, jajj-de-jólesett! bocs :)) Na mostmár tényleg vége a komment-pollúciónak részemröl.

9b0

nem, az nem 64K, hanem nagyobb méretű cucc (már csak a zene miatt is: az nem procedural, hanem mp3). viszont nekik volt anno egy játékuk, a kkrieger, ami 96K, és erősen alázta grafikára az akkoriban XBOX-ra megjelent Doomot (kb azidőtájt kattantak rá a procedural texturákra).

http://www.theprodukkt.com/kkrieger#20

nekem nincs olyan kártyám, amin fut, de egyszer kipróbálnám… bár inkább örülnék, ha végre egy igazi bullethell shmupot fejlesztenének, és nem a chorensha és a hydorah lennének a két értelmes hasonló játékok, amikkel tudok játszani az irodában a kollégám pc-jén.

H2CO3

Ha már a kilobájtoknál tartunk: nem tudom, az AppStore-fejlesztők nem értenek-e a GCC-hez, vagy mivan, de ha kikapcsolnák a -g opciót, akkor nem generálna rögtön tízszeres mennyiségű debug kódot a kompájler… Így simán 13kb-ból megvan egy app (ha nem nézzük, hogy vannak ~40 megás dylibek, pl. UIKit), úgy meg egy helówörld is soxáz kB. Tényleg az elkényelmesedéssel van a probléma, mivel ha az Xcode helyett maguknak kellene Makefile-okat írniuk, rögtön meggondolnák, hogy mit tesznek bele.

version

H2CO3 : kicsit mult szazadinak tunik ez a makefilozas, a mai technologiat is gyotrelemnek erzem , mar regen ugy kellene programozni mintha az ember rajzolgatna , megfogod az egysegesitett kodbazisbol a kivant programszeletet es behuzod a program grafodba , nem irogatni mint valami idiota
csakhat amikor a visual studiot a m$ ingyen adja hogy a konkurencia meg almaban se gondoljon sajat forditoprogram keszitesre, eselytelen a fejlodes igenyelt uteme

gabro

Gyá, Skaven a scream trackerrel, mekkora koczkulat arc már :). Nagyon kemény hiánypótló videó. Annak idején a zenéjét fölvettük kazettára és úgy hallgattuk. Valószínűleg sokmindenre gondoltunk közben, de arra biztos nem, hogy a zeneszerző egy szőke vastagszemőldökű gyerek sztk-szemüvegben.
más:
Tegye fel a kezét, aki emlékszik még a titkos részre a second realityből.

mukinyúl

A 2nd realitytol a mai napig kiraz a hideg (jo ertelemben), hogy “es ezt igy hogy?”. Maxi risztekpa a future crewnak.

csiga

Nem tudom a pascal-os programban mennyi volt ténylegesen Pascal, mi anno haverokkal szintén Pascal-ban toltuk, ami köbö annyit jelentett, hogy begin asm és ment bele az assembly. Kurva jó volt az interface, könnyen lehetett paramétereket átadni, memóriaterületre hivatkozni, gcc alatt a mai napig kiver ezektől a víz.

sabe

5:35 -nél az FC videóban !! ott a füzetben az arc a demóból!

riviera

@H2CO3 @version Ehhez annyit tudnék hozzáfüzni, hogy a gcc-vel legalább lehet pár kilobyte-os végeredményt produkálni ha jól beállítod, de MSVC-vel még egy helloworld se jön ki 32 kilobyte alatt. A Makefile meg egy kicsit tényleg oldszkúl (de nem az ötlet hanem a megvalósítás) — mi nemrég álltunk át scons-ról waf-ra (amit egy magyar skac fejleszt, és sztem kurva jó :)). Nade nagyon offolok már megint.

version

riviera: matematikailag bizonyithato hogy multi processzoros kornyezetben a JIT nyelvek gyorsabbak a nativnal , igy az assemblynek meg a c++-nak meg vannak szamlalva a napjai , igaz ugyan hogy ez a sebesseg novekedes 8 processzor folott jelentkezik
de hat mar a mobilok is lassan 4 maggal jonnek ki ebben az evben…

eFi

version: nem akarok én kötekedni, de mutatnál egy URL-t, ahol ezt valaki matematikailag bizonyítja?

payskin

“Nem tudom a pascal-os programban mennyi volt ténylegesen Pascal, mi anno haverokkal szintén Pascal-ban toltuk, ami köbö annyit jelentett, hogy begin asm és ment bele az assembly.”

Erről beszéltem. 🙂

ern0

@version Lehet, hogy most döntöm össze a világképed, de a JIT-es rendszereket (intermission: nem a nyelv JIT, hanem a futtató környezet) is natívban megírt kód futtat. De baszki, hát nehogy már neked kelljen magyarázni.

Szerintem qra nem ezt akartad mondani…

fatso

@H2CO3 az AppStore-t az Apple fejleszti, es nagy valoszinuseggel -g kapcsolo nelkuli forditas fut az eszkozokon. Ugyanigy a Release is kod is -g nelkul fordul, hacsak nem piszkalod, sot az -mthumb kulon ki kell szedni, hogy gyors kod forduljon ne kicsi.

@riveira: x86 assembly amire gondolsz.
A demoscene-t mar `90es evek vegen vegen sirattak, es lasd megis keszulnek erdekes dolgok otletben es technikaban iden is: http://scene.hu/news.php?extend.1203 (pl Agenda Circling Forth).
Az meg hogy egyre erosebb a vas nem fetetlen szab hatart a kreativitasnak, max mar nem a forgo kocka a nehez.

A post temajaban csemege lehet:
http://exceed.hu/h7/woman.htm

Kitekintesnek:
http://www.creativeapplications.net/

greg

a végén előszedem az asm94-es fotókat és beszkennelem. 🙂 a future crew-s srácok nagyon jó fejek voltak, igazából tök ismeretlenül felajánlották, hogy ha nincs szállásunk (akkor volt talán az atlétikai eb és semmit nem találtunk amit ki tudtunk volna fizetni) akkor kempeljünk a parti előtt náluk. elvittek ide-oda bulizni, meg ott csöveztünk egy estét Gore-nál. úgy látszik a finn kockáknál standard kiegészítő a fekve nyomó pad, mert nála is találtunk ilyet, mint a fenti filmben. valahogy felénk kevesebben voltak akik a pc + jamo hangfal kombó mellé még két-három tárcsa súlyt is kéznél tartottak, hogy “amíg a gép a kódot fordítja, addig tolok a súlyokba párat”… 🙂

H2CO3

Fatso: nem a /Applications/AppStore.app-ra gondoltam, hanem a 3rd party appokat, amelyek láthatóan felesleges megabájtokat tartalmaznak…

rept_ai

riviera: azert azok az API-k nem annyira feleslegesek – nelkuluk most nem lenne pld 3d rendereles olyan platformokon, ahol mondjuk az elerheto GPU tipusok szama nagyobb, mint egy. Regen, mikor meg csak a linearis framebufferbe irogattuk a byteokat, meg elment, hogy $a000-on van a 320×200, aztan uccu, de mar 1-2 evvel utana is kezdett horrorba atfordulni a dolog. SVGA-t akarsz? semmi gond, tridenten modszer “A”, tseng-en “B”, oak-on “C” – biztos sokan lattak mar itt Terror News inditokepernyot, kethasabnyi videokartya listajaval, hogy nesze bmeg, valassz 😀 Utana jott a vesa, mint szabvany, ezt mar tekinthetjuk API-nak, orultunk is neki, mint kutya a farkanak. (vagy macska?)

Ajanlo rovatomban egy mostanaban felkapott, uj effekt eddigi legjobb megvalositasa kovetkezik. Maga a demo kicsit oldschool design teren, de a mandelbulb allat:
http://pouet.net/prod.php?which=56458 (quadcore ajanlott, de nem kotelezo)

rept_ai

Azert csinaljak, mert szeretik csinalni. Jo sok melo, de nagy elvezet osszerakni egy ilyet, es utana mutogatni a haveroknak, meg a tobbieknek a scenen. Nem mellesleg egy demoban ki lehet probalni olyan otleteket, effekteket, amit a napi meloban nem feltetlenul, mert vagy nem praktikusak, vagy ott feleslegesek, vagy egyszeruen maceras lenne beleeroltetni egy letezo keretrendszerbe.

A demoscene egy hobbi.

HoBa

“3. lépés — messed el a 3D geometriádat ezzel a kockás mintával!” akarod mondani “négyzetrácsos”

Akarod mondani: metszed

HoBa

Kedd 0:08-kor miért kell még hétfőt mondani szervernek…
Debugging needed…