2 पॉइंट द्वारा GN⁺ 2026-02-09 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • शहर-निर्माण गेम्स में road system का यथार्थवादी implementation एक मुख्य तत्व है, जो सिर्फ़ दृश्य तत्व नहीं बल्कि संरचनात्मक पूर्णता तय करने वाली बुनियाद भी है
  • मौजूदा गेम्स सड़कों को दिखाने के लिए Bezier spline का उपयोग करते हैं, लेकिन इसमें वास्तविक सड़कों की curvature और parallelism बनाए रखने में सीमाएँ हैं
  • वास्तविक दुनिया की सड़कें वाहनों के axle spacing और curve constraints को प्रतिबिंबित करनी चाहिए, लेकिन Bezier तरीका offset करने पर आकार को विकृत कर देता है, जिससे अवास्तविक curves बनते हैं
  • इसे हल करने के लिए circle arc और clothoid जैसे engineering curves लागू करने पर मुलायम curvature बदलाव और parallel offset बनाए रखना संभव होता है
  • लेखक ने इन सीमाओं को पार करने के लिए खुद अपना road system बनाया है, और आगे इसकी तकनीकी implementation process साझा करने वाले हैं

सड़कों और पैटर्न का आकर्षण

  • प्रकृति के व्यवस्थित लेकिन अव्यवस्थित पैटर्नों से मिलने वाला संतोष लेखक को सड़कों में भी दिखाई देता है
    • इसे चींटी के बिल, मधुमक्खी के छत्ते और पत्तियों की नसों की तरह सरल नियमों से बनती जटिल संरचनाओं से तुलना की गई है
    • सड़क नेटवर्क को भी मनुष्यों द्वारा बनाया गया सबसे रोचक पैटर्नों में से एक बताया गया है
  • शहरों के गायब हो जाने के बाद भी बचे रहने वाले सड़क नेटवर्क के निशानों की कल्पना करते हुए, उनकी संरचनात्मक सुंदरता पर ज़ोर दिया गया है

शहर-निर्माण गेम्स और सड़कों का विकास

  • SimCity 2000 से Cities: Skylines 2 तक, road systems लगातार विकसित होते रहे हैं
    • SimCity 4 ने elevation और diagonal roads, SimCity 2013 ने curved roads, और Cities: Skylines ने free placement और intersection configuration को support किया
  • फिर भी curves की अप्राकृतिकता, बहुत तीखे turning radius, और अवास्तविक highway ramps जैसी समस्याएँ अब भी मौजूद हैं
  • mod के ज़रिए अधिक यथार्थवादी lanes, markings और curves बनाए जा सके, लेकिन फिर भी वे engine की मूलभूत सीमाओं से बाहर नहीं निकल पाए

Bezier spline की सीमाएँ

  • Bezier curve दो बिंदुओं के बीच smooth connection देने वाला एक शक्तिशाली गणितीय tool है, और अधिकांश game engines में उपयोग होता है
  • लेकिन यह curve offset करने पर अपना आकार और curvature बनाए नहीं रखता, यानी “Bezier curve का offset, Bezier curve नहीं होता”
  • इसके कारण अंदरूनी और बाहरी curves में असंगति, self-intersection, और pinching जैसी समस्याएँ पैदा होती हैं
  • परिणामस्वरूप, वास्तविक सड़कों की तरह वाहन-trajectory को दर्शाने वाले parallel curves को implement करना कठिन हो जाता है

circle arc और clothoid का उपयोग

  • circle arc offset के बाद भी समान आकार बनाए रखता है, इसलिए यह पूर्ण parallelism प्रदान करता है
    • दो circle arcs के intersection की गणना Bezier की तुलना में बहुत सरल है, और O(1) की computational complexity के साथ अधिक efficient है
    • अलग-अलग radius वाले circle arcs को जोड़कर engineering के लिहाज़ से उचित सड़क आकृतियाँ बनाई जा सकती हैं
  • लेकिन circle arc में curvature स्थिर रहती है, इसलिए सीधी रेखा से curve में प्रवेश करते समय lateral acceleration में अचानक बदलाव आता है
  • इसे सुधारने के लिए clothoid का उपयोग किया जाता है
    • इसकी curvature धीरे-धीरे बढ़ती है, जिससे स्वाभाविक steering और बेहतर ride comfort मिलता है
    • गणितीय रूप से यह जटिल है, लेकिन high-speed roads के design के लिए अनिवार्य है
  • शहर के भीतर चौराहों जैसे कम-गति वाले हिस्सों में circle arc-आधारित design भी पर्याप्त यथार्थवाद दे सकता है

खुद road system बनाने की वजह

  • ज़्यादातर खिलाड़ी intersections की curvature accuracy में बहुत रुचि नहीं लेते, लेकिन डेवलपर ने जिज्ञासा और तकनीकी चुनौती के कारण इस विषय को गहराई से देखा
  • मौजूदा commercial games का implementation स्तर ऊँचा है, लेकिन indie developers के लिए उपलब्ध सामग्री और assets कम हैं
  • साधारण grid-based roads के बजाय, ज़्यादा परिष्कृत और साझा किए जा सकने वाले system के लिए इसे स्वयं implement किया गया
  • अगली पोस्ट में तकनीकी implementation के विस्तृत चरण साझा किए जाएँगे, और subscription के माध्यम से updates प्राप्त किए जा सकते हैं

1 टिप्पणियां

 
GN⁺ 2026-02-09
Hacker News की राय
  • शहर-निर्माण गेम्स में सड़कों को मुख्य तत्व बताने वाली पोस्ट पढ़कर, मुझे लगता है अब समझ आता है कि urban planners को बुरे सपने क्यों आते होंगे
    शहर की बुनियाद कारों के लिए road नहीं, बल्कि पैदल यात्रियों, साइकिलों और public transport के साझा इस्तेमाल वाली street होती है
    संबंधित अवधारणा के लिए Stroad लेख देखना उपयोगी है

    • मैंने कभी इन दो शब्दों के फर्क पर सोचा नहीं था, लेकिन Wikipedia की व्याख्या पढ़कर बात समझ में आई
      road का केंद्र transportation है, जबकि street का केंद्र public interaction है
      फिर भी मुझे लगता है कि मूल उद्धरण की कुछ ज़्यादा आलोचना हो रही है। आधुनिक समाज में transportation की मांग बहुत बड़ी है, इसलिए शहर के भीतर और बाहर का road network ही शहर का ढांचा बनाता है
      1900 के दशक से पहले शहर सिर्फ जलमार्गों के पास बसाए जा सकते थे, लेकिन अब roads की वजह से यह अंदरूनी इलाकों में भी संभव हुआ है
    • San Francisco की streets भी 19वीं सदी से civil engineering principles के आधार पर डिज़ाइन की गई थीं
      अगर यथार्थवादी शहर बनाना है, तो नकली roads की बजाय ऐसा दृष्टिकोण सही लगता है
    • मुझे भी pedestrian-centric infrastructure (cycle lanes, footpaths, public transport) पसंद है, लेकिन यह भी सच है कि roads मूलतः घोड़ागाड़ियों और कारों के लिए डिज़ाइन की गई थीं
      कभी-कभी सोचता हूँ — अगर कोई ऐसी सभ्यता शहर डिज़ाइन करे जो सिर्फ साइकिल और पैदल चलने पर निर्भर हो, तो वह कैसी दिखेगी
  • एक ऐसा गेम है जो लेखक को पसंद आ सकता है। वह है Junxions, एक sandbox game जो road intersections बनाने पर केंद्रित है
    इसका subreddit यहाँ है। लगता है यह गेम सड़क-डिज़ाइन की इच्छा अच्छी तरह पूरी करेगा

    • मैं इसी road system का creator हूँ। सच कहूँ तो अभी भी पक्का नहीं है कि इसके साथ क्या करूँ — इसे asset के रूप में जारी करूँ या एक game बनाऊँ, यही सोच रहा हूँ
      मुझे Junxions भी पसंद है, लेकिन मेरा approach अलग है। वहाँ node-based Bézier structure इस्तेमाल होती है, जबकि मैं road segments के बीच collision से intersections अपने-आप बनाता हूँ
      अगली blog post में मैं दोनों approaches का फर्क विस्तार से बताने वाला हूँ
  • कहते हैं कि “intersection corner radius की परवाह सिर्फ 1% लोग करते हैं,” और मैं ठीक उसी 1% में हूँ

  • Bézier curves से roads को define करना आसान नहीं है
    खासकर तीखे मोड़ों पर नतीजा देखने में अच्छा नहीं लगता
    पिछले साल Azoth प्रोजेक्ट पर काम करते हुए मुझे भी यही समस्या आई थी, और मैंने इसका एक सरल समाधान ढूँढ लिया था
    संदर्भ: Azoth repository, Bézier examples

  • गेम्स में जो चीज़ें बिल्कुल स्वाभाविक लगती हैं, वे असल में भारी मेहनत और डिज़ाइन का नतीजा होती हैं
    उदाहरण के लिए roads पर खिलाड़ी बारीकी से ध्यान नहीं देते, लेकिन अगर वे अजीब लगें तो तुरंत खटकता है
    हाल ही में Kingdom Come 2 खेलते हुए यही महसूस हुआ — सब कुछ वास्तविक जैसा स्वाभाविक लगता है, लेकिन उस हर डिटेल के पीछे developers का खून-पसीना और आँसू हैं
    इसलिए समझ आता है कि game industry crunch से क्यों जूझती है

    • गेम्स में doors भी एक जटिल समस्या हैं। वे वास्तविक आकार से लगभग 30% बड़े होते हैं, और ज़्यादातर जगह sliding doors इसलिए इस्तेमाल होते हैं क्योंकि physics handling आसान होती है
      संबंधित लेख: The Door Problem, IGN लेख
  • ऐसी पोस्ट्स ही वजह हैं कि मैं Hacker News पढ़ता रहता हूँ। लेखक से कहना चाहूँगा कि वे लिखना जारी रखें

    • लेखक बोल रहा हूँ। दिलचस्पी दिखाने के लिए धन्यवाद। सच कहूँ तो मुझे HN के बारे में पता भी नहीं था, ट्रैफ़िक अचानक आने लगा तब पता चला
      लगता है यहाँ ऐसे बहुत लोग हैं जिनकी रुचि मिलती-जुलती है, इसलिए आगे और सक्रिय रहने का सोच रहा हूँ
  • यह पोस्ट सचमुच मेरी पसंद की है। सड़कों के प्रति यह जुनून मुझमें भी बिल्कुल वैसा ही है
    शहर रक्त-नलिकाओं की तरह सड़कों से बने होते हैं, और यूरोप व एशिया की गाँव-गलियाँ उन पगडंडियों की कहानी हैं जिन पर वे खड़े हुए
    वहीं मेरे गृहक्षेत्र की देहाती सड़कें सीधी चलती हैं और फिर जैसे ही कोई किसान ज़मीन बेचने से मना करे, अचानक मुड़ जाती हैं
    सिर्फ औपनिवेशिक दौर या कुछ planned cities ही grid pattern में हैं; बाकी अधिकतर नदियों के बहाव या भू-आकृति के अनुसार दिशा बदलते हैं
    ऐसे ग्रिडों के बीच के intersection points शहरों के सबसे सुंदर और वास्तुशिल्पीय रूप से रोचक हिस्से होते हैं
    अगर कोई ऐसा game हो जो शहरों की वृद्धि के इन बदलावों को simulate करे, तो वह कमाल होगा

    • मुझे भी historical city-building games में जब सब कुछ grid-based होता है तो immersion टूट जाता है
      असली शहर चींटी के बिल की तरह स्वाभाविक व्यवस्था के भीतर जटिलता के साथ विकसित हुए हैं
      इस विषय पर बाद में अलग से कुछ लिखने का मन है
  • अगले गेम Canalpunk में भी Bézier splines का इस्तेमाल जारी रहेगा
    path के self-intersection होने पर पैदा होने वाला disaster system काफ़ी दिलचस्प हो सकता है

  • मैं railway track editor में clothoid (curve transition) लागू करने को लेकर काफ़ी जुनूनी हूँ
    खाली जगह में यह आसान है, लेकिन tracks को जोड़ते समय मुश्किल हो जाता है
    इस पर मैंने पहले एक व्याख्यात्मक सामग्री बनाई थी: Euler Spiral Explanation

    • एक सवाल है। जब कोई रेखा बाएँ से दाएँ जाते हुए दो शाखाओं में बँटती है, तो अगर clothoid को पीछे की ओर बढ़ाएँ, क्या waveform आपस में कटेगी नहीं?
      उस intersection point का इस्तेमाल करके नई spline interpolate की जा सकती है या नहीं, यह आज़माना चाहूँगा
      संदर्भ चित्र: दृश्य उदाहरण
    • यह व्याख्या सचमुच बहुत विस्तार से है, इसलिए मैंने इसे सहेज लिया। मुझे पता ही नहीं था कि clothoid connection इतना कठिन होता है। खुद इसे implement करने की हिम्मत अभी नहीं है
  • Roman लोगों की तरह सीधी सड़कें बना दो, काम आसान हो जाएगा :-)
    बेशक Roman लोग private property जैसी चीज़ों की परवाह नहीं करते थे। जहाँ मैं UK के Lincolnshire में रहता हूँ, वहाँ आज भी Roman roads इस्तेमाल होती हैं
    सिर्फ RAF Scampton runway extension के समय अपवादस्वरूप सड़क मोड़ी गई थी

    • दरअसल Roman लोगों को भी private property की समस्या का सामना करना पड़ा था। उदाहरण के लिए दूसरा aqueduct इसलिए टल गया क्योंकि ज़मींदार Crassus ने ज़मीन देने से मना कर दिया था
      विस्तार के लिए Roman aqueduct देखें
    • मेरे इलाके की सड़कें मध्ययुग से church tower से church tower को जोड़ने वाली संरचना पर आधारित हैं
      आज भी सड़क की centerline पूरी तरह church tower की दिशा से मेल खाती है। ज़मीन को church-केंद्रित नज़र से देखना Roman सोच से मिलता-जुलता है