Show HN: Boardzilla, un framework web para crear juegos de mesa
(boardzilla.io)- Boardzilla es un framework que busca reducir la barrera de entrada para crear juegos de mesa digitales, permitiendo jugarlos y desarrollarlos desde el navegador
- El objetivo es que los desarrolladores puedan expresar las reglas del juego, mientras que los jugadores revisan las opciones posibles mediante una interfaz simple
- Entre los juegos de ejemplo publicados están 7 Wonders Duel, Cursed, Dyngus Day, 27Panic, Hearts, Hex, Power Grid, Skirma y Stunt Kites
- La cantidad de jugadores compatible varía según el juego, desde 1 hasta 4; 7 Wonders Duel, Hex y Skirma son para 2 jugadores, y Hearts es para 4
- Quienes quieran crear su propio juego de mesa pueden comenzar el desarrollo con la documentación y la página de introducción disponibles
Lo que ofrece Boardzilla
- Boardzilla es un entorno web para crear juegos de mesa digitales con facilidad
- Permite jugar y desarrollar juegos de mesa dentro del navegador
- Está diseñado para facilitar la expresión de las reglas del juego y ofrecer a los jugadores las opciones posibles mediante una interfaz simple
Ejemplos de juegos jugables
- 7 Wonders Duel: 2 jugadores
- Cursed: 1 jugador
- Dyngus Day: 1 a 4 jugadores
- 27Panic: 2 a 4 jugadores
- Hearts: 4 jugadores
- Hex: 2 jugadores
- Power Grid: 2 a 4 jugadores
- Skirma: 2 jugadores
- Stunt Kites: 1 a 2 jugadores
Cómo empezar a desarrollar
- Quienes quieran crear su propio juego pueden comenzar en la documentación de Boardzilla
- La introducción al servicio está disponible en What is Boardzilla
1 comentarios
Comentarios de Hacker News
No creo que el mensaje más llamativo en la landing page deba ser un llamado a “unirse a Discord”
Primero deberían verse los ejemplos y los enlaces al código fuente/la documentación. En proyectos así, cuando se enfatiza demasiado “únete a Discord”, en lo personal más bien me genera rechazo. Dudo ser el único
De verdad detesto Discord cuando se usa para algo más que una plataforma de comunicación casual entre amigos. Pero la gente tiende a usar Discord como plataforma principal no solo para preguntas de soporte, sino hasta para la documentación. La calidad de búsqueda es mala y los motores de búsqueda ni siquiera lo indexan, así que cuando necesitas encontrar una solución, es de lo peor
Se ve bien. Tiene un alcance funcional amplio y seguramente muchas partes móviles, así que debió haber sido bastante trabajo. Al menos, da gusto ver que existe un motor de juego enfocado en juegos de mesa y no solo en el renderizado en sí
Dicho eso, como alguien que hizo juegos de cartas y de dados con juego en línea usando puro HTML/JavaScript, todavía no me queda claro cómo tendría que reproducir lo mismo con este sistema. Por la documentación, sí soporta cartas, y las abstracciones parecen lo bastante generales como para adaptarse a distintos juegos, pero un tutorial paso a paso ayudaría muchísimo. Entiendo por qué eligieron abstracciones como Actions, Flows, selections, conditions y prompts, pero si no veo cómo se ensamblan en la práctica, me cuesta imaginar en qué punto tendría que cambiar lo que quiero modificar. Personalmente, sin un tutorial me sería difícil avanzar mucho
Piece, es decir, cosas que están en la mano o se mueven entrePlayery se colocan sobre espacios (Space) de la mesaLas cartas y los dados se definen heredando de
Piece, los jugadores heredan dePlayer, y también se puede tener algo como un repartidor que administre el mazo como otroPlayer. Luego solo hay que pensar cómo colocar en el tablero las instancias deSpaceque exigen las reglas. Las reglas van dentro de una instancia de la claseGame, y ahí existe el concepto de acciones, que son instancias de la claseAction. Estas acciones reciben argumentos que definen prompts para el usuario, condiciones de ejecución válidas y efectos de ejecución. Fuera de eso, hay bastantes funciones de conveniencia esperables para buscar piezas, compararlas y demás, y el resto depende de la lógica del juego. Por los ejemplos, también parece haber funciones para filtrarSpaceyPiece, así que da la impresión de que se puede construir la lógica de UI con rapidezhttps://docs.boardzilla.io/game/creating-a-game
Sería mejor no ponerle *Zilla al nombre del proyecto. Se sabe que los dueños de los derechos de Godzilla rastrean activamente a quienes intentan usar el sufijo “Zilla”. Mozilla también aprendió la lección hace mucho y tuvo que llegar a un acuerdo por separado
El único caso de marca en el que Toho perdió fue contra una empresa de bolsas de basura llamada ‘trashzilla’, y una de las razones fue que no representaba un riesgo para los intereses comerciales de Toho. Edit: no había visto el logo. Eso sí que definitivamente podría ser un problema
Así que usan TypeScript + CSS. Esperaba que el servidor para la lógica del juego soportara Python. El momento es bueno, pero los desarrolladores y publishers que usaban BGA están inquietos por el modelo de negocio de Asmodee
El stack de BGA Studio es JS/CSS + PHP (cliente y servidor) + MySQL [0]
Yucata.de usa JS + HTML + .NET 4.5 en el servidor [1]
TTS usaba Lua, pero al revisarlo me pareció peculiar y limitado. No es orientado a objetos, y no entiendo por qué elegir un lenguaje no orientado a objetos para juegos de mesa. También es útil la reseña de sitios/frameworks de 2021, “VassalEngine: Survey of other boardgame software” [2]
Sería realmente genial si pudieran integrarse con Python en el servidor
[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...
También es posible hacer programación orientada a objetos sin clases [0]. Y esperar que un desarrollador porte y mantenga todo el proyecto en Python solo porque no quiere aprender un lenguaje nuevo es demasiado pedir
[0]: https://en.wikipedia.org/wiki/Lua_(programming_language)#Obj...
Bien. Tengo muchísimos prototipos de juegos de mesa que algún día me gustaría convertir en juegos web, así que alguna vez escribí un poco de funciones de librería genéricas para crear juegos de mesa: generación de cuadrículas, tiradas de dados personalizadas, robar cartas, funciones de torneo, pruebas que muestran varios escenarios, y unas cuantas cosas más. Pero me quedé ahí, y como lo compagino con otros proyectos, parece poco probable que tenga tiempo de hacerlo bien. Tendré que ver qué tan fácil es usar esta librería
Coincido en que aprender la plataforma BGA es bastante doloroso. 1) quedas atado a la plataforma y no puedes publicar el juego en otro lado, 2) todo es PHP y ya no me entusiasma mucho usarlo, y 3) la documentación está dispersa en varios lugares e incluso incluye presentaciones de PowerPoint
Si buscas algo de más bajo nivel, puedo recomendar boardgame.io
[1] https://boardgame.io/
Este campo es realmente difícil. Creo que para tener éxito necesitas un juego que pegue de inmediato, o hacer un enorme esfuerzo de comunidad para reunir jugadores todos los días durante todo un año
Probé suerte con https://acos.games al principio, cuando casi no había alternativas a BGA. Todavía sigo desarrollándolo por detrás cuando me aburro. El mayor fracaso fue la UI/UX. A la gente no le interesa tanto la tecnología genial escondida detrás
Se ve muy bien, y felicidades por el lanzamiento
Puede ser excelente para desarrollar prototipos, pero para crear una alternativa a BGA probablemente necesitarías obtener permiso de los publishers para implementar y distribuir sus juegos. BGA es tan grande y además pertenece a Asmodee que no parece fácil. Ojalá me equivoque
“En resumen, los nombres y logos pueden protegerse como marcas, y el arte tiene copyright (incluido potencialmente el tablero como obra artística). Las mecánicas, procedimientos y reglas no pueden protegerse con copyright. Por eso existen clones de Monopoly/Scrabble.”
https://www.reddit.com/r/gamedev/comments/10f2nov/comment/j4...
Aquí hacen referencia a este video de YouTube
https://www.youtube.com/watch?v=iZQJQYqhAgY
Se ve realmente genial. Tengo ganas de probarlo personalmente
Me alegra ver que tiene el comando de flujo everyPlayer, que permite acciones simultáneas. Es una función que faltaba en otros frameworks de juegos de mesa que he usado
[1]: https://docs.boardzilla.io/game/flow#everyplayer
Todos los juegos de ejemplo están dando error
Object.hasOwn is not a function. (In 'Object.hasOwn(e,A.from)', 'Object.hasOwn' is undefined)El rastreo de pila es el siguiente
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:180657Parece que hace falta un polyfill