9 ms·
Stabilizing the Obra Dinn 1-bit dithering process (2017)
- deleted 2y ago[deleted]
- pvg 2y agoDiscussion at the time https://news.ycombinator.com/item?id=15766249 https://news.ycombinator.com/item?id=15766249
- m12k 2y agoSee also https://mastodon.gamedev.place/@runevision/110508837173343595 https://mastodon.gamedev.place/@runevision/11050883717334359...
- raverbashing 2y agoPosting the link here probably was too much for a video serving mastodon instance
- cubefox 2y agoWow, this seems to be a clear improvement over the Obra Dinn method!
- account42 2y agoNot at all. There are visible discontinuities that show the underlying geometry. It's also a very different kind of effect to begin with - more resembling print patterns rather than the more pixel-based dithering from older computer graphics.
- cubefox 2y agoI don't know what discontinuities you mean. The point about the "print pattern" seems confused. He just made the dots bigger to see them better in a compressed video. I still think this is clearly better, as it is perfectly temporally stable, unlike the Obra Dinn method.
- scyzoryk_xyz 2y agoI 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.
- Cthulhu_ 2y agoI feel like you have to have an audience of sorts while you work, else it's like screaming into the void.
- epidemian 2y agoBut that'd be sort of a chicken and egg problem, right? You can't build an audience unless you're willing to scream into the void :)
- jebarker 2y agoIt's also probably the best way to build a following for an indie game that'll otherwise just be a drop in an ocean of games released everyday
- tmountain 2y agoTigsource is a treasure trove of information and design docs. Lots of famous games were hatched there (spelunky and dead cells to name a few).
- matthew-wegner 2y agoMinecraft's origin WIP thread, too! https://forums.tigsource.com/index.php?topic=6273.0 https://forums.tigsource.com/index.php?topic=6273.0
- Terr_ 2y ago> The main inspiration for this game is Infiniminer https://www.zachtronics.com/infiniminer/ https://www.zachtronics.com/infiniminer/ https://www.youtube.com/watch?v=__Nq2vNcpIo https://www.youtube.com/watch?v=__Nq2vNcpIo
- donatj 2y agoOh 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.
- jdalt 2y agoI had the same experience playing it with my wife. The shared puzzle solving lead to some very late nights. My favorite game of the last 10 years.
- coldpie 2y agoThere's loads of puzzle games that are great for this! Off the top of my head, check out Lorelei and the Laser eyes, the recent Monkey Island, Case of the Golden Monkey, the two Talos Principle games, maybe The Witness?
- InsideOutSanta 2y agoCase of the Golden Monkey sounds fascinating, but almost too secretive. It's an Idol, not a Monkey :-) Excellent list! I'd also add The Crimson Diamond to it.
- coldpie 2y agoHah. Well, at least I didn't write Curse...
- jsheard 2y agoThe Outer Wilds (not The Outer Worlds) is also a fantastic game along those lines. Don't read too much about it, you want to go in as blind as possible.
- devit 2y agoIt 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.
- deleted 2y ago[deleted]
- dgant 2y agoI've got a fractal approach working pretty well as of last week: https://x.com/dgant/status/1851840125065453894 https://x.com/dgant/status/1851840125065453894 https://x.com/dgant/status/1851835968342446576?t=kCUSWCtJEc_3oK2GUuP94A&s=19 https://x.com/dgant/status/1851835968342446576?t=kCUSWCtJEc_... How it works: - World space dithering - Apply 2D ditheringalong triplanar-mapped surfaces - Choose coordinate scale based on depth such that the dither pattern ranges on [1px, 2px) - Paint sufficiently distant surfaces using spherical coordinates So there's some repainting at depth thresholds but it's not very loud in practice.
- crazygringo 2y agoThat is wild! It's not every day I get to see a completely new, unique visual effect. Kudos. I'd love to see a video with vastly slower movement, so I can pay attention to what's actually happening. The fast movement turns it all into a blur (literally).
- diabllicseagull 2y agoHaving 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.
- mikepurvis 2y agoI definitely noticed the dithering stability as I was panning around the scenes but would have never guessed that so much had gone into making it so; I’ll appreciate it a lot more now, having ingested this writeup.
- bob1029 2y agoI always found the error diffusion dithering techniques to be very interesting. It's amazing the result you can get with such minimal information.
- cubefox 2y agoThis doesn't use error diffusion but instead a dither pattern (ordered Bayer and blue noise). Not sure why, as error diffusion has better image quality. Compute cost could be a reason.
- bob1029 2y agoError diffusion probably breaks the design requirement for "stability" frame-by-frame.
- mistercow 2y agoI think first and foremost, using dither patterns is just a lot more authentic to the old black and white visual style Obra Dinn is emulating. Go on YouTube and watch some clips of Shufflepuck Café or The Manhole and you'll see that it's all hand drawn art specifically designed to be viewed in 1-bit, and it's all based on dither patterns, not error diffusion. Error diffusion may yield better results for converting photos to lower bit depths, but it also makes very noisy looking images where edges are muddied and shades bleed into each other. Bitmap art of that era used patterns because it gave the artist a lot more control over the look. The goal here is not to minimize PSNR or anything like that, but to give a clear and aesthetically pleasing image. And the goal of Obra Dinn is to do that while also matching a historical style. And if you look at individual screen caps of the game, you can see just how successful that effort was. Secondly, error diffusion is nonlocal, which makes it hard to implement efficiently on a GPU. With a dither pattern, you can calculate each pixel individually, which is ideal for a shader. With error diffusion, you might be able to do some kind of wacky exclusive scan approach with multiple passes to squeeze some parallelism out, but its almost certainly going to perform worse than a dither pattern. Finally, locking error diffusion to the camera like he did with the dither patterns sounds even harder than the already difficult work he did to get to a decent level of temporal coherence. I honestly have no idea how you'd do it, because the idea is just antithetical to the entire concept. If you don't solve that problem, I think the result would not only fail to capture the intended aesthetic, but would also be pretty nauseating to look at.
- AndrewStephens 2y agoHarsh 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-accurate_atkinson.html https://sheep.horse/2023/1/improved_web_component_for_pixel-...
- Moru 2y agoI still find it funny that my pretty new nVidia card takes several seconds to switch between resolutions while my 35 year old Atari could switch resolution several times per screen refresh. I made a simple game that had color display in low resolution on three quarters of the screen while the bottom had 4 colors and double horizontal resolution to fit more text instead. So resolution change was done 120 times per second without slowing down the cpu much at all.
- seanhunter 2y agoWell the nvidia would have no trouble doing that at the refresh rate, resolution and colour depth that the atari was using if that was the target. Ataris were great for their time no doubt but to optimise very high frame rate, colour depth and resolution a modern graphics api is doing some setup that requires a bit of time so that the common case works very smoothly after that.
- Moru 2y agoYes, that is the problem with modern things. Claming to be new and modern but things that used to be instant is getting slower and slower. There was a time when things were still getting faster and faster. I had the privilege to try a normal fixt-line phone a month ago. I had totally forgotten how fast they call and connect after using a modern smartphone for years. I remember the time when I started with phones. A connection took 10-20 seconds before you heard the tone after dialing the number. And then the AXE (or whatever they vere called) switchboards came. The connection time dropped to just a second or less. Now the connection time depends a lot on how fast your smartphone is. Mine takes several seconds even though it's just a couple of years old.
- Workaccount2 2y agoI 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.
- nemetroid 2y agoFor a five-second demo I agree. But for five hours of playtime, I think the original would result in serious visual fatigue.
- itronitron 2y agoYeah, I've played hours of Minecraft with my own dithering renderer, but I'm sure going to 1-bit would give me a headache within minutes. I wonder if rendering the in-game graphics as if they are being shown on a virtual monitor would provide some respite. If the virtual monitor was on a desk with other items, then would give players some place to rest their eyes.
- feverzsj 2y agoThe game is mostly black and white. The dithering effect isn't actually pleasing and sometime confusing.
- millimeterman 2y agoI half agree. While I respect Pope's artistic vision and the work that went into the aesthetic, I personally found it headache-inducing to actually look at. Especially with how much of the game is about gleaning clues from the environment, I simply could not enjoy it and dropped the game pretty quickly.
- Darthy 2y agoI 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.
- seanhunter 2y agoFor 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.
- stavros 2y ago"Papers, Please" is a masterpiece. Obra Dinn I must have made some mistake, because it stopped giving me clues after way too few stories to match anything else.
- db48x 2y agoWhat do you mean by “stopped giving clues”? The clues are all around you. Hair styles, clothing styles, accents, places, etc.
- magicalhippo 2y agoThere were some I found really hard, and required a lot of backtracking, ie watching "other" scenes but picking up who was there in the background and such. I might have had a couple of lets say educated guesses, but the rest was hard work piecing together details. Easily one of my favorite games ever, and I've been playing for almost 40 year now.
- disillusioned 2y agoI can't tell you how much I _loved_ that accents from the voice actors were a part of it. It was the first time I truly felt like a _detective_ in a video game, stuck piecing together whatever I could from a painstaking analysis of the details in front of me. That being said, I got stuck and brute forced my way to one or two solves, only to find out at the very end (talking to a friend who completed it) that I had missed a crucial and very helpful detail. Made it obvious that's why I was stuck trying to brute force, which was deeply unpleasant by design: the triple-match made that very tricky and only once I got the search set down a lot.
- tantalor 2y ago> maybe I shouldn't let these bullshit little pixels push me around Found a new mantra for my life.
- makizar 2y agoWent 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 https://forums.tigsource.com/index.php?topic=40832.260 [2] https://forums.tigsource.com/index.php?topic=40832.msg1217196#msg1217196 https://forums.tigsource.com/index.php?topic=40832.msg121719... [3] https://www.scale2x.it https://www.scale2x.it
- tantalor 2y agoJust for fun, here's the OST from this game: https://www.youtube.com/watch?v=8qvdAWLcPyU https://www.youtube.com/watch?v=8qvdAWLcPyU
- easythrees 2y agoThis is one game I think would be amazing in VR.
- tmtvl 2y agoI don't know, I start feeling off when just watching a video of the game (a little queasy, a bit of a headache). I think that playing it in VR would be a horrible experience.
- SamBam 2y agoYou're right, I think they would be fun. Part of the appeal was definitely the retro look, but this is a very-specific retro look that the author worked hard to put into 3D space. If people tried to make a "retro" to VR games, you'd mostly just get lots of blocky, cheap-looking graphics. But this could really be weird, in a good way.
- simonobo 2y agoThe modding community did look at it but the first problem was that it's a Unity game built for D3D9 game, which doesn't allow the VR plugin to be dropped in. They did request the developers create a D3D10/11 build to allow that but I'm not sure it ever happened. Even if it did, VR relies on getting consistent images for each eye for the stereo view, which might be difficult with this style of rendering. It'd be hard to know if it works without trying it!
- bee_rider 2y agoIs 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?)
- chamomeal 2y agoI think it’s trying to emulate something retro, but make it work for a modern game? Like 1-bit games were normal back in the day, but those games were mostly still images or something. And it’s an entirely different set of problems to try and make a fully 3D game with only 1 bit color.
- the_af 2y agoThis is tech for a modern game (Return of the Obra Dinn) imitating the retro look of old hi-res monochrome games, e.g. for the Mac. If you haven't played Obra Dinn, you owe it to yourself to play it. The look is retro (sort of, it's actually very smooth) but the gameplay is definitely "modern indie".
- fastball 2y agoThis forum post made me dizzy.
- zackmorris 2y agoOne 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!