
Show HN: Saito Arcade (Boardgames on the Blockchain) - trevelyan
https://apps.saito.network/arcade
======
cyborgx7
Interesting project. I've been thinking about a turn-based game protocol to be
used over xmpp. You could even have incomplete information through hashing.
Does Saito have this?

~~~
trevelyan
Hi CyborgX7,

Thanks for the comment. What exactly do you mean about incomplete information
through hashing? Saito comes with a lot of backend cryptographic tools so it
should be possible to do almost anything. One current feature that uses
hashing is when players pick cards simultaneously -- they share their picks in
hashed format before revealing the secret that prove their picks were made
independently of the other player's -- not sure if this is the sort of thing
you mean or you are thinking of something different.

The underlying game engine handles data transfers, abstracts away the
complicated cryptographic data exchanges and makes sure that the game "stack"
is the same. Once a new move is broadcast all of the players/observers add the
received move to their local stack and then execute the instructions step by
step until more input is required, at which point the game halts while
everyone waits for the active player to provide input by "playing their turn".

In terms of game features, right now the core engine focuses on things like
provably fair deck shuffling and card dealing and random number generation.
Other features we hope to add which should benefit from the blockchain layer
include things like decentralized leaderboards (everyone can see who won /
lost public games so we can have distributed rankings), the ability for
players to stake other cryptocurrencies on games (if people want they can even
pay for games move-by-move), and the fact that game modules will be genuinely
decentralized, which avoids the problems with distribution channels like Steam
and/or the App Store, etc.

XMPP integration is a really interesting idea. What exactly did you have in
mind with it?

~~~
cyborgx7
With incomplete data I meant that you know your own hand cards but not the
hand cards of the enemy. Sounds like you have some things in there that work
similiar to how I envisioned them.

I don't think XMPP integration for this project in particular would be a great
fit (interested in being proven wrong though). I just meant that it reminded
me of a similar idea I had before, with xmpp instead of blockchain.

~~~
trevelyan
Yeah, that's it exactly. Interestingly, the technique was invented by the
creators of RSA public key encryption, although they considered it impractical
as it required the exchange of too much information back in the 1970s (all of
the cards needs to be double-encrypted with separate keys after a XOR-powered
shuffle).

It's exactly the sort of thing we want the underlying Saito game engine to
handle, because implementing the cryptographic techniques is a huge pain.
Right now the underlying engine simplifies the who process to pushing a new
deck onto the stack and dealing from it. The development work is reduced to
generating the "associative array" object that defines what the cards are.

    
    
        this.game.queue.push("DEAL\t1\t2\t8");
        this.game.queue.push("DEAL\t1\t1\t8");
        this.game.queue.push("DECKENCRYPT\t1\t2");
        this.game.queue.push("DECKENCRYPT\t1\t1");
        this.game.queue.push("DECKXOR\t1\t2");
        this.game.queue.push("DECKXOR\t1\t1");
        this.game.queue.push("DECK\t1\t"+cardjson);
    

Thanks for the comment anyway -- and reach out anytime if you have ideas for
XMPP integration or thoughts on the project. You can also find us on the Saito
dReddit btw: [https://apps.saito.network/r/](https://apps.saito.network/r/)

