自己紹介
さだです。
xRエンジニアです。
はじめに
タイトル通り位置情報ゲームの提案です。
ポケモンG●とか駅●モなど色々とありますが基本的には屋外で色々と回って遊ぶことしかできませんよね?
そこで無線LANアクセスポイントのSSIDを用いた位置情報ゲームを考えてみました。
近辺の接続可能なSSIDの文字列を取得し、ハッシュ関数にかけ固定長のデータを作成し、その後分割し分割されたデータで強さや名前等へのマッピングを行うという流れです。
この際にGPSの緯度経度情報と曜日や時間も組み合わせることにより同じアクセスポイントでも時間により違ったものが出てきたり同じSSIDでも違ったものが出てきたりといったことが実装できます。
類似ゲームとしては、PSPのメタルギアソリッドピースウォーカーがあります。
このゲームは兵士を集める際にフィールドの敵をフルトン回収をする他に、リクルートという方法で集めることができるがその際に近辺の無線LANアクセスポイントに応じて兵士を集めることができます。
その際に出てくる兵士の強さは完全ランダムらしいですが、提案の方法であればランダム性はあるがここでこの時間であると強いのが出るといった規則性も作ることができ、よりゲーム性が上がるのではないかと思います。
実装
とりあえずWindowsでの実装です。Macやスマートフォンでは動きません。
Macはともかくスマートフォンではネイティブプラグインを自作すれば実装可能かと思います。
このライブラリを使用します。ManagedNativeWifi.Simpleフォルダ以下を全てUnityのプロジェクトへ追加します
その後このようなコードを書けば出来上がりです。
実行結果はこんな感じです。
ハッシュ関数とは
ハッシュ関数 (ハッシュかんすう、英: hash function) あるいは要約関数[1]とは、あるデータが与えられた場合にそのデータを代表する数値を得る操作、または、その様な数値を得るための関数のこと。ハッシュ関数から得られた数値のことを要約値やハッシュ値または単にハッシュという。ハッシュ関数は主に検索の高速化やデータ比較処理の高速化、さらには改竄の検出に使われる。例えば、データベース内の項目を探したり、大きなファイル内で重複しているレコードや似ているレコードを検出したり、核酸の並びから類似する配列を探したりといった場合に利用できる
暗号学的ハッシュ関数(あんごうがくてきハッシュかんすう、英: cryptographic hash function)は、ハッシュ関数のうち、暗号など情報セキュリティの用途に適する暗号数理的性質をもつもの。任意の長さの入力を(通常は)固定長の出力に変換する。
Wikipediaより引用
今回は暗号的ハッシュ関数の他の文字列をハッシュ関数にかけても同じハッシュ値が得られることがない事と可変長の文字列から固定長のデータが得られるという性質を利用しました。
よくゲームで用いられる方はセーブデータ等の暗号化やソーシャルゲーム等の受信データの改ざん検知などに使われることがあります。
今回で作成したプロジェクトのGitHubもここに置いておきますね。
明日はさよりさんです。何を書くんだろう?楽しみですね