[HN Gopher] Show HN: Boardzilla, a framework for making web-base...
       ___________________________________________________________________
        
       Show HN: Boardzilla, a framework for making web-based board games
        
       Show HN: Boardzilla, a framework for making web-based board games
       Tldr: We've made a framework for web-based board games. You can try
       out some games over at https://boardzilla.io, or you can take a
       look at https://docs.boardzilla.io to learn more about how to
       develop your own game. Source is available at
       https://github.com/boardzilla  Hey y'all. My brother and I have
       made a framework for board games. During the pandemic we started to
       look at BGA but got discouraged by how old-fashioned the tools were
       and how cumbersome the development process was. We set out to make
       our own framework where you could use the same code for both the
       client and server. Our hope is anyone familiar with Typescript and
       CSS could code up a game without worrying about state management,
       persistence or networking.  It's still very much a wip, and we're
       rapidly adding features and games. But we've got our first draft of
       developer docs done, and we've put up a few games we've developed
       to showcase and test out the platform. Source for the games and
       framework is available on Github, and we're excited to code more
       games and hopefully encourage other people to try it out. Happy for
       any feedback.
        
       Author : joshbuddy
       Score  : 201 points
       Date   : 2024-01-29 19:12 UTC (3 hours ago)
        
 (HTM) web link (www.boardzilla.io)
 (TXT) w3m dump (www.boardzilla.io)
        
       | josephcsible wrote:
       | https://github.com/boardzilla/boardzilla-core/blob/main/LICE...
       | 
       | Commons Clause :(
       | 
       | If you're worried about some corporation leaching off of you, why
       | not go AGPLv3 instead?
        
         | andrewghull wrote:
         | Co-creator here.
         | 
         | I thought AGPL was ok as well, but Commons Clause specifically
         | tried to address perceived deficiencies in the AGPL although I
         | admit that it didn't really seem to catch on. I'm not super
         | well versed in the technical details. Why would you recommend
         | AGPL?
        
           | josephcsible wrote:
           | https://fedoraproject.org/wiki/Licensing/CommonsClause has
           | several links explaining what's wrong with the Commons
           | Clause. The reason the AGPLv3 is my preferred replacement is
           | that the FAANGs are irrationally afraid of it and refuse to
           | let it be used anywhere in the company (e.g., https://opensou
           | rce.google/documentation/reference/using/agpl...), but it's
           | still 100% Free Software and Open Source and so allowed to be
           | packaged in Linux distributions that disallow proprietary
           | software.
        
             | andrewghull wrote:
             | Appreciate that! We'll take another look at this.
        
               | pessimizer wrote:
               | Remember (I'm sure you do) that you can relicense the
               | code for the use of anyone who wants to pay you for it.
               | AGPLv3 protects you, but doesn't hold you back.
        
             | dingnuts wrote:
             | How is AGPLv3 "Free" software when it is a proprietary
             | source-available license? The AGPL requires that anyone who
             | forks the software make their changes available to the
             | owner regardless as to whether they intend to publish those
             | changes.
             | 
             | That sounds like proprietary copyright wherein third
             | parties are allowed to view, but not modify, the source
             | code, to me.
             | 
             | RMS has given software people a really weird definition of
             | "free"
        
               | josephcsible wrote:
               | The AGPLv3 only requires you to make your modified source
               | code available to people that you choose to give a copy
               | of the binary to or allow to use on your computer over
               | the network. You never have to make anything available to
               | the original owner if you don't let them use your
               | modified version.
        
               | boucher wrote:
               | I've seen a lot of takes on the GPL but this is a new one
               | to me. As another comment points out, you only have to
               | make changes available to others if you make the software
               | itself available to others; either by distributing a
               | binary or by using it to provide a web service.
               | 
               | But this is, fundamentally, the point of "Free" software:
               | someone who uses a piece of software should be entitled
               | to change that software as they desire. This obviously
               | implies that if you make your own modified software
               | available to others, they too must be able to make their
               | own changes.
        
             | Tyr42 wrote:
             | I'd also suggesting reading some of /dev/lawyer's blog
             | posts, though I'm cooking and can't pull up anything in
             | particular ATM.
        
       | jamager wrote:
       | Looks very cool, congrats on the initiative!
       | 
       | I think it can be great to develop prototypes, but to build a BGA
       | alternative you will need permission from the publishers to
       | implement / distribute their games, and given how big is BGA and
       | that it belongs to Asmodee, that is going to be tough...
       | 
       | Hope I am wrong, good luck!
        
         | joshbuddy wrote:
         | Hey jamager, thanks for the kind comments.
         | 
         | Totally agree, Asmodee has basically prevented a real
         | competitor from entering the market. We have an idea in mind
         | that doesn't involve going up against BGA, but instead looks at
         | more smaller games from indie publishers. Not sure how viable
         | that is, but not sure what else someone is supposed to do.
        
         | vindex10 wrote:
         | IANAL, it seems, game mechanics can't be copyrighted, unless
         | you use the same images for cards / board, or literally copy
         | the rule book.
         | 
         | > In short: you can trademark the name, logos. Have copyright
         | on art (even the board itself as art). You can't copyright the
         | mechanics, processes or rules. That explains the
         | Monopoly/Scrabble clones.
         | 
         | https://www.reddit.com/r/gamedev/comments/10f2nov/comment/j4...
         | 
         | which refers to this youtube video:
         | 
         | https://www.youtube.com/watch?v=iZQJQYqhAgY
        
       | joeld42 wrote:
       | Hey this looks great. I'm working on some AI bots for board games
       | and this might be really useful as a frontend for local testing
       | of the bot players. I'll check it out.
        
         | andrewghull wrote:
         | We've been planning to add a way to do pluggable AI functions
         | (both for solitaire play and for testing). If you want to try,
         | take a look at the TestRunner class for an easy way to automate
         | playing the rules for multiple players.
        
       | joemi wrote:
       | I'm looking forward to trying this out!
       | 
       | You might want some sort of mention in the website copy about it
       | being self-hostable (unless I'm misinterpreting the docs). The
       | website copy talks about your hosting and the related benefits
       | (as it rightly should), but I didn't see any mention of self-
       | hosting so I almost didn't click through to the docs to see that
       | local development is possible.
        
         | joshbuddy wrote:
         | Hey Joemi. I wanted to make a self-hosted single game runner,
         | but I haven't gotten to it yet. The interface used by the
         | game/server is detailed here
         | https://github.com/boardzilla/boardzilla-devtools/blob/main/...
         | so it should be pretty easy to make this runner. I hope to get
         | to it soon.
        
       | catapart wrote:
       | Looks good! There's a lot of moving parts for such a wide array
       | of functionality, so this looks like a lot of really good work!
       | If nothing else, it's nice to have a game engine that focuses on
       | tabletop games, that doesn't necessarily focus on how to render
       | said games.
       | 
       | All of that said, as someone who has developed a card and dice
       | game, using plain html and javascript to create a programmatic
       | version that could be played online, I am _still_ having a hard
       | time figuring out how to recreate that kind of thing, using your
       | system.
       | 
       | Based on the docs, I can see it supports cards. And based on my
       | experience developing the same basic gameplay, I can see that
       | it's general-purpose enough to be suited for a wide variety of
       | games (and my game is simplistic, so it should be possible).
       | Feels like it should be a pretty straightforward build, with a
       | robust enough library, and yours seems to be fairly robust, so my
       | thinking here is that a step-by-step tutorial would go a long
       | way. I know enough to see why you've chosen the abstractions you
       | have (Actions, Flows, selections, conditions, prompts, etc), but
       | without seeing them constructed, it's hard to know where to make
       | the specific changes I would want to make.
       | 
       | Anyway, just one opinion! It may feel more straightforward to
       | other people. But I don't think I would personally make much
       | headway with it, without a tutorial.
        
         | andrewghull wrote:
         | Thanks for the comment, and yes we'd love to add more docs.
         | (it's time consuming!) I understand that even a simple-sounding
         | game can feel daunting to translate into a formalized API. I
         | did record a video of me building part of a game FWIW.
         | 
         | https://docs.boardzilla.io/game/creating-a-game
        
       | lencastre wrote:
       | A couple questions: did you get permission from Friese for
       | Funkenschlag? Why Typescript? Any plans to control for players
       | who rage quit, anti-play (in all forms), cheat (two connections
       | from same IP)?
       | 
       | I tried but couldn't test right away, is this more like BGA or
       | TTS?
        
         | andrewghull wrote:
         | Yes it's like BGA, not TTS.
         | 
         | No, we haven't done much to secure the online playing
         | experience for strangers other than simply enforcing the rules
         | of the game. We've been so far more focused on the API side of
         | building game than the service side of having customers, but
         | these are all on our radar as table stakes to make this an nice
         | experience for random players.
        
       | Illniyar wrote:
       | Wow, this seems unreasonably well made! Kudos. I'll definitely
       | try it out.
        
       | iamevn wrote:
       | Really cool looking! Excited to mess around with this.
       | 
       | Happy to see the everyPlayer[1] flow command to allow for
       | simultaneous actions. This is something that's missing from the
       | other boardgame frameworks I've tried.
       | 
       | [1]: https://docs.boardzilla.io/game/flow#everyplayer
        
       | jvehent wrote:
       | Don't called your project *Zilla. The copyright owners of
       | Godzilla are known to go after everyone who tries to use the
       | "Zilla" suffix. Mozilla learned its lesson long ago and had to
       | negotiate a special agreement.
        
         | joshbuddy wrote:
         | Um, wow, I had no idea. I've got some other pretty good domain
         | names at the ready, so, maybe I need to pull the trigger on
         | that.
        
           | doublerabbit wrote:
           | Hi Josh,
           | 
           | I'm receiving an error upon accessing the page.
           | 
           | Object.hasOwn is not a function. (In 'Object.hasOwn(t,n)',
           | 'Object.hasOwn' is undefined)
        
           | soneca wrote:
           | Using this thread as bug report.
           | 
           | There is a typo on the "Credits" card on game pages:
           | _"arist"_ - > _"artist"_
        
             | joshbuddy wrote:
             | Thanks Soneca. Fixed and deployed.
        
           | gkanai wrote:
           | As an 10 year Mozilla veteran, I agree you should switch
           | domains/project names. Mozilla was able to negotiate a deal
           | for a number of reasons- Mitchell herself is a lawyer, the
           | project is a NPO, and probably other reasons too, but it's
           | not worth the effort to defend a slightly infringing name
           | against the copyright holder in this case.
        
         | cyberninja15 wrote:
         | Woah, this is wild. Never knew how aggressive the copyrights
         | were for *Zilla.
        
           | gkanai wrote:
           | When you consider the most recent Godzilla film, Minus One,
           | is the 37th in that franchise, and was not only nominated for
           | an Oscar, and may be it's most lucrative, you can see why
           | Toho would aggressively police that copyright.
           | 
           | Minus One is legit a great film.
        
       | doublerabbit wrote:
       | The page immediately errors for me.
       | 
       | Error
       | 
       | Object.hasOwn is not a function. (In 'Object.hasOwn(t,n)',
       | 'Object.hasOwn' is undefined)
       | 
       | The stack trace is:
       | o@https://www.boardzilla.io/build/_shared/chunk-IP5CEA34.js:3:...
       | rt@https://www.boardzilla.io/build/root-NYPPT2G6.js:3:2506
       | Fs@https://www.boardzilla.io/build/_shared/chunk-
       | QNN53S6I.js:9:...
       | Ch@https://www.boardzilla.io/build/_shared/chunk-
       | QNN53S6I.js:11...
       | _h@https://www.boardzilla.io/build/_shared/chunk-
       | QNN53S6I.js:11...
       | Jg@https://www.boardzilla.io/build/_shared/chunk-
       | QNN53S6I.js:11...
       | Ei@https://www.boardzilla.io/build/_shared/chunk-
       | QNN53S6I.js:11...
       | rs@https://www.boardzilla.io/build/_shared/chunk-
       | QNN53S6I.js:11...
       | Rh@https://www.boardzilla.io/build/_shared/chunk-
       | QNN53S6I.js:11... Rh@[native code]
       | Ba@https://www.boardzilla.io/build/_shared/chunk-
       | QNN53S6I.js:4:...
       | Ia@https://www.boardzilla.io/build/_shared/chunk-
       | QNN53S6I.js:4:...
       | 
       | iPhone - ios 14.8
        
         | joshbuddy wrote:
         | Hey Doublerabbit. Thank you for the bug report and stack trace,
         | super helpful.
         | 
         | I'm taking a look at it now. I've got to go to bed soon, but
         | I'll try to fix this as soon as I can.
        
         | joshbuddy wrote:
         | I think I have a fix deployed now. Please try it again if you
         | have a moment.
        
           | doublerabbit wrote:
           | Wonderful, Working perfectly. Thank you.
        
       ___________________________________________________________________
       (page generated 2024-01-29 23:00 UTC)