I feel like I could probably code this in Godot Engine without much hassle. I only need to figure out the multiplayer code but I hear it’s easy.
I presume you’re not planning to program the part where the game enforces arbitrary contracts, because that would definitely be a bear.
I’ve programmed some digital board games and I’d say the work breakdown is roughly 15% rules of the game, 40% user interface, 30% networking, 15% infrastructure/misc stuff like options and account management. Board games tend to have pretty simple game logic but digital board games get bitten by all the supporting stuff that doesn’t scale with the complexity of the game.
If you reach a point where you’re interested in some high-level advice about how to structure the code for a digital board game you could message me.
I mostly mentioned Godot because I hear that the netcode is very easy to implement and test. I think boardgame.io with the experimental P2P extension could also be an option. But yes, depending on their complexity, goals and scores may be best left to the evaluation of the players.
I didn’t mention goals and scores; I mentioned contracts. Understanding that the player gets 1 point per forest and −1 point per hole seems to me like a reasonable thing for the software to do. However, understanding that I’ve agreed to freeze the lake at coordinate X within 5 turns but only if you first create a forest at coordinate Y within 3 turns, and having the software automatically kill me as soon as I violate this agreement, seems extremely hard, because it requires defining some sort of contract language that players can use to input what contracts they’ve made. I’d guess that’s at least several times more work than everything else in the application combined, and I’m not sure whether it’s even possible to make it sufficiently user-friendly for typical players to be willing to use it.
[social technology designer mode activate] Could be addressed by just recording contract agreements for a bit (which would definitely be helpful either way) then arbitrating later in a community moderation process if there are disputes. Could result in some players getting alienated but if it’s a small fraction who were horrible to play with anyway, might be tolerable.
(insight: If it turns out that neither player was specific enough about the contract for a resolution to be possible, and they still took it to arbitration, they can both be subjected to a mild fine)
Normally I’d reach for a subjective system so that the trolls can keep playing with people they’re most compatible with, but that would… complicate… the meaning of points (fully subjective/pluralistic credits seems to be an immature design language, at least, I don’t speak it), and if this does create enough fractures in the playerbase that we’d need to consider this, we should probably rework a lot of things until it doesn’t.
Are you going to pause the game while community moderation happens? If it’s an asynchronous, one-move-per-day sort of game, that might be acceptable; if players were hoping to complete a game in a single session, probably not. But if I understand correctly, the game literally can’t continue without at least a provisional decision on whether the contract was broken, and there’s probably no fair way to apply a decision retroactively (without rewinding the entire game-state to that point).
Seems like community moderation would let you ban persistent trouble-makers, but probably not salvage the game in which a dispute occurred.
Also: “recording” contracts has pretty different implications depending on
Whether players just talk about what they want and then agree, vs taking the additional step of converting informal agreements to formal language
Whether that discussion happens via text, voice, or video
If players are discussing in video chat, and you want to be able to record contracts without players needing to push a button that says “we’re going to recite the exact formal agreement now”, then you’re potentially recording a continuous video of every player for the entire length of the game just in case something later becomes a topic for dispute. This probably raises concerns about performance and privacy.
The closest system to how I imagine a face-to-face board game works is probably something like: Everyone has the ability to kill themselves, and players are trusted to use this ability if the group agrees they violated a contract. This has the side-effect that any player can basically unilaterally ruin the game for everyone by refusing to do so. In a face-to-face board game this doesn’t much matter because players already have this ability (you can just physically grab the pieces), but online games often operate in a lower-trust environment where this might be a more serious issue.
The obvious-to-me patch would be to let players kill anyone with a majority vote (and ask them to please only use this ability if a contract is breached). This doesn’t help with 2-player games, and gives the de facto ability for any majority to execute any minority (even if no contract is involved) if players decide to abuse it, but it’s probably good enough to make the game playable.
Another option might be to designate one player the “host” of the game, and give them the power to judge disputes. The right to host public games could be a privilege that you only earn after playing for a while and can be revoked as a punishment? (Hosting invitation-only games could be universally allowed.)
One could also theoretically hire people to act as judges and assign them in shifts to be on stand-by for any disputes that come up, but that’s obviously expensive.
(insight: If it turns out that neither player was specific enough about the contract for a resolution to be possible, and they still took it to arbitration, they can both be subjected to a mild fine)
Presumably a dispute could go to arbitration even if one of the participants admits the contract was ambiguous; is it fair to punish both players in this case? I guess it depends whether you view this as “punishing spurious arbitration requests” or “punishing the creation of ambiguous contracts”.
I don’t expect disputes to be common (among the kinds of people who are interested in learning cooperative bargaining practice)
This probably raises concerns about performance and privacy.
A simple approach would be for the recordings to be kept on the players’ computers for a day (maybe signed by the server during play to make falsification more inconvenient), and they submit them to the server if there’s a dispute. People you talk to online always have the ability to record you (did you not know this) so it’s not a real concern.
Ah, note, most of those cases mention a hopefully reduced need for explicit agreements. In other cases I imagine more constrained tools for coordination; fences, and so on. It might be interesting to build a contract system where players can formally propose ‘trades’ as a set of machines that will actuate when accepted, but it would be fiddly, so good faith verbal law is much more approachable where available.
But in the video game context it might make sense to just get into simulating actual legal systems?
I don’t really want to get into a deep discussion on privacy issues, but this seems frighteningly casual:
People you talk to online always have the ability to record you (did you not know this) so it’s not a real concern.
While that is certainly technologically feasible, IANAL but I believe in many cases that would be illegal (without your consent) due to wiretapping laws.
Ignoring that, people could reasonably feel OK about their conversation partner having a recording while not feeling OK about some third-party game company having a recording.
Even if they are OK in principle with you having a recording they may have nontrivial expectations about how you’re going to safeguard that recording. (Do your employees have the capability to browse these recordings for fun, without receiving an arbitration request? Can players use false arbitration requests to trick you into revealing recordings of other players?)
People might feel OK with the community looking at recordings of their contracts to arbitrate a dispute but not feel OK with the community looking at other stuff that was said during the game.
Some players of your game might be minors and not considered legally competent to consent to stuff.
If you actually made this recording system with the philosophy that “privacy is not a real concern” I think you’d be inviting a scandal and in extremis could maybe even go to jail.
I presume you’re not planning to program the part where the game enforces arbitrary contracts, because that would definitely be a bear.
I’ve programmed some digital board games and I’d say the work breakdown is roughly 15% rules of the game, 40% user interface, 30% networking, 15% infrastructure/misc stuff like options and account management. Board games tend to have pretty simple game logic but digital board games get bitten by all the supporting stuff that doesn’t scale with the complexity of the game.
If you reach a point where you’re interested in some high-level advice about how to structure the code for a digital board game you could message me.
I mostly mentioned Godot because I hear that the netcode is very easy to implement and test. I think boardgame.io with the experimental P2P extension could also be an option. But yes, depending on their complexity, goals and scores may be best left to the evaluation of the players.
I didn’t mention goals and scores; I mentioned contracts. Understanding that the player gets 1 point per forest and −1 point per hole seems to me like a reasonable thing for the software to do. However, understanding that I’ve agreed to freeze the lake at coordinate X within 5 turns but only if you first create a forest at coordinate Y within 3 turns, and having the software automatically kill me as soon as I violate this agreement, seems extremely hard, because it requires defining some sort of contract language that players can use to input what contracts they’ve made. I’d guess that’s at least several times more work than everything else in the application combined, and I’m not sure whether it’s even possible to make it sufficiently user-friendly for typical players to be willing to use it.
[social technology designer mode activate] Could be addressed by just recording contract agreements for a bit (which would definitely be helpful either way) then arbitrating later in a community moderation process if there are disputes. Could result in some players getting alienated but if it’s a small fraction who were horrible to play with anyway, might be tolerable.
(insight: If it turns out that neither player was specific enough about the contract for a resolution to be possible, and they still took it to arbitration, they can both be subjected to a mild fine)
Normally I’d reach for a subjective system so that the trolls can keep playing with people they’re most compatible with, but that would… complicate… the meaning of points (fully subjective/pluralistic credits seems to be an immature design language, at least, I don’t speak it), and if this does create enough fractures in the playerbase that we’d need to consider this, we should probably rework a lot of things until it doesn’t.
Are you going to pause the game while community moderation happens? If it’s an asynchronous, one-move-per-day sort of game, that might be acceptable; if players were hoping to complete a game in a single session, probably not. But if I understand correctly, the game literally can’t continue without at least a provisional decision on whether the contract was broken, and there’s probably no fair way to apply a decision retroactively (without rewinding the entire game-state to that point).
Seems like community moderation would let you ban persistent trouble-makers, but probably not salvage the game in which a dispute occurred.
Also: “recording” contracts has pretty different implications depending on
Whether players just talk about what they want and then agree, vs taking the additional step of converting informal agreements to formal language
Whether that discussion happens via text, voice, or video
If players are discussing in video chat, and you want to be able to record contracts without players needing to push a button that says “we’re going to recite the exact formal agreement now”, then you’re potentially recording a continuous video of every player for the entire length of the game just in case something later becomes a topic for dispute. This probably raises concerns about performance and privacy.
The closest system to how I imagine a face-to-face board game works is probably something like: Everyone has the ability to kill themselves, and players are trusted to use this ability if the group agrees they violated a contract. This has the side-effect that any player can basically unilaterally ruin the game for everyone by refusing to do so. In a face-to-face board game this doesn’t much matter because players already have this ability (you can just physically grab the pieces), but online games often operate in a lower-trust environment where this might be a more serious issue.
The obvious-to-me patch would be to let players kill anyone with a majority vote (and ask them to please only use this ability if a contract is breached). This doesn’t help with 2-player games, and gives the de facto ability for any majority to execute any minority (even if no contract is involved) if players decide to abuse it, but it’s probably good enough to make the game playable.
Another option might be to designate one player the “host” of the game, and give them the power to judge disputes. The right to host public games could be a privilege that you only earn after playing for a while and can be revoked as a punishment? (Hosting invitation-only games could be universally allowed.)
One could also theoretically hire people to act as judges and assign them in shifts to be on stand-by for any disputes that come up, but that’s obviously expensive.
Presumably a dispute could go to arbitration even if one of the participants admits the contract was ambiguous; is it fair to punish both players in this case? I guess it depends whether you view this as “punishing spurious arbitration requests” or “punishing the creation of ambiguous contracts”.
I don’t expect disputes to be common (among the kinds of people who are interested in learning cooperative bargaining practice)
A simple approach would be for the recordings to be kept on the players’ computers for a day (maybe signed by the server during play to make falsification more inconvenient), and they submit them to the server if there’s a dispute. People you talk to online always have the ability to record you (did you not know this) so it’s not a real concern.
(There’s no need to record video)
I thought you had aspirations to make games like this a popular entertainment rather than just a specialist training tool.
Ah, note, most of those cases mention a hopefully reduced need for explicit agreements. In other cases I imagine more constrained tools for coordination; fences, and so on. It might be interesting to build a contract system where players can formally propose ‘trades’ as a set of machines that will actuate when accepted, but it would be fiddly, so good faith verbal law is much more approachable where available.
But in the video game context it might make sense to just get into simulating actual legal systems?
I don’t really want to get into a deep discussion on privacy issues, but this seems frighteningly casual:
While that is certainly technologically feasible, IANAL but I believe in many cases that would be illegal (without your consent) due to wiretapping laws.
Ignoring that, people could reasonably feel OK about their conversation partner having a recording while not feeling OK about some third-party game company having a recording.
Even if they are OK in principle with you having a recording they may have nontrivial expectations about how you’re going to safeguard that recording. (Do your employees have the capability to browse these recordings for fun, without receiving an arbitration request? Can players use false arbitration requests to trick you into revealing recordings of other players?)
People might feel OK with the community looking at recordings of their contracts to arbitrate a dispute but not feel OK with the community looking at other stuff that was said during the game.
Some players of your game might be minors and not considered legally competent to consent to stuff.
If you actually made this recording system with the philosophy that “privacy is not a real concern” I think you’d be inviting a scandal and in extremis could maybe even go to jail.