- เป็น ไลบรารี JavaScript แบบน้ำหนักเบา ที่ออกแบบมาเพื่อให้ผู้ใช้ที่มีประสบการณ์ด้านการเขียนโปรแกรมน้อยก็สามารถสร้างวิดีโอเกมได้อย่างง่ายดาย
- เหมาะสำหรับการพัฒนาเกมแนวเนื้อเรื่อง หรือเกมที่เน้นการเล่าเรื่อง
- มอบประสบการณ์การสร้างเกมได้โดยไม่ต้องเขียนโปรแกรมซับซ้อน ด้วยโครงสร้างโค้ดที่เข้าใจง่ายและ API ที่กระชับ
- ทุกอย่าง (สไปรต์, บทสนทนา, เสียง, อินเทอร์แอ็กชัน) ถูกสร้างขึ้นด้วยโค้ด จึงสามารถเก็บทั้งเกมไว้ในไฟล์เดียวได้
คุณสมบัติเด่นและข้อดี
- แม้แต่นักพัฒนามือใหม่หรือผู้ที่ไม่ใช่นักพัฒนาก็สามารถสร้างเกมแนวเนื้อเรื่องได้ด้วย โค้ด JavaScript แบบง่ายๆ
- ต่างจากเฟรมเวิร์กขนาดใหญ่ตรงที่มี ขนาดเล็กมาก และใช้งานได้ง่าย
- โดดเด่นด้าน เรื่องราวและการโต้ตอบ เช่น เกมแบบมีตัวเลือก คอนเทนต์เชิงโต้ตอบ และประสบการณ์การพัฒนาแบบภาพ
เหมาะสำหรับใคร
- ใช้ได้กับทุกคนตั้งแต่ผู้เริ่มต้นสร้างเกม ไปจนถึง สตาร์ทอัพ ผู้เชี่ยวชาญด้านไอที นักพัฒนา และครีเอเตอร์ ที่ต้องการสร้างต้นแบบอย่างรวดเร็ว
- เป็นเครื่องมือที่เหมาะกับ การทดลองไอเดีย คอนเทนต์เชิงโต้ตอบ และการดำเนินเรื่อง มากกว่ากราฟิกซับซ้อนหรือเกมขนาดใหญ่
เริ่มพัฒนาเกมด้วย createGame()
createGame({
player: {
sprite: 7,
position: [2, 5]
},
map: `
########
#......#
#..X...#
#......#
########
`,
templates: {
X: {
sprite: 4,
dialog: 'Hello, adventurer!'
}
}
})
1 ความคิดเห็น
ความคิดเห็นจาก 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%
อยากรู้ว่าภาษาแม่คือภาษาอะไร
อธิบายว่าภาษาที่เรียงจากซ้ายไปขวานำไปใช้กับงานแปลได้ง่าย
ยินดีเสมอหากจะฟอร์ก ส่ง PR หรือเข้ามาช่วยปรับปรุงด้านการเข้าถึง
นี่มันยอดมาก
เป็นสิ่งที่ฉันต้องการพอดีเมื่อ 12 ชั่วโมงก่อนเป๊ะ
บังเอิญว่าเมื่อคืนฉันเพิ่งเผลอหลับไปตอนกำลังทำแอสเซ็ตสำหรับเกมจีบสาวแบบ narrative 3 ด่านสำหรับเล่นคนเดียวเป็นครั้งแรก
ฉันไม่เคยทำเกมมาก่อน
พอตอนเช้าก็เห็นบน HN ว่าไลบรารี JS สำหรับเกม narrative ขึ้นไปถึงอันดับ 1
FTR เกมของฉันเป็นเกมแนวซิมป์ และกำลังทำไว้ใช้ขออีกฝ่ายที่เจอกันมาตลอดให้เป็นแฟนกันอย่างเป็นทางการ
คิดว่าเป็นไอเดียที่เจ๋งมาก
มีประสบการณ์คล้ายกัน: ไม่นานมานี้ฉันสร้างอินเทอร์เฟซแชต MSN ปี 2005 ขึ้นใหม่ทั้งหมดด้วย HTML เพื่อมอบความทรงจำให้ใครบางคน
เป็นประสบการณ์ที่อบอุ่นมากจริง ๆ
ไอเดียดีมาก
อยากช่วยได้มากกว่านี้
คิดจริง ๆ ว่านี่คือกรณีใช้งานที่เครื่องมือนี้เหมาะเป๊ะ
หวังว่าจะไปได้สวย
การชอบใครสักคนแล้วอยากใช้เวลาด้วยกัน หรือการแสดงความสนใจ ไม่ใช่สิ่งที่จะถูกเรียกว่า ‘ซิมป์’
ฉันคิดว่านี่เป็นการชวนที่อบอุ่นและใส่ใจมาก
ให้ความรู้สึกคล้าย puzzlescript
รู้สึกว่าเป็นเครื่องมือที่เจ๋งมากจริง ๆ
ไม่ได้เกี่ยวกับไลบรารีนี้โดยตรง แต่สนใจว่าตัว canvas video recorder ที่ใช้ใน playground ทำงานอย่างไร
อยากลองทำเองดู
เปิดเผยโค้ดที่เกี่ยวข้อง
ช่วงหลังฉันเพิ่งดูเรื่อง canvas video recorder ในโปรเจกต์ล่าสุด และแปลกใจที่ฟีเจอร์นี้ถูกใส่มาในตัว
อ้างอิงบทสอนบน medium.com