2 पॉइंट द्वारा GN⁺ 2025-02-08 | 1 टिप्पणियां | WhatsApp पर शेयर करें

पानी की समस्या

  • अधिकांश गेम terrain modification की अनुमति नहीं देते, और यह उचित है। हर गेम को इसकी आवश्यकता नहीं होती।
  • जिन गेमों में पानी होता है, उनमें यह सोचना पड़ता है कि पानी के प्रवाह को कैसे संभाला जाए।
  • मौजूदा सरल मॉडल संतोषजनक नहीं हैं, और बेहतर मॉडल खोजने के लिए शोध की आवश्यकता है।

सेटअप

  • सिमुलेशन को grid पर काम करना चाहिए, और terrain के लिए वही grid इस्तेमाल करना बेहतर है।
  • सिमुलेशन का औसत scale लगभग 1 meter होना चाहिए।
  • पानी को terrain के ऊपर एक height field माना जा सकता है, और यह vertical दिशा में नहीं बहता।
  • पानी बहने में सक्षम होना चाहिए, और simulation error के कारण जादुई तरीके से गायब नहीं होना चाहिए।
  • सिमुलेशन में नियंत्रित स्थिरता होनी चाहिए, और यह तेज़ी से चलना चाहिए।

गैर-समाधान

  • Smoothed Particle Hydrodynamics बहुत प्रभावशाली परिणाम देता है, लेकिन यह किसी दूसरी समस्या को हल करता है।
  • Jos Stam का Stable Fluids पूरे fluid volume को संभालता है, और यह तेज़ नहीं है।

उथले पानी के समीकरण

  • उथले पानी के समीकरण vertical दिशा में औसत लेकर 2D समीकरण छोड़ देते हैं।
  • "उथला" भाग यह मानता है कि पानी के स्तंभ का सामान्य vertical आकार horizontal scale की तुलना में बहुत छोटा होता है।

ग्रिड

  • fluid dynamics में grid महत्वपूर्ण होता है, और आमतौर पर staggered grids का उपयोग किया जाता है।
  • staggered grids पानी की height/density आदि को square cell में स्टोर करते हैं, और velocity को cells के बीच के किनारों पर स्टोर करते हैं।

वर्चुअल पाइप विधि

  • पानी के cells को virtual pipes से जुड़ा हुआ मानकर पानी के प्रवाह का सिमुलेशन किया जाता है।
  • यह तीन चरणों से बना है: flow acceleration, outflow scaling, और water column update।

प्रवाह त्वरण

  • पास-पास के पानी के cells के water height difference के आधार पर flow को accelerate किया जाता है।
  • simulation को stable state की ओर converge कराने के लिए friction जोड़ा जाता है।

पानी के स्तंभ का अपडेट

  • हर water cell के लिए, पड़ोसी flows के आधार पर पानी जोड़ा या हटाया जाता है।

आउटफ्लो स्केलिंग

  • यह सुनिश्चित करने के लिए outflow को समायोजित किया जाता है कि cell में पानी की मात्रा negative न हो।

भू-आकृति की ऊँचाई

  • terrain elevation जोड़ा जाता है ताकि पानी terrain के ऊपर से आगे बढ़े।

सीमा शर्तें

  • यह विचार करना आवश्यक है कि simulation की boundaries पर क्या होता है।
  • boundary flow values सेट करके दीवार, inflow, outflow जैसी स्थितियाँ परिभाषित की जाती हैं।

श्यानता

  • viscosity जोड़कर छोटे water layers के लिए आगे बढ़ना कठिन बनाया जाता है।

पूरा सिमुलेशन कोड

  • simulation code कुछ 2D arrays पर 4 for loops से बना होता है।

मॉडल की कमियाँ

  • इसमें inertia और velocity diffusion नहीं है, इसलिए जब तेज़ पानी का प्रवाह किसी झील में प्रवेश करता है, तो वह हर दिशा में फैल जाता है।

बोनस: षट्भुज/त्रिकोण ग्रिड

  • triangular grid का उपयोग करके पानी का सिमुलेशन किया जा सकता है, जिसे hexagonal grid का dual माना जा सकता है।

1 टिप्पणियां

 
GN⁺ 2025-02-08
Hacker News राय
  • fluid simulation में उस समस्या का ज़िक्र किया गया है जिसमें पानी जमा होता है और पास के cells को प्रभावित करता है। यह उन कारणों में से एक है जिनकी वजह से procedurally generated games में parallelization मुश्किल होता है

    • procedural generation parallelization के लिए उपयुक्त है, लेकिन infinite domain में parallelization कठिन हो जाता है
    • यह इंगित किया गया है कि इस विषय पर बहुत अधिक खोजबीन नहीं हुई है
    • Nick McD के काम की प्रशंसा की गई है, और यह भी कहा गया है कि simulation design के कारण उनके काम में भी domain constraints हैं
    • पानी के basin boundaries को procedurally generate करके parallelization करने और पूरे water basin को एक बार में simulate करने का तरीका सुझाया गया है
  • यह कहा गया है कि fluid simulation विकसित करते समय सुंदर results को देखते हुए समय बर्बाद करने का जोखिम बहुत अधिक होता है

    • 2011 में अपने GPU-आधारित fluid dynamics implementation के अनुभव को साझा किया गया है
    • समझाया गया है कि fluid (blood) को surface (tissue) पर 2D में simulate किया गया था, और gravity तथा surface slope को ध्यान में रखते हुए mesh पर project किया गया था
  • यह उल्लेख किया गया है कि Animal Crossing का resource collection तरीका terrain manipulation के बिना भी efficient है

    • पेड़ों को काटकर logs मिलते हैं, लेकिन एक निश्चित मात्रा के बाद cooldown की ज़रूरत होती है
    • सुझाव दिया गया है कि जिन games में terrain manipulation की ज़रूरत नहीं होती, उनमें यह तरीका बेहतर हो सकता है
  • Timberborn game की physics को game का एक महत्वपूर्ण तत्व बताते हुए उसकी सिफारिश की गई है

    • पानी को रोककर engines और fields में उसका उपयोग करने का तरीका ढूँढना gameplay का एक अनिवार्य हिस्सा है
  • o3-mini-high का उपयोग करके 3D में implement किए गए algorithm के साथ प्रयोग करने का अनुभव साझा किया गया है

    • यह उल्लेख किया गया है कि Perlin noise को शुरू से implement करके terrain generation में उपयोग किया गया था
  • एक educational flood simulation का परिचय दिया गया है, जो WebGL का उपयोग करके adjacent cells के आधार पर cell values की गणना करता है

    • समझाया गया है कि model values बदलकर बड़े प्रभाव देखे जा सकते हैं
  • पानी की simulation में inertia और velocity diffusion की कमी की समस्या को हल करने का तरीका सुझाया गया है

    • समझाया गया है कि flow arrows के values को पड़ोसी arrows के साथ average करके इसे हल किया जा सकता है
  • एक personal project के रूप में शुरू की गई erosion simulation के प्रति जिज्ञासा साझा की गई है

    • यह उल्लेख किया गया है कि erosion को समझ न पाने के कारण project रुक गया था
  • Creeper World game में पानी को simulate करने के बाद bombs गिराने के विचार का उल्लेख किया गया है