• 締切済み

人狼などについて

人狼のような遊び(人狼ではないのですが)をするために、 「リモートで、全員が共有する選択肢の中から一枚ずつ参加者がそれを引いてき、自分が引いたものが他人にはわからない(かつ、自分が引いたら場からはそのカードは無くなっている)」 みたいな抽選をするためのアプリとかってありませんかね? 質問がわかりにくくてすみません。 要するに人狼の役割を割り振るようなプロセスを、リモートで行いたいんですが……。

みんなの回答

noname#251400
noname#251400
回答No.2

ココフォリアやユドナリウム等のツールのカード機能を利用するとできるかなと思います。 ※ココフォリアやユドナリウムは主にTRPGをオンラインで遊ぶ際に利用されるWEB上のサービスで、検索かけるとすぐに見つかるとおもいます。

  • asciiz
  • ベストアンサー率70% (6809/9681)
回答No.1

アプリ単体では難しいです。(不可能ではない、後述) ご質問のことを実現するには、オンライン(ネットワーク)ゲームを一つ作るのと同じことになります。 単純なトランプゲームを例にすると、 ・ゲームサーバがあり、特定のゲーム番号(セッション番号)で、一山のトランプをシャッフルした並びを記憶する。 ・プレイヤーは、サーバーに、ゲーム番号+「1枚取り出す」というリクエストを送る。 ・サーバ側では、一番上になっているカードをプレイヤーに送り、山から消去する。 ・手役が出来たら、サーバに「上がり」としてカード情報を送って点数計算、他の人にも公開し、得点のやり取りをする。 例えばこんな仕組みにしますよね。 でもこの構成、ちょっと問題があります。 「プレイヤーアプリ側で手役を改竄される」という恐れがあります。 トランプ配布サーバとアプリの4人がいたとして、それぞれに5枚ずつ配った後、誰かがローカルデータを書き換えて「ロイヤルストレートフラッシュだ、上がり」とやってしまったら、サーバは送られてきた手役に対して点数を判断してしまうことになります。 本当に配られた手で作った役なのか、カードを配るときにデータから消すのではなく、「誰に何を配った」ということを覚えておいて、ちゃんとその中で作れる手なのか、検証しなければなりません。 実はそれだけだとまだ不足です。「その人に配られたけども、一度捨てたカードで手役を作っていないか」ということもチェックしなければなりません。 結局オンラインゲームのサーバは、常にユーザーから送られてきたデータを疑わなければいけません。 そういうのを考えていくとこれはもう、「トランプのシャッフル・カード配布・取捨選択は、全てサーバ上で選択する」ことが一番、ということになってしまいます。 各プレイヤーは、自分のプレイヤーIDと参加ゲーム番号でもって「現在の自分の画面」をサーバにリクエストするだけ。 ゲームデータはすべてサーバ側にあり、プレイヤーはゲーム進行の選択はできるけども、データに手を出すことはできない。 その様にして初めて、ゲームの整合性を取ることができます。 それだからオンライン人狼なんかも、「人狼サーバ」にみんなで接続してゲームをするようになっているのですね。 ---- その様な、ゲームサーバ+複数クライアント、の仕組みを作り上げたうえで、サーバの仕組みをアプリに内包し、「ゲームの親サーバにもなれるアプリ」にまで作り上げれば、1アプリで整合性のとれたゲームを開催できます。 誰かがアプリを起動して、「ゲーム開催(親サーバになる)」を選択、他のアプリの人はIPアドレスとゲーム番号とか指定して接続しに行くわけです。 アプリひとつでやりたいという場合、そこまで作りこまなければ、実現できません。 なお、この仕組みで親サーバになる人は、ルータのポート解放などが必要になったりしますし、ポート解放ができないインターネット環境の人はゲームの親サーバになれません。 個人のインターネット環境も、問題になったりします。

関連するQ&A