☰ Menu

Scene.hu

Magyar demoscene portál – grafikusok, zenészek, programozók alkotói közössége

4ksource.jpgEgy 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.

vagas.png
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

Categories: Programozás | Tags

16 Responses so far.

  1. avatar slyspy says:

    Valaki kopipasztézzon már be ide egy ilyen ronda kódot, mert nem igazodom ki ezeken fura web -1.0-as oldalakon! :)

  2. avatar pontscho says:

    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… ;]]]

  3. avatar pohar says:

    épp pénteken mutattam a kollégáimnak a 4k source introkat :)

  4. avatar Gargaj says:
    wrote
    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

  5. avatar blala says:

    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.

  6. avatar pontscho says:
    viszont van az oprendszerben pl. bz2, ami azer elegge meg tudja konnyiteni az ember dolgat, szal ott se veszett a helyzet

    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.

  7. avatar Murphy says:

    blala: ez kesz!

  8. avatar blala says:

    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.

  9. avatar Travis says:

    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 :-)

  10. avatar pontscho says:
    Az OSS használata gyerekjáték, már ha fent van. Unix alatt semmi sem garantálja, hogy fent legyen.

    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. :)

    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)

    open() + soksok write(), ennyi.

    Gentoo pedig egy olyan distro, ami forrásból építkezik.

    Valoban, de ez mar advanced OS. Valamint a forditas az emerge-nek koszonhetoen teljesen automatikus, szoval vehetjuk ugy, hogy nem kell vele szorakozni.

    Én próbáltam bináris terjesztésű demókat futtatni, és szinte mindíg katasztrófa volt a vége.

    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 ]

  11. avatar Travis says:

    open() + soksok write(), ennyi.

    Kérlek taníts még Mester! :-)

  12. avatar pontscho says:

    Nem kell gunyolodni :)

  13. avatar pohar says:

    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!!!

  14. avatar slyspy says:

    Pohar: nem nyert a demo.

  15. avatar blala says:

    @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.

Leave a Reply

You must be logged in to post a comment.

Ugrás a lap tetejére Ugrás a lap aljára