3 Punkte von GN⁺ 2024-01-30 | 1 Kommentare | Auf WhatsApp teilen
  • Boardzilla ist ein Framework, das es ermöglicht, Brettspiele im Browser zu spielen und zu entwickeln, und so die Einstiegshürde für die Entwicklung digitaler Brettspiele senken soll
  • Ziel ist ein Ablauf, bei dem Entwickler die Spielregeln ausdrücken und Spieler die verfügbaren Optionen über eine einfache Oberfläche sehen können
  • Zu den veröffentlichten Beispielspielen gehören 7 Wonders Duel, Cursed, Dyngus Day, 27Panic, Hearts, Hex, Power Grid, Skirma und Stunt Kites
  • Die unterstützte Spielerzahl variiert je nach Spiel von Solo bis zu 4 Spielern; 7 Wonders Duel, Hex und Skirma sind für 2 Spieler, Hearts für 4 Spieler
  • Wer ein eigenes Brettspiel entwickeln möchte, kann über die bereitgestellte Dokumentation und die Einführungsseite mit der Entwicklung beginnen

Was Boardzilla bietet

  • Boardzilla ist eine webbasierte Umgebung, um digitale Brettspiele einfach zu erstellen
  • Brettspiele lassen sich direkt im Browser spielen und entwickeln
  • Es erleichtert die Darstellung von Spielregeln und bietet Spielern die verfügbaren Optionen über eine einfache Oberfläche an

Beispiele spielbarer Spiele

Einstieg in die Entwicklung

1 Kommentare

 
GN⁺ 2024-01-30
Meinungen auf Hacker News
  • Ich finde, die auffälligste Botschaft auf der Landingpage sollte nicht der Aufruf „Discord beitreten“ sein.
    Beispiele und Links zu Source/Docs sollten zuerst sichtbar sein. Wenn bei solchen Projekten „Discord beitreten“ zu stark hervorgehoben wird, schreckt mich das persönlich eher ab. Ich glaube nicht, dass ich damit allein bin

    • Geht mir genauso.
      Ich mag Discord wirklich nicht, außer vielleicht als Wegwerf-Kommunikationsplattform unter Freunden. Trotzdem neigen Leute dazu, Discord als Hauptplattform nicht nur für Supportfragen, sondern sogar für Dokumentation zu nutzen. Die Suchqualität ist schlecht und es wird nicht von Suchmaschinen indexiert; wenn man eine Lösung finden muss, ist das wirklich das Schlimmste
  • Sieht gut aus. Der Funktionsumfang ist breit, da dürfte es viele bewegliche Teile geben; der Aufwand war vermutlich ziemlich groß. Es ist jedenfalls erfreulich, dass es eine Game Engine gibt, die sich auf Tabletop-Spiele konzentriert, aber nicht nur auf das Rendering selbst.
    Allerdings weiß ich, aus der Perspektive von jemandem, der Karten- und Würfelspiele mit reinem HTML/JavaScript online spielbar gemacht hat, noch nicht so recht, wie ich dasselbe mit diesem System nachbauen würde. Laut Doku werden Karten unterstützt, und die Abstraktionen wirken allgemein genug, um zu vielen Spielen zu passen, aber ein Schritt-für-Schritt-Tutorial wäre sehr hilfreich. Ich verstehe, warum Abstraktionen wie Actions, Flows, selections, conditions und prompts gewählt wurden, aber ohne zu sehen, wie sie praktisch zusammengesetzt werden, habe ich kaum ein Gefühl dafür, wo ich ansetzen müsste, wenn ich etwas ändern will. Ohne Tutorial würde ich persönlich wohl nicht weit kommen

    • Im Kontext physischer Brettspiele scheint der Kern auf zwei wichtigen Klassen zu beruhen. Es geht um Strukturen für Dinge, also Piece, die sich in der Hand befinden oder zwischen Playern wandern und auf Bereichen (Space) des Tisches liegen.
      Karten und Würfel definiert man, indem sie von Piece erben, Spieler lässt man von Player erben, und auch eine Art Teller, der das Deck verwaltet, kann ein Player sein. Danach überlegt man, wie die für die Regeln nötigen Space-Instanzen auf dem Board angeordnet werden. Die Regeln liegen in einer Instanz der Klasse Game, und darin gibt es das Konzept von Aktionen, also Instanzen der Klasse Action. Eine solche Aktion erhält Argumente, die User-Prompts, Bedingungen für legale Ausführung und Ausführungseffekte definieren. Darüber hinaus gibt es etliche erwartbare Komfortfunktionen zum Finden und Vergleichen von Spielsteinen, und der Rest hängt von der Spiellogik ab. In den Beispielen gibt es auch Funktionen zum Filtern von Space und Piece, sodass sich UI-Logik offenbar schnell bauen lässt
    • Ich würde die Doku gern ausbauen, aber das kostet viel Zeit. Ich verstehe, dass es selbst bei scheinbar einfachen Spielen einschüchternd sein kann, sie in eine formalere API zu übertragen. Ob es hilft, weiß ich nicht, aber ich habe ein Video aufgenommen, in dem ein Teil eines Spiels gebaut wird.
      https://docs.boardzilla.io/game/creating-a-game
  • Es ist besser, Projektnamen kein *Zilla anzuhängen. Die Rechteinhaber von Godzilla sind dafür bekannt, aktiv gegen Stellen vorzugehen, die das Suffix „Zilla“ verwenden wollen. Auch Mozilla hat vor langer Zeit seine Lektion gelernt und musste eine separate Vereinbarung treffen

    • Das wusste ich überhaupt nicht. Ich habe noch einige ziemlich gute andere Domainnamen vorbereitet, vielleicht muss ich jetzt eine Entscheidung treffen
    • Ich sehe nicht, wie das auch nur im Entferntesten mit Godzilla oder dessen Rechten zusammenhängen soll. Es ist weit entfernt von einem riesigen nuklearen Monster.
      Der einzige Markenrechtsfall, den Toho verloren hat, war gegen ein Müllbeutelunternehmen namens „trashzilla“, unter anderem weil es keine Gefahr für Tohos Geschäftsinteressen darstellte. Edit: Ich hatte das Logo nicht gesehen. Das könnte definitiv ein Problem sein
    • Das ist ziemlich überraschend. Ich wusste nicht, dass das *Zilla-Copyright so aggressiv durchgesetzt wird
    • Meta setzt Markenrechte auch aktiv gegen Anmelder von Marken durch, die auf „book“ enden
    • Revzilla und Partzilla hatten ebenfalls einen langen Rechtsstreit um *zilla-Namen
  • Hier wird TypeScript+CSS verwendet. Ich hatte gehofft, dass auf dem Server für die Spiellogik Python unterstützt würde. Der Zeitpunkt ist gerade gut, weil Entwickler und Publisher, die BGA nutzen, wegen Asmodees Geschäftsmodell verunsichert sind.
    Der BGA-Studio-Stack ist JS/CSS + PHP (Client und Server) + MySQL [0]
    Yucata.de nutzt JS + HTML + .NET 4.5 auf dem Server [1]
    TTS hat Lua verwendet; als ich es mir angesehen habe, wirkte es ungewöhnlich und eingeschränkt. Es ist nicht einmal objektorientiert – ich verstehe nicht, warum man für Brettspiele eine nicht objektorientierte Sprache wählen würde. Auch der Site-/Framework-Review von 2021, „VassalEngine: Survey of other boardgame software“, ist nützlich [2]
    Es wäre wirklich schön, wenn es sich serverseitig mit Python integrieren ließe.
    [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...

    • Zu „warum sollte man für Brettspiele eine nicht objektorientierte Sprache wählen“: Lua war unter Spieleentwicklern ursprünglich eine ziemlich beliebte Wahl. Ein Grund ist, dass man eine Skriptsprache leicht in ein Spiel einbetten kann.
      Objektorientierte Programmierung ist auch ohne Klassen möglich [0]. Und zu erwarten, dass ein Entwickler das ganze Projekt nach Python portiert und pflegt, nur weil man keine neue Programmiersprache lernen möchte, ist zu viel verlangt.
      [0]: https://en.wikipedia.org/wiki/Lua_(programming_language)#Obj...
    • Der Grund, warum der Server nicht in Python ist: Bei boardzilla wird das Spiel nicht zweimal beschrieben, einmal für den Client und einmal für den Server. Stattdessen schreibt man es einmal in TypeScript, und dieser Code wird tatsächlich sowohl auf dem Server als auch im Client verwendet. Der Client verhält sich wie ein Server, nur ohne die versteckten Informationen.
    • Mich würde interessieren, warum du so stark Python fürs Backend willst. TypeScript läuft im Backend und auf verschiedenen Frontends und ist daher eine ziemlich logische Wahl. Es kann nicht nur im Web, sondern auch in Game-Engines wie Unity genutzt werden. Das Typsystem ist außerdem besser als das von Python.
    • Ich frage mich, was Asmodees Geschäftsmodell ist und was das mit BGA zu tun hat.
    • TypeScript selbst ist kein Problem, aber der React-Teil macht mir Sorgen. Würde man für ein Spiele-Frontend nicht etwas Leichteres als React wollen, etwa Svelte, Marko oder Solid?
  • Schön. Ich habe sehr viele Brettspiel-Prototypen, die ich irgendwann gern als Webspiele umsetzen würde, und habe deshalb einmal angefangen, ein paar allgemeine Library-Funktionen für die Brettspielentwicklung zu schreiben. Ich bin bei Rastererzeugung, eigenen Würfelwürfen, Kartenziehen, Turnierfunktionen, Tests zur Darstellung verschiedener Szenarien und ein paar weiteren Dingen stehen geblieben; neben anderen Projekten werde ich wohl keine Zeit haben, das richtig auszubauen. Ich sollte mir einmal ansehen, wie einfach diese Library zu nutzen ist.
    Ich stimme zu, dass es ziemlich mühsam ist, die BGA-Plattform zu lernen. 1) Man ist an die Plattform gebunden und kann das Spiel nicht woanders veröffentlichen, 2) alles ist PHP, was ich heute nicht mehr besonders gern verwenden möchte, und 3) die Dokumentation ist über mehrere Orte verteilt und enthält sogar PowerPoint-Präsentationen.

  • Wenn du etwas Low-Leveligeres suchst, kann ich boardgame.io empfehlen.
    [1] https://boardgame.io/

    • boardgame.io ist ebenfalls sehr empfehlenswert. Nicolo ist wirklich freundlich und hilfsbereit. Schau dir auch das andere Projekt an: https://boardgamelab.app/
  • Dieser Bereich ist wirklich schwierig. Um erfolgreich zu sein, braucht man meiner Meinung nach entweder ein Spiel, das sofort ein Hit wird, oder man muss das ganze Jahr über jeden Tag enorm viel Community-Arbeit investieren, um Spieler zusammenzubringen.
    Ich habe in der frühen Phase, als es kaum BGA-Alternativen gab, mit https://acos.games mein Glück versucht. Ich entwickle es immer noch nebenbei weiter, wenn mir langweilig ist. Der größte Fehler war die UI/UX. Die Leute interessieren sich nicht besonders für die tolle Technik, die im Hintergrund steckt.

    • Sieht sehr gut gemacht aus. Auch die Dokumentation ist sehr gut geschrieben. Ich habe im Moment keinen konkreten Anwendungsfall dafür, aber allein die Dokumentation zu lesen, um zu sehen, was möglich ist, war interessant. State-Management und Spielwiedergabe sahen großartig aus. Ich baue selbst eine Sammlung von Spielen, und allein der Gedanke, das System flexibel genug zu machen, damit andere es integrieren können, fühlt sich nach einer großen Aufgabe an. Die investierte Arbeit ist beeindruckend.
  • Sieht sehr cool aus, und Glückwunsch zum Start.
    Für die Prototypenentwicklung könnte es hervorragend sein, aber wenn man eine BGA-Alternative bauen will, braucht man wohl die Erlaubnis der Publisher, die Spiele zu implementieren/zu veröffentlichen. Da BGA so groß ist und Asmodee gehört, dürfte das nicht einfach werden. Ich hoffe, ich liege falsch.

    • Ich bin kein Rechtsexperte, aber solange man nicht dieselben Karten-/Brettbilder verwendet oder das Regelheft wörtlich kopiert, scheinen Spielmechaniken nicht urheberrechtlich geschützt zu sein.
      „Kurz gesagt: Namen und Logos können markenrechtlich geschützt sein, Kunstwerke unterliegen dem Urheberrecht (auch das Spielbrett selbst kann als Kunstwerk darunterfallen). Mechaniken, Verfahren und Regeln können nicht durch Urheberrecht geschützt werden. Deshalb gibt es Monopoly-/Scrabble-Klone.“
      https://www.reddit.com/r/gamedev/comments/10f2nov/comment/j4...
      Hier wird auf dieses YouTube-Video verwiesen:
      https://www.youtube.com/watch?v=iZQJQYqhAgY
    • Ich stimme voll zu, dass Asmodee faktisch verhindert hat, dass echte Konkurrenz in den Markt kommt. Statt direkt gegen BGA anzutreten, habe ich die Idee, kleinere Spiele von Indie-Publishern in den Blick zu nehmen. Ich weiß nicht, wie realistisch das ist, aber ich weiß auch nicht wirklich, was man sonst tun sollte.
  • Sieht wirklich großartig aus. Ich freue mich darauf, es selbst auszuprobieren
    Schön, dass es den everyPlayer-Flow-Befehl gibt, der gleichzeitige Aktionen erlaubt. Diese Funktion fehlte in anderen Brettspiel-Frameworks, die ich ausprobiert habe
    [1]: https://docs.boardzilla.io/game/flow#everyplayer

  • In allen Beispielspielen tritt ein Fehler auf
    Object.hasOwn is not a function. (In 'Object.hasOwn(e,A.from)', 'Object.hasOwn' is undefined)
    Der Stacktrace sieht so aus
    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
    Es sieht so aus, als müsste ein Polyfill hinzugefügt werden

    • Ich habe einen Polyfill hinzugefügt. Wäre gut, wenn du Bescheid geben könntest, ob es behoben ist
    • Ich werde bald einen Polyfill hinzufügen