- Remedy की Northlight टीम ने Alan Wake 2 के लिए इंजन आर्किटेक्चर से लेकर रेंडरिंग तक मुख्य तकनीकों को नया बनाया या बड़े पैमाने पर पुनर्गठित किया, जिससे बड़े और अधिक जटिल वर्ल्ड को संभालने की नींव तैयार हुई
- नया ECS-आधारित गेम ऑब्जेक्ट मॉडल मेमोरी दक्षता और सुरक्षित parallel execution को बढ़ाता है, जिससे अलग-अलग CPU core count वाले हार्डवेयर पर अधिक dynamic वर्ल्ड बनाया जा सकता है
- voxel-आधारित character controller और animation-आधारित NPC movement, तंग और जटिल जगहों में भी characters को स्वाभाविक रूप से चलने में मदद करते हैं, जबकि Scattering टूल घनी vegetation बनाने को सपोर्ट करता है
- रेंडरिंग में GPU-चालित pipeline, mesh shader, meshlet culling, GPU-आधारित vegetation animation, HDR, और MBOIT transparency rendering का उपयोग कर अधिक geometry तथा fog और transparency effects को संभाला जाता है
- PC वर्ज़न, जब हार्डवेयर कॉन्फ़िगरेशन अनुमति देता है, DLSS Frame Generation, DLSS Ray Reconstruction, और Path Traced Indirect Lighting का उपयोग कर Control की तुलना में अधिक सटीक और robust ray tracing देता है
Northlight इंजन और gameplay आधार तकनीक
- Alan Wake 2 के विकास के दौरान Northlight ने पूरी तरह नए data-oriented game object framework में बदलाव किया
- नया मॉडल entity component system (ECS) पर आधारित है
- ECS मेमोरी-दक्ष storage और कुशल व सुरक्षित parallel execution को संभव बनाता है
- यह अलग-अलग target hardware core count को कुशलता से सपोर्ट करता है, जिससे बड़े, dynamic और समृद्ध वर्ल्ड बनाना संभव होता है
- बड़े पैमाने पर vegetation placement के लिए Scattering टूल भी ECS के फायदों का उपयोग करता है
- वर्ल्ड में अधिक entities रखी जा सकती हैं
- ऑब्जेक्ट scattering के लिए अलग custom solution बनाने की ज़रूरत कम हो जाती है
- gameplay implementation में भी ECS iteration की गति बढ़ाता है
- Saga द्वारा सबूत इकट्ठा करने वाले visual storyboard Case Board को लागू करने में इसका उपयोग हुआ
- नए systems या game objects को जोड़ना और संशोधित करना आसान हुआ
- Case Board के save और load में performance improvement देखा गया
character control और NPC movement
- Alan Wake 2 वह प्रोजेक्ट था जिसने Northlight के character control को फिर से डिज़ाइन करने की ज़रूरत पैदा की
- नया voxel-आधारित character controller तंग, जटिल और dynamic environments में smooth navigation संभव बनाता है
- character movement अधिक natural और fluid हो गई
- फोकस इस पर था कि तंग जगहों में characters के objects से टकराने या फँसने की समस्या कम हो
- NPC movement में भी बड़ा बदलाव किया गया
- सभी NPC animation-आधारित movement और नए distance-आधारित Motion Matching का साथ में उपयोग करते हैं
- movement quality बढ़ती है, और animation कब और कैसे उपयोग हो, इस पर बेहतर नियंत्रण मिलता है
हवा, vegetation, और scripting tools
- Alan Wake 2 की यथार्थवादी हवा physics, particles, और cloth को प्रभावित करती है
- game designers indoor और outdoor क्षेत्रों के लिए अलग-अलग wind speed आसानी से define कर सकते हैं
- दोनों क्षेत्रों के बीच transition smooth और stateless तरीके से होता है
- Saga और Casey जिस कार में सवार होते हैं, उसके अंदर moving wind box लागू किया गया ताकि वाहन के इंटीरियर को बिना हवा वाले indoor zone के रूप में परिभाषित किया जा सके
- wind system Signed Distance Fields(SDF) पद्धति पर बनाया गया है
- wind box एक primitive की तरह smooth global wind intensity field को define करने के लिए उपयोग होता है
- यह हर क्षेत्र की wind strength तय करने वाले building block की तरह काम करता है, जिससे indoor और outdoor के बीच wind pattern smooth बनते हैं
- नया Scattering टूल बड़े पैमाने की vegetation और environment props बनाने के लिए विकसित किया गया
- इसका उपयोग Alan Wake 2 के अधिक घने, समृद्ध और जीवंत environments बनाने में हुआ
- इसे पहले की तुलना में अधिक लंबे draw distance के साथ उपयोग किया गया, जिससे खिलाड़ी दूर के objects और details देख सकते हैं
- scripting language को proprietary language से बदलकर Roblox की Lua से निकली embedded scripting language Luau पर लाया गया
- Luau इंजन की व्यापक functionality expose करता है और live editing सपोर्ट करता है
- इसका उपयोग level scripting और weapon upgrade system जैसे कई gameplay systems में हुआ
- game team इंजन programmers की मदद के बिना अलग-अलग game features और VFX effects का prototyping और implementation कर सकी
- Remedy ने अपना VS Code language server extension बनाकर उसे development pipeline में integrate किया
- Luau अपनाने से लगभग 80,000 lines code हटाया गया, जिसे अब maintain करने की ज़रूरत नहीं रही
GPU-केंद्रित rendering और vegetation animation
- Alan Wake 2, Northlight की नई GPU-चालित rendering pipeline को दिखाता है
- performance से समझौता किए बिना वर्ल्ड में अधिक geometry डाली जा सकती है
- mesh shader का उपयोग करने वाली GPU-चालित rendering single-pixel precision occlusion culling को संभव बनाती है
- scene के सभी elements को occluder के रूप में उपयोग किया जा सकता है
- केवल दिखाई देने वाली चीज़ों को render करने की क्षमता के कारण Alan Wake 2 का वर्ल्ड पिछले रिलीज़ की तुलना में अधिक geometric detail रखता है
- rendering pipeline mesh के साथ-साथ meshlet को भी cull करती है
- meshlet, mesh से निकाला गया छोटा और optimized triangle group होता है
- Cauldron Lake के convenience store location उदाहरण में meshlet structure देखा जा सकता है
- विशाल primeval forest environment नए shader-आधारित vegetation system से बनाया गया
- यह system पूरी तरह GPU पर चलने वाले नए skinning system पर आधारित है
- यह art-directed bone shader animation को सपोर्ट करता है
- Alan Wake 2 में इससे environment में दिखने वाली हर vegetation पर character-style rig का उपयोग संभव हुआ
- bone shader एक API expose करता है जिससे artists सीधे shader code लिखकर उसे आधार system से जोड़ सकते हैं
- तकनीकी रूप से इसे vegetation के अलावा पानी पर डोलती objects या हवा में हिलती बिजली की तारों जैसी चीज़ों पर भी लागू किया जा सकता है
- Cauldron Lake में लगभग 300,000 bone हर frame प्रोसेस किए जाते हैं
HDR, transparency rendering, VFX, ray tracing
- Alan Wake 2 HDR को पूरी तरह सपोर्ट करता है
- इसे default settings के साथ ही SDR और HDR displays दोनों पर अच्छा दिखने के लिए adjust किया गया है
- HDR support ने tone mapping के लिए नए approach की मांग की
- color grading वास्तविक colorist द्वारा HDR मानक के आधार पर की गई, ताकि HDR और SDR दोनों में विशिष्ट art style, mood, और storytelling को बनाए रखा जा सके
- घने fog वाले scenes transparency rendering सुधारों पर आधारित हैं
- Northlight ने Alan Wake 2 के विकास के दौरान transparency rendering को पूरी तरह पुनर्गठित किया
- MBOIT(Moment-Based Order-Independent Transparency) का उपयोग कर अलग-अलग detail levels वाली transparent surfaces को भी smooth तरीके से blend किया जाता है
- transparent elements को तीन resolutions पर MBOIT से render किया जाता है
- fog, transparent geometry, और effects को बिना टूटन के blend किया जा सकता है
- वर्ल्ड के भीतर fog placement को अधिक बारीकी से नियंत्रित करने वाली pipeline भी सुधारी गई
- pixel-level transparency lighting और fog-affected reflections को मिलाकर opaque और transparent elements पहले के प्रोजेक्ट्स की तुलना में बेहतर मेल खाते हैं
- fog multiple light scattering का approximation देकर घना और यथार्थवादी माहौल बनाती है
- Northlight के node-आधारित VFX टूल में support features और runtime performance, दोनों के लिहाज़ से बड़ा विकास हुआ
- VFX artists बारिश, गीलापन, water simulation, और character wounds जैसे जटिल व dynamic effects बना सकते हैं
- VFX टूल को भी GPU-चालित rendering के फायदे मिलते हैं, जिससे GPU के ज़रिए बहुत सारी geometry संभाली जा सकती है
- उदाहरण के लिए, indoor या cover के नीचे बारिश दिखाई न दे, इसके लिए dynamic mask में rain blocker objects render करते समय इसका उपयोग होता है
- ray tracing पूरी ray-traced direct lighting को सपोर्ट करती है
- Nvidia के साथ मिलकर बेहतर denoising और indirect lighting algorithms को जोड़ा गया
- Alan Wake 2 की ray tracing, Control में दिखाई गई तकनीक की तुलना में अधिक सटीक और robust है
- क्योंकि सारी vegetation geometry animation skinning के साथ बनाई और simulate की जाती है, ray tracing animated vegetation को और बेहतर दिखाती है
- PC players, यदि GPU और CPU configuration अनुमति दें, तो नवीनतम Nvidia DLSS तकनीकों का उपयोग कर सकते हैं
-
DLSS Frame Generation
-
DLSS Ray Reconstruction
- Path Traced Indirect Lighting
-
1 टिप्पणियां
Hacker News की राय
Remedy, जबकि पूरा स्टूडियो मिलाकर सिर्फ कुछ सौ लोगों का है, ग्राफिक्स में हमेशा अपनी क्षमता से बढ़कर काम करने वाली कंपनी लगती है
उभरते नामों में Remedy और CD Projekt Red ही ऐसे दिखते हैं जो image quality और performance के मामले में Unreal, Unity, EA Frostbite जैसे बड़े engines से टक्कर ले सकते हैं
अगर आपको computer graphics या technical art में दिलचस्पी है, तो इनके GDC/SIGGRAPH talks बेहतरीन हैं
Alan Wake 2 तकनीकी रूप से अब तक के सबसे खूबसूरत games में से एक है, और मेरी नज़र में कलात्मक रूप से भी ऐसा ही है। सभी settings को low पर कर देने के बाद भी इसका अच्छा दिखना सचमुच बड़ी उपलब्धि है; पुराने hardware तक scale करते हुए भी चीज़ों को अच्छा दिखाना आसान नहीं होता
लेकिन Digital Foundry जैसे analysts ने जैसा कहा है, अगर GPU mesh shaders को support नहीं करता, तो performance बहुत खराब हो जाती है। इस लेख में भी culling के लिए mesh shaders इस्तेमाल होने की बात है, जिससे coffee mugs या tires जैसी चीज़ों को पूरी तरह गोल बनाया जा सकता है और साथ ही Cities Skylines 2 जैसी “हर NPC के मुंह के अंदर 10,000-polygon teeth” वाली performance समस्या से बचा जा सकता है। Unreal 5 के Nanite के बड़े फायदों में से एक भी यही है
1993 की शानदार demo Second Reality से 30 साल बाद के Alan Wake 2 तक एक काफी साफ़ रेखा खींची जा सकती है
https://www.youtube.com/watch?v=iw17c70uJes
performance issue सिर्फ “दिखाई न देने वाले दांत render हो रहे हैं” से कहीं बड़ा है: https://blog.paavo.me/cities-skylines-2-performance/
उदाहरण के तौर पर यह समझने में आसान है, लेकिन बड़ा मुद्दा LOD की कमी और कमज़ोर culling है
क्या CD Projekt Red अपनी आने वाली games को UE5 पर migrate नहीं कर रहा? अफ़सोस है। Cyberpunk वाकई बेहद खूबसूरत था, और मैं उस engine पर बना multiplayer game देखना चाहता था
CDPR में 1236, Frostbite बनाने वाली DICE में 714, और Epic में हालिया layoffs से पहले 2200 लोग थे
ये सभी संख्याएँ Wikipedia के अनुसार हैं
अगर आधुनिक computer graphics को परिभाषित और लोकप्रिय बनाने वाले लोग GPU को उसकी हद तक नहीं धकेलेंगे, तो फिर कौन करेगा?
पहले उदाहरण में भी पैरों का ज़मीन पर फिसलना, या किसी object से रुक जाने के बाद आगे न बढ़ पाने पर उसी जगह चलते हुए फिसलना, काफ़ी खटकता है
सोचता हूँ यह समस्या आखिर कब तक हल होगी
बेशक engine खुद अद्भुत है, और visual effects व systems अब तक देखी गई सबसे बेहतरीन चीज़ों में हैं
RDR2 में animation बहुत realistic है, लेकिन controls थोड़ा “floaty” महसूस होते हैं
मैं व्यक्तिगत रूप से ऐसी movement पसंद करता हूँ जहाँ मैं left दबाऊँ और screen पर character तुरंत left की ओर चल पड़े। ज़्यादा realistic दिखने वाले animation systems में अक्सर ऐसी delay आ जाती है जब तक foot animation player input को “catch up” न कर ले
लेकिन लगातार raycasting और IK calculations मुफ़्त नहीं आते, इसलिए इसका cost performance में चुकाना पड़ता है, और responsive feel के साथ भी टकराव होता है
कई games तेज़ movement और responsive controls को चुनते हैं। आखिरकार यह तकनीकी रूप से वर्षों पहले हल की जा चुकी समस्या है, लेकिन game design की बाकी चीज़ों की तरह यह भी चुनाव और tradeoff का मामला है
Naughty Dog समेत कई जगह इसका उपयोग होता है। लेकिन दूसरी comments की तरह, responsiveness और animation accuracy के बीच का मूल तनाव अब भी बना रहता है
Northlight के पिछले title Control में यह कम था [2]
[1] https://youtu.be/jQb07FHJ-bQ?t=628
[2] https://youtu.be/fcDK6tnx4vM?t=6700
असल में वह animation को blend करके transitions को natural दिखाने वाले algorithm के बारे में था
एक और Unreal Engine आधारित game के बजाय कुछ अलग देखना ताज़गीभरा है
अपना in-house engine रखना बेहद कठिन काम होगा; engine खुद एक चुनौती है ही, लेकिन levels, animation वगैरह बनाने वाले tools शायद उससे भी कठिन हों
फिर भी इसके फ़ायदे भी होंगे। low-level architecture पर ज़्यादा control होने से optimization के मौके बढ़ते हैं। Unreal जैसे general-purpose engine में यह ज़्यादा मुश्किल होता है
मैं यह game जल्दी खेलना चाहता हूँ
shader compilation की वजह से stutter क्यों होता है, यह आज तक समझ नहीं आता, और ज़्यादातर दूसरे in-house engines में यह समस्या नहीं होती। यह अब तक बेहतर क्यों नहीं हुआ, यह भी समझ नहीं आता। अगर कल कोई improvement update आ भी जाए, तो games को उसका लाभ लेने में फिर भी कई साल लगेंगे
जब इतने बड़े community support वाले established engines मौजूद हैं, तो खुद करने के लिए आपको सचमुच पूरा control चाहिए होगा
लेख का tone पसंद आया
उदाहरण के लिए, marketing team कहेगी कि “किरदार पहले से कहीं ज़्यादा responsive और जीवंत हैं”, लेकिन internal development note में लिखा होगा, “किरदार तंग जगहों में objects से टकराते या उनमें फँसते नहीं हैं” — यह हिस्सा अच्छा लगा
पूरा वाक्य marketing है, और उसके भीतर का comedy भी marketing है
यह जानने की जिज्ञासा है कि ecosystem में D language इस्तेमाल करने के बारे में Remedy अब क्या सोचता है। अगर अभी भी इस्तेमाल कर रहे हैं, तो AW2 development के दौरान उन्हें किन मुश्किलों का सामना करना पड़ा, यह भी देखना चाहूँगा
संदर्भ सामग्री: Using an Emerging Language in Quantum Break (https://ubm-twvideo01.s3.amazonaws.com/o1/vault/gdceurope201...)
DConf 2016: Quantum Break: AAA Gaming With Some D Code -- Ethan Watson (https://www.youtube.com/watch?v=7YjLW7anNfc)
इतना तो पक्का है कि वे अभी D programmer ढूँढ़ भी नहीं रहे हैं
अगर source को और खंगालना चाहें, तो शुरुआत के लिए यह link उपयोगी हो सकता है: https://forum.dlang.org/post/lymybpygzfalbdgoaizr@forum.dlan...
जिसने वह presentation दी थी वह अब वहाँ काम नहीं करता, और Facebook जैसी बड़ी जगहों ने भी D का इस्तेमाल बंद कर दिया है, तो लगता है कि अब वे भी इसका इस्तेमाल नहीं कर रहे होंगे। फिर भी, अगर यह गलत साबित हो तो अच्छा लगेगा
वह व्यक्ति चला जाए, या योगदान/maintenance कर सकने वाली स्थिति में न रहे, तो बाकी team और studio का समर्थन व स्वीकार्यता न होने पर वह चीज़ धीरे-धीरे replace होने लगती है
सुना है कि D में लिखने के लिए ज़ोर देने वाला एक व्यक्ति था, लेकिन पता नहीं वह अभी भी वहाँ है या नहीं
याद है कि Unreal Marketplace पर top-tier content बनाने वाली team का कुछ हिस्सा इस game में भी शामिल था
https://mawiunited.com/
शानदार content है। अच्छा होगा अगर इस तरह UE5 content बनाने वाले studio और ज़्यादा सामने आएँ
यह दिलचस्प है कि वे scripting environment के रूप में Roblox के Luau की तरफ़ shift हुए
मुझे हमेशा यह जिज्ञासा रही है कि game tech में scripting के लिए इतनी जगहों पर Lua ही क्यों इस्तेमाल होती है, खासकर जब शुरुआत से design किया जा रहा हो तब भी
जो भी चीज़ C runtime इस्तेमाल कर सकती है, उसमें Lua scripting embed की जा सकती है
इसलिए Baldur’s Gate 1 से लेकर Warcraft III और Roblox जैसे modern titles तक, यह लगभग default choice की तरह इस्तेमाल होती रही है
character movement अब भी काफ़ी uncanny valley जैसा लगता है
“voxel-based character controller” वाले video में चलना फिसलने जैसा दिखता है, और “NPC movement” के शुरुआती कुछ सेकंड में भी चलना अटपटा लगता है
शायद इसलिए कि हर कदम बिल्कुल एक जैसा है और सबकी stride length भी समान है। इसलिए characters अस्वाभाविक रूप से एकदम sync में चलते दिखते हैं
video के बाद के हिस्से में, जब characters अलग-अलग तरीके से walking और running के बीच switch करते हैं, तब movement में ज़्यादा variety दिखती है और वह कहीं अधिक realistic लगता है। सोचता हूँ कि movement के ऐसे सूक्ष्म फ़र्क़ों को कुल मिलाकर ज़्यादा जोड़ना इतना मुश्किल क्यों है
हालाँकि, इस बिंदु के समर्थन में यह भी है कि friendly NPC लगभग सभी बस खड़े रहते हैं। जब hostile area में दुश्मन उमड़ते हैं, तो आप उनके चलने के तरीके पर ध्यान नहीं देते, और वैसे भी वे अक्सर fog में छिपे होते हैं
व्यक्तिगत रूप से, मुझे Control यह सबका एक tech demo लगा था। दुश्मनों की संख्या बहुत कम थी, और यह भी समझ आता है कि इसे horror story के रूप में क्यों बनाया गया
तो मतलब इनके पास ECS game engine, AAA-grade renderer, Nanite जैसी technology, Lua-based scripting engine, और Hollywood-स्तर का facial animation सब कुछ है?
इन्हें engine release करना चाहिए। यह Unreal का एक मज़बूत competitor बन सकता है। ECS की वजह से यह ज़्यादा scalable होगा, और Luau के साथ लिखना भी आसान होगा
Linux पर game खरीदने की कोशिश करते समय यह बात बहुत तकलीफ़देह तरीके से पता चली। इसलिए अगर वे Unreal से compete करते हैं, तो उस रिश्ते के बिगड़ने की संभावना है
लेकिन internal software को दूसरे लोगों के इस्तेमाल लायक product में बदलना पूरी तरह अलग बात है
Remedy ने meshlet pipeline अपनाई है, यह सही है, लेकिन cutting-edge rendering में अब यह लगभग mainstream के क़रीब है। Nanite की तरह छोटे triangles को सच में render करने के लिए compute shader इस्तेमाल करने की बात मैंने नहीं देखी, हालाँकि शायद मुझसे छूट गई हो
अब Alan Wake 2 में ray tracing बंद रखने पर भी High settings बस किसी तरह चलती हैं
visually यह engine कमाल का है, लेकिन व्यक्तिगत रूप से मुझे इसकी system requirements बहुत ज़्यादा लगती हैं
Entity-Component-System (ECS) आर्किटेक्चर का इस्तेमाल Bevy[1] जैसे नए open source game engines में भी होता है
काफ़ी समय से game development नहीं किया, लेकिन गेम्स में अक्सर दिखने वाले भारी और जटिल object-oriented तरीके को हटाने वाली आर्किटेक्चर की बात सुनकर फिर से इसमें हाथ आज़माने का मन हुआ
[1]: https://bevyengine.org/
2000 के शुरुआती दशक से इसे गति मिलनी शुरू हुई, और आज भले यह पूरी तरह सर्वव्यापी न हो, फिर भी लंबे समय से एक बुनियादी तकनीक की तरह इस्तेमाल होती रही है, और कुछ open source engines में भी यही स्थिति है
उदाहरण के लिए https://github.com/Adelost/entity-component-systems-study#re... देखा जा सकता है