Unityを使って駅のスリーレターコードを当てるゲームを作ってみた

[ヴァル研究所 Advent Calendar 2016](http://qiita.com/advent-calendar/2016/val) の16日目はUnityでゲームを作るお話です。

そして、ネタは「駅のスリーレターコードを当てるゲームを作ってみる」です。
スリーレターコードってなに？という方、最近話題の[アレ](https://ja.wikipedia.org/wiki/%E9%A7%85%E3%83%8A%E3%83%B3%E3%83%90%E3%83%AA%E3%83%B3%E3%82%B0)です。
東京オリンピックに向けて外国語対応も進んでいますので、外国人向けのゲームとしても良いんじゃないでしょうか。

ちなみに、秋葉原駅を**AKB**って略したり、新宿駅を**SJK**って略したりします。
某アイドルグループじゃないですよー

#まず最初に

難しくて「ヨクワカンネ」ってならないように、ノンプログラミングで行きます。安心してください。
また、Unityを使ったことがある方であれば誰でも、そして、使ったことない人でも分かりやすくをモットーにします。

でも、時は金なり！
困難は**金の力**で解決します。

#下準備

アセットが動作するようにします。

##必要なアセットを用意する

さすがにゲームを一から作るとなると大変な労力が必要になるため、基本となる機能はアセットストアから入手します。

まずは、ゲーム本体となる完成プロジェクトです。

* [Playmaker Word Game Kit](https://www.assetstore.unity3d.com/jp/#!/content/28248)

![Playmaker Word Game Kit](https://qiita-image-store.s3.amazonaws.com/0/153241/e9427032-8cbb-411c-804a-f631aeda60b4.png)

何か見たことあるワードサーチゲームのテンプレートですね。
これをベースにカスタマイズしていきます。

* [Playmaker](https://www.assetstore.unity3d.com/jp/#!/content/368)

これは、上記テンプレートを動かす際に必要となるアセットです。

![Playmaker](https://qiita-image-store.s3.amazonaws.com/0/153241/6d460dcf-85aa-f451-5f66-1f2cc24ba645.png)

大人気アセットなので、持っている人も多いのではないでしょうか。

##ダウンロードしてUnityにインポートする

早速アセットストアからダウンロードして2つともインポートします。

![Playmaker Word Game Kit](https://qiita-image-store.s3.amazonaws.com/0/153241/b8bdad4c-bece-25de-50af-d5ddd27329a0.png)

![Playmaker](https://qiita-image-store.s3.amazonaws.com/0/153241/dba47068-8cfe-f94d-7309-6f2eecd45143.png)

##各アセットをインストールする

Playmakerはインストールも必要になりますので、「Install PlayMaker」を押します。

![Install PlayMaker](https://qiita-image-store.s3.amazonaws.com/0/153241/e67a1526-f157-8462-5c1b-3aba2a1faaf1.png)

Playmaker Word Game Kitは追加のパッケージインストールが必要ですので、"*Word Game Kit*"にある"*IMPORT THIS After Playmaker Installation.unitypackage*"をインポートします。

![IMPORT THIS After Playmaker Installation](https://qiita-image-store.s3.amazonaws.com/0/153241/18fd15c1-816e-3437-b3fb-52e87734a66c.png)

##エラーに対処する

インポートが完了すると"*ConvertSecondsToString.cs*"でエラーが出ていると思います。
これは、**同じクラスが複数のファイルで定義されている**というエラーですので、重複したファイルを削除してしまいましょう。
PlayMakerのバージョンにもよると思いますが、"*PlayMaker Custom Actions/Convert/ConvertSecondsToString.cs*"を削除することで動くようになりました。

![ConvertSecondsToString.cs](https://qiita-image-store.s3.amazonaws.com/0/153241/3205c194-04c6-d629-e1dd-738ef56b605c.png)

#スリーレターコード当てゲームの実装

早速、ゲームを実装していきましょう。
でも、ノンプログラミングです。
**C#**が分からないという方でも大丈夫です。

##サンプルのシーンをカスタマイズする

"*Word Game Kit/Seenes/World Game EN.unity*"を基にカスタマイズしていきますので、まずはシーンを開きます。

##辞書情報を変更する

このままですと元々入っている辞書情報を利用してしまうため、"*Word Game Kit/Resources/Dictionaries/EN_Standard.txt*"を下記に書き換えてしまいます。
テキストエディタで書き換えてしまえば良いので、**MonoDevelop**や**メモ帳**など、テキスト編集が可能なアプリケーションで開きます。

```
tyo
knd
akb
uen
npr
ikb
sjk
sby
ebs
osk
sgw
hmc
smb
abn
urw
omy
ofn
ttk
yhm
mkg
kws
```

保存は忘れずに！

#ゲームを実行してみる

早速、実行してみましょう。
4x4のマスにアルファベットが並んでいますので、スワイプするような感じで選択していきます。

お、いい感じに選択できそうです。
**T**→**Y**→**O**ってやると東京駅のスリーレターコードになります。

![TYO](https://qiita-image-store.s3.amazonaws.com/0/153241/7f2f9b0b-9484-e415-3196-7167042b3a93.png)

選択できる駅が無くなったら**SHUFFLE**を押して並びを変えてみます。
一見、選択できなそうな配置でも、選択できます。
こんな配置でも**U**→**E**→**N**ってうまく動かすと上野駅のスリーレターコードになります。

![UEN](https://qiita-image-store.s3.amazonaws.com/0/153241/2218b4d5-0e1d-ef6f-d590-106a59b6c90a.png)

#ゲームのカスタマイズ

プレイしているとすぐに気付くと思いますが、なかなか良い並びで表示されず、スリーレターコードになりません。
また、スリーレターコードって結構覚えられないですよね。
神田駅は**KND**で新橋駅は**SMB**なのですが、「ん」は**N**なのか**M**なのか、迷います。

ということで、駅ナンバリングの先頭文字も登録しちゃいましょう。

##2文字も指定できるようにする

Playmaker Word Game Kitのドキュメントにも書いてあるのですが、デフォルトだと最低3文字となっていて、2文字のアルファベットは指定できないようになっています。
そのため、まずは2文字も指定できるようにします。

と言ってもスクリプトを修正する必要はなく、インスペクターの**MinimumWordLength**を**3**から**2**に変更するだけです。

![MinimumWordLength](https://qiita-image-store.s3.amazonaws.com/0/153241/c89a33f0-2d62-3867-d7e3-64b70e7130a1.png)

##辞書情報に追加する

スリーレターコードと同様に"*EN_Standard.txt*"へ駅ナンバリングの先頭2文字を追加していきます。
ちなみに、さすがに1文字はゲームにならないため、2文字以上を抽出しています。
また、駅ナンバリングはここに記載した以外にもたくさんあるので、全国を対象に追加しても良いと思います。

```
jt
jo
jk
jh
jn
ji
jy
jc
jb
ja
jl
je
jm
js
dt
en
fj
hs
ik
in
kd
kk
ko
ks
mg
mm
oe
oh
om
ot
si
sl
sg
sk
so
sr
ss
st
sw
sy
td
ti
tj
tm
tn
ts
ty
```

保存は忘れずに！

##さっそくカスタマイズしたゲームをプレイしてみる

山手線の**JY**に反応しました。

![jy](https://qiita-image-store.s3.amazonaws.com/0/153241/32c20045-8f1b-5a73-1b57-3de0958009b9.png)

**J**から始まる駅ナンバリングはたくさんあるため、どんどん見つけることが出来ます。

![jm](https://qiita-image-store.s3.amazonaws.com/0/153241/4e8a1c15-727e-d644-0115-e16b83e11550.png)

#まとめ

いかがでしたか？
一切プログラミングせずにクオリティが高いゲームが出来たと思います。
ただ、やはり選択できる駅が少なくて、何度も**SHUFFLE**を押してしまうことになりますので、そういった時は、[空港コード](https://ja.wikipedia.org/wiki/%E7%A9%BA%E6%B8%AF%E3%82%B3%E3%83%BC%E3%83%89)を入れてみたりしても面白いと思います。