.theprodukkt ...will make you happy
home · .theprodukkt · faq · making of · mobile · contact
.debris · .werkkzeug 3 TE · .kkrieger · .werkkzeug1 · demoscene

goals

.theprodukkt is a project in generative computer graphics. we spent the last few years developing non-interactive demonstrations under a strict artificial size-limit for both program code and data.

we want to create a computer graphics content creation system that:

  • combines textures, materials, meshes, scene management, lighting, animation, composing and everything else you need to create 3D computer graphics in one tool.
  • does this within a procedural and modular framework.
  • is able to import data from other tools where procedural approaches won't cut it.
  • is highly productive for the trained artist.
  • integrates aspects needed for game development, like AI and interaction.
  • integrates sound and music.
  • scales to large worlds.

we already have either full or proof-of-concept implementations for most of these aspects. we have gone through a long process of evaluating possibilities. now we have to grow our system to a larger scale.



technology

the ".werkkzeug3", our procedural content creation and management tool, is, so to say, the magic behind .kkrieger. it was used to create all visual aspects of .kkrieger - be it textures, materials, levels, characters, or animations.

the underlying principle of the .werkkzeug3 is very simple - similar to modular synthesizers: the functionality of the texture and mesh generators is seperated into simple, indepedent parts ("operators" in our terminology) that each have their own set of parameters and can be connected to other operators, which are in turn connected to other operators. this combination of relatively simple operations is able to produce complex and detailed results. however, there is one problem: keeping track of the connections between individual operators. the "traditional" solution employed in other programs which use a similar system is to display the operators as boxes and the connections as "cables" or arrows, with the user connecting them manually. However, this is tedious and can easily lead to a chaos of overlapping arrows on the screen. So we went for a different approach: "operator stacking".

a screenshot of .werkkzeug3, showing a texture together with the operators that produce it.
a screenshot of .werkkzeug3, showing a texture together with the operators that produce it.

the idea is very simple: instead of explicitly listing the connections, two operators are connected by stacking one over the other. This has a number of advantages: it is a lot faster to work with, conserves screen space, and it enforces suggestive layout of individual operators (this may sound like a restriction, but is a very helpful in practice). together with "loads" and "stores" (which allow you to tag individual working steps and reuse them later in other places), this makes for a both fluid and effective workflow: nothing gets done twice. and as the complete "history" of operations leading to a given texture or mesh is retained, it's no problem if you find out you made an error right at the beginning - adjustments can be made anytime to any operator, and are automatically propagated to all its "derivative works", instantly!

which is another important aspect: everything is completely realtime - all necessary processing of textures, meshes, materials and levels happens as you edit them, and is previewed using our regular 3D engine that is also used for the game itself - so there are no individual export steps and bad surprises: what you see in the editor is exactly that way in the actual game too. and the tight integration of everything in one tool makes for features you normally just don't get, like changing a texture while simultaneously previewing it in its "final" form, mapped on a mesh.

and what does that have to do with making a 96k game? Well, instead of storing the results, we store the operators and their connections, allowing the game to produce everything itself - all it needs is the code for the operators, which is tiny in comparision to the size of most images and meshes, even in a tightly compressing format like JPEG.



team

.theprodukkt are:

  • dierk "chaos" ohlerich, programmer.
  • thomas "fiver2" mahlke, artist.
  • christoph "giZMo" muetze, artist.
  • fabian "ryg" giesen, programmer.
  • wiebke hamm, internal affairs
  • oliver "joey" waechter, external affairs

.kkrieger freelancers:

  • sebastian "wayfinder" grillmaier (music and sound effects)
  • tammo "kb" hinrichs (sound system)



Copyright © 2004 .theprodukkt - all rights reserved. disclaimer