1 पॉइंट द्वारा GN⁺ 23 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Minecraft 26.3 Snapshot 4 ने विंडो management, input और platform integration backend को GLFW से SDL3 में बदल दिया है, और keyboard input में SDL scancode और keycode पेश किए हैं
  • Key bindings अब keyboard layout-विशिष्ट codes के बजाय physical key positions का उपयोग करती हैं; Linux पर जहाँ संभव हो Wayland को प्राथमिकता दी जाती है, और macOS पर native input candidate window supported है
  • Custom furnace और brewing fuels के लिए data components जोड़े गए हैं, जिनसे burn time, use count, cooking और brewing speed को number provider से सेट किया जा सकता है
  • Data pack 111.0 और resource pack 92.0 में sign click events, loot table references, advancement triggers, mob spawning environment properties, terrain generation settings और shaders में बड़े बदलाव हुए हैं
  • Windows multi-monitor और Wayland में exclusive fullscreen crashes ज्ञात हैं; test versions world को नुकसान पहुँचा सकते हैं, इसलिए backup लें या अलग folder में चलाएँ

SDL3-आधारित विंडो और इनपुट सिस्टम

  • Window management, input और platform integration library को GLFW से SDL3 में बदल दिया गया है
    • Keyboard input physical key positions के लिए SDL scancode का उपयोग करता है
    • Keyboard layout के अनुसार बदलने वाले text editing shortcuts में SDL keycode लागू किया गया है
  • Key bindings keyboard layout-विशिष्ट key code के बजाय physical keys के आधार पर काम करती हैं
  • Raw Input mouse setting हटा दी गई है, और gameplay के दौरान हमेशा relative mouse mode का उपयोग होता है
  • Borderless fullscreen default fullscreen mode बन गया है, और borderless तथा exclusive mode के बीच restart किए बिना switch किया जा सकता है
    • macOS पर exclusive fullscreen अब supported नहीं है
    • न्यूनतम window size 320×240 pixels है
  • Linux पर उपलब्ध होने पर Wayland को native रूप से प्राथमिकता दी जाती है
  • macOS पर text input के दौरान किसी key को long press करने पर native accent/candidate popup दिखता है

ज्ञात fullscreen समस्याएँ

  • Windows का exclusive fullscreen कुछ स्थितियों में, खासकर multi-monitor environment में, game crash करा सकता है
  • Wayland पर exclusive fullscreen में प्रवेश करने से game crash हो जाता है

Gameplay और interface बदलाव

  • Spectator mode वाले players portal से interact करके teleport कर सकते हैं
  • Armadillo liquid में डूबे होने पर खुद को roll करने की कोशिश नहीं करता
  • Debug overlay पर अलग GUI scale लागू किया जा सकता है
    • इसे F3 + F6 के Debug Options में सेट किया जाता है
    • Default Auto सामान्य GUI से higher resolution बनाए रखता है, और Unchanged सामान्य GUI scale से match करता है
    • Player की blocks-per-tick movement speed दिखाने वाला player_speed और display refresh rate indicator भी जोड़ा गया है
  • Creative inventory में minerals का क्रम non-tier materials, raw tier materials, refined tier materials के क्रम में फिर से व्यवस्थित किया गया है
    • Building blocks का क्रम non-tier minerals, refined tier minerals, Copper series है, और ज्यादा items वाले Copper blocks को पीछे रखा गया है
    • Natural Blocks tab को Overworld → Nether → End क्रम में व्यवस्थित किया गया है

Custom fuels और item components

  • minecraft:cooking_fuel Furnace, Smoker और Blast Furnace के लिए fuel define करता है
    • burn_time burn ticks की संख्या, और speed_multiplier cooking/smelting speed को क्रमशः minecraft:number_provider के रूप में specify करता है
  • minecraft:brewing_fuel Brewing Stand fuel के use count और brewing speed को define करता है
    • मौजूदा #brewing_fuel item tag हटा दिया गया है, इसलिए इसे नया brewing fuel register करने में इस्तेमाल नहीं किया जा सकता
  • Smoker और Blast Furnace recipes Furnace जैसा ही cooking time इस्तेमाल करती हैं, और speed boost fuel component के minecraft:cooking/speed_default द्वारा संभाला जाता है
  • Furnace, Smoker और Blast Furnace के cooking तथा fuel time fields short से integer में बदले गए हैं, और speed_multiplier जोड़ा गया है
  • Brewing Stand के BrewTime और Fuel भी integer में बदले गए हैं, और total_brew_time, total_fuel, speed_multiplier जोड़े गए हैं
  • जोड़े गए data components इस प्रकार हैं
    • minecraft:sign_text_front, minecraft:sign_text_back: sign के front/back text को store करते हैं और item tooltip में दिखाते हैं
    • minecraft:waxed: बिना field वाला marker है जो बताता है कि contents waxed हैं
    • minecraft:cushion/color: placed Cushion पर 16 dye colors लागू करता है
    • minecraft:villager_food: villagers द्वारा खाए जा सकने वाले items और nutrition values define करता है
    • minecraft:mob_visibility: equipment का mob detection distance पर प्रभाव 0.0~10.0 ratio में specify करता है; stack करने पर भी maximum visibility value 10.0 से अधिक नहीं होती

Signs और data pack compatibility

  • Data pack version 111.0 हो गया है
  • Sign custom text के commands और click events default रूप से block click पर execute नहीं होते, और नए signs के text components भी automatically interpreted नहीं होते
    • नए allow_op_features field का default false है; पुराना behavior restore करने के लिए इसे explicit रूप से true सेट करना होगा
    • पुराने versions में saved signs और sign data रखने वाले minecraft:block_entity_data पर allow_op_features=true लागू होता है
  • Placement के बाद sign editing screen केवल तब दिखाई देती है जब sign waxed न हो, front text editable हो, और सामान्य click से editing screen खोली जा सकती हो
  • Signs minecraft:sign_text_front, minecraft:sign_text_back, minecraft:waxed components को exchange करते हैं
  • /spreadplayers जिन safe blocks पर players को place कर सकता है, उसे #entities_can_teleport_to block tag से control किया जाता है

Registry references और loot/advancement बदलाव

  • Dedicated registry वाले loot table types registry elements और tag references support करते हैं
    • Single element field namespaced ID या inline value ले सकता है
    • List field inline value, single/multiple namespaced IDs, inline value list, या # tag ID ले सकता है
    • Targets advancement, item modifier, loot table, number provider, predicate, recipe, slot source हैं
  • predicate, item modifier, slot source के पुराने reference type अब अनावश्यक होने के कारण हटा दिए गए हैं
  • Advancement trigger के कई fields inline predicate के साथ-साथ namespaced predicate ID भी ले सकते हैं
    • मौजूदा condition lists का implicit minecraft:all_of behavior हटा दिया गया है, इसलिए type अनिवार्य रूप से specify करना होगा
    • कई block, recipe_id, loot_table fields को उनके plural रूपों में बदला गया है और वे single ID, list या tag support करते हैं
  • Loot Pool Entry में conditions का नाम condition, और functions का नाम modifier कर दिया गया है
  • Loot Function में conditions का नाम condition, और function type बताने वाले function को type में बदला गया है
    • Inline condition lists अब accepted नहीं हैं; same behavior के लिए minecraft:all_of explicit करना होगा
  • Predicate का type field condition से type हो गया है, और minecraft:reference तथा minecraft:block_state_property हटा दिए गए हैं
    • नया minecraft:match_block block ID/tag, state, NBT, components और component predicate को साथ में जांचता है
  • Inline number provider में हमेशा type explicit होना चाहिए, और अब minecraft:uniform को default के रूप में इस्तेमाल नहीं किया जाता
  • Cooking fuel-wise burn time, default cooking/brewing speed और brew count प्रदान करने वाले कई Vanilla number providers जोड़े गए हैं

Mob spawning और world generation

  • नया environment property minecraft:gameplay/natural_mob_spawns category-wise weighted mob spawning और per-entity spawn cost define करता है
    • World generation placement के दौरान केवल Dimension और Biome यह property लागू करते हैं
    • overlay modifier upper layer के category settings और same entity के spawn cost को प्राथमिकता देता है
  • minecraft:gameplay/creature_world_gen_spawn_probability world generation के दौरान creature category mob spawn repetition probability को 0 या अधिक और 1 से कम के रूप में specify करता है; default 0.1 है
  • Biome के spawners, spawn_costs, creature_spawn_probability हटाकर नए environment property में move किए गए हैं
  • Ambient particle environment property timeline keyframes के बीच probability interpolate करता है, और lower-layer particle list में items append करने वाला append modifier support करता है
  • Noise Settings में aquifer और ore vein settings को क्रमशः optional aquifers object और ore_veins list के रूप में restructure किया गया है
    • Setting न होने पर संबंधित aquifer या ore vein generate नहीं होता
    • संबंधित density function fields noise_router से नई structure में move किए गए हैं
  • Density Function में sub, div, negate, lerp, floor, round, ceil, truncate, beardifier जोड़े गए हैं
    • कई मौजूदा argument names value, left, right, input, noise में बदले गए हैं
    • invert का नाम reciprocal किया गया है
    • final_density में अब beardifier implicitly नहीं जोड़ा जाता

Graphics और प्रमुख bug fixes

  • Resource pack version 92.0 हो गया है
  • Order-independent transparency support करने वाले shaders और OIT_ALWAYS_WRITE_DEPTH define जोड़ा गया है
  • core/integrate_depth.fsh 3D HUD और हमेशा ऊपर दिखने वाले gizmo के depth buffer को main depth buffer में integrate करता है
  • Fixed प्रमुख issues इस प्रकार हैं
    • Non-QWERTY keyboards और macOS/CJK input से जुड़े key binding तथा input issues
    • Improved Transparency में map rendering crash, glass/translucent objects/particles/world border display issues
    • World height से बाहर projectiles और lowest height पर beehive placement से होने वाले crashes
    • World generation heightmap save/load issues और tick sprint के बाद mob position desynchronization
    • Cushion placement, color, custom name, fuel time और collision detection issues
    • Ender Dragon damage/flight, spectator portal usage, /spreadplayers safe block judgment issues

Installation और testing सावधानियाँ

  • Snapshot Minecraft: Java Edition के लिए है और Minecraft Launcher के Installations tab में Snapshot enable करके install किया जाता है
  • Test versions world को नुकसान पहुँचा सकते हैं, इसलिए backup लें या default world से अलग folder में run करें
  • Cross-platform Minecraft server jar भी उपलब्ध है
  • Bugs Minecraft issue tracker पर, और feedback Feedback site पर submit किया जा सकता है

1 टिप्पणियां

 
Hacker News की राय
  • इस binding का LWJGL implementation GTNH modpack टीम के एक सदस्य ने लिखा, जिससे vanilla→modded→vanilla का चक्र फिर से पूरा हो गया https://github.com/LWJGL/lwjgl3/pull/1033

    • बढ़ा-चढ़ाकर कहें तो GTNH ने शायद Microsoft से भी ज़्यादा Minecraft में योगदान दिया है। मैं यह सिर्फ इसलिए नहीं कह रहा कि मैंने खुद थोड़ा योगदान दिया है; इसमें लगा समर्पण और काम की मात्रा सचमुच हैरान करने वाली है
    • सोच रहा हूँ कि अभी के Minecraft developers में कितने लोग पहले modder रह चुके हैं, और कितने आज भी modder के तौर पर सक्रिय हैं
  • मैंने हाल ही में गेम Tribal Trouble(https://github.com/bondolo/tribaltrouble) को GLFW से SDL3 पर migrate किया, और कुल मिलाकर refactoring काफ़ी आसान रही। exclusive fullscreen और desktop fullscreen में कुछ दिक्कतें थीं, लेकिन आखिर में उन्हें सुलझा लिया
    मुश्किल display mode handling को test और document करने के लिए मैंने एक demo भी लिखा। गेम Minecraft की तरह Java में है, लेकिन demo को जितना हो सके सरल रखने के लिए C इस्तेमाल किया

    • Tribal Trouble — यह नाम सुने बहुत समय हो गया। याद है developers ने कहा था कि उन्होंने Java इसलिए चुना क्योंकि वे game development में अजीब या कम इस्तेमाल होने वाली language इस्तेमाल करना चाहते थे
    • जानना चाहूँगा कि GLFW में कोई समस्या थी क्या, और SDL3 migration चुनने की वजह क्या थी
  • Windows में exclusive fullscreen, ख़ासकर multi-monitor setup पर, गेम को crash कर सकता है, और Wayland पर तो उसमें जाना ही crash करा देता है — ऐसी known issue है। दोनों ही आम तौर पर snapshot टालने लायक blocking bug लगते हैं, इसलिए उम्मीद है कि official release से पहले इन्हें ठीक कर लिया जाएगा

    • snapshot का मतलब है blocking bug समेत main branch की मौजूदा स्थिति को जैसा है वैसा जारी करना
      स्थिरता की अपेक्षा का क्रम कुछ ऐसा है: LTS, stable release, release candidate, beta, alpha, snapshot, अभी-अभी merge हुआ commit, unmerged PR, draft PR. बड़ा bug हो तो release candidate या beta टल सकता है, और critical bug हो तो merge ही रुक जाना चाहिए, लेकिन CI pass करके merge हुए bug की वजह से snapshot टालने की ज़रूरत नहीं है
      snapshot ज़्यादा इस तरह है कि users को खुद main build किए बिना मौजूदा स्थिति चलाने और feedback देने के लिए इसका नियमित cut जारी किया जाए
    • official release हो तो टाला जा सकता है, लेकिन snapshot टालने की वजह नहीं है। इसे मौजूदा स्थिति में जारी करना चाहिए ताकि telemetry से पता चल सके कि known issue कितनी बार होती है, और जो समस्याएँ अभी पता नहीं हैं वे भी official release से पहले सामने आ सकें
      snapshot ने कभी bug-free होने का वादा नहीं किया; बल्कि मानकर चला जाता है कि ऐसा नहीं होगा
    • Minecraft शायद बहुत समय से, जब तक अलग से configure न किया जाए, borderless fullscreen ही इस्तेमाल करता रहा है। पिछले लगभग 10 सालों में कई platforms, services और apps exclusive fullscreen को छोड़ चुके हैं
    • आजकल exclusive fullscreen से ज़्यादा fullscreen window rendering आम है। window manager आम तौर पर सबसे आगे की fullscreen window पर भी वही optimizations लागू कर देता है जो पहले सिर्फ exclusive mode में मिलती थीं
    • यह snapshot है, इसलिए ऐसी समस्या हो सकती है, और काफ़ी संभावना है कि अगले snapshot में ठीक हो जाए
  • मैं एक tech-savvy पिता हूँ लेकिन Minecraft के बारे में लगभग कुछ नहीं जानता; अगर 2026 में परिवार के लिए server बनाना हो तो कैसे करूँ? बच्चे अभी iPad पर खेलते हैं, और कभी-कभी पुराने MacBook और Windows PC पर भी

    • Minecraft के Java और Bedrock दो editions हैं। mobile, console और Windows Store version Bedrock आधारित हैं, जबकि वेबसाइट से सीधे डाउनलोड किया जाने वाला version Java edition है
      आप standard Java server चला सकते हैं और Geyser से Bedrock protocol को real time में translate कर सकते हैं। ज़्यादा सीमित Bedrock clients के लिए workaround की ज़रूरत पड़ सकती है, लेकिन ज़्यादा विकल्प वाले Java server को केंद्र में रखकर manage करना संभव है
    • इंटरनेट पर मिलने वाली Minecraft JVM tuning guides अक्सर पुरानी या ग़लत होती हैं, इसलिए उन्हें नज़रअंदाज़ करना बेहतर है
      बस नया JVM इस्तेमाल करें, जितनी memory स्वीकार्य हो उतनी max memory बढ़ाएँ, और ZGC इस्तेमाल करें — इतना काफ़ी है। कई guides बिना वजह ढेर सारे flags बदलने को कहती हैं, या Eden size और target pause time जैसी आपस में टकराने वाली settings एक साथ डाल देती हैं
      ZGC की latency बहुत कम होती है, और heap जितना बड़ा हो उतनी performance degradation कम होती है, लेकिन compressed object headers बनाए रखने के लिए इसे 32GB से कम रखना बेहतर है। नया JVM memory usage और overall performance भी सुधारता है
    • Java edition vanilla server सेट करने का तरीका फ़ॉलो कर सकते हैं। Java edition सिर्फ Windows·macOS·Linux पर चलती है, लेकिन मेरे हिसाब से इसमें Bedrock edition की तुलना में कम bugs हैं और यह बेहतर है
      अगर और performance चाहिए तो fabric और lithium install कर लें। Paper·Spigot·Purpur जैसे mods automation setups को बिगाड़ सकते हैं, इसलिए उनसे बचना बेहतर है
    • फ़ोन और टैबलेट पर Minecraft, Java edition की तुलना में ज़्यादा बंद और सीमित है, इसलिए विकल्प कम हो जाते हैं
      मैंने कई सालों तक itzg/docker-minecraft-server को स्थिर रूप से इस्तेमाल किया है, और यह अच्छा लगा कि dependencies अलग-अलग install नहीं करनी पड़ीं; image ही सब संभाल लेती है। Bedrock server image भी है, लेकिन मैं उसे सही से चलवा नहीं पाया
      सबसे आसान संचालन के लिए सब लोग Windows·Mac·Linux पर Java edition इस्तेमाल करें, या फिर hosted server Realms के लिए भुगतान करें
    • अगर बच्चों की iPad पर खेलने की पसंद को देखें, तो Realms भी देखने लायक है। मेरी जानकारी में लगभग 7 डॉलर में 10-लोगों वाला server मिलता है, लेकिन Java और Bedrock subscriptions अलग-अलग हैं और pricing tiers भी काफ़ी बिखरे हुए हैं
      परिवार server के उद्देश्य के हिसाब से यह सही भी हो सकता है और नहीं भी, लेकिन बच्चों के लिए जल्दी और आसानी से साथ खेलने का यह सबसे सरल तरीका है। मैंने ऐसे बच्चे भी देखे हैं जो बहुत समय तक सिर्फ Bedrock पर अटके रहे, फिर Java पर आए और अफ़सोस किया कि पहले क्यों नहीं बदला
  • Icculus ने गेम को SDL2 से SDL3 में पोर्ट करने पर एक शानदार वीडियो डाला है, और Doom पोर्ट वाला वीडियो यहाँ है: https://www.youtube.com/watch?v=ixdeGhsoxy8

    • यह नहीं पता था कि Chocolate Doom को SDL3 में पोर्ट किया जा रहा है और उस पर Icculus खुद काम कर रहे हैं। जिन Doom पोर्ट्स के बारे में मुझे पता है, उनमें Woof! पहले ही बदल चुका है: https://github.com/fabiangreffrath/woof
  • यह देखकर हैरानी होती है कि Minecraft धीरे-धीरे सिर्फ एक गेम से बढ़कर अपने आप में एक अलग गेम इंजन जैसा बनता जा रहा है

  • सोच रहा हूँ कि GLFW छोड़ने की वजह कहीं documented है या नहीं। मेरा एक प्रोजेक्ट GLFW इस्तेमाल करता है, इसलिए हमेशा यह सोचता रहता हूँ कि क्या SDL बेहतर विकल्प है

    • इस अपडेट में Wayland सपोर्ट बिना किसी अलग काम के चलने लगा। पहले workaround की ज़रूरत पड़ती थी, और उसे लगाने पर भी नई समस्याएँ आती रहती थीं, लेकिन ज़्यादातर लोग XWayland पर चलाकर संतुष्ट थे इसलिए इस पर ज़्यादा ध्यान नहीं गया
      SDL3 में Wayland सपोर्ट मूल रूप से काफ़ी मजबूत है। Minecraft में GLFW सिर्फ window creation, taskbar icon, fullscreen और input के लिए इस्तेमाल हो रहा था, बाकी सब raw OpenGL से संभाला जा रहा था, इसलिए बदलाव भी आसान था। अब Vulkan तक सपोर्ट है, इसलिए Linux desktop और Steam Deck पर पूरी तरह modern stack इस्तेमाल किया जा सकता है
    • SDL mobile को सपोर्ट करता है, लेकिन GLFW नहीं, इसलिए हो सकता है कि वे platform-specific codebase को एक करने की कोशिश कर रहे हों
      SDL3 Android 4.2 पर भी चलता है, और मैंने Java के बिना सिर्फ SDL3 और ImGui से app भी बनाया है
    • एक वजह IME सपोर्ट भी है
    • SDL लगभग हर जगह इस्तेमाल होने वाली platform layer के ज़्यादा क़रीब है। यह window, graphics, audio, input, network और threads सब देता है, जबकि GLFW सिर्फ window, graphics context और input देता है, इसलिए बाकी libraries आपको खुद लानी पड़ती हैं
      हर प्रोजेक्ट में इससे बड़ा फ़र्क पड़े ऐसा ज़रूरी नहीं, लेकिन SDL ज़्यादा features देता है और portability भी बेहतर है
    • OpenGL या Vulkan के बिना भी सिर्फ SDL API से पूरा 2D गेम बनाया जा सकता है
  • rhythm game osu! भी हाल में SDL2 से SDL3 पर गया है और performance व latency में बड़ा सुधार हुआ है। SDL3 को अपनाना थोड़ा धीमा लगता है, और यह भी हैरानी की बात है कि Minecraft अब तक GLFW इस्तेमाल कर रहा था
    खासकर SDL3 पर जाने के बाद osu! चलाते समय Discord client खुला होने पर जो latency आती थी, वह गायब हो गई; मुझे याद है कि यह बात YouTube developer वीडियो में देखी थी

    • Linux की कुछ distributions में sdl2-compat और sdl12-compat, SDL2 और 1.2 की default implementation हैं, इसलिए कई मामलों में लोग पहले से ही अप्रत्यक्ष रूप से SDL3 इस्तेमाल कर रहे होते हैं। इसकी वजह से ज़्यादा apps XWayland की बजाय कम latency वाले Wayland पर native चल पाते हैं और controller सपोर्ट भी बेहतर हो जाता है
      Ubuntu 24.04 में शुरू से SDL3 शामिल नहीं था, और SDL3 अपेक्षा से ज़्यादा नया है, इसलिए शायद यही कारणों में से एक है कि इसका adoption उम्मीद से धीमा रहा
    • osu! तीनों प्रमुख desktop operating systems और iOS·Android सबको सपोर्ट करता है, और Wayland जैसी सुविधाएँ भी native रखना चाहता था, इसलिए SDL3 migration में लगभग 2 साल लगे। लगता है कि यह बदलाव अब पहली बार सच में आख़िरी चरण तक पहुँचा है
    • SDL3 में कई APIs बदल गए हैं, इसलिए इसे अपनाना और मुश्किल हो गया है, खासकर binding libraries के ज़रिए जाने पर यह बोझ और बढ़ता है
  • SDL2 में, खासकर Vulkan·Metal सहित GPU API abstraction के मामले में, पुरानापन साफ़ दिखने लगा था, इसलिए SDL3 पर जाना उचित लगता है। यह भी जानना चाहूँगा कि Java Edition के Linux संस्करण में लंबे समय से चले आ रहे input latency और Alt+Tab issues क्या window·input layer बदलने से ठीक होंगे

    • असल migration SDL2 से नहीं बल्कि GLFW से था, इसलिए अगर आज नया चुनाव करना हो तो स्वाभाविक रूप से SDL3 ही चुना जाएगा
  • अगर mods को सक्रिय रूप से सपोर्ट करना हो, तो Java या C# जैसी decompile और runtime modification के लिए आसान languages, या JVM और .NET CLR का इस्तेमाल करना बेहतर लगता है
    अगर आप अंदरूनी बदलाव कर रहे हैं और modders को भी ध्यान में रख रहे हैं, तो लगभग बिना अतिरिक्त लागत के एक शानदार modding API मिल सकता है

    • बहुत सारे mods वाले गेम के लिए वास्तव में ज़रूरी चीज़ सिर्फ काफ़ी बड़ा user base है। समर्पित modders के लिए थोड़ा-बहुत binary patching या DLL injection कोई बड़ी रुकावट नहीं होती