Une nuit en 640 pixelsA night in 640 pixels

Dix jours après le début du projet : le filtre rétro qui donne au jeu son grain, et une nuit qui se raconte avec des sons qui s'éteignent.Ten days into the project: the retro filter that gives the game its grain, and a night told through sounds that fade away.

Deep Madness a dix jours. Avant d'avoir un premier niveau digne de ce nom, je voulais savoir à quoi le jeu allait ressembler et comment il allait sonner. Le prologue s'y prêtait bien : une chambre, la nuit, un vieil ordinateur allumé et un homme qui n'arrive pas à dormir. Une scène calme, où un rendu trop propre aurait tué l'ambiance.

Deep Madness is ten days old. Before having a first proper level, I wanted to know what the game would look like and how it would sound. The prologue was a good place for that: a bedroom, at night, an old computer switched on and a man who can't sleep. A quiet scene, where an image that is too clean would have killed the mood.

Abîmer l'image, mais seulement à la fin

Ruin the image, but only at the end

Je voulais le grain des jeux de la fin des années 90 sans renoncer à l'éclairage moderne. J'ai donc laissé le moteur calculer la scène normalement, et c'est un dernier filtre, appliqué à l'image finie, qui fait tout le travail. Il la ramène sur une grille d'environ 640 pixels de large, réduit chaque couleur à 5 bits par canal et ajoute un tramage ordonné, ce motif en damier qu'on voyait sur les vieilles consoles. L'interface est dessinée après : elle reste nette.

I wanted the grain of late-90s games without giving up modern lighting. So I let the engine render the scene normally, and a final filter, applied to the finished image, does all the work. It snaps the image to a grid about 640 pixels wide, cuts every colour down to 5 bits per channel and adds ordered dithering, that checkerboard pattern you used to see on old consoles. The interface is drawn afterwards, so it stays sharp.

Le détail qui m'a pris le plus de temps est presque invisible. Pour que chaque gros pixel reste stable, il faut lire l'image pile au centre de chaque case de la grille : en lisant sur le bord, des pixels voisins se mélangent au moindre arrondi. Il y a aussi eu une bande de bruit multicolore en bas de l'écran, parce que l'image de travail du moteur est un peu plus grande que ce qu'on voit.

The detail that took me the longest is almost invisible. For each big pixel to stay stable, you have to sample the image right at the centre of each grid cell: sample on the edge, and neighbouring pixels bleed in at the slightest rounding. There was also a band of rainbow noise at the bottom of the screen, because the engine's working image is slightly larger than what you actually see.

Le vieil ordinateur du prologue, vu à travers le filtre rétro.The prologue's old computer, seen through the retro filter.

Tous ces réglages tiennent dans cinq valeurs : la largeur de la grille, le nombre de bits, la force du tramage, des lignes de balayage et un vignettage. Chaque acte aura son profil. Les quatre jeux de l'anthologie ne doivent pas avoir tout à fait la même texture : un prototype abandonné ne ressemble pas à un jeu presque fini.

All of this comes down to five values: grid width, number of bits, dithering strength, scanlines and a vignette. Each act will have its own profile. The four games in the anthology shouldn't share exactly the same texture: an abandoned prototype doesn't look like an almost finished game.

Une nuit qui s'entend

A night you can hear

Le prologue n'a pas de musique. La nuit se raconte par les sons qui disparaissent : le ronron de la pièce, le souffle de l'ordinateur, un téléphone. Quand le personnage ferme les yeux, ces sons s'éteignent avec ses paupières. Ils reviennent quand il les rouvre.

The prologue has no music. The night is told through sounds that disappear: the hum of the room, the computer's fan, a phone. When the character closes his eyes, those sounds fade out with his eyelids. They come back when he opens them.

La pluie m'a donné du fil à retordre. D'abord, elle ne s'entendait pas du tout : quelque part, un volume était multiplié par zéro. Ensuite, elle s'entendait trop bien : une boucle de deux secondes, on finit par l'entendre tourner, même en faisant dériver un peu sa hauteur au hasard. Au bout du compte, la pluie a quitté la chambre. Elle prenait toute la place, et le silence suffisait.

The rain gave me a hard time. At first it couldn't be heard at all: somewhere, a volume was being multiplied by zero. Then it could be heard too well: with a two-second loop, you end up hearing it go round, even with its pitch drifting a little at random. In the end, the rain left the bedroom. It was taking up all the space, and the silence was enough.

Je viens d'attaquer l'Acte I. Changement de décor complet : un village en 1887, de la boue, une lampe à huile. Mais le filtre est le même, et il va beaucoup servir.

I've just started on Act I. A complete change of scenery: a village in 1887, mud, an oil lamp. But the filter is the same, and it's going to get a lot of use.

La page de Deep Madness →Deep Madness game page → Tout le journalAll devlogs