Egy olyan kategóriát szeretnék bemutatni, ami kevésbé ismert a demoscene történetében. Olyannyira kevéssé ismert, hogy tudtommal csak két évben rendezték meg. Linux alatt a futtatható állományok bináris formátuma nem olyan egységes, mint Windows alatt. Ez egyesek szerint probléma, de ha azt nézzük, hogy ezen a platformon elsősorban a forráskódot terjesztik és nem a bináris formát, talán ez megbocsátható. Igazából nagyon kevés stabil kapaszkodót talál az, aki Linux alatt akar demókat készíteni. Van viszont forráskód, ami legtöbb esetben C/C++. A 4k source intronak ezért sokkal szigorúbb szabályai vannak a többi intróhoz képest.
Először is a forráskód csak ANSI C vagy C++ lehet. Az egyetlen megengedett API, amit használhatnak, az SDL, a forráskódnak pedig az újsor és szóköz karaktereket nem számítva bele kell férnie egyetlen 4096 byte méretű fajlba. Azért, hogy jobban lássuk, milyen trükköket alkalmazhatunk kódolás közben, tennék egy kis kitérőt. Mindenki tudja, hogy kódolni nagyon rondán is lehet. Ez különösen igaz a C nyelvre. Felmerülhet a kérdés, hogy milyen lehet egy igazán ronda program. A választ legkönnyebben egy versennyel lehetne eldönteni. Az International Obfuscated C Code Contest egy olyan verseny, amivel pont ezt a lényeges kérdést döntik el. A szabályok itt is kimondják, hogy a forráskódnak 4096 karakterbe bele kell férnie, de itt már minden karakter számít! Ez már eleve megnehezíti a kód olvasását. A versenyzők viszont számos trükkel teljesen olvashatatlanná teszik programjaikat, viszont ezen trükkök segítségével képesek leredukálni a forráskód méretét. Az egyik módszer, a #define igen sűrű, redundáns használata. Ez igen komoly tervezést igényel, mert segítségével egyesek képesek olyan kódot előállítani, amit egy basic és C fordító is megért. A másik kedvelt eljárás a pointerekkel végzett műveletek összevonása. Ezek nem csak a program olvashatóságát nehezítik meg, de még a működés megértését is gátolják. Aki azt hiszi, hogy ilyen megkötésekkel nem lehet értelmes programot készíteni, az bizony téved. A győztesek között számos játék, sudoku megoldó, prímszám kereső, de még beszédszintetizátor is található! Most már semmi nem állhatja útját a 4k source componak! A http://www.linuxdemos.org oldalon két évben (2003 és 2004) rendezték meg ezt a rendhagyó megmérettetést. Az alkotások színvonala nem éri el a Tracie minőségét, mégis számos ügyes darab van bennük, amit mindenkinek ajánlok megtekintésre. Mivel a forráskód szabadon elérhető, kezdő scenerek sokat tanulhatnak az ott leírt technikákból.
A ronda C programok linkje:
http://www.ioccc.org/
http://www.linuxdemos.org/
A 2004 -es megmérettetés:
http://www.linuxdemos.org/demo/4k_source_compo_party_2004_final
A 2003.as:
http://www.linuxdemos.org/demo/4k_source_compo_party_2003_final
Beküldte: Travis
Valaki kopipasztézzon már be ide egy ilyen ronda kódot, mert nem igazodom ki ezeken fura web -1.0-as oldalakon! :)
Csak egy aprosag. Mar linux alatt sem divat forrasbol buildelni, ezert talaltak ki a distro-kat. Valamint linux (bar inkabb az *NIX kifejezes jobb) rendszereken sem nehezebb 4k-t csinalni, csak mivel nincs egy crinlker jellegu packer, igy kevesebb helybol gazdalkodhat az ember.
Hangot kiadni OSS-sen keresztul kb. annyi erofeszitest igenyel, mint w32 “multimedia alrendszerevel”. OpenAL-lel meg egyszerubb, kb. 3 sor az init, de OSS garantaltan van mindenhol.
Grafika szinten, van SDL, de pure X code se sokkal nehezebb. Mivel a WinAPI erosen hajaz a ’70-es evekben az MIT-n kifejlesztett X API-jara, igy eros hasonlosag van a ket kod kozott. Valoszinuleg teljesen veletlenul. :]
Arrol nem is beszelve, hogy nem egyszer hallom hogy “tegyel az intro melle dxyz.dll-t es menni fog”. Ezt szinten elo lehet irni egy linuxos intronal is. :)
Bezzeg OSX… ott mar az OS core szinten tamogatja a textura generalast CoreImage segitsegevel… ;]]]
épp pénteken mutattam a kollégáimnak a 4k source introkat :)
mivel nincs egy crinlker jellegu packer
viszont van az oprendszerben pl. bz2, ami azer elegge meg tudja konnyiteni az ember dolgat, szal ott se veszett a helyzet
Hat, kopipasztelni nem merek az e107 miatt, de itt van ket direkt link ami nagyjabol illusztralja azt a gyakorlatot, hogy kod egyben ascii art is legyen:
egy, ketto.
De. bzip2 a legrosszabb valasztas kis file-okra, oda gzip jobb valasztas. De annak a hatasfoka is eleg durvan elmarad akarcsak LZMA-tol, plane crinklertol.
blala: ez kesz!
Murphy: Vannak jobbak is, de lusta voltam keresgelni. Amugy meg mondjuk J nyelven minden program ascii artnak nez k :) Meg “allitolag” Perlben is lehet “szepeket” irni. Egyszer lattam obsfucated Haskellt is (szerintem lehet siman, eleg rugalmas a szintaxis), de a google nem talalta hirtelen.
Pontscho: teljesen igazad van.
Az OSS használata gyerekjáték, már ha fent van. Unix alatt semmi sem garantálja, hogy fent legyen.
Az említett program azért volt érdekes számomra, mert nem csak hangot adott ki, hanem elmondta a pontos időt, méghozzá minden féle library nélkül! (közvetlen kezelte a /dev/dsp-t)
Én nem vagyok nagy linuxos, de a distroból hiányzó dolgokat forráskódból rakom fel. A Gentoo pedig egy olyan distro, ami forrásból építkezik.
MacOSX-nek pedig ezért is jósolok nagy jövőt a demózás világában.
Én próbáltam bináris terjesztésű demókat futtatni, és szinte mindíg katasztrófa volt a vége. Az egyes disztok más helyen tartják a lib-eket, és ha eggyel gond van, akkor a demo nem megy.
Természetesen a forráskódként terjesztett változatokkal is szokott gond lenni, de egy kis segítség a Makefile-ba megoldja a gondot :-)
Linux alatt mindenki vagy OSS-free-t vagy ALSA-t hasznal. Desktopon eleg jellemzo a jelenlete. :) ALSA pedig elbol emulal OSS-t, pl. Skype es egyebb binary-only cuccok miatt. Sot, OSS komercialis valtozata pedig minden UNIX-ra letezik, bar ha jol remlik, most lett GPL az is. :)
open() + soksok write(), ennyi.
Valoban, de ez mar advanced OS. Valamint a forditas az emerge-nek koszonhetoen teljesen automatikus, szoval vehetjuk ugy, hogy nem kell vele szorakozni.
Az mas kerdes, hogy pancser mod oldjak meg a kerdest az esetek nagy szazalekaban. Siman megoldhato, hogy ne legyen ilyen gond.
[ módosítva Nov.12. 12:24 ]
open() + soksok write(), ennyi.
Kérlek taníts még Mester! :-)
Nem kell gunyolodni :)
Blala demojában még az volt a furcsa, hogy a CNS által használt fonotkalács tunnelhez hasonlított nagyon.
Egyébként el kellene venni postumusz a győzelmet, ha hónapokkal a party után sincs release!!!
Pohar: nem nyert a demo.
@Pohar. Mar megint rossz topikban piszkaltok. Ez most hogy jon ide? Egyetlen kommenthez meg a poszthoz se kapcsolodik.
A fonottkalacs tunnel egyebkent is egy masik demoban volt, es minimum 98 ota meg akartam csinalni. Eredetileg Robymus otlete volt, csak blobok helyett juliamorpherrel.
A gyozelmet meg eleg nehez elvenni, mert nem is gyoztunk :) De az ermet meg a igo reklampolot szivesen visszaadom ha ez a kozonseg egyertelmu demokratikus igenye, mas nalam nincsen… Release meg majd lesz, egyszer, latod mar videot is sikerult csinalni, amugy meg kurvara nem erek ra. Ahelyett hogy orulnetek hogy eggyel tobb demo volt a kompoban. Na.
http://hup.hu/node/47124
1k 1971-bol.