FIGHTING THE PIXEL WAR
Fun, chaotic, simple – the open multiplayer canvas game Pixelflut
Imagine having a big blank wall where you are allowed to do, tag or paint whatever you want. But you are not alone. There is a good chance a couple of others standing right next to you are trying to get their own doodle, images or art onto the wall at the same time as you are.
So, you have to be really fast to get your piece up on the wall. And because others are trying to paint at the same time as you, you have to keep repainting your piece again and again for as long as you want, to make sure it’s filling up the centre of the wall, and showing all the competitors your creative skills, as well as proving to them that you are the fastest.
One pixel at a time
This is essentially what Pixelflut is. Pixelflut is an open multiplayer canvas game, where you change the colour of one pixel at a time using a TCP/IP based ASCII protocol.
Mostly the game is played using a projector pointing at a big screen or just a wall. Pixelflut can be seen at some software and hardware hacking events, like the Chaos Communication Congress. It can look rather chaotic at times and can sometimes look like a display that is glitching. An example of Pixelflut in action can be seen in a video from EasterHegg 2014.
To be able to play Pixelflut you need a computer to run a Pixelflut server, and then you have to attach it to a screen or another type of display device.
The colorful, glitschy chaotic mess that is Pixelflut. Here blown up on a 12 meter tall wall at 35C3.
To participate you need a computer to run a client on. A client can be extremely simple, it can actually be as simple as a single line like this:
telnet 127.0.0.1 1234 “PX 42 42 C0FFEE\n”
In a way Pixelflut is a really simple and rather inefficient ASCII based network protocol. The protocol consists of a coordinate for the pixel you want to change, and the color you want to change it into. That’s it.
PX <x> <y> <rrggbb(aa)>
All Pixelflut servers also have some extra features. Sending a HELP returns a help message describing the features of the server, and a SIZE gives you the resolution of the display you are trying to conquer. Another standard feature of the protocol is to be able to ask what colour a given pixel is by sending PX <x> <y>, so you know if you need to change it or not. Some servers are set up with a limit to how many pixels each client can change per frame, so knowing what colour a pixel is can be quite useful.
Some servers have extra features like returning stats about the network traffic, the amount of participants, as well as how many pixels are being changed per second.
Sometimes you can get lucky and have a server all to yourself.
No fancy functions
There are no fancy graphics libraries or functions, not even to draw a simple circle. You have to write your own code if you want more advanced features. This is a huge part of what makes Pixelflut fun. It can be a good way to start learning how to program. The better you get the more pixels you can own, and the more elaborate art you’ll be able to create.
Sometines Pixelflut feels like a battlefield. Just look at the names of different server implementations of it, starting out with “Pixelflut” being a Python implementation, “Pixelwar” a Java server, “Pixelnuke” an implementation in C and “Pixelpwnr” as the name of a server written in Rust.
Following the logic of “anything worth doing is worth overdoing”, someone made a Pixelflut server called Shoreline that theoretically is able to handle 40+ Gbit/s incoming data fighting to dominate all the pixels. During real life test they have reached 37 Gbit/s.
So, this is quite an effective tool to stress test a network.
The number of pixels thrown at a single Pixelflut server can be quite impressive, even with this session that wasn’t even that intense.
Simple and intense
Sometimes the simplest games can be the most intense, and Pixelflut is definitely worth trying. If you are curious to learn more about Pixelflut or try it, here are a couple of links to start out with:
More details describing the protocol: https://cccgoe.de/wiki/Pixelflut
A couple of different Pixelflut servers: https://github.com/defnull/pixelflut
Another server: https://github.com/larsmm/pixelflut
A super optimized server: https://github.com/TobleMiner/shoreline
Video of a Pixelflut session from EasterHegg 2014: https://vimeo.com/92827556