☰ Menu

Scene.hu

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

Archive for the ‘Tutorial’ Category

Hogyan készülnek a demojoe intrók?

Posted by tifeco on December - 21 - 2020

Sziasztok,

A felkérésnek [zargatás Discordon – a szerk.] eleget téve írnék egy kicsit demojoe 4kbyte intrók kulisszatitkairól.
Ha esetleg nincs meg hirtelen a legutóbbi demojoe prod, akkor innen letölthető:

Kezdjük is a legelején: az alapkoncepció az volt, hogy próbáljak egy vicces/rajzfilmszerű történetmesélést 4kbyte-ban összehozni, lehetőleg úgy hogy több epizódra is kitartson a dolog, valamint természetesen a történetek legyenek kapcsolatban a demoscene-nel. Mint általában a 4kbyte intrók többségében, el kell gondolkodni, hogy milyen trükköket/cseleket vessek be, és hogy hogyan tudnék belepasszírozni minél több tartalmat a produktumba.
Tovább…

Hi! Megismételtem egy régi történetet, írtam egy klienst a Rocket Editor-hoz Rust-ban. Windows, Linux és Mac-en is megy (elvileg!).  (Gyors linkek, akiknek ez már ismerős terület: leírás, client és sync crate, példa kód).

Ez egy viszonylag egyszerű dolog, de kódolás közben eszembe jutott, ahogy korábban mások, csendben magukban egy nagy CRT monitor előtt, vagy egy parti közepén együtt valakivel, Rocket klienst írtak.

Hamarosan Function lesz! Demót nem tudok küldeni, de ti majd remélem, mert várom látni a beadott prod-okat.

Demók Rust nyelven

Hagyományosan a demó írás a C/C++ nyelveken történik, mert a végeredmény mindenképp egy darab futtatható bináris fájl kell legyen, és a művészi szabadsághoz (értsd: wild hacking) kell, hogy szabadon lehessen irányítani, mi történik alacsony szinten a kódban. Illetve, a 4k – 64k kategóriákhoz ennek a méretét is erősen optimalizálni kell.

A Rust nyelv hasonlóan binárisra fordul. Újnak nevezhető, de azért már 2015-ben volt az 1.0 kiadása, és azóta már két év eltelt. Növekszik az olyan elvárt library-k száma, mint a smallvec (growable array on the stack), notify (file asset figyelés) vagy a serde (serialization to- and from structs).

Rust-ban dolgozva többet segít a compiler abban, hogy segfault mentes legyen a programunk. Minden változót végigellenőriz, és nem engedi meg például azt a helyzetet, hogy olyan változó címre írjunk ami már felszabadult, vagy valami éppen máshol is módosítja azt.

Alacsony szintű hozzáférés? Művészi szabadság? Van. Egy unsafe { ... } blokkon belül a compiler elengedi a kezünket, és vagdalkozhatunk mindenféle unsafe csatabárddal mint amilyen a mem::transmute. Idézem a Rust nomicon-t:

“Újra fogjuk értelmezni ezeket a biteket ha bele is pusztulunk!”

A compiler remek hibaüzenetekkel szolgál, gyakorlatilag a compiler üzeneteiből meg lehet tanulni használni a nyelvet.

Például jellemző az, hogy változtattam valamit egy struct-ban. Most akkor emlékezzek minden helyre ahol ez releváns? Hagyjuk rá a compiler-re. Minden helyet megtalál, ahol ki kell bővítenem a kódot, és a szerkesztőben egyik helyről a következőre ugrok amíg el nem fogynak a hibák. Ha lefordul, jó is lesz.

Rust-ban dolgozik például Ferris és Phaazon. Látta valaki az Elysian (64k!) demót vagy az Outline 2017 invite-ot? Remek demók, Rust-ban. Ferris tartott egy három órás előadást arról, hogyan működik a demotool-juk.

Logicoma – Elysian (Final version)

Outline 2017 Invitation – DESiRE & The Undead Sceners

Rocket Editor

A GNU Rocket Editor az animált változó értékek ütemezését segíti. Ad egy felületet, ahol szerkeszthetjük, hogy például épp ekkor legyen a magasság 0.5, és ez menjen felfelé 1.5-ig. Közben a fényerősség változzon 2.1-től 4.0-ig. És lássuk közben, hogy az jól néz ki vagy sem. Ezt kézzel tetűkoppasztó szenvedés összebabrálni, ebben az ütemezésben segít a Rocket.

Több változata van. Az eredeti a rocket/rocket repóban él. Én magam az emoon/rocket változatot használom Linux-on.

A kliens egy futó Rocket alkalmazáshoz kapcsolódik localhost:1338 porton, és kommunikálja ezeket a változtatásokat a demónak.

Például itt, a felső ablakban fut egy kis példa projekt, ez csatlakozik az alsó ablakban a Rocket szerkesztőhöz, ott futnak az időre ütemezett változó értékek.

Link lista:

Ennyi.

Move your world!Az előző cikkben azt ígértem most a mozgatható elemek – alig meglepő módon – mozgatásáról lesz szó. Ez lesz az ami biztosítja nekünk, hogy a kicsit szegény és limitál grafikai tárházunkat meghökkentő trükkökkel, lélegzet elállító látványossággá alakítsuk. Legalább is értékelhetővé tegyük, hogy ne akadjon fel az elő-zsűrin. :) Aki persze játékgyáros ambíciókkal rendelkezik ezt a részt áhítattal kell olvassa! Hiszen félig ettől kelnek életre a kis – ám nagy gonddal megalkotott – játék elemek.

Vágjunk is bele!

Tovább…

[Az előző rész itt tekinthető meg.]

Ahogy ígértem a mostani részben felhasználjuk az eddigieket és megismerkedünk igencsak egzotikus grafikai tárházunkkal. Mostantól nem írok teljes kódlistát, csak az adott kivesézett részt. A teljes forrást és a binárist persze letölthetitek majd.

Tovább…

Az NVIDIA már jó ideje dolgozik egy új generációs részecskefizikai rendszeren. A FleX egy az eddigieknél általánosabb, részecskéken alapuló modellt alkalmaz, ami hihetetlen módon megsokszorozza a lehetőségek számát. Folyadék, szövet, rugalmas anyagok, deformálódó felületek, és ezek kölcsönhatása. Csupa olyan dolog, amit realtime eddig nem igazán láttunk. Az alábbi video a Siggraph 2014-re készült a motor képességeinek demonstrálása.

További infók:

Az NVIDIA FleX preview oldala.

Interjú Miles Macklinnel, a project vezető fejlesztőjével. 

Egy alapos Whitepaper azoknak, akiket benéznének a motorháztető alá is.

Miles Macklin fejlesztői blogja.

Tovább után érdemes megnézned a FleX korábbi preview videóját is.

Tovább…

Egy újabb SID lejátszó

Posted by NmG on April - 17 - 2014

6582[3]Talán 11-12 éves lehettem, amikor első alkalommal kerültem kapcsolatba a C64-essel, játékokon keresztül. Ezek között a játékok között sok olyan akadt, melynek a zenéje a mai napig nagy hatású, ezt bizonyítja a számos SID lejátszó, a pár ezer remix és egy online rádió létezése.

Így ahogyan nagyon sokaknak, nekem is kicsit mániámmá vált a SID. Másrészt szintén kedvenc témám a hangszintézis, ezért törvényszerű volt, hogy előbb-utóbb nekilássak egy SID lejátszó barkácsolásának.
A projekt eredeti célja kicsit más volt, egy SID – MIDI konvertert szerettem volna csinálni. Azonban ehhez szükségessé vált a SID zenék lejátszása és a lejátszás helyességének az ellenőrzése. Mi más lenne a legjobb ellenőrzés mint az, ha meg is lehet hallgatni a zenét?

Tovább…

Unity scener szemmel (2. rész)

Posted by Travis on April - 14 - 2014

Az előző részben létrehozott alkotás két okból sem számít demónak. Először is, nincs benne animáció, másrészt Esc gombra nem lép ki. Ezért ebben a részben kódolni fogunk és animálni.

Hozzunk létre egy új projektet. Nem kell semmilyen csomagot hozzáadnunk. Egy kameránk lesz mindössze. Adjunk hozzá a jelenethez egy csomó kockát. GameObject -> Create Other -> Cube. Ha már három kocka kész, jelöljük ki mindegyiket, majd az Edit -> Duplicate segítségével duplázzuk meg a számukat. Az új kockák a régiekkel megegyező pozícióban lesznek, ezért forgassuk/mozgassuk őket tetszőleges helyre. Rövid idő alatt nagy mennyiségű kockánk lesz, ha ezt a pár lépés ismételgetjük. A kockák mindhárom koordinátája legyen a -2, +2 tartományban.

Adjunk hozzá három fényforrást. GameObject -> Create Other -> Point Light. Nevezzük el őket Red, Green, Blue-nak. Mivel ebben a fejezetben kódolni fogunk, coder color sémát használunk :-) Állítsuk be mindhárom fényforrás pozícióját: Red: X=0, Y=0, Z=3. Green: X=3, Y=0, Z=0. Blue: X=0, Y=3, Z=0.

A kamerának a korábban megismert módon adjunk egy Audio Source komponenst, és adjunk hozzá zenét.
1. ábra

Tovább…

atari vcs (atari 2600)Újra itt! Közben Karácsony lett és Szilveszter is közeleg itt az új év, így mindenkinek lehet ideje egy kis olvasgatásra. Talán már a Harmony Cart is ott figyel a fa alatt egyeseknél, míg másoknál a gyerekek már a vadonatúj Jr-on verik egymás score-jait laposra.

Aki nem olvasta az előző részt annak itt:
Csókolom! Stella lejöhet játszani? part1

Mielőtt belekezdenénk a  hardcore kódolásba, egy kicsit nézzük át hogyan is jön létre egy frame a képernyőn és hogyan kell olyan kernel kódot írni ami ezzel összhangban van. Ez azoknak akik már kódoltak hasonló korú gépekre, ismerős lehet, de adjunk esélyt az újoncoknak is. A cikk végén kicsit kitérek a Stella run-time debug funkciójára is, mivel kihagyhatatlanul hasznos. Igyekszem csak a programozás szempontjából fontos dolgokat tárgyalni – a teljes sztorit mindig megtaláljátok a Stella Programmer’s Guide-ban. Terv szerint nem leszek végletesen szájbarágós. Ez természetesen a cikksorozat többi részére is érvényes – és bármikor megszeghető – kijelentés. :) Na vágjunk bele!

Tovább…

Unity scener szemmel (1. rész)

Posted by Travis on December - 27 - 2013

Már a Function idején is szemeztem a Unity3d játékmotorral. Sokszor mondják, hogy a demoscene és a játékfejlesztés szoros kapcsolatban van, de ezt a kapcsolatot kicsit egyoldalúnak találtam. Habár nem vagyok bennfentes a játékiparban, kívülállóként azt látom, hogy a játékipar többet profitál a demoscenéből, mint fordítva.

A jövőben elképzelhető, hogy ez a trend meg fog fordulni, hiszen egyre több grafikai motor válik hozzáférhetővé és ez biztosan kihatással lesz a demoscenere is. Az egyik ilyen motor a Unity. Elsősorban játékfejlesztésre van kihegyezve, de ismerünk egy csapatot, akik – legjobb tudomásom szerint – kizárólag ezzel a motorral készítenek release-eket. Nézzük, mi a Poo-brain csapat titka!

Tovább…

Tutorial: Hogyan rajzolj szemet?

Posted by Murphy on November - 25 - 2013

Sade ismét meglepett bennünket egy nagyszerű tutoriállal. Hogyan jutsz el egy egyszerű fekete korongtól egy hihető szem képéig 6 egyszerű lépésben?sade_szem

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