Loading Stories...
Loading Stories...
In fact, the prominence of "join our discord" on projects like this is off-putting for me personally. I don't doubt I am alone in this regard.
I tried my luck with https://acos.games early on when there was very few alternatives to BGA. I still develop for it behind the scenes when I'm bored. My biggest failure is UI/UX. People don't care too much about the awesome technology hiding behind the scenes. =(
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
I've also reported a couple bugs so far, the main one being not being able to build Wonders even though I have adequate resources, but other than that, amazing work! I'm keen to implement a game myself sometime soon.
I really dislike discord as anything else than a platform for disposable communication, e.g. between friends and stuff, but people have this tendency of using it as the prominent platform for support questions and even as documentation. And together with terrible search, and no search indexing, it's just terrible when you need to search for a solution.
What do you prefer to discord for disposable communication? Certainly open to suggestions.
BGA Studio's stack is JS/CSS + PHP (client and server) + MySQL [0]
Yucata.de is JS + HTML + .NET 4.5 on the server [1]
(TTS was using Lua, which I looked into but seemed eccentric and limited, it's not even OO, why on earth choose a non-OO language for a boardgame).
Also here's a useful review of sites/frameworks from 2021: "VassalEngine: Survey of other boardgame software" [2]
Can you please please please integrate with Python on the server?
[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...
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.
Commons Clause :(
If you're worried about some corporation leaching off of you, why not go AGPLv3 instead?
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.
I had the idea after developing Swords and Ravens, an online adaption of A Game of Thrones: the Board Game (2nd edition), and realizing that there was a way to make a library to allow people to create board games without having to bother with the network part.
I also wrote a blog post about it: https://longwelwind.net/blog/networking-turn-based-game/
Good luck in your project!
I concur it's a bit painful to learn the BGA platform, as it's 1) stuck on their platform, you won't be able to put the game anywhere else, and 2) all in PHP, which I prefer not to write in anymore, and 3) with documentation scattered around in various places, including a couple of Powerpoint presentations.
Object.hasOwn is not a function. (In 'Object.hasOwn(e,A.from)', 'Object.hasOwn' is undefined)
The stack trace is:
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
...
Perhaps put some polyfill in place?I tried but couldn’t test right away, is this more like BGA or TTS?
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!
It’s not even close to a big scary nuclear fueled monster.
I’ll note that the only TM case they ever lost was against a company selling trash bags named ‘trashzilla’, partially because it did not constitute a danger to Toho’s business interests.
Edit: Uh, I missed the logo. Definitely a problem.
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.
There is a typo on the “Credits” card on game pages: ”arist” -> ”artist”
So for game you'd need your dice and your cards to be defined subclassing `Piece`, and give them to your players (which subclass `Player`) and maybe also to a Teller (also `Player` who manages the deck, before thinking about which instances of `Space` you'll need to set up on your board for your rules.
Your rules all in an instance of the `Game` class and it itself has this concept of actions, at their core instances of the `Action` class. Those take arguments that allow you to write the prompts for the user, define when the action is legal in play, and what effect it should have.
Beyond that the API then just kicks in and seems to have a lot of handy functions for finding pieces, making comparisons, all the stuff you expect. Beyond that just depends on your game logic.
There's also some handy functions to filter for different Spaces and Pieces so that you can build up the UI logic quite quickly, judging by the examples.
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?
We were doing something more like merely recording the game moves and applying them to arrive at the game state (having deterministic per-session rng). It's a good way to do it, but for the same of simplicity, this time around we just record the whole json blob per move. It simplifies undos and it also lets us easily move through history if you want to view a previous state.
But I'd love to try to apply some of your lessons to a later version. The challenge for us now is making a good api for expressing board games. That's been really tricky tbh. We've been working on this for ~7 years and have gone through many iterations of this api trying to get it right. I sure hope we're closer this time.
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.
> 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:
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.
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.
I'm receiving an error upon accessing the page.
Object.hasOwn is not a function. (In 'Object.hasOwn(t,n)', 'Object.hasOwn' is undefined)
Whilst it seems to originate with Godzilla -- which honestly also doesn't seem to associate with a particular company but instead I would say it's a now traditional monster name in stories, like Dracula -- noone is confusing this with any Godzilla franchise. These sort of attempts to own a word sten, across trademark categories, are an over-step that legislators need to rein in IMO.
Does the recent Sky trademark battle speak to this?
This comment is entirely my opinion and does not relate to my employer.
Lua has usually been a very popular choice for game developers. One reason is that it gives you an easy way to embed a scripting language in your game.
You can do OOP without classes [0].
> Can you please please please integrate with Python on the server?
You expect the developer to port and maintain their entire project to Python because you can't be bothered to learn a new programming language?
[0]: https://en.wikipedia.org/wiki/Lua_(programming_language)#Obj...
Minus One is legit a great film.
Besides, it's going to be madness to advertise that you have the game X on your platform but can't use the name or any artwork.
If I were the OP, i'd try to gear this towards publishers and make it as easy as possible to create functional prototypes. They need to iterate countless times on prototypes, one little change at a time, and this could be a huge time saver for them, facilitate playtasting, etc...
Basically you represent your board game as a tree of phases through which your game progresses in.
Each node of your phase tree can contain state. At any point, your game is at leaf of your tree, and the state of the game is composed of all the states of all the nodes from the current leaf-phase to the root of the tree. Each leaf node also have a set of possible inputs describing what possible action players can take to progress into the game. This makes it really easy to handle games that have special "rare" phase that can break the flow of the game (for 7 Wonders: Duel, for example, phases where players must resolve a wonder's effect that asks them to destroy an opponent's card).
This is a really weird take. Dracula is in the public domain, while every piece of Godzilla media is still copyrighted and trademarked to Toho, one of the big four movie studios of Japan.
> You expect the developer to port and maintain their entire project to Python because you can't be bothered to learn a new programming language?
They are literally begging, 3 "pleases", rather than "expecting".
And indeed, C has function pointers, so you can do OO. Just not some of the more fun stuff.
A lot of people fear that they will raise prices or reduce the offering to return money to the investors at some point.
You could even cross compile the Python to typescript for a simplified server side environment (typy for example).
I wasn't aware Lua had become widespread in game programming [0] (or more specifically, scripting on top of a game engine written in some other language); but supposedly not mainly due to whether Lua language has adequate features, but in part as a reaction to (client) performance of the Lua VM vs Python (VM maps to register set rather than stack-based; lower memory usage; coroutines); on client rather than on server. Some discussion in [0].
I did in fact in 2020 look into implementing a friend's boardgame in Lua on TTS vs in Python. That programming only confirmed my experience that line-for-line, Python is more expressive, IME more productive to develop in, also has much stronger library support.
Why is the basic documentation [1] on whether/how to implement OO Lua so contradictory and all over the place? When I look for a how-to document, I want a clear how-to, I don't want to see Lua's own users in a decades-long debate [2][3][4][5][6]. Or [7]. Or a lua-users.org/wiki that isn't even accessible via https [8]. (If I should be using a more accurate term than "OO", then just tell me what that is, instead of ad-hominems.) So for example, do we need polymorphism, mixins, the ability to call super, serialization (probably can do without that), etc. Should we sacrifice other features for more deterministic GC and performance? What are the compelling reasons for server-side Lua? on a feature-by-feature basis vs say Python?
(There's also a constituency who insist that Tcl is object-oriented, FWIW.)
Probably the best way to keep this discussion on-focus is to define "What is the consensus on an adequate set of OO features that's considered necessary for server-side game logic programming?" (that's a rational discussion, not "can't be bothered to", which is just ad-hominem).
As to TS, in my experience I don't find strong type-checking to prevent that many bugs, in codebases written by a small number of developers. I can program JS, so again if I saw a compelling reason to start using TS I would. (Sure, you could also crosscompile Python.) Again, that's not the primary issue, the primary issue is what server-side language once the game becomes complex and outgrows a pure TS implementation.
[0]: "Civilization V ditching Python for Lua" https://www.reddit.com/r/programming/comments/bp5m8/civiliza...
[1]: https://www.lua.org/pil/16.html
[2]: How can one implement OO in Lua? https://stackoverflow.com/questions/4799078/how-can-one-impl...
[3]: Is doing OOP in Lua considered bad practice? https://www.reddit.com/r/lua/comments/tbaxlo/is_doing_oop_in...
[4]: Really, how best to give Lua an object/class structure? https://www.reddit.com/r/lua/comments/tia21g/really_how_best...
[5]: Is Lua an object-oriented language? (SO, 2011) https://stackoverflow.com/questions/3477676/is-lua-an-object...
[6]: Why inheritance isn't as useful in dynamic languages, and other notes on OO in Lua (marc.info) "In short: inheritance is in most cases not a feature, just a simplistic method for expressing similarity." https://news.ycombinator.com/item?id=98529
[7]: r/ProgrammingLanguages, 2022: "If Lua is faster and smaller than Python, while being just as powerful and capable, then why is Python so much more popular?" https://www.reddit.com/r/ProgrammingLanguages/comments/tfurk...
Just feels like we're reaching a point where if you want to get a game published at a larger scale and distributed, you'll likely really be incentivised to go through Asmodee.
Edit: on the other hand, they apparently elected to use Godzilla as their logo, which kind of ruins the otherwise considerable unrelatedness.
Take a look at https://docs.boardzilla.io/game/flow to see how it looks.
It appeared I'm still receiving errors when attempting a few of the boards.
Error
Object.hasOwn is not a function. (In 'Object.hasOwn(e,A.from)', 'Object.hasOwn' is undefined)
The stack trace is:
su@https://www.boardzilla.io/build/_shared/chunk-ZEYFFM3P.js:16... 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:...
Dracula debuted in 1897 while Godzilla debuted in 1954.
Isn’t this the main reason one is public domain already and the other is not?
Then go do it. If it's pretty trivial....
"Lua: Good, Bad, and Ugly Parts" https://news.ycombinator.com/item?id=29659336
https://web.archive.org/web/20231227061730/http://lua-users....
https://web.archive.org/web/20231227061705/http://lua-users....
[0]: https://www.reddit.com/r/lua/comments/1adaq81/luausersorg_is...
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.
... Except that they're literally allowed to modify the source code?