5 ms·
I'm pretty proud of my programming skills. I've worked in everything from assembly to JavaScript, JIT compilers to websites to large-scale, fault-tolerant dist
by haberman 15y ago
I'm pretty proud of my programming skills. I've worked in everything from assembly to JavaScript, JIT compilers to websites to large-scale, fault-tolerant distributed systems. etc. etc.
But demoscene programming is still the one thing that leaves me totally in awe, feeling like I wouldn't even know where to start to achieve what these guys pull off. Even if I could imagine fitting all those drawing and sound generation routines into 4k, how on earth would you script the whole thing in that little space? How would you encode and execute the sequence of camera paths, music events, and synchronize light flashes with the music? And make it consistent in time, as opposed to depending on the speed of the CPU? I just can't even imagine what the main loop would look like.
- gaius 15y agoOn a C64, you disable interrupts, pull out your trusty table of opcodes, and can time everything down to a single clock cycle.
- maratd 15y agoHave to start when you're young =) I'm in the same place as you. Pretty sure if I started doing it when I was 10, it'd be self-obvious by the time I turned 12.
- pjscott 15y agoDon't be intimidated! There are a lot of things you don't know about how to make demoscene-style programs, and the reason you don't know them is probably because you haven't tried to learn them yet. I'm pretty sure that if you start learning when you're n, a lot of things will seem self-evident when you're n+2. Here's a series of really good blog posts from someone who decides to make a shiny procedurally-generated city. The result is an amazing how-did-he-do-that demo, but the steps he went through and the way he thought about the problem are understandable. http://www.shamusyoung.com/twentysidedtale/?p=2940 http://www.shamusyoung.com/twentysidedtale/?p=2940
- randlet 15y agoThis is a really great (well written, entertaining, informative, inspiring) series of articles about a guy programming just for the joy of it! Thanks for posting.
- z303 15y agoFor a general discussion of synchronisation, Martti Nurmikari gave a talk at Assembly last year http://thedemoscene.tumblr.com/post/8659078065/martti-nurmikari-gives-a-talk-on-the-basics-of http://thedemoscene.tumblr.com/post/8659078065/martti-nurmik... Alcatraz use an interesting system based on Clang and llvm to export all that from Maya as source code http://thedemoscene.tumblr.com/post/22588846914/digi-alcatraz-talks-about-exporting-3d-scenes-from http://thedemoscene.tumblr.com/post/22588846914/digi-alcatra...
- haberman 15y agoExcellent links, thanks!
- rorrr 15y agoSame here. 4096 bytes is just 64 lines of 64 characters. These guys are brilliant.
- sp332 15y agoWell, ASCII characters use only 7 bits (the high bit is unset), so it's really ~73 lines of 64 characters. And if you limit to alphanumeric that's only 95 symbols, so 172 lines of 64 characters. :)
- SpiderX 15y agoSynchronizing with the music is easy if you generate the music yourself.
- MaysonL 15y agoYeah - I thought I was doing fairly well back in the 70s when I wrote a (lossless) half-tone compression routine that got ~50% compression when there was only enough core [and some of the machines it ran on uses actual core] to hold one scan line. This stuff is amazing.
- skrebbel 15y agoJust recently, in fact a new method came along: those raymarchers that many modern 4k intros are, are essentially a single pixel shader. The C code draws a single quad that fills the screen two-dimensionally, and calls the shader. The shader computes a colour for each pixel for each frame, on the GPU, using relatively simple math to describe the scene (geometric shapes, like intersections of spheres and cubes, for instance. or fractals, like in the OP). This means that instead of learning sizecoding, the opengl/d3d pipeline, mesh uploading, textures, getting along with the video bus speed, index buffers, geometry shaders, and so on, and so on, you can just learn GLSL and how a raymarcher works. Much like 20 years ago, getting something on screen quickly became easy again. It's not as easy as Processing, but it's not too far off either. For example, check out this video[1] about the Russian demogroup Quite (who made the amazing 4k intro "cdak"[2]. The video briefly shows (scroll to 20 minutes) how unc starts with the shader instead of with the C code, using vvvv[3], a tool for live prototyping realtime graphics. They only turn the non-shader parts of the vvvv "code" (block diagrams and envelopes) into C code when the intro starts looking like it's going to be releaseable. With such an approach, you get motivated real fast; focus on getting something on screen, worry about getting into a demoparty compo later. Or just don't worry about the C version at all, and make something cool that you'll never be able to pull off with any animation studio, and put it on vimeo :-) Oh, also check out this Pouet thread [4] about how Quite made "cdak" (but first see the intro!). It's one of those things that make you even more amazed when you get it. [1] http://www.youtube.com/watch?v=tuoRpEMfEHY http://www.youtube.com/watch?v=tuoRpEMfEHY [2] http://www.pouet.net/prod.php?which=55758 http://www.pouet.net/prod.php?which=55758 | http://www.youtube.com/watch?v=RCh3Q08HMfs http://www.youtube.com/watch?v=RCh3Q08HMfs [3] http://vvvv.org/ http://vvvv.org/ [4] http://www.pouet.net/topic.php?which=7909&page=1&x=28&y=5 http://www.pouet.net/topic.php?which=7909&page=1&x=2...