10 คะแนน โดย GN⁺ 2025-06-08 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็น ไลบรารี JavaScript แบบน้ำหนักเบา ที่ออกแบบมาเพื่อให้ผู้ใช้ที่มีประสบการณ์ด้านการเขียนโปรแกรมน้อยก็สามารถสร้างวิดีโอเกมได้อย่างง่ายดาย
  • เหมาะสำหรับการพัฒนาเกมแนวเนื้อเรื่อง หรือเกมที่เน้นการเล่าเรื่อง
  • มอบประสบการณ์การสร้างเกมได้โดยไม่ต้องเขียนโปรแกรมซับซ้อน ด้วยโครงสร้างโค้ดที่เข้าใจง่ายและ API ที่กระชับ
  • ทุกอย่าง (สไปรต์, บทสนทนา, เสียง, อินเทอร์แอ็กชัน) ถูกสร้างขึ้นด้วยโค้ด จึงสามารถเก็บทั้งเกมไว้ในไฟล์เดียวได้

คุณสมบัติเด่นและข้อดี

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

เหมาะสำหรับใคร

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

เริ่มพัฒนาเกมด้วย createGame()

createGame({  
  player: {  
    sprite: 7,  
    position: [2, 5]  
  },  
  map: `  
    ########  
    #......#  
    #..X...#  
    #......#  
    ########  
  `,  
  templates: {  
    X: {  
      sprite: 4,  
      dialog: 'Hello, adventurer!'  
    }  
  }  
})  

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

 
GN⁺ 2025-06-08
ความคิดเห็นจาก Hacker News
  • สงสัยว่าทำไมชื่อถึงเป็น ‘...for narrative games’
    สังเกตได้ว่าในหน้าอย่างเป็นทางการของไลบรารีไม่ได้พูดถึงเกมแบบ ‘narrative’ เลย
    เลยรู้สึกสับสนกับความหมายของ ‘narrative game’
    เกมตัวอย่างก็ไม่ตรงกับนิยาม ‘narrative game’ ที่ฉันคิดไว้
    จากผลค้นหาใน Google ก็ยังไม่เห็นความเชื่อมโยงระหว่างคำว่า ‘narrative game’ กับเกมตัวอย่างเหล่านี้มากนัก
    ถ้าหากมีคำนิยามสากลของ ‘narrative game’ อยู่จริง ก็อดสงสัยไม่ได้ว่าไลบรารีนี้มีฟีเจอร์อะไรที่ช่วยสร้าง ‘narrative game’ ได้เป็นพิเศษเมื่อเทียบกับเอนจินเกมอื่น

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

    • ฉันคิดว่าไอเดียของเครื่องมือนี้คือช่วยให้สร้างเกมผจญภัยง่าย ๆ ด้วยข้อความและบทสนทนาในแบบ declarative
      ต่างจากเอนจินเกมทั่วไปอย่าง Pico-8 ที่เน้นสร้างระบบกลไกของเกมเป็นหลัก
      มันทำให้การสร้างแผนที่ การย้ายระหว่างแผนที่ NPC บทสนทนา และทริกเกอร์ข้อความทำได้ง่าย
      เอนจินสำหรับคนที่ไม่ใช่โปรแกรมเมอร์อย่าง RPGMaker ก็คล้ายกัน เพราะผู้ใช้ส่วนใหญ่ก็สร้างเกมที่เน้นแผนที่กับทริกเกอร์ โดยไม่มีเมคานิกซับซ้อนแยกต่างหาก แต่ใช้ข้อความและบทสนทนาเป็นแกนหลัก
      ฉันมองว่าเครื่องมือนี้ก็ชูจุดเด่นเรื่องการสร้างเกม ‘narrative’ แบบนี้ให้ง่ายขึ้น

    • ในเอกสารแนะนำอย่างเป็นทางการระบุว่า:
      ‘Odyc.js เป็นไลบรารี JavaScript ขนาดเล็กและเบา ที่ออกแบบมาเพื่อให้สร้างเกม narrative ได้ด้วยการผสานพิกเซล เสียง ข้อความ และตรรกะเล็กน้อยเข้าด้วยกัน’

    • โดยธรรมชาติแล้วฉันมองว่ามันคือเอนจินเกมผจญภัยแบบข้อความ

    • มีตัวอย่าง ‘narrative’ เพิ่มอีกสองตัวอย่างอยู่เฉพาะในเว็บเวอร์ชันภาษาฝรั่งเศส
      ฉันใช้คำว่า ‘narrative’ เพราะมันดูเหมาะกับเกมแนวเน้นข้อความหรือเกมข้อความ จากโครงสร้างแบบเทิร์นเบส และการโฟกัสที่ข้อความ พรอมป์ต์ และบทสนทนา
      แต่ถ้ามีไอเดียป้ายกำกับที่ดีกว่านี้ก็ยินดีเปลี่ยน

  • เกม The Magic Mushroom เจ๋งมาก
    ลิงก์

    • อันที่ชอบที่สุดตอนนี้คืออันนี้
      ลิงก์

    • เกม John Wick ให้ความรู้สึกเหมือนสรุปหนังภาคล่าสุด
      ลิงก์

  • ชอบแนวทางการจัดองค์ประกอบแบบนี้มาก
    ฉันเคยสร้างเอนจินเกม JavaScript หลายตัวและลองทำหลายอย่างมาก นี่ให้จุดลงตัวที่ยอดเยี่ยมระหว่าง ‘ต้องรีบทำอะไรให้เด็กเล่นให้เสร็จภายใน 2 ชั่วโมง’ กับ ‘อยากทำความเข้าใจโครงสร้างอย่างลึกซึ้ง’
    หวังว่าจะได้ทำเกมสักสองสามเกมอย่างรวดเร็วไว้ให้เด็ก ๆ ใช้แก้เบื่อในสภาพแวดล้อมที่แบนด์วิดท์ต่ำ

  • ดูเป็นเครื่องมือเล็ก ๆ ที่น่ารัก
    โดยเฉพาะคิดว่าน่าจะเหมาะสำหรับใช้สอนเด็ก ๆ (ให้อารมณ์เหมือน pygame แห่งยุคนี้)
    Scratch และเครื่องมือคล้ายกันถูกออกแบบมาสำหรับเด็ก 5 ขวบ จึงทำให้เนื้อหาโปรแกรมมิงง่ายเกินไป
    แต่เครื่องมือนี้น่าจะเหมาะพอดีกับเด็กนักเรียนวัยราว 10 ขวบ
    สามารถเรียนรู้การจัดการสตริงแบบง่าย ๆ ลูกเล่นไวยากรณ์เล็กน้อย และทำได้ถึงแค่ side scroller พื้นฐานกับ NPC
    จากนั้นเมื่อพร้อมแล้วก็ยังใช้เป็นประสบการณ์เรียนรู้เรื่อง control flow ได้ด้วย
    ถ้าเรียนรู้เครื่องมือนี้แล้วไปเปิดคลาสสอนเด็ก หรือแม้แต่ลงทุนทำพื้นที่เล่น ก็อาจขายได้จริงในทางปฏิบัติ
    อีกมุมหนึ่ง เครื่องมือนี้ก็น่าลองใช้ทดลองสร้าง procedural game assets ขั้นพื้นฐานด้วย

  • แชร์ตัวอย่างโค้ด game.prompt(“Dude, you ran out of eggs!|Would you like to buy|an 80 pack of eggs?”, “Yes”, “No”);

    • ตัวอย่างการใช้โค้ด await game.openDialog(“Dude, you ran out of eggs!|Would you like to buy|an 80 pack of eggs?”) game.prompt( “Yes”, “No”)

    • สงสัยว่าเดิมมีไข่แค่ฟองเดียว แล้วมันกลายเป็นสี่สิบฟองได้อย่างไร

  • ถูกมองว่าเป็นโปรเจกต์ที่สร้างแรงบันดาลใจอย่างแท้จริง
    ตรวจดูแล้วว่าเป็นโอเพนซอร์ส แต่ชี้ให้เห็นว่าไม่มีไลเซนส์ จึงทำให้นักพัฒนาไม่แน่ใจว่าฟอร์ก แก้ไข และแจกจ่ายได้ถึงระดับไหน
    อยากเผยแพร่ฟอร์กที่แปลเป็นภาษาแม่ของตัวเองด้วย (ตั้งใจจะใส่เครดิตไว้) เลยถามว่าทำได้ไหม
    ในประเทศของตนมีคนใช้ภาษาอังกฤษไม่ถึง 5%

    • ขอบคุณมาก และจะเพิ่มไลเซนส์เข้าไป (แนว MIT)
      อยากรู้ว่าภาษาแม่คือภาษาอะไร
      อธิบายว่าภาษาที่เรียงจากซ้ายไปขวานำไปใช้กับงานแปลได้ง่าย
      ยินดีเสมอหากจะฟอร์ก ส่ง PR หรือเข้ามาช่วยปรับปรุงด้านการเข้าถึง
  • นี่มันยอดมาก
    เป็นสิ่งที่ฉันต้องการพอดีเมื่อ 12 ชั่วโมงก่อนเป๊ะ
    บังเอิญว่าเมื่อคืนฉันเพิ่งเผลอหลับไปตอนกำลังทำแอสเซ็ตสำหรับเกมจีบสาวแบบ narrative 3 ด่านสำหรับเล่นคนเดียวเป็นครั้งแรก
    ฉันไม่เคยทำเกมมาก่อน
    พอตอนเช้าก็เห็นบน HN ว่าไลบรารี JS สำหรับเกม narrative ขึ้นไปถึงอันดับ 1
    FTR เกมของฉันเป็นเกมแนวซิมป์ และกำลังทำไว้ใช้ขออีกฝ่ายที่เจอกันมาตลอดให้เป็นแฟนกันอย่างเป็นทางการ

    • คิดว่าเป็นไอเดียที่เจ๋งมาก
      มีประสบการณ์คล้ายกัน: ไม่นานมานี้ฉันสร้างอินเทอร์เฟซแชต MSN ปี 2005 ขึ้นใหม่ทั้งหมดด้วย HTML เพื่อมอบความทรงจำให้ใครบางคน
      เป็นประสบการณ์ที่อบอุ่นมากจริง ๆ

    • ไอเดียดีมาก
      อยากช่วยได้มากกว่านี้
      คิดจริง ๆ ว่านี่คือกรณีใช้งานที่เครื่องมือนี้เหมาะเป๊ะ
      หวังว่าจะไปได้สวย

    • การชอบใครสักคนแล้วอยากใช้เวลาด้วยกัน หรือการแสดงความสนใจ ไม่ใช่สิ่งที่จะถูกเรียกว่า ‘ซิมป์’
      ฉันคิดว่านี่เป็นการชวนที่อบอุ่นและใส่ใจมาก

  • ให้ความรู้สึกคล้าย puzzlescript

    • PuzzleScript เจ๋งมาก และถ้าชอบเอนจินเล็ก ๆ แนวเดียวกันก็ขอแนะนำ crisp-game-lib ด้วย
  • รู้สึกว่าเป็นเครื่องมือที่เจ๋งมากจริง ๆ

  • ไม่ได้เกี่ยวกับไลบรารีนี้โดยตรง แต่สนใจว่าตัว canvas video recorder ที่ใช้ใน playground ทำงานอย่างไร
    อยากลองทำเองดู