3 คะแนน โดย GN⁺ 2024-01-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 เป็นสภาพแวดล้อมบนเว็บสำหรับสร้างบอร์ดเกมดิจิทัลได้อย่างง่ายดาย
  • สามารถ เล่น และ พัฒนา บอร์ดเกมได้ภายในเบราว์เซอร์
  • ทำให้การแสดงกติกาเกมทำได้ง่ายขึ้น และมอบตัวเลือกที่เป็นไปได้แก่ผู้เล่นผ่านอินเทอร์เฟซที่เรียบง่าย

ตัวอย่างเกมที่เล่นได้

ช่องทางเริ่มต้นพัฒนา

  • ผู้ใช้ที่ต้องการสร้างเกมของตัวเองสามารถเริ่มต้นได้ที่ เอกสาร Boardzilla
  • ดูคำแนะนำเกี่ยวกับบริการได้ที่ What is Boardzilla

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

 
GN⁺ 2024-01-30
ความคิดเห็นบน 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 ได้เร็ว
    • อยากเพิ่มเอกสารให้มากขึ้น แต่ใช้เวลามาก ผมเข้าใจว่าต่อให้เป็นเกมที่ดูเรียบง่าย การย้ายมาอยู่ใน API แบบเป็นแบบแผนอาจทำให้รู้สึกไม่รู้จะเริ่มตรงไหน ไม่แน่ใจว่าจะช่วยได้ไหม แต่ผมเคยอัดวิดีโอการสร้างบางส่วนของเกมไว้
      https://docs.boardzilla.io/game/creating-a-game
  • ไม่ควรใส่ *Zilla ในชื่อโปรเจกต์ เป็นที่รู้กันว่าผู้ถือสิทธิ์ Godzilla คอยติดตามอย่างจริงจังกับผู้ที่พยายามใช้คำต่อท้าย “Zilla” Mozilla ก็เคยได้บทเรียนไปนานแล้วและต้องทำข้อตกลงแยกต่างหาก

    • ไม่รู้เรื่องนี้เลย ผมเตรียมชื่อโดเมนอื่นที่ค่อนข้างดีไว้แล้วหลายชื่อ บางทีตอนนี้อาจต้องตัดสินใจแล้ว
    • ผมไม่เห็นเลยว่ามันเกี่ยวข้องกับ Godzilla หรือลิขสิทธิ์ของมันแม้แต่น้อยอย่างไร มันห่างไกลจากสัตว์ประหลาดนิวเคลียร์ยักษ์มาก
      คดีเครื่องหมายการค้าเดียวที่ Toho แพ้คือคดีกับบริษัทถุงขยะชื่อ ‘trashzilla’ และเหตุผลหนึ่งก็คือมันไม่เป็นภัยต่อผลประโยชน์ทางธุรกิจของ Toho แก้ไข: ผมไม่ได้ดูโลโก้ อันนี้อาจเป็นปัญหาได้จริง ๆ
    • อันนี้ค่อนข้างน่าประหลาดใจ ไม่รู้เลยว่า ลิขสิทธิ์ *Zilla จะดุขนาดนั้น
    • Meta ก็ใช้สิทธิ์เครื่องหมายการค้าอย่างจริงจังกับผู้ยื่นจดเครื่องหมายการค้าที่ ลงท้ายด้วย ‘book’
    • Revzilla และ Partzilla ก็เคยมีข้อพิพาททางกฎหมายยืดเยื้อเกี่ยวกับ ชื่อ *zilla
  • ใช้ 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...

    • ถ้าพูดถึงเรื่อง “ทำไมถึงเลือกภาษาที่ไม่ใช่ OOP สำหรับบอร์ดเกม” จริง ๆ แล้ว Lua เป็นตัวเลือกที่ค่อนข้างนิยมในหมู่นักพัฒนาเกมอยู่แล้ว เหตุผลหนึ่งคือมันฝังภาษาสคริปต์เข้าไปในเกมได้ง่าย
      แม้ไม่มี class ก็ทำโปรแกรมเชิงวัตถุได้ [0] และการคาดหวังให้นักพัฒนาพอร์ตทั้งโปรเจกต์ไปเป็น Python และดูแลต่อ เพียงเพราะไม่อยากเรียนภาษาโปรแกรมใหม่ ก็คงเกินไป
      [0]: https://en.wikipedia.org/wiki/Lua_(programming_language)#Obj...
    • เหตุผลที่เซิร์ฟเวอร์ไม่ใช่ Python คือใน boardzilla ไม่ได้อธิบายเกมซ้ำสองครั้งสำหรับฝั่งไคลเอนต์และฝั่งเซิร์ฟเวอร์ แต่ เขียนครั้งเดียวด้วย TypeScript แล้วโค้ดนั้นถูกใช้จริงทั้งบนเซิร์ฟเวอร์และไคลเอนต์ ไคลเอนต์ทำงานเหมือนเซิร์ฟเวอร์ เพียงแต่ไม่มีข้อมูลที่ถูกซ่อนอยู่
    • สงสัยว่าทำไมถึงอยากได้ Python ในแบ็กเอนด์แรงขนาดนั้น TypeScript รันได้ทั้งบนแบ็กเอนด์และฟรอนต์เอนด์หลากหลายแบบ จึงเป็นตัวเลือกที่ค่อนข้างสมเหตุสมผล ไม่ใช่แค่เว็บ แต่ยังใช้กับเอนจินเกมอย่าง Unity ได้ด้วย ระบบ type ก็ดีกว่า Python
    • สงสัยว่าโมเดลธุรกิจของ Asmodee คืออะไร และเกี่ยวข้องกับ BGA อย่างไร
    • ตัว TypeScript เองไม่มีปัญหา แต่กังวลเรื่อง ส่วน React สำหรับฟรอนต์เอนด์ของเกม น่าจะอยากได้อะไรที่เบากว่า React อย่าง Svelte, Marko, Solid มากกว่าหรือเปล่า?
  • ดีเลย ผมมีต้นแบบบอร์ดเกมเยอะมากที่อยากทำเป็นเว็บเกมสักวันหนึ่ง เลยเคยลองเขียนฟังก์ชันไลบรารีทั่วไปสำหรับทำบอร์ดเกมไว้บ้าง หยุดอยู่แค่การสร้างกริด การทอยลูกเต๋าแบบกำหนดเอง การจั่วการ์ด ฟังก์ชันทัวร์นาเมนต์ เทสต์ที่แสดงหลาย ๆ สถานการณ์ และอย่างอื่นอีกนิดหน่อย แต่คงไม่มีเวลาทำให้จริงจังเพราะต้องทำควบคู่กับโปรเจกต์อื่น ๆ ต้องลองดูว่าไลบรารีนี้ใช้ง่ายแค่ไหน
    เห็นด้วยว่าการเรียนรู้แพลตฟอร์ม BGA ค่อนข้างทรมาน 1) ถูกผูกกับแพลตฟอร์ม เอาเกมไปลงที่อื่นไม่ได้ 2) ทั้งหมดเป็น PHP ซึ่งตอนนี้ไม่ค่อยอยากใช้แล้ว และ 3) เอกสารกระจัดกระจายอยู่หลายที่ แถมยังมีสไลด์ PowerPoint รวมอยู่ด้วย

  • ถ้ากำลังมองหาอะไรที่ low-level กว่านี้ ขอแนะนำ boardgame.io
    [1] https://boardgame.io/

    • boardgame.io ก็แนะนำได้เต็มที่เหมือนกัน Nicolo ใจดีและช่วยเหลือดีมาก อีกโปรเจกต์หนึ่งคือ https://boardgamelab.app/ ก็น่าลองดู
  • สาขานี้ยากจริง ๆ ผมคิดว่าถ้าจะสำเร็จต้องมีเกมที่ฮิตทันที หรือไม่ก็ต้องทุ่ม แรงจากชุมชน อย่างมหาศาลเพื่อดึงผู้เล่นทุกวันตลอดทั้งปี
    เคยลองเสี่ยงดวงกับ 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
    • เห็นด้วยอย่างยิ่งว่า Asmodee แทบจะกันไม่ให้คู่แข่งตัวจริงเข้ามาในตลาดอยู่แล้ว แทนที่จะชนกับ BGA ตรง ๆ ผมมีไอเดียว่าจะดูเกมขนาดเล็กกว่าของผู้จัดจำหน่ายอินดี้ ไม่รู้ว่าจะเป็นไปได้แค่ไหน แต่ก็ไม่ค่อยรู้เหมือนกันว่าควรทำอะไรอย่างอื่น
  • ดูเจ๋งมาก รอไม่ไหวที่จะได้ลองเล่นเอง
    ดีใจที่มีคำสั่ง 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:114536
    Fs@https://www.boardzilla.io/build/_shared/chunk-QNN53S6I.js:9:128279
    Ch@https://www.boardzilla.io/build/_shared/chunk-QNN53S6I.js:11:180657
    น่าจะต้องใส่ polyfill

    • ใส่ polyfill แล้ว ถ้าบอกได้ว่าแก้แล้วหรือยังจะดีมาก
    • จะใส่ polyfill เร็ว ๆ นี้