Hey friends. I managed to survive another year, hurray! Today, we’re celebrating my birthday by taking a look at some freaky tech art stuff I did and talk a little about shiny object syndrome. Let’s dive in!
How Am I Doing?
It was my birthday last weekend! I’m now 33, one third of the way to 99. Since I will definitely make it to 100, because I refuse to die on anything else than a beautifully round number like that, it means I’m not even on a third of my life yet. That’s an encouraging thought!
Other than that, I’m feeling a bit overwhelmed. There’s so much I want to do creatively: Bibidi, music, our new direct action game project, writing and I’m constantly flooded with new ideas. I’m trying to juggle a manageable amount of them, but even then it feels like all of them progress very slowly unless I focus on one thing at a time.
What Am I Doing?
For Bibidi Bibidi, I’m still working on controller support. It’s a frustrating process. One step forward two steps back. But I’d say I’m about 75% there for fully working controller support. We’d still have to see if it actually feels good and isn’t too confusing, but at least it will work. Then, it’s on to re-mappable controls, so that people can customize their layout. This is essential for people with custom controllers, especially people who need custom controllers to be able to play the game at all. Luckily, all the work I’m doing on controller support directly makes the next task easier, so I think that won’t take me as long.
Partisan
Other than that, I wanted to do this completely optional side quest for our antifascist game jam entry, now titled Partisan. In the game, you manage a group of community members. We want to give each of them a portrait and a name, to really emphasize the human aspect of it. I think it’s a good idea to take the Sims or Darkest Dungeon approach, were you have randomly generated characters that you can then name yourself to create more of a personal connection.
There’s a ton of ways to go about it, but since I couldn’t be arsed to actually make any assets from scratch, I did the tech artist thing and made an overly complex tool to do it for me. Along the way, I invented a bunch of imaginary problems that didn’t need to be solved but that I really wanted to for no other reason than to flex my tech art muscles. So without further ado, I present to you, my latest art piece: A Picture Worth a Thousand Faces.

So what is this freaky mess we’re looking at here? This is an image that has 8192 faces embedded into it. For the quick math heads among you, I can hear you ask, but I only see 16 portraits on the first row? 16×16 is 256. You’re lying to me Daan! Indeed, but I also manage to pack each face into the color channels of the image: RGBA. That’s why the colors are so funky. But that’s still only a total of 1024 faces.

So each portrait we pack into this texture looks something like this. A photograph scaled down to 128×128 and turned 1-bit to use only black and white pixels. I implemented a Stucki Dither algorithm with the help of Jonas Wagner that made this dithering widget, so that it still conveys the illusion of shading. Because they have a color depth of 1-bit (0 is black, 1 is white), we can pack 8 of them in a regular image with 8-bit of color depth, which is the kind we widely use on the internet and in video games. So voila! 256 x 4 x 8 = 8192 faces in that image.
With a shader that isolates the right position and bit depth for each portrait, we can retrieve the black and white portrait using just a single index. That’s pretty neat! Now my main goal was to push it all the way to 32k+ faces, using a 32-bit image. Even then, it wouldn’t be more than 100 megabytes, which is kind of a cool feat to accomplish.
That being said, it’s also completely unnecessary. In the game itself, you probably won’t have more than 20 characters at any given time, so sheer volume is not actually important. Like I said, it was a side quest!
Why Am I Doing? (this)
The work I’m doing on Bibidi right now is a bit tedious. I feel my mind wanders to other, shinier things when I’m reworking a bunch of UI stuff. I’ve always had this problem at certain points of development in bigger projects, but I managed to somehow avoid it up until this point. I think it’s because before, I managed to partition off some time programming to do design stuff.
But the design stuff is kind of locked in for the moment and this programming has to be done properly, otherwise I’m shooting myself in the foot regarding tech debt. So I’m chasing new things here and there to keep myself occupied creatively and technically, but I fear it distracts me from getting the job done, which in turn feeds my need for distraction. It’s a bit of a cycle, isn’t it? We’ll figure it out.
