"man this dithering is stable as shit. total magic going on here."
November 30, 2017 11:27 AM   Subscribe

"It feels a little weird to put 100 hours into something that won't be noticed by its absence." Lukas Pope (developer of Papers, Please [previously]) had a problem with his upcoming game Return of the Obra Dinn. The dithering used in the game's stylised 1-bit graphics caused uncomfortable flickering when the camera moved. So he fixed it.
posted by figurant (17 comments total) 38 users marked this as a favorite
 
This is something I've wanted a version of for animated gifs for ages. And I've thought lots about making it (with an error diffusion pattern, not a matrix dither), but never got round to it. So it's amazing to see it.
posted by ambrosen at 11:49 AM on November 30, 2017


I really like this indie dev's style and I'm kind of surprised to see that so many MeFites hated Papers, Please based on the previously link. I consider it one of the most thought provoking games I've ever played. I'm not sure I'll play this one any time soon because I'm still trying to figure out how to design the main bus in my Factorio factory, but I'm putting it on my list. I'm a sucker for unusual game aesthetics.
posted by xyzzy at 11:51 AM on November 30, 2017 [8 favorites]


Wonderful post!
posted by a snickering nuthatch at 11:54 AM on November 30, 2017


Way to go, game dev dude.

There's no way to perfectly tile a square texture onto a sphere. It would've been possible to redefine the dither matrices in terms of a hexagon grid or something else that does tile on a sphere. Possible maybe, I didn't try. Instead, I just hacked on the square tiling until this carefully tweaked "rings" mapping of the original dither pattern gave good results.

I wonder if the NASA-developed HEALPix pixelisation algorithm for a sphere would be useful; they use it for 360° astronomy data.
posted by XMLicious at 12:01 PM on November 30, 2017 [5 favorites]


If only it could be ported to a monochrome compact mac...
posted by fimbulvetr at 12:02 PM on November 30, 2017


I'm a sucker for unusual game aesthetics.

I had a blast playing The Last Express, it features Rotoscoping.
posted by Harpocrates at 12:27 PM on November 30, 2017 [2 favorites]


Really happy that folks like Lucas Pope, Davey Wreden, and Bennett Foddy are out here making these really small, intensely focused, hyper-detail-oriented art-for-art's-sake games - and by doing so, paving the way for future works to follow in that genre instead of the staid, James-Patterson/Transformers-esque blockbuster games that retread the same formula plus some bells and whistles. You really can only play so many hours of Saints Rows / MoBAs / manshooters before it starts feeling tiresome.
posted by runt at 12:33 PM on November 30, 2017 [4 favorites]


I really like this indie dev's style and I'm kind of surprised to see that so many MeFites hated Papers, Please based on the previously link.

I like this dev's style too, and second runt that I'm glad these sorts of games are getting made. It looks like the negative response in that previously was knee-jerk reactions to the brutal subject of the game. Thankfully we've seen it pan out as, I dunno, not glorifying the life of an immigration official in an authoritarian country? Looking forward to more games like these in the future.
posted by Mr.Encyclopedia at 12:37 PM on November 30, 2017 [5 favorites]


Gorgeous art style; interesting technical details. Great post.
posted by painquale at 12:43 PM on November 30, 2017


In my opinion a Bayer dither never looks good on screen (only on paper at high res) and a noise dither never looks good on anything. Floyd-Steinberg error diffusion dithering, which is not hard to implement, preserves detail and tone really well, but as he is deliberately degrading the image for effect it's probably not what he wants.

When 16 bit displays were a common thing I wrote some code to do an error diffusion dither from our 24 bit buffer to the 16 bit video card (which had 15 bits + alpha really). The dithering was basically invisible, all the banding artifacts we'd been getting (e.g. on blue skies) were fixed, and it was very hard to tell the result from genuine 24 bit.
posted by w0mbat at 2:39 PM on November 30, 2017 [4 favorites]


The issue with Floyd-Steinberg and other error-diffusion dithering approaches is they're strictly linear. It's hard to do that with a GPU fragment shader because there's no real order of execution for when specific fragments get evaluated. Bayer and noise dithering have the advantage that each fragment can be evaluated completely independently, so they lend themselves well to parallelization.

Of course, it might be possible to do the post-processing dithering pass purely in the CPU these days and still get decent frame rates.
posted by figurant at 3:10 PM on November 30, 2017 [2 favorites]


This is cool, thanks for posting!
posted by carter at 4:17 PM on November 30, 2017


Error diffusion is still going to have the problem he is trying to solve, which is that the particular pixel pattern that comes out of the dither is highly view-dependent and doesn't look good in motion.
posted by Pyry at 4:23 PM on November 30, 2017 [2 favorites]


I have much respect for Pope's obvious skills and attention to detail, but I have to say, judging from the screenshots, that I'd prefer the original version aesthetically. Having the pattern grids aligned with the screen feels more like the 1-bit artwork I saw all the time on classic Macs. Also having the larger "pixels" reminds me of so many retro-styled games where the creators plugged into pixel art to a higher-res game and the pixels go diagonal when the sprites do.

This is a minor quibble though, and I'll still play the heck out of this.
posted by subocoyne at 4:39 PM on November 30, 2017 [1 favorite]


Apparently a big part of the reason he did it was to address reports of motion sickness/discomfort from playing the game and less for aesthetic reasons, so there's that.
posted by Aleyn at 6:21 PM on November 30, 2017 [2 favorites]


That's weirdly counter-intuitive that a dither pattern that's effectively stuck to the monitor and therefor not moving would be more likely to cause motion sickness than a pattern that moves around.
posted by RobotHero at 10:50 PM on November 30, 2017 [1 favorite]


It's worth reading the dev log thread from the beginning; lots of interesting stuff.
posted by We had a deal, Kyle at 12:35 PM on December 1, 2017


« Older Private Dick/Family Man   |   😾 *Please do not let in the cat* Newer »


This thread has been archived and is closed to new comments