Nostrで麻雀を作った話
Nostr Advent Calendar 2024 1日の記事です。Nostrを使って麻雀を作ったのでご紹介します。
私の公開鍵は npub1dv9xpnlnajj69vjstn9n7ufnmppzq3wtaaq085kxrz0mpw2jul2qjy6uhz
です。
NIP-05アドレスは nikolat@nikolat.github.io
です。
麻雀どこ
ここです。
遊び方
NIP-07ブラウザ拡張またはNIP-46署名アプリが必要となりますので事前にご準備ください。
ログイン
左上の Nostr Login
ボタンからログインしてください。
今回はNIP-07ブラウザ拡張でログインしてみます。
ゲーム開始・メンバーの募集
ログインできるとこんな画面が表示されます。
GameStart
を押してゲームを開始します。
status: 募集中 1/4
と書かれた表示が現れます。自分の他に残り3人のメンバーを募集する必要があります。
他の人がログインして Join
を押すことでも参加してもらうことができますが、今回はbotに参加してもらいます。 Join rinrin
を押します。
status: 募集中 2/4
に変わりましたね。同様に Join chunchun
と Join whanwhan
を押して4人のメンバーを揃えます。
なお、この手順を1つのボタンで完了させるのが下に見える大きな GameStart With ...
のボタンになります。
対局
紫で囲われているのが自分の番である合図です。打牌を選択してクリックしてください。
緑で囲われている場合は鳴くかどうか問われています。鳴かない場合は no
ボタンをクリックしてください。
テンパイしたのでリーチをかけてみましょう。 richi
ボタンをクリックします。
打牌を選択します。リーチが有効となる打牌しか選択できません。
リーチの間は和了るまで自動でツモ切りします。
和了られました。次の局へ進むには next
ボタンを押します。
だいたいこんな流れです。
飽きた
途中で止めて構いません。前の人が対局中で放置していても Reset
ボタンを押せば強制的に終了できて、次の人が始められます。
チャンネル選択
プレイできるチャンネル(卓)は以下の2つを用意しています。
- Nostr麻雀開発部(半荘戦)
- Nostr麻雀/地鳳の間(東風戦)
東風戦がご希望の場合は地鳳の間をご利用ください。
チャット
チャンネルごとに簡易チャットが利用できます。ご歓談ください。
終わりに
仕組み等はこちらの方にメモしてあります。興味がありましたらお読みください。
ローカルで動く麻雀ゲームは伺かで作ったことがあるのですが、オンライン対戦までは作ったことはありませんでした。やるとすればサーバーを建てて、クライアントを作って、通信規格を決めて、通信して…と考えると途方もないし運用も大変だし…と思って作ってみようとさえ考えませんでした。昨年からNostrでbotを作ったりしているうちに、Nostr使えば簡単にできるよな…?と思い立ち、作ってみたらできちゃった、といった感じです。まさかゲームマスターbotとプレイヤーbot(or人間)がリレーを介してお互いのメッセージを監視してやりとりする(しかも冗長化されたリレーが複数)なんて仕組み、他所のゲーム開発者に説明しても「は??」って言われそうな気がします。でもちゃんと動いてる。
オンライン対戦ゲームを簡単に構築できてしまうNostrは素晴らしいですね。
次回予告
明日2日は jun さんが担当されます。よろしくお願いします。
Discussion