Obra Dinn की 1-bit dithering process स्थिर करना (2017)
(forums.tigsource.com)-
TIGSource फ़ोरम
- TIGSource ने आधिकारिक Discord server शुरू किया है.
- फ़ोरम में विभिन्न विषय और चर्चाएँ हैं, और कई सदस्य इसमें भाग ले रहे हैं.
-
Return of the Obra Dinn
- गेम की graphic style और dithering समस्या पर चर्चा चल रही है.
- उच्च resolution में render करने के बाद downscale करके flickering समस्या को हल करने की कोशिश की जा रही है.
- dithering pattern को स्थिर करके movement में stability देने के तरीकों पर चर्चा हो रही है.
-
dithering process
- Obra Dinn पहले 8-bit grayscale में render होता है, फिर 1-bit में convert किया जाता है.
- दो dithering pattern इस्तेमाल करके विभिन्न visual effects दिए जाते हैं.
- चलती हुई image में dithering pattern समस्या पैदा कर सकता है.
-
dithering stabilization
- stability बढ़ाने के लिए dithering pattern को geometry पर स्थिर करने के तरीकों का अध्ययन किया गया.
- सर्वोत्तम परिणाम पाने के लिए कई mapping methods आज़माने की कोशिश की गई.
-
निष्कर्ष
- dithering समस्या को हल करने में काफी समय लगा, लेकिन अंततः गेम की visual style बनाए रखते हुए समस्या हल कर ली गई.
- अंतिम गेम में दो display modes दिए जाने की योजना है.
1 टिप्पणियां
Hacker News टिप्पणियाँ
10 साल से ज़्यादा समय तक graphics programming करने के बावजूद, गेम खेलते समय मैंने इसे नोटिस नहीं किया। गेम की पूरी visual language को देखते हुए, लगता है कि वे 100 घंटे वाकई बहुत अच्छे से खर्च हुए
इस स्तर पर तो non-photorealistic rendering में temporal consistency के विषय पर इसे SIGGRAPH में भी भेजा जा सकता था
जिन्हें पता नहीं है, उनके लिए: Return of the Obra Dinn और Papers, Please दोनों Lucas Pope के गेम हैं, और कई पुरस्कार जीत चुके पक्के classic माने जाते हैं
अगर आप आम तौर पर गेम नहीं खेलते, तब भी इन्हें देखना वाकई worthwhile है। दोनों ही typical गेम नहीं हैं
बहुत कम गेम मुझे इतना करने पर मजबूर कर पाए हैं। Obra Dinn मैंने नहीं खेला क्योंकि उसका art style मुझे आकर्षित नहीं कर पाया, लेकिन अगर आपको deduction games पसंद हैं तो Curse of the Golden Idol भी देखने लायक है। creativity के मामले में यह उन गेम्स के करीब है और काफी मज़ेदार है
फिर भी मैंने इसे पूरा खत्म किया
मजबूत 1-bit dithering वाकई दिलचस्प विषय है। 2D में भी इसके कई तरीके हैं, और हर एक के अपने फायदे-नुकसान और trade-offs हैं
80s के computing experience का core रही चीज़ आधुनिक hardware पर उल्टे काफी पेचीदा है, यह हैरान करता है। मेरे project[0] में मुझे पता चला कि offscreen pixels और browser द्वारा दिए गए canvas को 1:1 map करना लगभग नामुमकिन है
[0] https://sheep.horse/2023/1/improved_web_component_for_pixel-...
मैंने पहले जो एक simple game बनाया था, उसमें screen का 3/4 हिस्सा low-resolution color display इस्तेमाल करता था, और नीचे का हिस्सा अधिक text फिट करने के लिए 4 colors के साथ 2x horizontal resolution इस्तेमाल करता था। इसलिए वह प्रति सेकंड 120 बार resolution switch करता था, फिर भी CPU खास धीमा नहीं होता था
सुझाए गए approaches में से कोई भी ठीक से काम करता नहीं दिखता, और यह समस्या दिखने से कहीं ज्यादा जटिल लगती है
जो चीज़ ठीक से काम कर सकती है, वह शायद “fractal” dither pattern होगा, ताकि zoom in/out smooth और scale-invariant रहे; camera movement और object movement दोनों सही रहें, इसके लिए texel space में process करना; और bilinear filtering या dither pattern की supersampled rendering के बाद screen space में compute shader से किसी तरह का error-diffusion pass चलाना
हालांकि असल में यह अच्छा काम करेगा या नहीं, इसका भरोसा नहीं। अगर यह काफी न हो, तो एक alternative यह हो सकता है कि screen space में simple processing करके result को resolution preserve करते हुए texel space में back-map किया जाए, अगले frame में texel space जानकारी से compatible screen-space solution बनाया जाए, और फिर उसे दोबारा texel space में map किया जाए—इस तरह runtime पर हर texel के लिए fractal pattern धीरे-धीरे build किया जाए। यह best हो सकता है, लेकिन memory, computation और complexity के लिहाज से बहुत महँगा दिखता है
https://x.com/dgant/status/1851840125065453894
https://x.com/dgant/status/1851835968342446576?t=kCUSWCtJEc_...
इसका तरीका यह है कि world-space dithering इस्तेमाल होती है, triplanar-mapped surfaces पर 2D dithering apply की जाती है, depth के हिसाब से coordinate scale चुना जाता है ताकि dither pattern [1px, 2px) range में रहे, और जो surfaces काफी दूर हैं उन्हें spherical coordinates से paint किया जाता है। depth thresholds पर कुछ repainting होती है, लेकिन व्यवहार में यह खास परेशान नहीं करती
जिनकी रुचि हो, उनके लिए थोड़ा और digging करने पर मुझे इसी विषय पर उसके पहले के dev logs मिले [1] [2]
खास तौर पर Scale2X नाम के upscaling algorithm वाला हिस्सा ध्यान खींचता है और काफी शानदार है [3]
[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
मुझे यह बात बहुत पसंद है कि यह व्यक्ति forum पर सब कुछ share करता है
मुझे Papers, Please के शुरुआती काम को देखने की याद है; काम की process share करने और उसे feedback के लिए खोल देने में कुछ खास बात है
उस समय की चर्चा: https://news.ycombinator.com/item?id=15766249
मैंने अब तक dithering पर जितने लेख देखे हैं, उनमें यह सबसे बेहतरीन स्तर का है। मैंने Return to Dark Castle के black-and-white dithering पर काम किया था
Atkinson dithering इस्तेमाल करना चाहता था, लेकिन adjacent pixel values के एक-दूसरे में फैलने के तरीके की वजह से shader में implement करना मुश्किल था, और उस समय stress और fatigue भी बहुत था। pattern को scene के offset से lock करने का विचार शायद मेरे दिमाग में नहीं आया था, इसलिए catacombs या helicopter pack जैसे scrolling levels में shimmer रहा होगा। शायद मैंने किया भी हो, लेकिन याद नहीं। जो भी हो, शानदार है
हाल ही में GOG से लेकर 5K Studio Display पर खेलने की कोशिश की, लेकिन खूबसूरत pixels को blur हुए बिना दिखाने वाला result नहीं मिल सका। बहुत अफसोस हुआ
settings menu में सब कुछ आज़मा लिया था
मज़े की बात के तौर पर, इस game का soundtrack यहाँ है
https://www.youtube.com/watch?v=8qvdAWLcPyU