Artefacts by Plush

Feb 1, 04:45 PM by Radiantx

The practice of introducing artificial limits on already naturally limited hardware is something that has grown to become an artform of its own in the demoscene. In 2006, at the annual Breakpoint party in Bingen, Germany, this artform had one of its finest hours.

A brief history review might be in place – initially these limits were not artificial. Crackers often wanted to stick short introductions, intros, in front of software they removed copy protections from, to tell the world they (and nobody else) did it. These intros had to be small enough to fit on a floppy disk along with the software. As the demoscene separated itself from its software cracking roots, this practice of data minimalism continued to live on. Artefacts, the subject matter of this article, is arguably the technical pinnacle of artificially restrained programming on the Commodore 64.

What about it? It participated in the C64 4k Intro competition at BP06, which means the total filesize of the demonstration (demo) is 4 KiB or less, including all music and graphics. A young German man known as Krill / Plush spent half a year twiddling and tweaking the bytes to his satisfaction, with help from his groupmate Fanta /Plush, who made the music score. The duo have released several 4k intros before, and have so far only been beaten once in the compo at BreakPoint (in 2003, by Voyage Sans Fin/K2). While every Plush 4k intro has been something extraordinary, Artefacts still takes the prize. Why?

To understand that, we have to take a look inside the demo. The key in any kind of size restricted programming is data compression, and Artefacts is certainly no exception. What sets it apart from previous efforts is the extent of the measures taken to keep the final size down. During the development, Krill created among other things a specialized tool to separate all processor instructions from the data these instructions worked with, in order to improve compression ratio. He also made all efforts to utilize generated code, which basically means a small snippet of code is used to create a much larger program at runtime. This technique of runtime unrolling is used extensively in many of the best C64 demos, including the previous 4k intros programmed by Krill. Additionally, a tool which analyzes the packed data and writes a tailor-made unpacking program is used to make the final result even smaller. All this and more, it’s far more than any previous 4k intro on the Commodore 64 has done, and to this date Artefacts remains unchallenged in that aspect.

Enough about the development details, what did it all result in?

It starts off modestly, presenting the credits, and then begins to tell a subtle tale of interstellar exploration. This is a difference from previous Plush productions, which haven’t been story driven at all. After the text we are shown a rotating texturemapped planet, like the one that made its debut in One Million Lightyears from Earth / Fairlight. A probe is shown flying towards the planet. Back to more text, this time detailing that the probe has found a suspicious area. We are then treated to a voxel landscape (the planet’s surface), and a texture mapped sky. Texture mapping is also found in the third and final part of the production, where we are told we have found an Artefact, which constitutes of a number of seemingly random, gouraud shaded walls, circled by the camera showing us the scenery from all different angles. The demo then repeats, cutting the opening credits and showing us a different planet with a different artefact, and continues doing this until the machine is reset.

Screenshot from One million lightyears from earth by Fairlight
One million lightyears from earth by Fairlight (video)

It is clear that Krill and Fanta wanted to create something with a certain ambience, and they can only be said to have succeeded. The aforementioned Fairlight demo seems to have been a big inspiration, not only for the rotating planet. Everything is well synced with the music, with a real climax when the artefact is found. This is a feat in itself considering the limitations imposed on the production. The mood is consistent; harsh, alien, detached, cold and beautiful.

[8bit today] Did Artefacts end up being close to your original concept?

[Krill] That depends on how you define it. I knew from previous 4K experience that you can never fit in everything you’d like to, and I knew that “Artefacts” would be no exception to the rule. What I simply had to include, though, were the three different scenes (planet and drone seen from outer space, planet surface seen from the drone’s point of view, artefact) with their basic premise concerning the theme, but it was uncertain which fancy detail might or might not be included. However, I became a bit too ambituous over the course of programming the demo (a period of a whopping six months btw.), and so made a lengthy title scene and the interlude screens with the drones’s console output, both featuring alien glyphs (i.e., PETSCII). I had the drones sport distinctive textures and the planets one or two moons, and some more details I might have forgotten – all of which eventually had to be scrapped because of space issues. Also the artefacts didn’t turn out to be as originally intended, I’d had Stonehenge-like looks in mind. Maybe some people who were present at this demo’s sneak preview at S:t Lars Meeting in February 2006 (or so) in Lund/Sweden still remember some bits left out from the final release. Still, I am pretty satisfied with the result – but yet, I have been playing with the thought of making a “Director’s Cut” of the demo, with everything I had to leave out including preventively unimplemented ideas, and without the limitations imposed by the 4K limit. No idea if I’ll ever get around to doing it, though, for various reasons.

[8bit today] What were the main inspirations for the design and theme?

[Krill] Theme-wise, I guess any number of science-fiction books, films and tv series, but none of them were the single most-inspiring piece of art. The theme as is is not new or ground-breaking, of course, and it somehow just popped up shortly after having released my 2005’s 4K, Bar4Kode. A few demos like “One Million Lightyears From Earth” by Fairlight and Parsec also nudged me in the right thematic direction I guess, inspiring some basic effect ideas as well (re: rotating planet). Unsound Minds by Byterapers had also given me the idea to make an update of voxels on the C64, but that idea had been sitting in the back of my head for a couple of months or maybe years, until eventually I had a vehicle for that effect. The rough demo concept occured to me on the way home from Breakpoint ’05, when I thought about some doable “newschool” 3-D effects in a C64 4K (I’d grown a bit tired of “oldschool” 2-D stuff), and I started to code the demo about half a year later. Interestingly, I have seen Impossiblator by PWP only after releasing “Artefacts”, and both demos co-incidentally share a lot of ideas.

Screenshot from Unsound minds by Byterapers
Screenshot from Unsound minds by Byterapers (video)

Screenshot from Parsec
Screenshot from Parsec. (video)

Screenshots from Impossiblator by PWP
Screenshots from Impossiblator by PWP. (video)

Screenshot from Bar4Kode by Plush
Screenshot from Bar4Kode by Plush.

[8bit today] How close did you and Fanta work together in creating the music?

[Krill] We applied our proven and tested method of ping-ponging for the musical score. I would give him the raw and unpolished demo (and in this case, it came along with a custom-made tiny music player inspired by Glenn Rune Gallefoss ‘s size-optimized music work, in the shape of an assembly sourcecode) and tell him what kind of music I have in mind for it. He would then discuss the score’s basic attributes like style, conveyed temper and turning points according to the on-screen action with me, and then go for a first draft, all while minding the limitations. Usually he goes along with my basic idea, but for this demo, he suggested something different from what I had in mind – I wanted a really slow and beatless piece of spacy ambient, but he preferred more tempo and energy (while still avoiding beats), and of course he’s the one to decide. Also, in this case, composing in an assembly sourcecode was a bit unusual, but he’s hex -savvy and knew well how to handle it. Then, I’d integrate the music with the demo and turn a few delay and timing knobs for a good sync. Often, another one or two more rounds of tweaking on his or my side then would make music and visual effects finally fit together nicely. With this demo, he had to suffer a few drawbacks like not enough space for the vibrato effect in the tune and general limitations in the tune player, but he accepted that and proved his maestro-ness once more.

[8bit today] Is there a single technical achievement you want to stress?

[Krill] There is no technical detail standing out in awesomeness, but I guess that kind of procedural texture generation used was new to the C64. It features Perlin noise (pseudo-random numbers of decreasing even distribution recursively adding up to bigger and smaller natural-seeming structures) for ever-new planet surfaces and cloud patterns, and a somewhat interesting texture generator which uses nifty stack manipulations rarely seen in 6502 assembly, for a recursive descent into texture space. I remember the look of that code also pleasing my sense for elegance and aesthetics (as far as one can appreciate the latter with code).

[8bit today] Artefacts was released three years ago. What have you been doing since?

[Krill] Basically the same as before, which is working part-time as a software developer for embedded systems while studying mainly computer science. However, a relationship ended after many years, a few months after this demo had been released, and that personal setback reduced my scene activities to a minimum. Gradually, the motivation came back, but since a few months after “Artefacts” I’ve been concentrating more on my upcoming degree and other spare-time activities besides demo-coding. There will be some new demo bits from me some day, but chances are that this won’t happen until I have that master’s, which might still take a while.

Media: Artefacts on CSDB.



Yup, Aretfacts has some good ideas when it comes to compression. Still, to me it’s not about loop unrolling (this is actually very common, I think) or seperating code from data. What makes it really special for me is reducing tables of data to polynoms (using ocatave), and decompress that by using the polynominal functions from the BASIC interpreter. That really rocks!

Ninja / The Dreams,  2.02.09  [link]

From a non-coder standpoint, what really makes this production special is the way the music just keeps building and building and then KABAM! – both the visual and tonal palette changes. Amazing. I love it.

Archmage, 16.02.09  [link]


Comments are disabled.