1 คะแนน โดย GN⁺ 2026-01-07 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็นเกมพัซเซิลล้อมม้าโดยใช้กำแพงจำนวนจำกัด โดยมีเป้าหมายคือสร้างคอกให้กว้างที่สุดเท่าที่จะทำได้
  • ผู้เล่นจะคลิกที่ไทล์หญ้าเพื่อวางกำแพง และม้าไม่สามารถเดินทแยงหรือข้ามน้ำได้
  • หากรวม เชอร์รี (Cherries) ไว้ภายในคอก จะได้รับคะแนนเพิ่ม และคอกที่ใหญ่กว่าจะได้คะแนนสูงกว่า
  • รองรับตัวแก้ไขด่าน, กระดานผู้นำ, พัซเซิลประจำวัน และการค้นหาด่านที่ผู้ใช้สร้าง
  • เริ่มต้นจากไอเดียง่าย ๆ แต่พัฒนาไปเป็นเกมในลักษณะของโจทย์ optimization แบบ Leetcode/Advent of Code

ภาพรวมของเกม

  • enclose.horse เป็นเกมพัซเซิลที่ให้ใช้กำแพงจำนวนจำกัดเพื่อล้อมม้า
    • เป้าหมายคือการล้อมพื้นที่ให้ได้กว้างที่สุดเท่าที่เป็นไปได้
    • คะแนนจะตัดสินจากขนาดของคอกและจำนวนเชอร์รีที่อยู่ภายใน
  • วิธีเล่นคือคลิกที่ไทล์หญ้าเพื่อสร้างกำแพง
    • ม้าไม่สามารถเคลื่อนที่แบบทแยงหรือเดินบนน้ำได้
    • หากรวมเชอร์รีไว้ในคอกจะได้รับ +3 คะแนน
    • ส่งคำตอบได้เพียงครั้งเดียว

อินเทอร์เฟซและฟีเจอร์ของเกม

  • ข้อมูลด่านจะแสดงขนาด (12x14), งบกำแพง (12), จำนวนครั้งที่เล่น (4455 ครั้ง), เลข ID ด่าน (ZtiI9g) เป็นต้น
  • ในเมนูตั้งค่าสามารถปรับชื่อ, เส้นกริด, ธีม และการตั้งค่าขั้นสูงได้
  • ชื่อจะถูกบันทึกไว้ในกระดานผู้นำ และสามารถเปรียบเทียบคะแนนกับผู้เล่นคนอื่นได้
  • สามารถสร้างและแชร์พัซเซิลได้เองผ่านตัวแก้ไขด่าน
  • ในหน้า “Browse” สามารถค้นหาด่านที่ผู้ใช้อื่นสร้างไว้ และโหวตได้หลังเล่นจบ

ประวัติการอัปเดต

  • 29 ธันวาคม 2025: เปิดตัวครั้งแรก พร้อมเพิ่มตัวแก้ไขด่านและกระดานผู้นำ
  • 30 ธันวาคม: เพิ่มฟีเจอร์พัซเซิลประจำวัน (Daily puzzles) และพัซเซิลย้อนหลัง (Past Puzzles)
  • 31 ธันวาคม: เพิ่มแท็บอัปเดต
  • 1 มกราคม 2026: เพิ่ม Solver ในตัวแก้ไขด่าน พร้อมฟีเจอร์ค้นหาและโหวตด่านที่ผู้ใช้สร้าง
  • 2 มกราคม: เพิ่มฟีเจอร์ติดตามพื้นที่สูงสุดระหว่างเล่น
  • 3 มกราคม: เพิ่มองค์ประกอบเชอร์รี
  • 4 มกราคม: แก้บั๊กเกี่ยวกับเชอร์รีและปรับปรุงตัวกรองการค้นหา

เบื้องหลังการพัฒนา

  • ผู้พัฒนาเริ่มต้นเกมนี้จากแนวคิดของโจทย์ optimization แบบ Leetcode หรือ Advent of Code
  • หลังจากได้ลองเล่นด้วยตัวเอง ก็เห็นว่ามีคุณค่ามากพอที่จะพัฒนาให้เป็นเกมพัซเซิลที่สมบูรณ์
  • เกมนี้สร้างโดย Shivers และเผยแพร่ผ่านเว็บไซต์ทางการกับบัญชี X (Twitter)

องค์ประกอบอื่น ๆ

  • ฟีเจอร์ “Horse Tip” จะเตือนก่อนส่งคำตอบหากยังมีกำแพงเหลือ
    • มีตัวเลือก “ไม่ต้องแสดงอีก” ให้ใช้งาน
  • สามารถรายงานด่านที่ไม่เหมาะสมหรือเป็นไปไม่ได้ผ่านฟีเจอร์รายงานบั๊ก
  • มีองค์ประกอบขำ ๆ บางส่วน เช่น การตั้งชื่อเชอร์รี (Name Five of Cherries)

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

 
GN⁺ 2026-01-07
ความคิดเห็นจาก Hacker News
  • เป็นเกมที่สนุกมากจริง ๆ ถ้านักพัฒนาเก็บข้อมูลได้ดี ผมว่าน่าจะรวม 100 ด่านตามลำดับความยากแล้วปล่อยบน Steam ได้เลย
    แต่แอนิเมชันที่ประตูเลื่อนลอยขึ้นด้านบนทำให้ตรรกะภาพแบบ 2D ดูเพี้ยน ๆ และชวนสับสน
    อยากเห็นมีการเพิ่มกลไกเกมใหม่ ๆ ในอนาคต เช่น

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

    • มีคนบอกว่าวิธีคิดนี้คล้ายแนวคิดของ TDD (การพัฒนาแบบขับเคลื่อนด้วยการทดสอบ)
    • ผมก็ใช้อัลกอริทึมเดียวกัน วิธีแบบ top-down ไม่เวิร์กเท่าไรแต่สนุกมาก
  • ถ้าเปลี่ยนเชอร์รีเป็นแบตเตอรี่แล้วตั้งชื่อเกมว่า Correct Horse Battery Stable ก็น่าจะขำดี

    • หรือเปลี่ยนเชอร์รีเป็นขนมหรือของว่าง PBJ แล้วใช้ชื่อ Collect Horse Buttery Stable ก็น่ารักดี
    • ยังมีไอเดียให้ใช้ ลวดเย็บกระดาษ (staples) แทนกำแพงด้วย
    • มีคนเสนอว่าเปลี่ยนเชอร์รีเป็นก้อนน้ำตาลแล้วเรียก My Lovely Horse ก็ดีเหมือนกัน
    • มุกนี้อ้างอิงจาก xkcd 936
  • เกมดีมาก แต่พอกด “Show optimal” แล้วกลับเทียบกับคำตอบของตัวเองไม่ได้ เลยเสียดายนิดหน่อย
    กำแพงดูเหมือนกินพื้นที่หนึ่งช่องครึ่งเลยชวนสับสน และดีไซน์มันดูเหมือนรั้วไดโนเสาร์มากกว่า ถ้าเปลี่ยนให้เป็นคอกม้าก็น่าจะดีกว่า

    • ถ้าทำ “Show optimal” เป็นปุ่มสลับเพื่อให้ดูสลับกับคำตอบของตัวเองได้ก็น่าจะดี บนมือถือกำแพงซ้อนกันจนแตะยากก็เห็นด้วยเหมือนกัน
    • ควรมีปุ่มสลับเร็ว ๆ ผมหาวิธีกลับไปดูคำตอบตัวเองได้จากเมนูวันที่ย้อนหลัง
    • จากที่ม้าพูดถึง Demonym ตอนคลิก อาจจะมีอะไรซ่อนอยู่อีกก็ได้
  • ถ้าคะแนนเริ่มต้นใช้ N/EIGH แทน N/A ก็น่าจะเข้ากับธีมม้าดี

    • ทำให้นึกถึงการ์ตูนเรื่อง สภาม้า (neigh) ที่เคยเห็นมาก่อน
    • ขอชื่นชมความสร้างสรรค์ที่นึกมุกนี้ออกมาได้
  • ผมลองทำตัวหาเฉลยขึ้นมาเอง

    1. แคปหน้าจอกริด
    2. อัปโหลดไปที่ enclosure-horse-solution.onrender.com
    3. เช็กจำนวนกำแพงแล้วกด Solve
      เป็นเวอร์ชันฟรีเลยล่มเป็นบางครั้ง แต่ผมเพิ่มแคชไว้แล้ว
      รันในเครื่องตัวเองได้จาก GitHub repository
    • ในเลเวลเอดิเตอร์สามารถสร้างแมปเองและดูคำตอบที่ดีที่สุดได้ ถ้าลองสร้างแมปทางการขึ้นมาใหม่ก็จะพอเดาเจตนาของผู้พัฒนาได้ด้วย
    • มีคนถามว่าแคชไว้ในหน่วยความจำหรือบนดิสก์ ถ้าใช้ Redis อะไรแบบนั้นก็น่าจะเสถียรกว่า
    • เซิร์ฟเวอร์ล่มบ่อย ถ้าผลไม่ออกมาแนะนำให้รันในเครื่องเอง
  • อยากให้มีฟีเจอร์ที่เทียบคำตอบของผมกับคำตอบที่ดีที่สุดได้พร้อมกันในหน้าจอเดียว

    • ผมเองก็แคปภาพสองรูปมาเทียบเหมือนกัน
    • ถ้ามีมุมมองแบบวางเทียบกัน (diff) ได้ก็คงสมบูรณ์แบบ
  • ผมสงสัยว่าวิธีหาเฉลยที่ดีที่สุดของปัญหานี้ด้วยอัลกอริทึมทำกันอย่างไร ใน Factorio ผมก็เคยพยายามแก้ปัญหาแนวคล้าย ๆ กันแต่ยังหาวิธีเร็ว ๆ ไม่เจอ

    • ในเว็บบอกว่าใช้ Answer Set Programming (ASP) กับเอนจิน Clingo ปัญหาเพิ่มพื้นที่กริดแบบนี้น่าจะเป็น NP-hard ได้ ตัวแก้แบบ SAT/SMT ไม่มีประสิทธิภาพนักกับการคำนวณ flood-fill
    • มีคนเห็นว่าแนวทางแบบconstraint programmingน่าจะเหมาะ กำหนดตำแหน่งกำแพงเป็นตัวแปร แล้วตั้งให้ช่องที่ม้าเข้าถึงได้เป็นเงื่อนไข
    • บางคนบอกว่าเห็นปัญหานี้แล้วนึกถึงแนวทาง optimization หลายแบบ เช่น graph cut, SAT/SMT, ACSP
    • มีการคุยเรื่องนี้ไว้ที่ CS StackExchange ด้วย
    • มีความเห็นว่ามันเป็นปัญหา NP-hard และอาจอนุมานมาจาก Sparsest Cut ได้ โดยเสนอให้หาค่า min-cut แล้วปรับความจุไปเรื่อย ๆ แบบวนซ้ำ
  • ทุกครั้งที่เห็นโดเมน horse ผมจะยิ้มแล้วลองรัน traceroute bad.horse

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