Stabilizing the Obra Dinn 1-bit dithering process (2017)

(forums.tigsource.com)

Comments

diabllicseagull 8 November 2024
Having worked on graphics programming for more than a decade, I still didn't pick on that when I played the game. Considering the overall visual language of the game, I'd say it's 100 hours well spent.

Could have easily published this at SIGGRAPH under temporal coherence for non-photorealistic rendering.

seanhunter 8 November 2024
For people who are unaware "Return of the Obra Dinn" and "Papers, Please" are both games by Lucas Pope and they are both considered absolute classics and have won multiple awards. Well worth checking out even if you don't consider yourself a typical game-enjoyer. They are not typical games.
AndrewStephens 8 November 2024
Harsh 1-bit dithering is such an interesting topic - even in 2d there are multiple ways of doing it, each with trade-offs and advantages.

It is amazing to me that something that was so integral to the 80s computing experience is now actually quite tricky on modern hardware. For my own project[0] I found that it is almost impossible to ensure a one-to-one mapping between offscreen pixels and the canvas provided by the browser.

[0] https://sheep.horse/2023/1/improved_web_component_for_pixel-...

devit 8 November 2024
It looks like none of the proposed approaches work well, and the problem seems to be much more complicated that it looks.

I think what might work properly is:

- A "fractal" dither pattern so that it can be zoomed out and in smoothly and is scale invariant

- Doing things in texel space so that both camera movement and object movement works properly

- Doing bilinear filtering (perhaps keeping all samples instead of storing the weighted average) or perhaps supersampled rendering of the dithered pattern, and then using some sort of error diffusion pass in screen space (with a compute shader)

But not actually sure if this works in practice.

If that's not enough, an alternative would be to do things in screen space "naively", then reverse map the screen space rendering to texel space (in a resolution-preserving way), and use the information in texel space on the next frame to create a screen space solution compatible to the one in texel space, map it to texel space, etc., effectively building up the fractal per-texel pattern incrementally at runtime. This might be the best solution but seems very expensive in terms of memory, computation and complexity.

makizar 8 November 2024
Went a bit further down the rabbit hole and found the previous devlogs he posted about the topic for anyone interested. [1] [2] Of note was an upsampling algorithm called Scale2X he talked about. [3] Pretty neat !

[1] https://forums.tigsource.com/index.php?topic=40832.260 [2] https://forums.tigsource.com/index.php?topic=40832.msg121719... [3] https://www.scale2x.it

scyzoryk_xyz 8 November 2024
I just love the fact that this guy shares everything on those forums.

I remember seeing early parts of his work on papers please and there is something wonderful about sharing your process and exposing it to feedback.

pvg 8 November 2024
zackmorris 9 November 2024
One of the best write-ups on dithering that I've seen so far! I worked on the b&w dithering for Return to Dark Castle.

We wanted to use Atkinson dithering, but it was hard to do in a shader because of how neighboring pixel values trickle into each other, and I was super stressed and tired at the time. I don't think it occurred to us to pin the pattern to the offset of the scene, so I think there is twinkling on scrolling levels like the catacombs and helicopter pack. But maybe we did? I wish I could remember. Anyway, kudos!

Darthy 8 November 2024
I recently downloaded it from GOG and tried to play it on a 5K studio display. I wasn't able to get a result that did not blur those beautiful pixels, which is such a shame. Yes, I did go into all those setting menus.
tantalor 8 November 2024
Just for fun, here's the OST from this game:

https://www.youtube.com/watch?v=8qvdAWLcPyU

m12k 8 November 2024
Workaccount2 8 November 2024
I genuinely prefer the original and think the final approach gives too much of "low res texture" look as opposed to a pure 1 bit dithered output.
tantalor 8 November 2024
> maybe I shouldn't let these bullshit little pixels push me around

Found a new mantra for my life.

bob1029 8 November 2024
I always found the error diffusion dithering techniques to be very interesting. It's amazing the result you can get with such minimal information.
bee_rider 9 November 2024
Is this a new style or is he trying to emulate something retro? (If it is the latter case, what was the convention at the time?)
easythrees 8 November 2024
This is one game I think would be amazing in VR.
fastball 9 November 2024
This forum post made me dizzy.
donatj 8 November 2024
Oh this is genuinely fascinating.

I literally had no idea so much went into the dithering, my presumption was there was just an off the shelf posterization filter applied.

The end result looks fantastic and managed to give me wild nostalgia for playing games like The Manhole on my friends Macintosh Classic as a kid.

One of my favorite games ever, my wife and I played through it together. I feel like there's not a lot of games you can play with another person these days and playing it like that was a wonderful experience. I would highly recommend playing it with another person if you have the chance.

feverzsj 8 November 2024
The game is mostly black and white. The dithering effect isn't actually pleasing and sometime confusing.