- Minecraft Java Edition अपने graphics rendering engine को OpenGL से Vulkan पर स्विच कर रहा है
- 1990 के दशक से इस्तेमाल हो रहे OpenGL के update रुकने और macOS support खत्म होने की वजह से यह बदलाव किया जा रहा है
- Vulkan में Windows·Linux का native support है, और macOS पर translation layer के जरिए support मिलेगा, बिना performance loss के
- इस बदलाव से visual quality बेहतर होने और frame rate सुधरने की उम्मीद है
- snapshot में OpenGL और Vulkan का parallel testing करने के बाद stability सुनिश्चित होने पर OpenGL हटाया जाएगा
Bringing modern rendering to Java
- Minecraft: Java Edition में Vibrant Visuals की तैयारी पर काम जारी है और rendering code का refactoring और modernization चल रहा है
- पिछले updates के जरिए rendering code structure को बेहतर बनाने का काम किया गया
- अब rendering की आधारभूत technology को ही बदलने के चरण में प्रवेश हो गया है
- गेम की rendering technology को OpenGL से Vulkan में बदलने की योजना है
- इसका उद्देश्य graphics और performance के लिहाज से नई संभावनाएँ खोलना है
- इससे modding community और कुछ players पर असर पड़ने की संभावना है
What are we changing?
- अभी Java Edition 1990 के दशक में बनी OpenGL graphics API का इस्तेमाल करता है
- लॉन्च के शुरुआती समय से ही यह OpenGL पर आधारित रहा है
- OpenGL को अपनाने की वजह यह थी कि इससे Linux·Windows·macOS सभी operating systems का support संभव था
- इसे लगभग सभी PC और Mac पर चलाने के लिए डिज़ाइन किया गया था
- OpenGL का update 9 साल पहले रुक गया था, macOS पर यह Deprecated स्थिति में है और आगे चलकर इसे चलाया नहीं जा सकेगा
- macOS compatibility बनाए रखने के लिए पुराने OpenGL version पर टिके रहना पड़ा, जिससे codebase को modernize करना मुश्किल हो गया
- Java Edition को macOS और Linux सहित ज़्यादातर PC पर आगे भी चलाने योग्य बनाए रखने के लिए OpenGL से हटना ज़रूरी हो गया है
Introducing: Vulkan
- Vulkan एक graphics API है जिसका 10 साल से अधिक समय से बाजार में इस्तेमाल हो रहा है और जिसे प्रमुख hardware vendors ने अपनाया है
- Windows और modern Linux में इसका native support है, जबकि macOS पर translation layer के जरिए support संभव है और यह बिना performance loss के काम करता है
- लंबे समय में इससे performance improvement और feature expansion की संभावनाएँ मिलेंगी
- यह Vibrant Visuals को लागू करने के लिए ज़रूरी आधार प्रदान करता है
- अगर GPU 10 साल से ज़्यादा पुराना है, तो संभव है कि वह Vulkan को support न करे
What does this mean for modders?
- OpenGL से Vulkan में बदलाव होने पर OpenGL-आधारित rendering mods पर असर पड़ेगा
- Vulkan migration पर काम करने में सामान्य release support की तुलना में ज़्यादा मेहनत लगने की उम्मीद है
- modding community को OpenGL पर निर्भरता कम करने की सलाह दी गई है
- internal rendering API का जितना संभव हो उतना दोबारा इस्तेमाल करने की सिफारिश की गई है
- ज़रूरत पड़ने पर development team के साथ सीधे technical discussion भी किया जा सकता है
- technical discussion के लिए Vibrant Visuals Discord channel का इस्तेमाल किया जा रहा है
- यह announcement channel नहीं, बल्कि developers के बीच गहन technical discussion की जगह है
What does this mean for players?
- कुछ mods इस बदलाव की प्रक्रिया में प्रभावित हो सकते हैं
- mod creators को updates देने में समय लग सकता है
- आने वाले snapshots में OpenGL और Vulkan दोनों साथ में उपलब्ध कराए जाएंगे
- snapshot और stable version दोनों में renderer चुनने का विकल्प दिया जाएगा
- stability सुनिश्चित करने और bugs कम करने का काम साथ-साथ चलेगा
- bugs की report bugs.mojang.com के जरिए करने को कहा गया है
When is this happening?
- लक्ष्य है कि गर्मियों के दौरान Vulkan को snapshot testing में शामिल किया जाए
- testing period के दौरान OpenGL और Vulkan के बीच switch किया जा सकेगा
- stability और performance verification पूरा होने पर OpenGL implementation हटा दिया जाएगा
- हटाने से पहले advance notice दी जाएगी
- minimum system requirements भी update किए जाएंगे
Vulkan and Vibrant Visuals
- renderer modernization, Vibrant Visuals roadmap का एक अहम चरण है
- Vulkan migration से graphics improvements की गुंजाइश बढ़ेगी और performance capabilities भी मजबूत होंगी
- driver-related bugs कम होने की उम्मीद है
- सबसे अहम उद्देश्य macOS पर लगातार चलने की क्षमता बनाए रखना है
- ताकि सभी supported operating systems के players बराबरी से शामिल हो सकें
अपडेट का मतलब
- यह बदलाव Minecraft Java को modern graphics technology stack की ओर ले जाने वाला एक महत्वपूर्ण कदम है
- इससे game engine की technical foundation मजबूत होगी, जिससे आगे scalability और नए features जोड़ना आसान होगा
- OpenGL से Vulkan की ओर यह बदलाव पूरे game industry में graphics API की पीढ़ीगत बदलाव की प्रवृत्ति के साथ भी मेल खाता है
3 टिप्पणियां
Hacker News की राय
उम्मीद है कि समय के साथ main thread का CPU overhead कम होगा
DX11 से 12 और OpenGL से Vulkan पर पोर्ट किए गए गेम्स को सिर्फ API बदलने से performance gain नहीं मिला, बल्कि इसलिए मिला क्योंकि वे parallel draw call processing क्षमता का फायदा उठा सके
Minecraft में bottleneck इसलिए आता है क्योंकि CPU, GPU की rendering speed से धीमा पड़ता है, इसलिए उम्मीद है कि इस बदलाव से modding environment में भी CPU headroom मिलेगी
मज़े के लिए मैंने Windows version को Proton पर चलाकर देखा, तो performance 30% बढ़ गई
मेरा मानना है कि यह शायद Proton द्वारा इस्तेमाल की जाने वाली dxvk library की multithreading की वजह से है
Minecraft Java Edition सिर्फ desktop के लिए है, इसलिए mobile के Vulkan driver issues से बच जाना मुझे एक अच्छा फ़ैसला लगता है
लेकिन Microsoft जैसी कंपनी से उम्मीद थी कि वह platform-specific stable APIs (DX12, Metal) इस्तेमाल करने वाला cross-platform RHI बना सकती थी
Java renderer के तीन versions maintain करना बड़ा burden है, और खासकर modding ecosystem इतना अहम है कि सिर्फ इस बदलाव से भी काफ़ी confusion होगा
मुझे नहीं लगता कि shader mods का maintenance और मुश्किल बनाने की ज़रूरत है
macOS पर भी Vulkan चल सकता है, इसलिए समझ नहीं आता कि कोई नया project शुरू करते समय DX12 चुनने की क्या ज़रूरत है
मेरे पुराने Acer C720 Chromebook (Intel HD4400 iGPU) पर Vulkan supported नहीं है, इसलिए लगता है Minecraft टूट जाएगा
पहले इसकी ख़ासियत यह थी कि यह लगभग किसी भी hardware पर चल जाता था, इसलिए अफ़सोस है
समझ नहीं आता कि comments को source वाली तरफ़ क्यों नहीं ले जाया जाता (संबंधित thread)
यह दिलचस्प है कि Microsoft, Apple की तुलना में Khronos standards के ज़्यादा क़रीब आ गया है
उसने SPIR-V को DirectX shader compiler के output और input format के रूप में अपनाकर Vulkan के साथ interoperability बढ़ाई है
Apple को OpenCL handling को लेकर बहुत शिकायतें थीं, और Sony व Nintendo की Khronos में लगभग कोई दिलचस्पी नहीं है
असल में Khronos APIs में extension spaghetti problem की वजह से पूरी portability कमज़ोर पड़ जाती है
VulkanMod performance तो बहुत बढ़ाता है, लेकिन ज़्यादातर mods के साथ compatible नहीं है
आगे अगर पूरे modpacks में भी Vulkan इस्तेमाल हो पाए, तो वह सच में रोमांचक होगा
उम्मीद है कि Vibrant Visuals जल्दी Java Edition में भी आए
shader इस्तेमाल करने के लिए हमेशा mod चाहिए, यह थोड़ा खलता है
बिना किसी complex loader या security risk के .zip file को drag-and-drop करके install किया जा सकता है
यह Aperture, Iris, Optifine जितना flexible नहीं है, लेकिन features काफ़ी मिलते-जुलते हैं
सोच रहा हूँ कि क्या Vulkan shaders भी resource packs में शामिल किए जा सकेंगे. हालाँकि game functionality टूटने का ख़तरा ज़्यादा है, इसलिए इस पर limits लग सकती हैं
मुझे पता नहीं था कि Java में Vulkan bindings भी हैं. शायद यह JNI इस्तेमाल करता होगा
यह जानकर हैरानी हुई कि अभी तक OpenGL इस्तेमाल हो रहा था. Minecraft की मौजूदा स्थिति मुझे ज़्यादा पता नहीं, और desktop के लिए non-Java version भी है, यह भी पहली बार पता चला
memory management कहीं ज़्यादा साफ़ हो जाती है, और external functions (जैसे Vulkan) के साथ bindings बनाना भी बहुत आसान हो जाता है
मुझे लगता है कि यह हाल की Java की सबसे underrated features में से एक है
समझ नहीं आता कि एक ही game के दो versions क्यों maintain किए जाते हैं
Bedrock ने features के मामले में काफ़ी catch up कर लिया है, लेकिन full replacement के तौर पर वह असफल रहा
Bedrock performance और portability में बेहतर है, लेकिन console पर तो वैसे भी modding संभव नहीं है
YouTube content का 90% Java पर आधारित है, इसलिए Microsoft feature parity हासिल करने पर ध्यान दे रहा है
Microsoft के नज़रिए से दोनों versions बनाए रखकर revenue maximize करना तर्कसंगत है
उम्मीद है कि Vulkan shader compilation stutter समस्या को अच्छे से संभाला गया होगा
क्योंकि यह कोई complex material system नहीं, बल्कि एक simple voxel renderer है
समस्या तब होती है जब engine बहुत ज़्यादा shader combinations बना देता है, या किसी खास GPU state (जैसे blending) से shader recompilation trigger होती है
modern Vulkan में ज़्यादातर states को dynamic state के तौर पर handle किया जा सकता है, जिससे यह समस्या कम होती है
लेकिन blending जैसी कुछ states अब भी recompilation trigger कर सकती हैं
यानी अगर developer ऐसे dynamic states से बचे, तो delay को आसानी से रोका जा सकता है
आजकल कई बड़ी game companies technical optimization पर लापरवाही बरतती हैं
Minecraft मूल रूप से Java में विकसित किया गया गेम था, लेकिन MS को बिकने के बाद इसे C++ में एक बार फिर बनाया गया। किसी एक गेम को पूरी तरह अलग development language में बदलकर दोबारा implement करना आसान काम नहीं रहा होगा, तो यह कैसे हुआ होगा, यह काफ़ी दिलचस्प है।
लगता है कि उन्होंने Bedrock Edition मुख्य रूप से मोबाइल optimization के लिए बनाई थी..
मुझे लगा था कि शायद वे Java को छोड़ देंगे, लेकिन आखिरकार ऐसा लगता है कि अब दोनों को ही update किया जा रहा है।