# .kkrieger

.kkrieger est une démo de .theprodukkt sous forme de jeu vidéo proposant un FPS en 3D pour une taille de 96 ko publiée en 2004. En tant que jeu, la démo est notoire pour son utilisation de génération procédurale.
Ce jeu de tir à la première personne (FPS) propose d'explorer un bâtiment, tout en devant annihiler des ennemis sous la forme d'animaux mécaniques. Les pièces sont recouvertes de parois métalliques, et utilisent beaucoup la lumière pour créer l'ambiance.

## Trame

La démo débute par la visite en vue subjective des diverses pièces d'une structure, l'image étant recouverte d'une couche de blanc en transparence alpha, et légèrement floue. Le générique s'affiche sur le coin inférieur gauche de l'écran.
La phase de jeu débute alors. Le personnage se retrouve alors dans un couloir aux poutres en bois peuplée d'araignées en métal, qui apparaissent par la suite dans l'ensemble du bâtiment. Approchant d'une porte métallique, celle-ci se lève, d'autres ennemis attendant derrière. Après un bref couloir, un décor plus riche apparaît : les piliers sont éclairés, les couleurs plus chatoyantes, les pièces ne ressemblent plus à un entrepôt.
Un large escalier en spirale conduit dans la zone supérieure du bâtiment, dans un décor gardant la lumière, mais cette fois-ci affichant des couleurs plus froides. L'avant-dernière séquence finale propose un décor de briques, à l'instar des représentations d'un château féodal, et d'un long escalier droit aux poutres dont la texture suggère du bois, ou du métal imitant le bois naturel. De cet escalier descend un ennemi non arachnéen mais humanoïde, composé de métal, rappelant un robot.
Cet escalier conduit dans une pièce plus petite, circulaire, au sol en damier, au toit comprenant des vitraux aux motifs de rosace, aux hublots de lumière. Du haut de cette-pièce, une plate-forme faisant fonction d'ascenseur, mais sur le principe du monte-charge permet de redescendre. Le jeu s'arrête alors à ce moment, avec l'affichage “.to be continued” et “uncut final version soon” laissant penser que d'autres niveaux sont prévus. Un menu permet de recommencer une partie.

## Système de jeu

Les contrôles du jeu sont le clavier et la souris. Le joueur peut se déplace dans 2 directions, ainsi que sauter et tirer. Divers objets peuvent être ramassés en se rendant dessus avec son personnage. Il doit gérer un inventaire d'armes et de munitions : il n'est plus possible de tirer à court de munition.
Il dispose de 100 points de vie, des packs de soins pouvant soigner les blessures. Arrivé à zéro, le joueur doit recommencer le niveau.

## Développement
### Réalisation

.kkrieger est diffusé par .theprodukkt en 2004. Le code source de la démo est de Fabian Giesen (ryg) et de Dierk Ohlerich (chaos). Les graphismes sont de Christoph Mütze (giZMo^fr) et de Thomas Mahlke (fiver2^fB). La musique est composée par Sebastian Grillmaier (wayfinder).
Son développement commence mi 2002, et une version bêta est présentée lors de compétition de démoscene Breakpoint en avril 2004
Le but est d'explorer les capacités maximales de Direct3D tout en écrivant le plus petit code possible. Hors des jeux vidéo, l'une des sources d'inspiration est d'ailleurs le programme lcc-win32, adapté du compilateur LCC, de par son but similaire, de privilégier la simplicité pour résoudre des problèmes complexes.
Le nom provient de l'allemand « Krieger », qui signifie « guerrier ». Les diverses noms du groupe .theprodukkt débutent par un point suivi d'une minuscule, et prennent le doublement du k : ainsi, .kkrieger et .werkkzeug1.

### Technologie

.kkrieger est une démo 96K, c'est-à-dire un logiciel dont la taille doit être d'au plus 96 ko. Il serait donc possible de placer quinze jeux de ce type sur une disquette 3"1/2, et six milliers sur un CD-ROM.
Il est écrit en C++ utilise les API de DirectX. Le choix de C++ s'explique par un souhait de bénéficier de fonctionnalités bas niveau et haut niveau : le bas niveau pour l'allocation de mémoire et la génération de textures, le haut niveau pour le graphe de scène et les composants de world management. Le C++ permet en outre à .theprodukkt d'écrire un code très compact.
D'un point de vue technique, .kkrieger est « loin d'être une réalisation d'amateurs ». Pour pouvoir offrir un contenu graphique riche en une taille aussi réduite, les graphismes, principalement les textures, sont le fruit de génération procédurale.
Pour décrire l'objet graphiquement, c'est-à-dire de stocker les informations sur les pixels, la couleur en lieu et place d'écrire du code permettant de recréer l'objet, le fusil du joueur prendrait 101 ko, soit plus que la taille totale du jeu.
.kkrieger utilise cette technique$^,$$^,$ pour produire les textures, les meshes mais aussi le son, le tout permettant de créer un jeu « complexe et immersif ». La place utilisée est ainsi de « quatre ordres de magnitude moindre qu'un jeu similaire ». Le logiciel .werkkzeug a été mis au point dans ce but par la même équipe.
La question est ouverte de savoir si les techniques employées dans .kkrieger peuvent être utilisées dans d'autres jeux. Une des pistes est le streaming de modèles 3D, qui pourrait bénéficier de ces techniques, dans les cas où il y a lieu d'optimiser la bande passante. La génération procédurale de .kkrieger utilise un algorithme déterministe$^,$, mais d'autres techniques existent privilégiant une approche stochastique (en) ; enfin, il est possible de générer du contenu avec l'aide de l'utilisateur.
Une fois compilé, l'exécutable de .kkrieger est compressé (en) à l'aide de kkrunchy, un outil développé par .theprodukkt.

## Réception

Présenté durant la demoparty Breakpoint 2004, .kkrieger remportera le premier prix.
La démo trouve un écho en dehors de la demoscene ; ainsi, les médias mainstream consacrent des articles à .kkrieger.
Parmi la presse francophone, la rédaction de Clubic accorde une note de 8/10 au jeu tandis que Jeuxvideo.fr salue le « petit exploit » d'un Quake-like n'occupant que cette taille, tout en regrettant la configuration requise gourmande pour l'époque. Côté allemand, Chip.de attribue un score de 4 étoiles sur 5, notant que les graphismes tiennent la comparaison avec ceux d'Unreal Tournament 2004 et de Far Cry.
Lors d'une conférence sur le développement des jeux vidéo en 2013, .kkrieger est toujours cité comme l'exemple illustrant le mieux l'intérêt de la génération procédurale.
Le jeu a reçu les deux prix suivants :
* Breakpoint 2004 : 1er prix de la catégorie jeu 96K$^,$ ;
* Deutscher Entwicklerpreis (de) 2006 : prix de l'innovation.

## Critique de l'industrie des jeux vidéo

Pour Ville-Matias Heikkilä, « le jeu vidéo .kkrieger est un exemple frappant d'une intervention intersubculturelle : au lieu de créer simplement une nouvelle démo d'une taille contrainte, le groupe de scène démo .theprodukkt décide de réaliser un jeu vidéo. Simplement en choisissant un autre format qui est plus accessible au public de joueurs, .theprodukkt a réussi à remettre en cause les aspects de la culture des jeux vidéo depuis l'intérieur de cette culture. La simple utilisation des techniques de la scène démo et d'une limitation de taille aussi drastique suffit à exprimer leur thèse. ».
Danny van der Kleij explique que cette critique est celle de la taille des jeux vidéo d'alors, et donc de l'efficacité du code par rapport à leur volume.

## Ouverture du code source

Initialement, le jeu est distribué sous forme de freeware.
En 2012, Farbrausch décide de publier le code source de ses démos et outils à titre d'archive historique pour la période s'étalant de 2001 à 2011. Un dépôt Git est créé et publié sur la plate-forme GitHub, à partir de dossiers de codes sources et de dépôts SVN internes au groupe. Les projets sont livrés bruts, dans l'état de travail où ils se trouvent, sans qu'il y ait eu de nettoyage préalable spécifique avant publication.
Celui de .kkrieger est inclus dans ce dépôt, et diffusé sous licence BSD.
Le code source de l'éditeur .werkkzeug et de la démo partagent le même dossier, ce qui était déjà le cas lors du développement initial.