- Boardzilla est un framework qui permet de jouer à des jeux de société et d’en développer dans le navigateur, avec l’objectif d’abaisser la barrière à l’entrée de la création de jeux de société numériques
- Le flux visé est que les développeurs puissent exprimer les règles du jeu, tandis que les joueurs consultent les choix possibles via une interface simple
- Parmi les jeux d’exemple publiés figurent 7 Wonders Duel, Cursed, Dyngus Day, 27Panic, Hearts, Hex, Power Grid, Skirma et Stunt Kites
- Le nombre de joueurs pris en charge varie selon le jeu, de 1 à 4 joueurs ; 7 Wonders Duel, Hex et Skirma se jouent à 2, tandis que Hearts se joue à 4
- Les utilisateurs qui souhaitent créer leur propre jeu de société peuvent commencer le développement via la documentation fournie et la page de présentation
Ce que propose Boardzilla
- Boardzilla est un environnement web conçu pour faciliter la création de jeux de société numériques
- Il permet de jouer et de développer des jeux de société directement dans le navigateur
- Il facilite l’expression des règles du jeu et présente aux joueurs les choix possibles via une interface simple
Exemples de jeux jouables
- 7 Wonders Duel : 2 joueurs
- Cursed : 1 joueur
- Dyngus Day : 1 à 4 joueurs
- 27Panic : 2 à 4 joueurs
- Hearts : 4 joueurs
- Hex : 2 joueurs
- Power Grid : 2 à 4 joueurs
- Skirma : 2 joueurs
- Stunt Kites : 1 à 2 joueurs
Comment commencer à développer
- Les utilisateurs qui veulent créer leur propre jeu peuvent commencer par la documentation Boardzilla
- Une présentation du service est disponible sur What is Boardzilla
1 commentaires
Avis de Hacker News
Je ne pense pas que le message le plus visible de la landing page devrait être un appel à “rejoindre Discord”.
Les exemples et les liens vers le code source/la documentation devraient apparaître en premier. Sur ce genre de projet, quand “rejoindre Discord” est trop mis en avant, personnellement, ça me donne plutôt envie de prendre mes distances. Je ne pense pas être le seul.
Je déteste vraiment Discord, sauf comme plateforme de communication éphémère entre amis. Pourtant, les gens ont tendance à vouloir l’utiliser comme plateforme principale non seulement pour les questions de support, mais même pour la documentation. La recherche y est mauvaise et ce n’est pas indexé par les moteurs de recherche, donc quand il faut trouver une solution, c’est vraiment le pire.
Ça a l’air bien. Le périmètre fonctionnel est large, donc il doit y avoir beaucoup de pièces mobiles, et ça a dû représenter pas mal de travail. En tout cas, c’est appréciable d’avoir un moteur de jeu axé sur les jeux de plateau, sans se limiter uniquement au rendu.
Cela dit, pour quelqu’un qui a rendu des jeux de cartes et de dés jouables en ligne en pur HTML/JavaScript, je ne vois pas encore très bien comment reproduire la même chose avec ce système. D’après la documentation, les cartes sont prises en charge, et les abstractions semblent assez générales pour convenir à toutes sortes de jeux, mais un tutoriel pas à pas aiderait beaucoup. Je comprends pourquoi des abstractions comme Actions, Flows, selections, conditions et prompts ont été choisies, mais sans les voir assemblées concrètement, j’ai du mal à sentir où intervenir pour modifier ce que je voudrais changer. Sans tutoriel, personnellement, je pense que j’aurais du mal à avancer beaucoup.
Player), et qui sont posés sur des espaces (Space) de la table : autrement dit desPiece.Les cartes et les dés sont définis en héritant de
Piece, les joueurs en héritant dePlayer, et on peut aussi représenter une entité comme un donneur qui gère le paquet sous forme dePlayer. Ensuite, il faut réfléchir à la façon de disposer sur le plateau les instances deSpacenécessaires aux règles. Les règles se trouvent dans une instance de la classeGame, qui contient le concept d’actions, sous forme d’instances de la classeAction. Ces actions prennent des paramètres qui définissent le prompt utilisateur, les conditions d’exécution légales et l’effet de l’exécution. En dehors de ça, il y a pas mal de fonctions utilitaires attendues pour trouver des pièces, les comparer, etc., et le reste dépend de la logique du jeu. À voir les exemples, il existe aussi des fonctions pour filtrer lesSpaceet lesPiece, ce qui semble permettre de créer rapidement la logique d’UI.https://docs.boardzilla.io/game/creating-a-game
Il vaut mieux éviter de mettre *Zilla dans le nom du projet. Les détenteurs des droits de Godzilla sont connus pour traquer activement ceux qui veulent utiliser le suffixe “Zilla”. Mozilla aussi en a tiré la leçon il y a longtemps et a dû conclure un accord séparé.
Le seul procès de marque que Toho ait perdu concernait une entreprise de sacs-poubelle appelée “trashzilla”, notamment parce que cela ne représentait pas un risque pour les intérêts commerciaux de Toho. Édit : je n’avais pas vu le logo. Là, oui, ça peut clairement poser problème.
Vous utilisez TypeScript+CSS. J’espérais une prise en charge de Python côté serveur pour la logique de jeu. Le timing est bon : les développeurs et éditeurs qui utilisaient BGA s’inquiètent du modèle économique d’Asmodee.
La stack BGA Studio, c’est JS/CSS + PHP (client et serveur) + MySQL [0]
Yucata.de, c’est JS + HTML + .NET 4.5 côté serveur [1]
TTS utilisait Lua ; en regardant, ça m’a semblé particulier et limité. Ce n’est même pas orienté objet, et je ne comprends pas pourquoi choisir un langage non orienté objet pour des jeux de société. La revue de sites/frameworks de 2021 « VassalEngine: Survey of other boardgame software » est également utile [2]
Ce serait vraiment bien de pouvoir l’intégrer à Python côté serveur.
[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...
On peut faire de la programmation orientée objet sans classes [0]. Et il est excessif d’attendre d’un développeur qu’il porte et maintienne tout un projet en Python simplement parce qu’on ne veut pas apprendre un nouveau langage de programmation.
[0]: https://en.wikipedia.org/wiki/Lua_(programming_language)#Obj...
Très bien. J’ai énormément de prototypes de jeux de société que j’aimerais un jour transformer en jeux web, et j’avais donc commencé à écrire quelques fonctions de bibliothèque génériques pour la création de jeux de société. Je me suis arrêté à la génération de grilles, aux lancers de dés personnalisés, au tirage de cartes, aux fonctions de tournoi, à des tests montrant plusieurs scénarios et quelques autres choses, mais avec les autres projets en parallèle, je n’aurai probablement pas le temps d’en faire quelque chose de sérieux. Il faudra que je voie à quel point cette bibliothèque est facile à utiliser.
Je suis d’accord pour dire qu’apprendre la plateforme BGA est assez pénible. 1) On est lié à la plateforme et on ne peut pas mettre son jeu ailleurs, 2) tout est en PHP, ce que je n’ai plus vraiment envie d’utiliser, et 3) la documentation est éparpillée à plusieurs endroits, avec même des présentations PowerPoint.
Si vous cherchez quelque chose de plus bas niveau, je peux recommander boardgame.io.
[1] https://boardgame.io/
Ce domaine est vraiment difficile. Pour réussir, je pense qu’il faut soit avoir un jeu qui devient immédiatement un hit, soit fournir un énorme effort communautaire pour attirer des joueurs tous les jours, toute l’année.
J’ai tenté ma chance avec https://acos.games aux débuts, quand il existait très peu d’alternatives à BGA. Je continue encore à le développer en arrière-plan quand je m’ennuie. Le plus gros échec a été l’UI/UX. Les gens ne s’intéressent pas vraiment à la belle technologie cachée derrière.
Ça a l’air très sympa, et félicitations pour le lancement.
Ce peut être excellent pour le prototypage, mais pour créer une alternative à BGA, il faudra obtenir l’autorisation des éditeurs pour implémenter/déployer les jeux. Comme BGA est énorme et appartient à Asmodee, ça risque de ne pas être simple. J’espère me tromper.
« En résumé, les noms et logos peuvent être protégés par des marques, et les illustrations sont protégées par le droit d’auteur (le plateau lui-même peut aussi l’être en tant qu’œuvre graphique). Les mécaniques, procédures et règles ne peuvent pas être protégées par le droit d’auteur. C’est pourquoi il existe des clones de Monopoly/Scrabble. »
https://www.reddit.com/r/gamedev/comments/10f2nov/comment/j4...
Le commentaire renvoie ici à cette vidéo YouTube.
https://www.youtube.com/watch?v=iZQJQYqhAgY
Ça a vraiment l’air super. J’ai hâte de l’essayer moi-même
Je suis content de voir qu’il existe une commande de flux everyPlayer qui permet des actions simultanées. C’est une fonctionnalité qui manquait dans les autres frameworks de jeux de plateau que j’ai essayés
[1] : https://docs.boardzilla.io/game/flow#everyplayer
Tous les jeux d’exemple génèrent une erreur
Object.hasOwn is not a function. (In 'Object.hasOwn(e,A.from)', 'Object.hasOwn' is undefined)La trace de pile est la suivante
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:180657Il semble qu’il faille ajouter un polyfill