Show HN: Boardzilla เฟรมเวิร์กสร้างบอร์ดเกมบนเว็บ
(boardzilla.io)- Boardzilla เป็นเฟรมเวิร์กที่มุ่งลดอุปสรรคในการสร้างบอร์ดเกมดิจิทัล โดยทำให้สามารถเล่นและพัฒนาบอร์ดเกมได้ในเบราว์เซอร์
- เป้าหมายคือให้นักพัฒนาสามารถแสดงกติกาของเกมได้ และให้ผู้เล่นตรวจสอบตัวเลือกที่เป็นไปได้ผ่าน อินเทอร์เฟซที่เรียบง่าย
- ตัวอย่างเกมที่เปิดให้เล่นมี 7 Wonders Duel, Cursed, Dyngus Day, 27Panic, Hearts, Hex, Power Grid, Skirma, Stunt Kites เป็นต้น
- จำนวนผู้เล่นที่รองรับแตกต่างกันไปตามแต่ละเกม ตั้งแต่เล่นคนเดียวไปจนถึง 4 คน โดย 7 Wonders Duel, Hex และ Skirma เป็นเกมสำหรับ 2 คน ส่วน Hearts เป็นเกมสำหรับ 4 คน
- ผู้ใช้ที่ต้องการสร้างบอร์ดเกมของตัวเองสามารถเริ่มพัฒนาได้ผ่านเอกสารและหน้าแนะนำที่มีให้
สิ่งที่ Boardzilla มอบให้
- Boardzilla เป็นสภาพแวดล้อมบนเว็บสำหรับสร้างบอร์ดเกมดิจิทัลได้อย่างง่ายดาย
- สามารถ เล่น และ พัฒนา บอร์ดเกมได้ภายในเบราว์เซอร์
- ทำให้การแสดงกติกาเกมทำได้ง่ายขึ้น และมอบตัวเลือกที่เป็นไปได้แก่ผู้เล่นผ่านอินเทอร์เฟซที่เรียบง่าย
ตัวอย่างเกมที่เล่นได้
- 7 Wonders Duel: สำหรับ 2 คน
- Cursed: สำหรับ 1 คน
- Dyngus Day: สำหรับ 1~4 คน
- 27Panic: สำหรับ 2~4 คน
- Hearts: สำหรับ 4 คน
- Hex: สำหรับ 2 คน
- Power Grid: สำหรับ 2~4 คน
- Skirma: สำหรับ 2 คน
- Stunt Kites: สำหรับ 1~2 คน
ช่องทางเริ่มต้นพัฒนา
- ผู้ใช้ที่ต้องการสร้างเกมของตัวเองสามารถเริ่มต้นได้ที่ เอกสาร Boardzilla
- ดูคำแนะนำเกี่ยวกับบริการได้ที่ What is Boardzilla
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ผมคิดว่าข้อความที่เด่นที่สุดบนหน้า Landing Page ไม่ควรเป็น คำเชิญให้ “เข้าร่วม Discord”
ควรแสดงตัวอย่างและลิงก์ซอร์ส/เอกสารก่อน สำหรับโปรเจกต์แบบนี้ ถ้าเน้น “เข้าร่วม Discord” มากเกินไป ส่วนตัวผมกลับรู้สึกอยากถอยห่าง น่าจะไม่ใช่แค่ผมคนเดียว
ผมไม่ชอบ Discord เอามาก ๆ เว้นแต่จะเป็นแพลตฟอร์มสื่อสารชั่วคราวระหว่างเพื่อน ๆ เท่านั้น แต่ผู้คนกลับมีแนวโน้มจะใช้ Discord เป็นแพลตฟอร์มหลักทั้งสำหรับคำถามขอความช่วยเหลือ รวมถึงเอกสารด้วย คุณภาพการค้นหาก็แย่ และเสิร์ชเอนจินก็จัดทำดัชนีไม่ได้ ดังนั้นเวลาต้องหาวิธีแก้ปัญหาจริง ๆ มันแย่ที่สุดเลย
ดูดีนะ ขอบเขตฟีเจอร์กว้าง น่าจะมีชิ้นส่วนที่ต้องทำงานร่วมกันเยอะ งานคงหนักพอสมควร อย่างน้อยก็น่าดีใจที่มี เกมเอนจิน ที่โฟกัสเกมโต๊ะโดยไม่โฟกัสแค่การเรนเดอร์อย่างเดียว
แต่ในฐานะคนที่เคยทำให้เกมไพ่และเกมลูกเต๋าเล่นออนไลน์ได้ด้วย HTML/JavaScript ล้วน ๆ ผมยังไม่ค่อยแน่ใจว่าจะทำสิ่งเดียวกันซ้ำในระบบนี้อย่างไร จากเอกสารดูเหมือนว่าจะรองรับไพ่ และ abstraction ก็ดูทั่วไปพอที่จะเข้ากับเกมหลากหลายแบบ แต่ถ้ามี tutorial แบบทีละขั้นตอนน่าจะช่วยได้มาก ผมเข้าใจว่าทำไมถึงเลือก abstraction อย่าง Actions, Flows, selections, conditions, prompts แต่ถ้าไม่ได้เห็นว่ามันประกอบกันจริง ๆ อย่างไร ก็ยังนึกไม่ออกว่าจุดที่ผมอยากเปลี่ยนควรไปเปลี่ยนตรงไหน ถ้าไม่มี tutorial ส่วนตัวผมคงไปต่อได้ยาก
Player) และถูกวางบนพื้นที่ (Space) บนโต๊ะ นั่นคือPieceไพ่และลูกเต๋านิยามโดยสืบทอดจาก
Pieceให้ผู้เล่นสืบทอดจากPlayerแล้วอาจกำหนดตัวตนแบบ Teller ที่จัดการสำรับให้เป็นPlayerได้ด้วย จากนั้นก็คิดว่าจะจัดวางอินสแตนซ์Spaceที่จำเป็นต่อกติกาบนกระดานอย่างไร กติกาจะอยู่ในอินสแตนซ์ของคลาสGameและภายในนั้นมีแนวคิดของการกระทำซึ่งเป็นอินสแตนซ์ของคลาสActionการกระทำนี้รับอาร์กิวเมนต์ที่กำหนดพรอมป์ผู้ใช้ เงื่อนไขการทำงานที่ถูกต้องตามกติกา และผลของการทำงาน นอกเหนือจากนั้นก็มีฟังก์ชันช่วยที่คาดหวังได้พอสมควร เช่น การค้นหาชิ้นส่วน การเปรียบเทียบ และที่เหลือก็ขึ้นกับลอจิกของเกม ดูจากตัวอย่างมีฟังก์ชันสำหรับกรองSpaceและPieceด้วย จึงน่าจะทำลอจิก UI ได้เร็วhttps://docs.boardzilla.io/game/creating-a-game
ไม่ควรใส่ *Zilla ในชื่อโปรเจกต์ เป็นที่รู้กันว่าผู้ถือสิทธิ์ Godzilla คอยติดตามอย่างจริงจังกับผู้ที่พยายามใช้คำต่อท้าย “Zilla” Mozilla ก็เคยได้บทเรียนไปนานแล้วและต้องทำข้อตกลงแยกต่างหาก
คดีเครื่องหมายการค้าเดียวที่ Toho แพ้คือคดีกับบริษัทถุงขยะชื่อ ‘trashzilla’ และเหตุผลหนึ่งก็คือมันไม่เป็นภัยต่อผลประโยชน์ทางธุรกิจของ Toho แก้ไข: ผมไม่ได้ดูโลโก้ อันนี้อาจเป็นปัญหาได้จริง ๆ
ใช้ TypeScript+CSS สินะ คาดหวังว่าจะรองรับ Python บนเซิร์ฟเวอร์สำหรับลอจิกเกม ตอนนี้จังหวะดีอยู่ แต่บรรดานักพัฒนาและผู้จัดจำหน่ายที่เคยใช้ BGA กำลังกังวลกับโมเดลธุรกิจของ Asmodee
สแต็กของ BGA Studio คือ JS/CSS + PHP (ไคลเอนต์และเซิร์ฟเวอร์) + MySQL [0]
Yucata.de คือ JS + HTML + .NET 4.5 บนเซิร์ฟเวอร์ [1]
TTS ใช้ Lua พอลองดูแล้วดูแปลกและมีข้อจำกัด ไม่ใช่เชิงวัตถุด้วยซ้ำ เลยไม่เข้าใจว่าทำไมถึงเลือกภาษาที่ไม่ใช่ OOP สำหรับบอร์ดเกม รีวิวเว็บไซต์/เฟรมเวิร์กปี 2021 ชื่อ “VassalEngine: Survey of other boardgame software” ก็มีประโยชน์ [2]
ถ้ารวมกับ Python บนเซิร์ฟเวอร์ได้คงดีมาก
[0]: https://boardgamearena.com/doc/Studio
[1]: https://www.yucata.de/en/FAQ#t17
[2]: https://forum.vassalengine.org/t/survey-of-other-boardgame-s...
แม้ไม่มี class ก็ทำโปรแกรมเชิงวัตถุได้ [0] และการคาดหวังให้นักพัฒนาพอร์ตทั้งโปรเจกต์ไปเป็น Python และดูแลต่อ เพียงเพราะไม่อยากเรียนภาษาโปรแกรมใหม่ ก็คงเกินไป
[0]: https://en.wikipedia.org/wiki/Lua_(programming_language)#Obj...
ดีเลย ผมมีต้นแบบบอร์ดเกมเยอะมากที่อยากทำเป็นเว็บเกมสักวันหนึ่ง เลยเคยลองเขียนฟังก์ชันไลบรารีทั่วไปสำหรับทำบอร์ดเกมไว้บ้าง หยุดอยู่แค่การสร้างกริด การทอยลูกเต๋าแบบกำหนดเอง การจั่วการ์ด ฟังก์ชันทัวร์นาเมนต์ เทสต์ที่แสดงหลาย ๆ สถานการณ์ และอย่างอื่นอีกนิดหน่อย แต่คงไม่มีเวลาทำให้จริงจังเพราะต้องทำควบคู่กับโปรเจกต์อื่น ๆ ต้องลองดูว่าไลบรารีนี้ใช้ง่ายแค่ไหน
เห็นด้วยว่าการเรียนรู้แพลตฟอร์ม BGA ค่อนข้างทรมาน 1) ถูกผูกกับแพลตฟอร์ม เอาเกมไปลงที่อื่นไม่ได้ 2) ทั้งหมดเป็น PHP ซึ่งตอนนี้ไม่ค่อยอยากใช้แล้ว และ 3) เอกสารกระจัดกระจายอยู่หลายที่ แถมยังมีสไลด์ PowerPoint รวมอยู่ด้วย
ถ้ากำลังมองหาอะไรที่ low-level กว่านี้ ขอแนะนำ boardgame.io
[1] https://boardgame.io/
สาขานี้ยากจริง ๆ ผมคิดว่าถ้าจะสำเร็จต้องมีเกมที่ฮิตทันที หรือไม่ก็ต้องทุ่ม แรงจากชุมชน อย่างมหาศาลเพื่อดึงผู้เล่นทุกวันตลอดทั้งปี
เคยลองเสี่ยงดวงกับ https://acos.games ในช่วงแรก ๆ ที่แทบไม่มีทางเลือกอื่นแทน BGA ตอนนี้ก็ยังพัฒนาต่ออยู่เบื้องหลังเวลาว่าง ๆ ความล้มเหลวที่ใหญ่ที่สุดคือ UI/UX คนไม่ค่อยสนใจเทคโนโลยีเจ๋ง ๆ ที่ซ่อนอยู่ข้างหลังเท่าไร
ดูเท่มาก และยินดีด้วยกับการเริ่มต้น
อาจยอดเยี่ยมสำหรับการพัฒนาต้นแบบ แต่ถ้าจะทำทางเลือกแทน BGA ก็คงต้องได้รับอนุญาตจากผู้จัดจำหน่ายให้ทำ/เผยแพร่เกมนั้น ๆ ด้วย BGA ใหญ่มากและเป็นของ Asmodee เลยน่าจะไม่ง่าย หวังว่าผมจะคิดผิด
“สรุปคือ ชื่อและโลโก้คุ้มครองได้ด้วยเครื่องหมายการค้า ส่วนอาร์ตมีลิขสิทธิ์ (ตัวบอร์ดเองก็อาจนับเป็นอาร์ตได้) กลไก ขั้นตอน และกฎ ไม่สามารถคุ้มครองด้วยลิขสิทธิ์ได้ นั่นจึงเป็นเหตุผลที่มีเกมโคลน Monopoly/Scrabble อยู่”
https://www.reddit.com/r/gamedev/comments/10f2nov/comment/j4...
ที่นี่อ้างอิงวิดีโอ YouTube นี้
https://www.youtube.com/watch?v=iZQJQYqhAgY
ดูเจ๋งมาก รอไม่ไหวที่จะได้ลองเล่นเอง
ดีใจที่มีคำสั่ง flow แบบ everyPlayer ที่อนุญาตให้ผู้เล่นทำแอ็กชันพร้อมกันได้ เป็นฟีเจอร์ที่ขาดไปในเฟรมเวิร์กบอร์ดเกมอื่น ๆ ที่ฉันเคยลองใช้
[1]: https://docs.boardzilla.io/game/flow#everyplayer
เกมตัวอย่างทั้งหมดเกิดข้อผิดพลาด
Object.hasOwn is not a function. (In 'Object.hasOwn(e,A.from)', 'Object.hasOwn' is undefined)stack trace เป็นดังนี้
su@https://www.boardzilla.io/build/_shared/chunk-ZEYFFM3P.js:16:114536Fs@https://www.boardzilla.io/build/_shared/chunk-QNN53S6I.js:9:128279Ch@https://www.boardzilla.io/build/_shared/chunk-QNN53S6I.js:11:180657น่าจะต้องใส่ polyfill