Jump to content
IGNORED

Demoscene


Guest thus

Recommended Posts

I love the ones with self imposed ridiculous restrictions. Like this one of just 23 bytes big (Here's the entire source code - 7C 00 05 A2 29 3F A8 E5 A1 45 A2 05 A2 29 7F 99 00 D4 99 D7 CF 50 EB )

 

 

The glitchy music properly kicks in after around a minute

Link to comment
Share on other sites

I love the ones with self imposed ridiculous restrictions. Like this one of just 23 bytes big (Here's the entire source code - 7C 00 05 A2 29 3F A8 E5 A1 45 A2 05 A2 29 7F 99 00 D4 99 D7 CF 50 EB )

 

The glitchy music properly kicks in after around a minute

This is one of the most impressive ones I've seen:

 

(and on a REAL c64):

 

 

 

 

There's a video of someone playing it at a convention and everyone freaks out.

 

 

 

I'm sure the code uses tons of cheap tricks, but it's still, as one commenter mentions, a "perfect testimony to the amount of wasted processor time and bloated code in modern machines".

Link to comment
Share on other sites

I wonder why this sort of extremely optimized coding isn't more common in mainstream applications? Is it just that it's too time consuming and the current hardware is powerful enough to get away with sloppy programming? I would think that certain procedures used in these demos wouldn't be too difficult to implement in mainstream apps (I dunno, I know nothing about programming).

Link to comment
Share on other sites

The nearest I can think of nowadays is Reaper - IIRC it was only about 2mb until a few years ago, and even now is only 7mb. Winamp used to pretty compact too before Aol et al got their mitts on it

Link to comment
Share on other sites

I think it has to do with a few things, although these are just guesses and I have no authoritative voice on the subject:

 

1. Flash. It's complete shit and everyone should stop using it forever.

 

2. Too many features. Many applications simply have too much in them to try and make them easier. This has the unintentional side effect of just making everything way harder because there's too much there to deal with.

 

3. Updates. They just add more and more and more without taking things away. I doubt old code is cleaned up enough.

 

4. Contemporary aesthetics. This one might be a stretch, but the digital aesthetic is very "chrome" and flashy (but still very boring monochromatic, yawn) which I think might add graphical drag to systems. It also makes everything feel bulky, even though it's trying to be sleek.

 

5. Poor memory management. This is, in my opinion, the core of the problem. As we've gotten more and more space, applications have felt like they need to use it all up for some reason. Not having much RAM forced programs to be careful with memory, but now it's all over the place. It's like when there's an entire roll of toilet paper and some idiot uses like half of it even though three sheets would have done just fine.

 

Browsers are notorious in these areas. I wish more applications were like VLC. Note that it's also not necessarily how big your program is; a very tiny program can put huge drag on your system. Like I said, poor memory management (read: your computer probably has 300+ gigs of space, but 4-16 gigs of memory, as in RAM).

 

This stuff will improve loads with solid state computing, but that doesn't mean that computer programs will be any less stupid. In fact, it probably means the opposite.

Link to comment
Share on other sites

You should probably also keep in mind that these demos are useless eyecandy with zero interactivity that can trick you into thinking they're doing things they really aren't. The code isn't "optimized" for any purpose besides displaying that exact demo. I don't think you can use much of this type of extremely low-level programming when you're designing an actual useful app. Isn't C practically the lowest anyone goes these days?

Link to comment
Share on other sites

In PCs it makes no sense to optimize the code by size because the hardware is so cheap and programming is not exactly cheap. And the cost of hardware goes to the user.

 

Also optimized code is a bitch to maintain and debug. Programmers try to make generalized, easily reusable code, instead of highly specialized super-optimized chunks that only do what they were exactly designed for and nothing else. So you get layers and layers of libraries and interfaces that all add to the total size and resource consumption. The good thing is that the well defined interfaces make the software development much faster and software more stable.

 

In embedded devices you still may run into some SW optimization done even with assembler code. Even though the C compilers can optimize better than humans in many aspects today, there still are things they can't really do, like self-modifying code.

Link to comment
Share on other sites

The cubase64 demo is fully interactive, although there is only one audio sample. I do agree that often it's better to have more readable code than perfectly optimized code, but in response to manmower, people do, in fact, use low level coding. Most good programmers will tell you to use machine language for processes that run millions or billions of times.

 

I feel like we don't need to sacrifice this much memory management or whatever to get readable code. I guess I haven't looked at the source code for many things, but using the applications is annoying as hell. And open source programs are usually way faster in my experience (especially VLC, that app could honestly get away with charging mad guap).

Link to comment
Share on other sites

Most good programmers will tell you to use machine language for processes that run millions or billions of times.

It's very rare to see anything lower than C on non-embedded hardware these days. VLC doesn't have any assembly and it surely has performance sensitive code that runs millions of times while watching a video. Most of the open-source game engines I've looked at don't contain any assembly either. Compilers are really good at what they do.

 

Comparing a browser to a video player isn't exactly fair. A browser is an extremely complex piece of software. You're underestimating the problems involved when you have a piece of software that's running a wide variety of pages each with different and unpredictable memory and processing requirements. A video decoder and these demos have fixed and very predictable memory requirements so allocation strategies and heap management are obviously much simpler and faster. The same goes for games. Game engines are so complex because they need to manage a large collection of state and data. Demos have a very narrow scope focussed on doing something as cool as possible within certain limitations.

Link to comment
Share on other sites

 

Most good programmers will tell you to use machine language for processes that run millions or billions of times.

It's very rare to see anything lower than C on non-embedded hardware these days. VLC doesn't have any assembly and it surely has performance sensitive code that runs millions of times while watching a video. Most of the open-source game engines I've looked at don't contain any assembly either. Compilers are really good at what they do.

 

Comparing a browser to a video player isn't exactly fair. A browser is an extremely complex piece of software. You're underestimating the problems involved when you have a piece of software that's running a wide variety of pages each with different and unpredictable memory and processing requirements. A video decoder and these demos have fixed and very predictable memory requirements so allocation strategies and heap management are obviously much simpler and faster. The same goes for games. Game engines are so complex because they need to manage a large collection of state and data. Demos have a very narrow scope focussed on doing something as cool as possible within certain limitations.

 

All true, but I still think browsers are shitty, and flash is worse. I want a simpler browser. And your point about games just goes to show that you actually can make efficient code, because games generally run pretty well, especially mainstream ones with all the modern graphical advancements. These games run efficiently on seven year old systems. To be fair though, those systems aren't running many tasks simultaneously, so it's not as hard on the machine, and the games are typically fine tuned for those systems specifically.

 

The biggest reason I like VLC is because it plays fucking anything, which is kind of a different point. Although also note that it's much faster than iTunes, Quicktime, Windows Media Player, etc. Those are all just plain media players, so clearly they're doing something differently.

Link to comment
Share on other sites

  • 9 months later...

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.