2 คะแนน โดย GN⁺ 2026-02-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ในเกมสร้างเมือง การจำลองระบบถนนอย่างสมจริง เป็นองค์ประกอบหลักที่เป็นมากกว่าแค่ภาพลักษณ์ แต่เป็นรากฐานที่กำหนดความสมบูรณ์ของโครงสร้าง
  • เกมที่มีอยู่เดิมใช้ Bezier spline ในการแสดงถนน แต่มีข้อจำกัดในการ รักษาความโค้งและความขนาน ของถนนจริง
  • ถนนในโลกความเป็นจริงต้องสะท้อน ระยะห่างระหว่างเพลารถและข้อจำกัดของทางโค้ง ของยานพาหนะ แต่แนวทางแบบ Bezier จะทำให้รูปทรงบิดเบี้ยวเมื่อทำ offset จนนำไปสู่ ทางโค้งที่ไม่สมจริง
  • เพื่อแก้ปัญหานี้ การใช้เส้นโค้งเชิงวิศวกรรมอย่าง ส่วนโค้งวงกลม (Circle Arc) และ คลอโธอิด (Clothoid) ช่วยให้ การเปลี่ยนค่าความโค้งอย่างนุ่มนวลและการคง offset แบบขนาน เป็นไปได้
  • ผู้เขียนได้ สร้างระบบถนนขึ้นเองโดยตรง เพื่อก้าวข้ามข้อจำกัดเหล่านี้ และมีแผนจะเผยแพร่กระบวนการพัฒนาเชิงเทคนิคในอนาคต

เสน่ห์ของถนนและแพตเทิร์น

  • ผู้เขียนพบความพึงพอใจแบบเดียวกับที่มีต่อ แพตเทิร์นไร้ระเบียบภายในระเบียบของธรรมชาติ ในถนนด้วย
    • เปรียบกับปรากฏการณ์ที่กฎง่าย ๆ สะสมกันจนเกิดเป็นโครงสร้างซับซ้อน เช่น รังมด รังผึ้ง และเส้นใบไม้
    • เครือข่ายถนนเองก็ถูกอธิบายว่าเป็นหนึ่งในแพตเทิร์นที่มนุษย์สร้างขึ้นซึ่งน่าสนใจที่สุด
  • ผู้เขียนจินตนาการถึง ร่องรอยของโครงข่ายถนน ที่ยังคงหลงเหลือหลังเมืองหายไป และเน้นย้ำความงามเชิงโครงสร้างของมัน

เกมสร้างเมืองและวิวัฒนาการของถนน

  • ตั้งแต่ SimCity 2000 จนถึง Cities: Skylines 2 ระบบถนนพัฒนาอย่างต่อเนื่อง
    • SimCity 4 มี ระดับความสูงและถนนแนวทแยง, SimCity 2013 มี ถนนโค้ง, ส่วน Cities: Skylines รองรับ การวางแบบอิสระและการจัดองค์ประกอบทางแยก
  • อย่างไรก็ตาม ยังมีปัญหาอย่าง ความไม่เป็นธรรมชาติของเส้นโค้ง, รัศมีการเลี้ยวที่หักเกินไป, ทางลาดทางด่วนที่ไม่สมจริง อยู่เสมอ
  • แม้จะทำให้เลน เส้นจราจร และเส้นโค้งสมจริงขึ้นได้ผ่าน ม็อด (Mod) แต่ก็ยัง ไม่อาจก้าวข้ามข้อจำกัดพื้นฐานของเอนจิน ได้

ข้อจำกัดของ Bezier spline

  • เส้นโค้ง Bezier เป็นเครื่องมือทางคณิตศาสตร์ที่ทรงพลังสำหรับ เชื่อมสองจุดเข้าด้วยกันอย่างนุ่มนวล และถูกใช้ในเอนจินเกมส่วนใหญ่
  • แต่เส้นโค้งชนิดนี้ ไม่สามารถรักษารูปร่างและค่าความโค้งไว้ได้เมื่อทำ offset หรือกล่าวได้ว่า “offset ของเส้นโค้ง Bezier ไม่ใช่เส้นโค้ง Bezier”
  • ด้วยเหตุนี้จึงเกิดปัญหาอย่าง เส้นโค้งด้านในและด้านนอกไม่สอดคล้องกัน, การตัดกันเอง, และปรากฏการณ์ pinch
  • ผลลัพธ์คือยากที่จะสร้าง เส้นโค้งขนานที่สะท้อนวิถีการเคลื่อนที่ของรถ ได้เหมือนถนนจริง

การใช้ส่วนโค้งวงกลม (Circle Arc) และคลอโธอิด (Clothoid)

  • ส่วนโค้งวงกลม ให้ ความขนานที่สมบูรณ์แบบ เพราะยังคงรูปทรงเดิมไว้ได้แม้หลังทำ offset
    • การคำนวณจุดตัดของส่วนโค้งวงกลมสองเส้นง่ายกว่า Bezier มาก และมีความซับซ้อนเชิงคำนวณเพียง O(1) จึงมีประสิทธิภาพ
    • การเชื่อมส่วนโค้งวงกลมที่มีรัศมีต่างกันเข้าด้วยกันสามารถสร้าง รูปแบบถนนที่สมเหตุสมผลในเชิงวิศวกรรม ได้
  • อย่างไรก็ตาม ส่วนโค้งวงกลมมี ค่าความโค้งคงที่ จึงทำให้เกิด การเปลี่ยนแปลงของความเร่งด้านข้างอย่างฉับพลัน เมื่อเข้าสู่โค้งจากทางตรง
  • เพื่อชดเชยข้อจำกัดนี้ จึงมีการใช้ คลอโธอิด (Clothoid)
    • ค่าความโค้งจะเพิ่มขึ้นอย่างค่อยเป็นค่อยไป ทำให้ได้ การบังคับเลี้ยวที่เป็นธรรมชาติและความสบายในการโดยสาร
    • แม้จะซับซ้อนทางคณิตศาสตร์ แต่ก็ จำเป็นต่อการออกแบบถนนสำหรับการวิ่งด้วยความเร็วสูง
  • สำหรับพื้นที่ความเร็วต่ำ เช่น ทางแยกในเมือง การออกแบบแบบ อิงส่วนโค้งวงกลม ก็ยังให้ความสมจริงได้เพียงพอ

เหตุผลที่สร้างระบบถนนขึ้นมาเอง

  • แม้ผู้เล่นส่วนใหญ่จะไม่ได้สนใจมากนักกับ ความแม่นยำของความโค้งในทางแยก แต่นักพัฒนากลับสำรวจเรื่องนี้ด้วย ความอยากรู้อยากเห็นและความท้าทายทางเทคนิค
  • แม้เกมเชิงพาณิชย์ที่มีอยู่จะมีระดับการพัฒนาสูง แต่ ทรัพยากรหรือแอสเซตที่นักพัฒนาอินดี้เข้าถึงได้ยังมีไม่เพียงพอ
  • ผู้เขียนจึงพัฒนาระบบขึ้นเองเพื่อสร้าง ระบบที่ประณีตและนำไปแบ่งปันต่อได้มากกว่า แทนถนนแบบตารางอย่างง่าย
  • ในบทความถัดไปจะมีการเปิดเผย รายละเอียดกระบวนการพัฒนาเชิงเทคนิค และสามารถติดตามอัปเดตได้ผ่านการสมัครรับข้อมูล

1 ความคิดเห็น

 
GN⁺ 2026-02-09
ความคิดเห็นจาก Hacker News
  • เห็นโพสต์ที่บอกว่า ถนน คือหัวใจของเกมสร้างเมืองแล้ว ฉันก็เหมือนจะเข้าใจว่าทำไมนักผังเมืองถึงฝันร้าย
    โครงสร้างพื้นฐานของเมืองไม่ใช่ ถนนสำหรับรถยนต์ (road) แต่คือ ถนนเมือง/พื้นที่สาธารณะ (street) ที่คนเดินเท้า จักรยาน และขนส่งสาธารณะใช้ร่วมกัน
    แนวคิดที่เกี่ยวข้องดูได้จากบทความ Stroad

    • ไม่เคยคิดถึงความต่างของสองคำนี้มาก่อน แต่พออ่านคำอธิบายใน Wikipedia ก็เข้าใจเลย
      road เน้น การขนส่ง (transportation) ส่วน street เน้น ปฏิสัมพันธ์สาธารณะ (public interaction)
      ถึงอย่างนั้นฉันก็รู้สึกว่าการยกคำพูดจากต้นฉบับโดนวิจารณ์แรงเกินไป สังคมสมัยใหม่มีความต้องการด้านการขนส่งมหาศาล จนโครงข่ายถนนทั้งในและนอกเมืองกลายเป็นโครงกระดูกของเมือง
      ก่อนคริสต์ศตวรรษที่ 20 เมืองมักสร้างได้แค่ใกล้ทางน้ำ แต่ตอนนี้สร้างในแผ่นดินลึกเข้าไปได้ก็เพราะถนน
    • ถนนในซานฟรานซิสโกเองก็ถูกออกแบบตาม หลักวิศวกรรมโยธา มาตั้งแต่ศตวรรษที่ 19
      ถ้าจะทำเมืองให้ดูสมจริง ฉันคิดว่าแนวทางแบบนี้ถูกต้องกว่าการทำถนนปลอมๆ
    • ฉันเองก็ชอบ โครงสร้างพื้นฐานที่เน้นคนเดินเท้า (เลนจักรยาน ทางเดิน และขนส่งสาธารณะ) แต่ก็เป็นความจริงว่าถนนเดิมทีถูกออกแบบมาเพื่อรถม้าและรถยนต์
      บางทีก็ชอบจินตนาการว่า ถ้าอารยธรรมที่ใช้แค่จักรยานกับการเดินเท้าเป็นผู้ออกแบบเมือง หน้าตาจะออกมาแบบไหน
  • มีเกมหนึ่งที่ผู้เขียนน่าจะชอบ ชื่อ Junxions เป็นเกมแซนด์บ็อกซ์ที่โฟกัสการสร้างทางแยกถนน
    ซับเรดดิตที่เกี่ยวข้องอยู่ ที่นี่ เกมนี้น่าจะตอบโจทย์ความอยากออกแบบถนนได้ดี

    • ฉันเป็น ผู้สร้าง ระบบถนนนี้เอง ตอนนี้จริงๆ ก็ยังไม่แน่ใจว่าควรทำมันเป็นอะไรดี — จะปล่อยเป็นแอสเซ็ตหรือทำเป็นเกมเต็มยังลังเลอยู่
      ฉันก็ชอบ Junxions แต่แนวทางของฉันต่างออกไป ฝั่งนั้นใช้ โครงสร้างเบซิเยร์แบบอิงโหนด แต่ของฉันใช้การชนกันของเซกเมนต์ถนนเพื่อสร้างทางแยกอัตโนมัติ
      ในบล็อกโพสต์ถัดไปฉันจะลงรายละเอียดความต่างของสองแนวทางนี้
  • มีคนบอกว่า “คนที่สนใจรัศมีมุมของทางแยกมีอยู่แค่ 1%” ซึ่งฉันนี่แหละคือ 1% นั้น

  • การนิยามถนนด้วย เส้นโค้งเบซิเยร์ ไม่ใช่เรื่องง่าย
    โดยเฉพาะช่วงโค้งหักศอกที่ผลลัพธ์มักดูไม่สวยในเชิงภาพ
    ปีที่แล้วฉันก็เจอปัญหาเดียวกันตอนทำโปรเจกต์ Azoth และได้วิธีแก้แบบลดทอนที่ใช้ได้
    อ้างอิง: คลังเก็บ Azoth, ตัวอย่างเบซิเยร์

  • องค์ประกอบต่างๆ ในเกมที่ดูเหมือนเป็นเรื่องธรรมดา จริงๆ แล้วคือผลลัพธ์ของ แรงงานและการออกแบบ มหาศาล
    อย่างเช่นถนน ผู้เล่นอาจไม่ได้ซูมดูละเอียด แต่ถ้ามันดูแปลกขึ้นมาก็จะรู้สึกขัดตาทันที
    ฉันเพิ่งรู้สึกแบบนั้นตอนเล่น Kingdom Come 2 — มันดูเป็นธรรมชาติเหมือนโลกจริง แต่รายละเอียดทั้งหมดนั้นสร้างมาจากหยาดเหงื่อและน้ำตาของนักพัฒนา
    เพราะงั้นก็พอเข้าใจได้ว่าทำไมอุตสาหกรรมเกมถึงเผชิญกับ การโหมงานหนัก (crunch)

    • ประตู ในเกมก็เป็นปัญหาซับซ้อนเหมือนกัน มักจะใหญ่กว่าของจริงราว 30% และส่วนใหญ่ใช้ ประตูบานเลื่อน เพราะเรื่องการจำลองฟิสิกส์
      บทความที่เกี่ยวข้อง: The Door Problem, บทความ IGN
  • โพสต์แบบนี้แหละที่ทำให้ฉันยังอ่าน Hacker News ต่อไป อยากบอกผู้เขียนว่าเขียนต่อไปเรื่อยๆ นะ

    • ผู้เขียนเอง ขอบคุณที่สนใจนะ จริงๆ ฉันไม่รู้จัก HN มาก่อน แต่เพิ่งมารู้เพราะมีทราฟฟิกไหลเข้ามาเยอะ
      ดูเหมือนจะมีคนที่สนใจอะไรคล้ายกันเยอะกว่าที่คิด เลยตั้งใจว่าจะเขียนต่ออีก
  • บทความนี้ตรงจริตฉันมาก ฉันเองก็ หมกมุ่นกับถนน แบบเดียวกัน
    เมืองประกอบขึ้นจากถนนเหมือนเส้นเลือด ส่วนตรอกซอยของหมู่บ้านในยุโรปและเอเชียก็คือเรื่องราวที่สร้างทับลงบนรอยเท้าเดิน
    ตรงกันข้าม ถนนชนบทในบ้านเกิดฉันมักพุ่งเป็นเส้นตรง แล้วก็หักทันทีถ้าเจ้าของที่ไม่ยอมขายที่
    มีแค่ยุคอาณานิคมหรือเมืองวางผังบางส่วนเท่านั้นที่เป็นกริด ส่วนใหญ่แล้วทิศทางจะเปลี่ยนไปตามสายน้ำหรือภูมิประเทศ
    จุดตัดระหว่างกริดเหล่านี้ คือส่วนที่สวยที่สุดและน่าสนใจที่สุดทางสถาปัตยกรรมของเมือง
    ถ้ามีเกมที่จำลองการเปลี่ยนแปลงของการเติบโตเมืองได้ก็คงยอดเยี่ยมมาก

    • ฉันเองก็หลุดจากอารมณ์ร่วมทันทีถ้าเกมสร้างเมืองอิงประวัติศาสตร์ทำเมืองออกมาเป็น กริด เป๊ะๆ
      เมืองจริงพัฒนาขึ้นเหมือนรังมด คือมี ความซับซ้อนภายใต้ระเบียบที่เป็นธรรมชาติ
      นี่เป็นหัวข้อที่ฉันอยากเขียนแยกต่างหากในภายหลัง
  • ในเกมถัดไป Canalpunk ฉันน่าจะยังใช้เบซิเยร์สปลายน์ต่อไป
    คิดว่าระบบภัยพิบัติที่เกิดขึ้นเมื่อเส้นทาง ตัดตัวเอง น่าจะน่าสนใจดี

  • ตอนนี้ฉันกำลังหมกมุ่นกับการทำ clothoid (curve transition) ในตัวแก้ไขรางรถไฟ
    ถ้าอยู่ในพื้นที่ว่างจะง่าย แต่ตอนเชื่อมรางเข้าหากันนี่แหละที่ยาก
    ฉันมีเอกสารอธิบายที่เคยทำไว้ก่อนหน้านี้: Euler Spiral Explanation

    • มีเรื่องสงสัยอยู่อย่างหนึ่ง ถ้ามีเส้นที่แยกออกเป็นสองแขนจากซ้ายไปขวา แล้วลองยืด clothoid ย้อนกลับไป จะเกิด จุดตัดแบบคลื่น ไหม?
      ฉันอยากลองดูว่าสามารถใช้จุดตัดนั้นมาอินเตอร์โพเลตสปลายน์ใหม่ได้หรือเปล่า
      ภาพอ้างอิง: ตัวอย่างภาพ
    • คำอธิบายละเอียดมาก ฉันเลยบันทึกเก็บไว้ ไม่คิดมาก่อนเลยว่าการเชื่อม clothoid จะยากขนาดนี้ ตอนนี้ยังไม่กล้าลองทำเอง
  • ถ้าทำแบบชาวโรมันแล้วสร้างเป็น ถนนเส้นตรง ก็ง่ายดี :-)
    แน่นอนว่าชาวโรมันไม่ได้สนใจเรื่องที่ดินส่วนบุคคลอะไรนัก แถว Lincolnshire ในอังกฤษที่ฉันอยู่ ถนนโรมันยังถูกใช้อยู่จนทุกวันนี้
    มีแค่ตอนขยายรันเวย์ RAF Scampton เท่านั้นที่ยอมเบี่ยงถนน

    • จริงๆ แล้วชาวโรมันก็เจอ ปัญหาเรื่องที่ดินส่วนบุคคล เหมือนกัน เช่น ท่อส่งน้ำสายที่สองล่าช้าเพราะเจ้าของที่ดินชื่อ Crassus ไม่ยอมยกที่ให้
      รายละเอียดดูได้ที่ Roman aqueduct
    • ถนนในพื้นที่ที่ฉันอยู่มีโครงสร้างแบบ เชื่อมหอคอยโบสถ์ถึงหอคอยโบสถ์ มาตั้งแต่ยุคกลาง
      ทุกวันนี้แนวเส้นกึ่งกลางถนนยังตรงกับทิศของหอคอยโบสถ์อย่างสมบูรณ์ เป็นแนวคิดเรื่องที่ดินที่มีศาสนจักรเป็นศูนย์กลางซึ่งคล้ายกับของโรมัน